Сторожевой механизм Watchdog в приложении SmartPlayer: различия между версиями
Новая страница: «== '''Описание ситуации''' == Платформа SmartPlayer теперь поддерживает работу важного механизма Watchdog, который позволяет {{Note|'''Описанная на странице информация актуальна для отслеживания прогресса загрузки не только объявлений, но и трансляций.'''|warn}} == '''Допол...» |
Нет описания правки |
||
| Строка 1: | Строка 1: | ||
== '''Описание ситуации''' == | == '''Описание ситуации''' == | ||
Платформа SmartPlayer теперь поддерживает работу важного механизма Watchdog, который | Платформа SmartPlayer теперь поддерживает работу важного механизма Watchdog, который является механизмом контроля. Данный функционал следит, чтобы система, в данном случае клиентское приложение на базе Windows OS не переставало функционировать и продолжало работать штатно. | ||
{{Note|''' | {{Note|'''На странице будет описано ранняя и поздняя версия реализация данного механизма для Windows OS.'''|warn}} | ||
== '''Что такое Watchdog''' == | |||
Функционал Watchdog предназначен для автоматического контроля работоспособности клиентского приложения. Механизм отслеживает состояние системы и проверяет, продолжает ли она корректно выполнять заданные действия. Если приложение перестаёт отвечать, зависает или не передаёт контрольный сигнал, то Watchdog выполняет восстановительное действия автоматически. Например: перезапуск клиентского приложения. | |||
== '''Изначальная реализации Watchdog в SmartPlayer''' == | |||
Первая реализация Watchdog для клиентского приложения Windows представляло собой отдельное приложение, позволяющее отследить зависание процесса. Данное приложение путем опроса процесса получало информация от основного приложения.<br> | |||
Если приложение отправляло ответ на сообщение, то таки образом обозначало свою работоспособность и то, что оно продолжать функционировать.<br> | |||
'''Период опроса''': один раз в 3 секунды. <br> | |||
Если ответ от клиентского приложения не был получен, то был перерыв до следующей отправки сообщения от Watchdog. Повторный запрос происходил через 5 секунд после неудачной попытки. В случае 3-ёх неудачных попыток подряд Watchdog перезапускал клиентское приложение SmartPlayer. Таким образом клиентское приложение продолжало свою работу. | |||
{{Note|Даже если клиентское приложение перестало работать, то Watchdog всё равно перезапустит его через некоторое время.|warn}} | |||
== '''Доработанная реализация Watchdog в SmartPlayer''' == | |||
Доработанная версия Watch lkz клиентского приложения Windos имеет все описанные ранее возможно и помимо этого умеет опрашивать UI-поток. Это необходимо, потому что видеоплеер SmartPlayer в процессе работы декорирует видео и выводит непосредственно картинку в UI. В таком случае может возникнуть ситуация когда интерфейсный пул qml зависнет, мы это поправили в задаче когда искали очень сложную ошибку в ffmpeg но все же мы защиту поставили и от этого редкого сценария. Так вот watchdog первой версии кидал бы события а обработчик бы и не видел проблем так как приложение живо, сокет держится и тд. Поэтому в клиентском приложении поднимается параллельный поток который умеет опрашивать жизнь ui пула, и если он зависнет, не будет ответа в течение 30 секунд то тоже вызовет мягкий перезапуск клиентского приложения, эта проблема была решена но мы оставили этот функционал | |||
== '''Дополнительная информация''' == | == '''Дополнительная информация''' == | ||
Если данная статья не помогает использовать функциональность по назначению или после её прочтения остаются вопросы, их можно задать в разделе "Обсуждения" вверху страницы. | Если данная статья не помогает использовать функциональность по назначению или после её прочтения остаются вопросы, их можно задать в разделе "Обсуждения" вверху страницы. | ||
[[File: | [[File:ОБсуждение_сторожевой_механизм.png|thumb|center| Пример отображения вкладки "Обсуждения" на wiki-странице |800px]] | ||
Также дополнительную информацию можно узнать на странице [[Как взаимодействовать пользователю с разделом "Обсуждения"]]. | Также дополнительную информацию можно узнать на странице [[Как взаимодействовать пользователю с разделом "Обсуждения"]]. | ||
Версия от 15:31, 9 июля 2026
Описание ситуации
Платформа SmartPlayer теперь поддерживает работу важного механизма Watchdog, который является механизмом контроля. Данный функционал следит, чтобы система, в данном случае клиентское приложение на базе Windows OS не переставало функционировать и продолжало работать штатно.
Что такое Watchdog
Функционал Watchdog предназначен для автоматического контроля работоспособности клиентского приложения. Механизм отслеживает состояние системы и проверяет, продолжает ли она корректно выполнять заданные действия. Если приложение перестаёт отвечать, зависает или не передаёт контрольный сигнал, то Watchdog выполняет восстановительное действия автоматически. Например: перезапуск клиентского приложения.
Изначальная реализации Watchdog в SmartPlayer
Первая реализация Watchdog для клиентского приложения Windows представляло собой отдельное приложение, позволяющее отследить зависание процесса. Данное приложение путем опроса процесса получало информация от основного приложения.
Если приложение отправляло ответ на сообщение, то таки образом обозначало свою работоспособность и то, что оно продолжать функционировать.
Период опроса: один раз в 3 секунды.
Если ответ от клиентского приложения не был получен, то был перерыв до следующей отправки сообщения от Watchdog. Повторный запрос происходил через 5 секунд после неудачной попытки. В случае 3-ёх неудачных попыток подряд Watchdog перезапускал клиентское приложение SmartPlayer. Таким образом клиентское приложение продолжало свою работу.
Доработанная реализация Watchdog в SmartPlayer
Доработанная версия Watch lkz клиентского приложения Windos имеет все описанные ранее возможно и помимо этого умеет опрашивать UI-поток. Это необходимо, потому что видеоплеер SmartPlayer в процессе работы декорирует видео и выводит непосредственно картинку в UI. В таком случае может возникнуть ситуация когда интерфейсный пул qml зависнет, мы это поправили в задаче когда искали очень сложную ошибку в ffmpeg но все же мы защиту поставили и от этого редкого сценария. Так вот watchdog первой версии кидал бы события а обработчик бы и не видел проблем так как приложение живо, сокет держится и тд. Поэтому в клиентском приложении поднимается параллельный поток который умеет опрашивать жизнь ui пула, и если он зависнет, не будет ответа в течение 30 секунд то тоже вызовет мягкий перезапуск клиентского приложения, эта проблема была решена но мы оставили этот функционал
Дополнительная информация
Если данная статья не помогает использовать функциональность по назначению или после её прочтения остаются вопросы, их можно задать в разделе "Обсуждения" вверху страницы.

Также дополнительную информацию можно узнать на странице Как взаимодействовать пользователю с разделом "Обсуждения".