Summary / Описание проблемы
По всей кодовой базе приложения массово используются конструкции try { ... } catch (_) {}, которые полностью молча игнорируют возникающие исключения без какого-либо логирования или уведомления:
- При закрытии соединений (
disconnect / forceClose): В postgres_connection.dart (~L160, ~L171), mysql_connection.dart (~L195, ~L209), sqlite_connection.dart (~L65) и redis_connection.dart (~L336). Если сокет завис или при закрытии транзакции происходит сетевой сбой, пул соединений считает соединение закрытым, хотя сокет может оставаться в ОС или приводить к утечкам ресурсов.
- При сборе статистики и работе с хранилищем: В
postgres_connection.dart (~L382, ~L389) при опросе системных таблиц pg_postmaster_start_time() и pg_database_size(), а также в folders_storage.dart (~L59). При ошибках прав доступа к системным вьюхам или повреждении локальных файлов настроек приложение молча возвращает пустые данные или падает без записи в лог.
Scope & Component
- Scope:
desktop
- Component:
Core / Error Handling & Logging
- Kind:
bug
- Severity:
medium
- Detected in version:
dev / 0.5.0
Местоположение в коде
- Файлы:
lib/core/database/postgres_connection.dart (L160, L171, L382, L389)
lib/core/database/mysql_connection.dart (L195, L209)
lib/core/database/sqlite_connection.dart (L65)
lib/core/database/redis_connection.dart (L336)
lib/core/storage/folders_storage.dart (L59)
Шаги воспроизведения
- Подключиться к PostgreSQL пользователем без прав чтения
pg_database_size() или смоделировать сетевой сбой при вызове disconnect().
- Проверить консольные выводы и системные логи (
flutter_*.log или debugPrint).
- Фактический результат: Никакой информации об ошибке нет, исключение «съедено» пустым блоком
catch (_) {}.
- Ожидаемый результат: Все перехватываемые исключения в низкоуровневых драйверах и сервисах должны записываться через системный логгер (
debugPrint или внутренний сервис логирования), чтобы облегчить отладку и анализ сбоев у пользователей.
Acceptance Criteria / Критерии приемки
Summary / Описание проблемы
По всей кодовой базе приложения массово используются конструкции
try { ... } catch (_) {}, которые полностью молча игнорируют возникающие исключения без какого-либо логирования или уведомления:disconnect/forceClose): Вpostgres_connection.dart(~L160, ~L171),mysql_connection.dart(~L195, ~L209),sqlite_connection.dart(~L65) иredis_connection.dart(~L336). Если сокет завис или при закрытии транзакции происходит сетевой сбой, пул соединений считает соединение закрытым, хотя сокет может оставаться в ОС или приводить к утечкам ресурсов.postgres_connection.dart(~L382, ~L389) при опросе системных таблицpg_postmaster_start_time()иpg_database_size(), а также вfolders_storage.dart(~L59). При ошибках прав доступа к системным вьюхам или повреждении локальных файлов настроек приложение молча возвращает пустые данные или падает без записи в лог.Scope & Component
desktopCore / Error Handling & Loggingbugmediumdev / 0.5.0Местоположение в коде
lib/core/database/postgres_connection.dart(L160, L171, L382, L389)lib/core/database/mysql_connection.dart(L195, L209)lib/core/database/sqlite_connection.dart(L65)lib/core/database/redis_connection.dart(L336)lib/core/storage/folders_storage.dart(L59)Шаги воспроизведения
pg_database_size()или смоделировать сетевой сбой при вызовеdisconnect().flutter_*.logилиdebugPrint).catch (_) {}.debugPrintили внутренний сервис логирования), чтобы облегчить отладку и анализ сбоев у пользователей.Acceptance Criteria / Критерии приемки
catch (_) {}в драйверах соединений (postgres,mysql,sqlite,redis) заменены на логирование (debugPrint('Error disconnecting ...: $e')или вызов централизованного логгера).folders_storage.dartи при сборе статистики добавлены записи в лог при возникновении ошибок чтения/выполнения запросов.