Opened 5 years ago

Closed 5 years ago

#29 closed улучшение (wontfix)

Опция очищать буфер при потере связи

Reported by: san Owned by: alx
Priority: major Milestone: 1 очередь
Keywords: Cc: andrei

Description

Пользователи, которые испытывают наше оборудование, предложили добавить опцию при включении которой - при потере связности между устройствами на длительное время(например 1 минуту), после восстановления соединения передавать только "свежие" данные.
Мотивация такая, что таймаут ожидания у Мастера довольно мал - единицы, десятки секунд, и после истечения этого времени ответы на старые запросы он уже не принимает, и приходится ждать пока буфер заполненный старыми данными будет весь передан и начнётся передача актуальных данных. Добавление этой опции существенно сократило бы время ожидания.

Change History (5)

in reply to:  description comment:1 by alx, 5 years ago

Replying to san:

добавить опцию при включении которой - при потере связности между устройствами на длительное время(например 1 минуту), после восстановления соединения передавать только "свежие" данные.

Идея здравая, но я не понимаю, зачем это делать как опцию. Не будет ли логичнее делать так всегда? В смысле, передавать только те данные, которые поступили после установки соединения. Честоно говоря, я иного поведения и не предполагал, и то, что после установки соединения в него могут начать передаваться старые данные, я расцениваю как баг...

comment:2 by alx, 5 years ago

Owner: set to alx
Status: newaccepted

comment:3 by san, 5 years ago

ммм...
Наверное я немного неправильно сформулировал, это всё для случая, когда соединение не обрывается, но теряется связность.

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

Last edited 5 years ago by san (previous) (diff)

in reply to:  3 comment:4 by alx, 5 years ago

Replying to san:

это всё для случая, когда соединение не обрывается, но теряется связность.

Во-первых, а как (по каким критериям) наше устройство может данный случай определить? В смысле, как оно может узнать, что связность отсутствует, да еще и за такое которкое время как минута (в описании тикета ты его называешь длительным, но по сравнению с периодом keepalive для соединений TCP, который обычно составляет 2 часа, это очень короткое время)?

Во-вторых, можно, конечно, поэкспериментировать с маленьким периодом keep-alive и, вероятно, добиться того, что отсутствие связности будет обнаруживаться быстро. Но все равно итогом обнаружения отсутствия связности будет разрыв соединения и (после восстановления связности) установка нового соединения! Случай же, когда соединение не теряется вообще, уже означает, что временное отсутствие связности не было детектировано системой передачи...

comment:5 by san, 5 years ago

Resolution: wontfix
Status: acceptedclosed

Можно применять таймер неактивности соединения если хочется почистить буфер при отсутствии связности, предложенное в тикете считаю неактуальным.

Note: See TracTickets for help on using tickets.