Описание задачи
В рабочих пространствах выполнения SQL-запросов (postgres_sql_workspace.dart, mysql_sql_workspace.dart) при срабатывании тайм-аута выполнения запроса (TimeoutException) сокет подключения к серверу может оставаться в «отравленном» состоянии (когда клиент перестал ждать ответ, а сервер продолжает слать данные или удерживать транзакцию).
Зачем
- Предотвратить критические сбои протокола (Packet sequence error в MySQL, рассинхронизацию потока данных в PostgreSQL) при выполнении следующих запросов через то же соединение после тайм-аута.
- Гарантировать чистую и изолированную сессию после прерывания тяжелых запросов.
Предлагаемые изменения
- При возникновении TimeoutException или системных I/O ошибок во время выполнения запроса conn.execute(sql, timeout: to) в рабочих пространствах (PostgresSqlWorkspace, MysqlSqlWorkspace) принудительно разрывать соединение через unawaited(conn.forceClose()); или метод pool.interrupt(...).
- При следующем запросе пул автоматически откроет чистое соединение, исключая рассинхронизацию.
Технические требования
- Обновить обработчики _execute() в lib/features/postgresql/postgres_sql_workspace.dart и lib/features/mysql/mysql_sql_workspace.dart, добавив отлов TimeoutException с принудительным закрытием текущего сокета.
- Добавить unit-тест на корректное закрытие сокета при TimeoutException.
Место в коде (ориентир)
- lib/features/postgresql/postgres_sql_workspace.dart
- lib/features/mysql/mysql_sql_workspace.dart
- lib/core/database/postgres_connection_pool.dart
Acceptance Criteria
- Если запрос прерван по тайм-ауту, соединение закрывается (isConnected == false).
- Следующий запрос в этой вкладке успешно открывает новое соединение и выполняется без ошибок протокола.
Scope
- Scope: desktop
- Component: Workspace / SQL Editor
- Kind: bug
Reactions are currently unavailable
Описание задачи
В рабочих пространствах выполнения SQL-запросов (postgres_sql_workspace.dart, mysql_sql_workspace.dart) при срабатывании тайм-аута выполнения запроса (TimeoutException) сокет подключения к серверу может оставаться в «отравленном» состоянии (когда клиент перестал ждать ответ, а сервер продолжает слать данные или удерживать транзакцию).
Зачем
Предлагаемые изменения
Технические требования
Место в коде (ориентир)
Acceptance Criteria
Scope