StatementSync.close() в Node.js 26.8.0: контроль жизненного цикла SQLite. Обратимый тест, матрица наблюдений, контрольная ветка, критерии остановки и минимальный пакет для support без рабочих секретов.
Факт и граница вывода
Первичный источник фиксирует ровно одно изменение: 26.8.0 добавляет StatementSync.close() и поддержку Symbol.dispose() для явного завершения statement. Он не доказывает, что симптом есть у всех, что переход на Current ветку разрешён политикой проекта или что один видимый результат выявляет причину. Отдельная проблема здесь: prepared statement продолжает удерживать ресурс или код повторно использует объект после завершения scope. До теста запишите effective runtime, канал поддержки и ожидаемую границу.
Минимальный обратимый стенд
Используйте только изолированный fixture: временная in-memory база с одной таблицей, одним statement и отдельной попыткой вызова после close. Не подключайте боевую базу, реальные адреса, ключи, cookies, полные логи или личные файлы. Сначала получите baseline, затем измените один фактор, повторите сценарий и верните исходное состояние. Так A→B→A2 отделит эффект версии от кэша, порядка событий и случайности.
Поля наблюдения и control
На каждом прогоне заполняйте одну строку матрицы: lifecycle step × close path × second call × error class × database close result. Не добавляйте поля «похоже на исправление»: нужны наблюдаемые классы, счётчики, hashes и коды ошибок. Контрольная ветка: тот же запрос с прежним явным порядком освобождения и новым объектом statement. Если control даёт тот же неожиданный результат, влияние изменения Node.js не доказано. Расхождение A и A2 означает, что стенд загрязнён и вывод нужно отложить.
Дерево решения по результату
Применяйте решение, записанное до прогона: ресурс закрыт и повторный вызов отвергнут — граница ясна; база не закрывается — ищем другой statement; вызов проходит — версия/API не те. Не смешивайте статусы «API документирован», «бинарник имеет нужную версию», «тест прошёл» и «миграция разрешена». Это разные границы. Один проход не превращайте в заключение о производительности, безопасности или совместимости всего проекта.
Красные флаги и stop-line
Жёсткий критерий остановки для этой темы: не проверять lifecycle на рабочем файле базы и не удалять данные для снятия блокировки. Также остановитесь, если тест неожиданно обращается в сеть, требует повышенных прав, меняет данные за пределами temp каталога, не возвращает A2 к baseline или зависит без timeout. Неизвестный результат не нужно заменять удобным объяснением или повторять на рабочей среде.
Минимальный пакет для support
Для эскалации достаточно: runtime, короткий synthetic SQL, порядок close/dispose и классы ошибок. Добавьте точный канал Node.js, время теста, ожидаемый класс и фактический класс, а также прошёл ли A→B→A2. Не прикладывайте env, токены, ключи, полные пути с именем пользователя, содержимое рабочей базы или сырые сетевые данные. Цель пакета — доказать одну нарушенную границу и один следующий безопасный тест.
Материал подготовлен редакцией VOne с помощью ИИ по открытым официальным и первичным источникам; факты, даты и ссылки перепроверены. Реальные пользовательские данные не использовались.
Источники и проверка
- Node.js 26.8 release notes проверено 2026-08-29
- Node.js 26.8 API documentation проверено 2026-08-29
Информация актуальна на дату публикации. Правила сервисов, приложений и сетей могут меняться.