Skip to content

🐛 Bug Fixes

Choose a tag to compare

@soulripper13 soulripper13 released this 28 Nov 02:51
517e0bf

Fixed Blocking I/O Operations Warning

  • Eliminated "Detected blocking call" warnings in Home Assistant logs
  • All file operations now run in executor threads to prevent event loop blocking
  • Fixed blocking operations:
    • write_bytes() when saving downloaded ZIP file
    • zipfile.extractall() when extracting binary
    • os.chmod() when setting file permissions
    • unlink() when cleaning up temporary files
  • Home Assistant no longer freezes during binary downloads/updates

🎯 Performance Improvements

Non-Blocking Binary Downloads

  • Binary download and extraction now run asynchronously
  • Event loop remains responsive during file operations
  • Improved overall Home Assistant responsiveness during integration setup
  • Better handling of concurrent operations

🔧 Technical Changes

  • Wrapped all synchronous file I/O operations with hass.async_add_executor_job()
  • Created dedicated extract_zip() helper function for ZIP extraction in executor
  • Updated error handling to use async executor for cleanup operations
  • All disk operations now properly async-compatible

📦 Files Changed

  • custom_components/speedtest_rt_ru/__init__.py

🔄 Upgrade Notes

This is a backwards-compatible update focused on performance and log cleanliness. No configuration changes required.

Benefits after upgrading:

  • ✅ No more blocking I/O warnings in logs
  • ✅ Smoother Home Assistant operation during binary downloads
  • ✅ Better async/await compliance

Full Changelog: v1.1.3...v1.1.4


Релиз v1.1.4

🐛 Исправления ошибок

Исправлены предупреждения о блокирующих операциях ввода/вывода

  • Устранены предупреждения "Detected blocking call" в логах Home Assistant
  • Все файловые операции теперь выполняются в потоках исполнителя для предотвращения блокировки цикла событий
  • Исправлены блокирующие операции:
    • write_bytes() при сохранении загруженного ZIP-файла
    • zipfile.extractall() при извлечении бинарника
    • os.chmod() при установке прав доступа к файлам
    • unlink() при очистке временных файлов
  • Home Assistant больше не зависает во время загрузки/обновления бинарников

🎯 Улучшения производительности

Неблокирующая загрузка бинарников

  • Загрузка и извлечение бинарников теперь выполняется асинхронно
  • Цикл событий остаётся отзывчивым во время файловых операций
  • Улучшена общая отзывчивость Home Assistant во время настройки интеграции
  • Лучшая обработка параллельных операций

🔧 Технические изменения

  • Все синхронные операции ввода/вывода файлов обёрнуты в hass.async_add_executor_job()
  • Создана выделенная вспомогательная функция extract_zip() для извлечения ZIP в исполнителе
  • Обновлена обработка ошибок для использования асинхронного исполнителя в операциях очистки
  • Все дисковые операции теперь правильно совместимы с async

📦 Изменённые файлы

  • custom_components/speedtest_rt_ru/init.py

🔄 Примечания по обновлению

Это обратно совместимое обновление, сфокусированное на производительности и чистоте логов. Изменения конфигурации не требуются.

Преимущества после обновления:

  • ✅ Больше никаких предупреждений о блокирующем вводе/выводе в логах
  • ✅ Более плавная работа Home Assistant во время загрузки бинарников
  • ✅ Лучшее соответствие принципам async/await

Полный список изменений: v1.1.3...v1.1.4