GoldenSoftwareLtd / gedemin

22 stars 13 forks source link

Зацикливается TgdAutoTaskThread.UpdateTaskList #4172

Open gsbelarus opened 3 years ago

gsbelarus commented 3 years ago

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

      'SELECT t.disabled, t.userkey, t.computer, t.pulse, l.creationdate ' +
      'FROM gd_autotask t LEFT JOIN gd_autotask_log l ' +
      '  ON t.id = l.autotaskkey AND l.creationdate >= :et ' +
      '    AND l.connection_id <> CURRENT_CONNECTION ' +
      '    AND (l.client_address IS NULL ' +
      '      OR l.client_address IS NOT DISTINCT FROM RDB$GET_CONTEXT(''SYSTEM'', ''CLIENT_ADDRESS'')) ' +
      'WHERE t.id = :id';

Этот запрос находится только внутри TgdAutoTaskThread.UpdateTaskList.

Опытным путем было установлено, что зависание связано с автозадачей:

image

Она настроена на выполнение 1-го января, но 1-го января экзешник не запускался. Как видно, лог ее выполнения пуст:

image

Т.е. есть предположение, что если автозадача была настроена на выполнение в указанную дату и, возможно, в указанный диапазон времени, как задача, указаннае выше, и её не удалось выполниться (например, в этот день был выходной), то дальше система будет зависать/зацикливаться при обработке списка задач.

Надо попробовать смоделировать такую ситуацию. Если не получится, то предоставим архив базы, где точно случай подтверждается.

gsbelarus commented 3 years ago

@sunnycreature надо предоставить @ShlTanya архив бд и последовательность действий, чтобы повторить зацикливание.

sunnycreature commented 3 years ago

https://drive.google.com/drive/folders/0BzCBacVyOdVsdWI5Z1VJeXRMMVE

ShlTanya commented 3 years ago

Проблему нашла. Если задача не выполнена вовремя - я делаю ее Отключена?

ShlTanya commented 3 years ago

Может при этом сделать запись в Control center?

gsbelarus commented 3 years ago

Да. Отключать и сделать запись.

On Tue, Jan 12, 2021 at 1:00 PM ShlTanya notifications@github.com wrote:

Может при этом сделать запись в Control center?

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub, or unsubscribe.

ShlTanya commented 3 years ago

Исправлено

gsbelarus commented 3 years ago

исправлено в бета версии. надо проверить.

yoannawx commented 4 months ago

Зацикливание происходит также в том случае, если окончание выполнения автозадачи попадает на время, большее, чем ENDTIME. Проблема актуальна для последнего ехе,

image

image

image

yoannawx commented 4 months ago

запрос SELECT t.disabled, t.userkey, t.computer, t.pulse, l.creationdate FROM gd_autotask t LEFT JOIN gd_autotask_log l ON t.id = l.autotaskkey AND l.creationdate >=

image