up 0 down

Фон

Мой код C# не был затронут в течение длительного времени (1 год +), внезапно я получаю следующую ошибку при подключении к нашему Progress сервер:

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

Это вызывается через ссылку DLL клиента Progress:

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

Вот так:

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);
}

симптомы

  • С первой же попытки все в порядке. Нет ошибок
  • Выполнение второго вызова вскоре после первого выдает вышеуказанную ошибку.
  • Я называю нашу среду TEST локально.
  • Насколько мы знаем, тест не имеет таких же симптомов.

Я записал предыдущий запрос исправления в команду Progress, я получил его при вызове среды TEST progress из нескольких потоков:

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)

В то время было решено провести рефакторинг моей стороны, чтобы она не работала параллельно, так что основные соединения были затоплены.

Но с тем, что я узнал сейчас, я склонен полагать, что эти два вопроса связаны.

Оба разделяют это HResult=0x80131500 отчет.

Я думаю, что происходит

Поскольку первая попытка работает, а вторая - нет, я думаю, что либо сервер TEST прогресса, либо Progress OpenClient неправильно закрывает соединение и/или транзакцию.

Что должно произойти, чтобы решить проблему?   Это что-то на моей стороне или что-то с сервером Progress (DLL или реальный сервер)?