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

0

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)?

c#
.net
nservicebus
openedge
progress-4gl
asked on Stack Overflow Jan 14, 2019 by Spikee • edited Jan 22, 2019 by Tom Bascom

1 Answer

0

Since you are doing async call use RunTimeProperties.WaitIfBusy = true; before Appserver connection is made.

Fyi RunTimeProperties is a class residing in Progress.Open4GL namespace in Progress.o4glrt.dll.

answered on Stack Overflow Feb 18, 2021 by kiran

User contributions licensed under CC BY-SA 3.0