FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

bug(workspace): force-close connection upon query TimeoutException to prevent protocol errors · Issue #333 · QueryaHub/Querya-Desktop · GitHub

bug(workspace): force-close connection upon query TimeoutException to prevent protocol errors #333

Description

Описание задачи

В рабочих пространствах выполнения SQL-запросов (postgres_sql_workspace.dart, mysql_sql_workspace.dart) при срабатывании тайм-аута выполнения запроса (TimeoutException) сокет подключения к серверу может оставаться в «отравленном» состоянии (когда клиент перестал ждать ответ, а сервер продолжает слать данные или удерживать транзакцию).

Зачем

  • Предотвратить критические сбои протокола (Packet sequence error в MySQL, рассинхронизацию потока данных в PostgreSQL) при выполнении следующих запросов через то же соединение после тайм-аута.
  • Гарантировать чистую и изолированную сессию после прерывания тяжелых запросов.

Предлагаемые изменения

  1. При возникновении TimeoutException или системных I/O ошибок во время выполнения запроса conn.execute(sql, timeout: to) в рабочих пространствах (PostgresSqlWorkspace, MysqlSqlWorkspace) принудительно разрывать соединение через unawaited(conn.forceClose()); или метод pool.interrupt(...).
  2. При следующем запросе пул автоматически откроет чистое соединение, исключая рассинхронизацию.

Технические требования

  • Обновить обработчики _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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions


    Back | FazBrowse Home | New Git URL