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
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)?
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.
User contributions licensed under CC BY-SA 3.0