mirror of https://github.com/voidlizard/hbs2
devlog
This commit is contained in:
parent
e1a38aad49
commit
f7ae1ffbc5
|
@ -1,3 +1,22 @@
|
||||||
|
|
||||||
|
## 2023-02-06
|
||||||
|
|
||||||
|
FIXME: Задержку в очередь пиров при рассылке
|
||||||
|
GetBlockSize, что бы не спамить пиров,
|
||||||
|
пока запрос не уехал в отстой. Надо
|
||||||
|
для каждого пира поставить задержку
|
||||||
|
в 0.5 defBlockInfoTimeout или наоборот,
|
||||||
|
в 1 defBlockInfoTimeout.
|
||||||
|
#medium #asap
|
||||||
|
|
||||||
|
|
||||||
|
FIXME: добавить peer-nonce в peer-data
|
||||||
|
что бы можно было определять себя при пинге
|
||||||
|
и вычеркивать из known-peers, что бы пакеты
|
||||||
|
по кругу не гонять.
|
||||||
|
#easy
|
||||||
|
|
||||||
|
|
||||||
## 2023-02-05
|
## 2023-02-05
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,33 +0,0 @@
|
||||||
title: block-download-loop
|
|
||||||
status: open
|
|
||||||
|
|
||||||
|
|
||||||
Качать блоки по 500 штук за раз идея была
|
|
||||||
красивая, но работает плохо даже на localhost.
|
|
||||||
|
|
||||||
Вероятно, нужно качать пачками по N штук
|
|
||||||
и перезапрашивать отдельные чанки, а не блок
|
|
||||||
целиком.
|
|
||||||
|
|
||||||
Так же, может быть можно качать блок сразу
|
|
||||||
от нескольких пиров.
|
|
||||||
|
|
||||||
Соотношение in/out нужно как-то регулировать.
|
|
||||||
|
|
||||||
Либо же решает сам передатчик, по скольку кусков
|
|
||||||
за раз посылать.
|
|
||||||
|
|
||||||
Возможно, нужно ввести явную очередь на отправку
|
|
||||||
и посылать по N пакетов за раз, что бы не переполнять
|
|
||||||
очереди сокетов.
|
|
||||||
|
|
||||||
Возможно, с этого стоит начать.
|
|
||||||
|
|
||||||
Стоит так же отметить, что сейчас у нас по одному
|
|
||||||
сокету на пира, через которых идёт вообще весь трафик.
|
|
||||||
|
|
||||||
Надо попробовать буферизовать отправку ответов.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,25 +0,0 @@
|
||||||
title: introduce-references
|
|
||||||
status: open
|
|
||||||
|
|
||||||
|
|
||||||
Ввести понятие "reference", которая по сути --- мутабельная
|
|
||||||
ссыка.
|
|
||||||
|
|
||||||
Сразу же потребуется разграничние --- кто её может изменять,
|
|
||||||
варианты: никто, все, подписант изначальной ссылки.
|
|
||||||
|
|
||||||
Вопрос: как хранить список подписантов (hashref на список ключей?)
|
|
||||||
|
|
||||||
Вопрос: где и как задавать формат этой ссылки (ссылка на metadata?
|
|
||||||
ссылка на text-metadata?)
|
|
||||||
|
|
||||||
Но как бы ни было, нужна ссылка. Ссылка == указатель на merkle tree.
|
|
||||||
|
|
||||||
Merkle tree может быть непосредственно данных, или данных с метадатой.
|
|
||||||
|
|
||||||
Метадата может сильно меняться в процессе, начиная с какого-то момента
|
|
||||||
хорошо бы, что бы это никак не затрагивало хранилище.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,11 +0,0 @@
|
||||||
title: memory-leak-on-download
|
|
||||||
status: open
|
|
||||||
|
|
||||||
|
|
||||||
Выжирает огромное количество памяти при скачивании
|
|
||||||
и не отдаёт обратно.
|
|
||||||
|
|
||||||
Возможно, это очереди.
|
|
||||||
|
|
||||||
Возможно, накапливать чанки в памяти --- плохая
|
|
||||||
идея.
|
|
|
@ -1,8 +0,0 @@
|
||||||
title: no-retry-after-sleep-on-queue-exhaustion
|
|
||||||
status: fixed
|
|
||||||
|
|
||||||
|
|
||||||
Когда в очереди слишком много блоков на скачивание и
|
|
||||||
мы уходим в sleep пока буфер не уменьшится, нужно
|
|
||||||
возвращать очередной блок обратно в очередь, иначе
|
|
||||||
не будет повторного скачивания.
|
|
|
@ -1,5 +0,0 @@
|
||||||
title: no-retry-stalled-blocks
|
|
||||||
status: fixed
|
|
||||||
|
|
||||||
При использовании UDP почему-то не запрашиваются повторно
|
|
||||||
повисшие блоки.
|
|
|
@ -1,19 +0,0 @@
|
||||||
title: no-sweep-stalled-blocks
|
|
||||||
status: open
|
|
||||||
|
|
||||||
В случае, если часть чанков не пришла или не была обработана
|
|
||||||
и блок завис в очереди --- этот блок никогда не убирается
|
|
||||||
из очереди.
|
|
||||||
|
|
||||||
Нужен механизм наподобие LRU, когда в случае отсутствия активности
|
|
||||||
в течение времени блоки удаляются из всех очередей и отправляются
|
|
||||||
повторно выкачиваться.
|
|
||||||
|
|
||||||
Вероятно, нужно убрать данные блока из СhunkWriter и держать
|
|
||||||
его в сессии (?).
|
|
||||||
|
|
||||||
Вероятно, нужно добавить битовую карту пришедших блоков ---
|
|
||||||
это всего + ~ 68 байт при условии, что размер блока 256K.
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue