1. This site uses cookies. By continuing to use this site, you are agreeing to our use of cookies. Learn More.

  2. Anuncie Aqui ! Entre em contato fdantas@4each.com.br

Connection from .net to Progress.OpenClient throws Object is no longer available for use....

Discussão em 'StackOverflow' iniciado por fdantas, Janeiro 22, 2019.

  1. fdantas

    fdantas Administrator Moderador

    Background

    My C# code hasn't been touched in a long time (1 year+), suddenly I get the following error when connecting to our Progress server:

    Progress.Open4GL.Exceptions.Open4GLException
    HResult=0x80131500
    Message=Object is no longer available for use. (7260)
    Source=Progress.o4glrt
    StackTrace:
    at Progress.Open4GL.Proxy.OpenAppObject.RunProc(String procName, ParamArray paramArray)
    at My.Service.Progress.LoadStuff.<Handle>d__2.MoveNext() in C:\MyRepo\My.Service.Progress\LoadStuff.cs:line 34


    This is called via a Progress client dll reference:

    <package id="Progress.OpenClient" version="11.7.1" targetFramework="net471" />


    Like so:

    public async Task Handle(GetStuffToLoad message, IMessageHandlerContext context)
    {
    var parameters = new ParamArray(4);

    parameters.AddCharacter(0, message.param1, ParamArrayMode.INPUT);
    parameters.AddCharacter(1, message.param2, ParamArrayMode.INPUT);
    parameters.AddDecimal(2, decimal.Parse(message.param3), ParamArrayMode.INPUT);
    parameters.AddLongChar(3, null, ParamArrayMode.OUTPUT);

    _trisClient.RunProc("loadStuff", parameters);

    var stuffContent = (string)parameters.GetOutputParameter(3);
    }


    Symptoms

    • On the very first try, everything's okay. No errors.
    • Doing a second call soon after the first gives the above error.
    • I'm calling our TEST environment locally.
    • As far as we know, TEST does not have the same symptoms.

    I logged an earlier bugfix request to the Progress team, I got that when calling the progress TEST environment from multiple threads:

    Progress.Open4GL.Exceptions.BusySessionException
    HResult=0x80131500
    Message=Session is busy. Another request is executing or there is an open result set(s). (7226)
    Source=Progress.o4glrt
    StackTrace:
    at Progress.Open4GL.DynamicAPI.Session.runProcedure(String requestID, String procedureName, ParameterSet parms, Boolean persistent, Boolean internal_Renamed, Int64 procId, MetaSchema localSchema, Int32 stateModel)


    At the time it was decided to refactor my side to not run in parallel, so that the underlying connections are flooded.

    But, with what I found out now, I'm inclined to believe the two issues are related.

    Both share that HResult=0x80131500 report.

    What I think is going on

    As the first try works and the second doesn't, I think that either the progress TEST server, or the Progress OpenClient, does not correctly close a connection and/or transaction.


    What needs to happen to fix the issue? Is it something on my side or something with the Progress server (dll or actual server)?

    Continue reading...

Compartilhe esta Página