libmdbx 0.11.7 пристига с миграция на проекти към GitFlic, корекции на грешки и други

В пускане на новата версия на библиотеката libmdbx 0.11.7, стартирането се откроява с миграцията на проекта към услугата GitFlic след като администрацията на GitHub премахна libmdbx заедно с редица други проекти на 15 април 2022 г. без никакво предупреждение или обяснение, като същевременно блокира достъпа до много разработчици, свързани с компании, попаднали под санкции на САЩ.

От гледна точка на потребителя, всички страници, хранилището и разклоненията на проекта изведнъж се превърнаха в страница „404“, без възможност за комуникация и без да се открият причините.

За съжаление почти всички версии са загубени, в който имаше много въпроси с подробни отговори, както и много дискусии. Загубата на тази информация е единствената обективна вреда, която администрацията на GitHub успя да нанесе на проекта, въпреки че частични копия от дискусиите остават налични в архива archive.org.

Загубата на вградената CI инфраструктура и скриптове (достъпни безплатно за проекти с OpenSource) ни принуди да прегледаме, унифицираме и елиминираме малък технически дълг. Сега CI е възстановен до почти същия обем (около 100 компилационни конфигурации), с изключение на изграждането и провеждането на тестове за всички варианти на BSD и Solaris. Показателно е, че след действията на GitHub не са получени никакви разяснения или уведомления, освен напомняне за необходимостта от плащане.

Основни нови функции на libmdbx 0.11.7

След последните новини за пускането на libmdbx v0.11.3, в допълнение към възстановяването от действията на GitHub, си струва да се отбележат следните подобрения и поправки:

Направени са общо 185 промени в 89 файла, добавени са приблизително 3300 реда, бяха премахнати приблизително 4100. Премахнато основно поради изчистване на вече безполезни технически файлове, свързани с GitHub и зависими услуги.

Добавен a поправка за открит ефект на несъответствие/дефект в обединената страница и кеша на буфера в ядрото на Linux. В системи, където кешът на страниците и буфера са наистина унифицирани, няма смисъл ядрото да губи памет за две копия на данни, като записва в вече разпределен файл. Следователно записаните данни стават видими чрез разпределението на паметта преди да завърши системното извикване write(), дори ако данните все още не са записани на диск.

Като цяло другото поведение не е рационално, защото при забавено сливане все още трябва да хващате заключвания за списъци със страници, да копирате данни или да коригирате PTE. Така негласното правило за последователност е в сила от 1989 г., когато унифицираният буферен кеш се появи в SVR4. В резултат на това намирането на странни грешки в натоварените сценарии за производство на libmdbx беше много работа. Първо, възпроизвеждане на проблема, след това проверка на хипотезите и проверка на подобренията.

Вече можем с увереност да кажем, че проблемът е надеждно идентифициран, локализиран и отстранен, въпреки сложността и спецификата на сценария за възпроизвеждане. Също така, работата на механизма за байпас беше потвърдена от един от разработчиците на Erigon (Ethereum), в неговия случай, в сборката за отстраняване на грешки, защитата беше задействана като регресия поради допълнителна проверка на твърдението.

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

Поправена е регресия на грешката EXDEV (връзка между устройства) при горещо копиране на база данни без уплътняване в друга файлова система, както чрез API, така и с помощната програма mdbx_copy.
Kris Zyp внедри поддръжка за libmdbx на Deno.

Фиксирана обработка на стойност, зададена от опцията MDBX_opt_rp_augment_limit при обработка на големи транзакции в големи бази данни. Преди това поради грешка можеше да се извършват ненужни действия, които понякога се отразяваха на производителността на реализациите на Ethereum (Erigon/Akula/Silkworm) и проекти на Binance Chain.

Много грешки са отстранени, включително тези за C++ API и коригира много проблеми при изграждането на редки и екзотични конфигурации. Пълен списък на всички значителни подобрения е наличен в ChangeLog.

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


Оставете вашия коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

*

*

  1. Отговорен за данните: Мигел Анхел Гатон
  2. Предназначение на данните: Контрол на СПАМ, управление на коментари.
  3. Легитимация: Вашето съгласие
  4. Съобщаване на данните: Данните няма да бъдат съобщени на трети страни, освен по законово задължение.
  5. Съхранение на данни: База данни, хоствана от Occentus Networks (ЕС)
  6. Права: По всяко време можете да ограничите, възстановите и изтриете информацията си.