Safe Network новини 🇧🇬 28.10.2021

e09932bafee847c59dd5ad78731756d46dc5ca90

Бъговете могат да бъдат трудни за намиране, по-трудни за отстраняване и понякога дори по-трудни за обяснение. В тези новини се опитваме да изложим последния напредък, който постигаме, и плановете ни за следващите стъпки, но в известен смисъл това е лесно. Като да кажем, че напредваме стабилно към определена цел с лодка, без да казваме колко далеч всъщност е дестинацията, колко гребла имаме на наше разположение, и да игнорираме крокодилите, бързеите и други неприятности, които се крият по пътя. Трудното е да обясните тези грешки, без да се губите в плевелите. Това е мръсна работа, но в интерес на предоставянето на толкова необходимия контекст, някой трябва да изнесе тази информация. @joshuef изтегли късата сламка.

Общ напредък

API и CLI кодът вече е обединен в основното хранилище на Safe Network, въпреки че все още няма нова версия, тъй като има някои неуспешни CLI тестове. Процесът на публикуване също трябва да се коригира, за да се вземат предвид допълненията към това хранилище. @Chriso работи по това.

Също така доста близко е премахването на Connection Pool от qp2p, като тази функционалност е добавена директно в Safe Network, където можем да я настроим фино. Пулът за връзки поддържаше клиентските връзки отворени, но по начин, който беше труден за прецизиране и конфигуриране, както искаме. Изваждането му опростява qp2p и премахва множество крайни случаи - и със сигурност много потенциални грешки.

Междувременно @Joshuef премахна огромна пречка тази седмица, успявайки да намали натоварването на съобщенията при някои обстоятелства (между добри възли), от ~65 000 надолу до ~500, когато всичко е наред.

@bochaco и @yogesh са съсредоточени върху това как секциите водят записи помежду си, как този процес може да бъде по-ефективен и къде и в какъв формат се съхранява тази информация.

А @Lionel.faber търси как да приоритизираме типовете съобщения. Някои съобщения са по-важни от други. Съобщенията BLS DKG, които обработват разрешенията, трябва да имат основен приоритет. Нищо важно не трябва да се случва без съгласието на Старейшините. Освобождаването на връзките за тези съобщения ще ускори всичко. В другия край на спектъра, заявките, командите за данни и съобщенията за грешки могат спокойно да изчакат реда си, без да засягат производителността.

Бъгове

Не мислим, че някой някога е твърдял, че Safe е прост проект. Не е. Но не е и сложен. Частите са подредени, както несъмнено сте видели в различните тестови мрежи. И от последната тестова мрежа (което, знаем вече се усеща като далечно минало), ние се опитвахме да направим всичко по-стабилно.

Бъговете зад нестабилностите често се посочват в седмичните новини, но по доста технологичен начин. Така че тук искаме да дадем малко по общ преглед. Нещо малко по-достъпно за хора, които не обичат да четат програмен код с часове.

Имаме класически грешки

От типа 2+2=5

Или пропуснати съобщения между възли (вашата публикация не пристига).

Или проблем с връзката, където пристига повечето от това, което искате. Но най-важното, от който се нуждаете, не минава. (И сега трябва да опитате да го изпратите отново, за да можете да видите защо то не пристига.)

Състояния при надпреварване, при които проблем може да възникне ако някой код или програма се изпълни по-бързо от друга част от системата. (Така че може би ще видите този проблем само ако вашият кон LuckyProblems се появи точно преди OtherwiseWeWork и точно след ThisAlreadyHappened; но всяка друга комбинация се осъществява успешно).

Завъртания. Нещата продължават да се случват, защото задействат неща в края. Може би завинаги. Те често причиняват блокиране на всичко или направо срив, защото продължават да заемат ресурсите на програмата.

Зависвания. Известни също като забивания. Тези бъгове са уловката 22 на света на бъговете. Можете да продължите само ако имате номер=5, но можете да зададете номер само ако имате номер=5. Това очевидно е симптом на класически бъг, но също така често върви ръка за ръка с нещо състезателно, така че не го забелязвате, докато не стане твърде късно (и сега не сте сигурни защо това се случва… :thinking:.)

Освен това имаме още някои специфични за Safe проблеми

Които често са само симптоми на горе описаните проблеми…

Усилване на съобщението. Това е моментът, когато може да очакваме да получим 5 съобщения до нашите възли за съхранение, но вместо това получаваме 500. Което от своя страна води до връщане на още 15 000. Обикновено има грешка (2+2=5), когато виждаме това, или може да се окаже, че системата не прави това, което сме мислили, че ще направи, така че трябва да преосмислим дизайна. (Наскоро имахме AE повторни опити, наивно изпратени до всички Старейшини. И като усложнение, следващият набор от повторни опити ще бъде изпратен от всички старейшини… до всички старейшини. :chart_with_upwards_trend:)

Понякога получаваме липса на пропускателна способност. Съобщенията не се губят. Но нещата вървят бавно. Защо!? Понякога комбинация от всичко по-горе.

В момента, след известно преработване, имаме твърде много пропускателна способност. Сега това не е проблем сам по себе си, но често може да причини различни други проблеми… (изберете си някои от видовете грешки, споменати в тази публикация!)

Разделяния! Разделянията при секциите и знанието ни за тях (кой е дошъл преди нас… кой от кого произлиза)… ако възлите не са съгласни по някаква причина (поради бъгове), може да доведат до два набора валидни данни, но няма да знам кое всъщност е от значение за настоящата ни ситуация.

Данните не са намерени. Очевидно е… но защо? Е, всяко от изброените по-горе може да доведе до това, че данните не са записани на първо място. Така че успех в намирането на това, което не съществува!

Без разделяне! Имаме нужда от разделяне, за да поддържаме мрежата здрава (за да разпределим по-лесно натоварването и да поддържаме устойчивост на хакове, например). Неразделянето може да е грешка в алгоритъма на DKG (генериране на разпределени ключове… или при начина, по който даваме на старейшините правомощия).

Избор на грешна цел. Понякога изглежда, че системата за съобщения работи и пратката е доставена. Но всъщност сме го изпратили на грешен човек (или го изпратихме до цяла секция!?).

Прекалено развълнувани! Понякога правим нещо веднага щом можем. Но мрежата, в необходимия си път към евентуална последователност, всъщност все още не е готова. (Представете си, че сте изпратили парче данни за съхранение и все още не всичко е съхранено, но вече се опитвате да го ПОЛУЧИТЕ.) Може да изглежда, че има грешка. Но всъщност, ако опитате отново след няколко секунди, може би всичко ще е там и ще е наред. Мислехте, че имате грешка, но бяхте просто твърде бързи.

И така

Така. Това е малко грубо обобщение на различни неща, които можем да видим и на които можем да попаднем в системата. Те може да възникнат при отделен възел, при клиент или при секция… И само понякога или само във вторник на неясна версия на Linux. И когато видите проблема, той може да се крие отвъд 3 или 4 различни типа грешки, преди да стигнете до корена му.

Всичко това, разглеждаме в система от 45 възела и множество клиенти (средно, докато правим вътрешни тестове).

Safe не е толкова сложен, когато се замислите, поне концептуално (споделяне на данни между компютри). Но също така все още не е толкова прост, колкото може да бъде, поради което все още отстраняваме проблемите, преработваме нещата (правейки ги по-прости), както и внедряваме нови функции (а понякога те са насочени директно към подпомагане на отстраняването на грешки).

Премахването на ненужния код и сложността ни помага да стигнем до нещо просто, което, наред с решаването на класическите грешки в системата, често е и един от най-важните начини за премахването на грешки като цяло. По-малко код, по-малко проблеми. :bulb:

Приближаваме се до финала! Не винаги се усеща бързо, но винаги се усеща, че се движим напред (дори когато понякога трябва да се върнем малко назад).


Преводи:

:uk: English :ru: Russian ; :de: German ; :es: Spanish ; :fr: French

  • Подробна информация може да намерите както винаги във форума на международната общност: Safe Network Forum
  • Ако имате въпроси може да ги зададете във Facebook групата на българската Safe общност: https://www.facebook.com/groups/SafeNetworkBulgaria/
  • Ако искате да следите последните новини заповядайте във Facebook страницата на Safe Network България: https://www.facebook.com/SafeNetworkBulgaria/