Skip to content

fix(workspace): force-close connection upon query TimeoutException (#333) - #337

Merged
ZhuchkaTriplesix merged 1 commit into
devfrom
issue/333-fix-query-timeout
Jul 13, 2026
Merged

fix(workspace): force-close connection upon query TimeoutException (#333)#337
ZhuchkaTriplesix merged 1 commit into
devfrom
issue/333-fix-query-timeout

Conversation

@ZhuchkaTriplesix

Copy link
Copy Markdown
Member

Что сделано

  • Защита сокетов и сессий при таймаутах запросов (TimeoutException):
    • На уровне классов соединений (PostgresConnection, MysqlConnection, SqliteConnection) методы execute и executeWithTimeout теперь оборачивают вызовы к драйверам (_conn!.execute, rawQuery и т.д.) в блок try/catch on TimeoutException. При возникновении таймаута немедленно вызывается unawaited(forceClose()), сбрасывающий TCP-соединение или дескриптор БД (_isConnected = false; _conn = null;), что предотвращает отравление протокола (protocol poisoning) рассинхронизированными кадрами или зависшим серверным потоком.
    • На уровне SQL-воркспейсов (PostgresSqlWorkspace, MysqlSqlWorkspace, SqliteSqlWorkspace) добавлены явные блоки on TimeoutException catch (e) перед остальными обработчиками (ServerException / catch). При таймауте также гарантированно вызывается unawaited(_lease?.connection.forceClose()), корректно обновляется статус ошибки в UI, а при следующем выполнении запроса _ensureLease() обнаруживает закрытое соединение и автоматически переподключает чистую TCP-сессию.
  • Новые unit-тесты: создан connection_timeout_protocol_test.dart, проверяющий автоматический сброс соединения на TimeoutException для PostgreSQL, MySQL и SQLite.

Как проверялось

  • flutter analyze — 0 проблем.
  • flutter test — 825 из 825 тестов успешно пройдено.

Closes #333

@ZhuchkaTriplesix
ZhuchkaTriplesix merged commit fe15c71 into dev Jul 13, 2026
4 checks passed
ZhuchkaTriplesix added a commit that referenced this pull request Jul 27, 2026
fix(workspace): force-close connection upon query TimeoutException (#333)
@ZhuchkaTriplesix ZhuchkaTriplesix self-assigned this Jul 27, 2026
@ZhuchkaTriplesix
ZhuchkaTriplesix deleted the issue/333-fix-query-timeout branch July 27, 2026 20:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant