libmdbx 0.11.7 kommer med projektmigrering till GitFlic, buggfixar och mer

De release av nya libmdbx-biblioteksversion 0.11.7, lanseringen sticker ut för migreringen av projektet till GitFlic-tjänsten efter att GitHub-administrationen tog bort libmdbx tillsammans med ett antal andra projekt den 15 april 2022 utan någon varning eller förklaring, samtidigt som det blockerade åtkomsten till många utvecklare associerade med företag som fallit under amerikanska sanktioner.

Ur användarens synvinkel förvandlades plötsligt alla sidor, arkivet och projektets gafflar till en "404"-sida, utan möjlighet till kommunikation och utan att ta reda på orsakerna.

Tyvärr har nästan alla versioner gått förlorade, där det fanns många frågor med utförliga svar, samt många diskussioner. Förlusten av denna information är den enda objektiva skada som GitHub-administrationen lyckades orsaka projektet, även om partiella kopior av diskussionerna förblir tillgängliga i archive.org-arkivet.

Förlusten av den inbyggda CI-infrastrukturen och skripten (tillgängliga gratis för OpenSource-projekt) tvingade oss att granska, ena och eliminera lite tekniska skulder. Nu har CI återställts till nästan samma volym (cirka 100 byggkonfigurationer), med undantag för att bygga och köra tester för alla BSD- och Solaris-varianter. Talande nog, efter GitHubs agerande, inkom inga förtydliganden eller meddelanden, förutom en påminnelse om behov av betalning.

De viktigaste nya funktionerna i libmdbx 0.11.7

Sedan de senaste nyheterna om lanseringen av libmdbx v0.11.3, förutom att återställa från GitHub-åtgärder, är följande förbättringar och korrigeringar värda att notera:

Totalt 185 ändringar gjordes i 89 filer, cirka 3300 rader lades till, cirka 4100 XNUMX togs bort. Togs bort främst på grund av rensning av redan värdelösa tekniska filer associerade med GitHub och beroende tjänster.

Lade till en fixa för en upptäckt inkonsekvenseffekt/defekt i den sammanslagna sidan och cachen av bufferten i Linux-kärnan. På system där sid- och buffertcachen verkligen är förenade, är det inte meningsfullt för kärnan att slösa minne på två kopior av data genom att skriva till en redan minnestilldelad fil. Därför blir data som skrivs synliga genom minnesallokeringen innan write()-systemanropet slutförs, även om data ännu inte har skrivits till disk.

Allt annat beteende är inte rationellt, för med en fördröjd sammanslagning måste du fortfarande låsa upp sidlistor, kopiera data eller justera PTE:er. Således har den outtalade regeln om konsistens funnits sedan 1989, när den förenade buffertcachen dök upp i SVR4. Som ett resultat har det varit mycket jobb att hitta konstiga buggar i upptagna libmdbx-produktionsscenarier. Först, reproducera problemet, sedan verifiera hypoteser och kontrollera förbättringar.

Vi kan nu med säkerhet säga att problemet identifierades, lokaliserades och togs bort på ett tillförlitligt sätt, trots komplexiteten och specificiteten i uppspelningsscenariot. Arbetet med bypass-mekanismen bekräftades också av en av Erigon (Ethereum)-utvecklarna, i hans fall, i felsökningsbygget, utlöstes skyddet som en regression på grund av en ytterligare påståendekontroll.

Det bör noteras att i samband med den utbredda användningen av libmdbx i arbetsprojekt är det i grunden viktigare att säkerställa tillförlitlig drift, snarare än att ta reda på om det är en bugg eller en funktion, och om en sådan överensstämmelse kan litas på speciellt utan att leta efter orsakerna till inkonsekvens i Linux-kärnan. Så här pratar vi om att fixa ett problem som kan påverka användare.

Fixade en regression av EXDEV-felet (länk mellan enheter) när du hotkopierar en databas utan komprimering till ett annat filsystem, både via API:et och med verktyget mdbx_copy.
Kris Zyp har implementerat stöd för libmdbx på Deno.

Fast hantering av värde satt av MDBX_opt_rp_augment_limit-alternativet vid bearbetning av stora transaktioner på stora databaser. Tidigare, på grund av en bugg, kunde onödiga åtgärder utföras, som ibland påverkade prestandan på Ethereum-implementeringar (Erigon/Akula/Silkworm) och Binance Chain-projekt.

Många buggar har åtgärdats, inklusive de för C++ API och fixade många byggproblem på sällsynta och exotiska konfigurationer. En komplett lista över alla betydande förbättringar finns på ChangeLog.

Slutligen, om du är intresserad av att veta mer om det, kan du konsultera detaljerna I följande länk.


Lämna din kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade med *

*

*

  1. Ansvarig för uppgifterna: Miguel Ángel Gatón
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.