libmdbx 0.11.7 ankommer med projektmigrering til GitFlic, fejlrettelser og mere

Det udgivelse af ny libmdbx-biblioteksversion 0.11.7, lanceringen skiller sig ud for migreringen af ​​projektet til GitFlic-tjenesten efter at GitHub-administrationen fjernede libmdbx sammen med en række andre projekter den 15. april 2022 uden nogen advarsel eller forklaring, samtidig med at de blokerede adgangen til mange udviklere forbundet med virksomheder, der faldt under amerikanske sanktioner.

Fra brugerens synspunkt blev alle sider, repository og forgrene i projektet pludselig til en "404" side, uden mulighed for kommunikation og uden at finde ud af årsagerne.

Desværre er næsten alle versioner gået tabt, hvor der var mange spørgsmål med detaljerede svar, samt mange diskussioner. Tabet af denne information er den eneste objektive skade, som GitHub-administrationen formåede at påføre projektet, selvom delvise kopier af diskussionerne forbliver tilgængelige i archive.org-arkivet.

Tabet af den indbyggede CI-infrastruktur og scripts (gratis tilgængelig for OpenSource-projekter) tvang os til at gennemgå, forene og fjerne lidt teknisk gæld. Nu er CI blevet gendannet til næsten samme volumen (ca. 100 build-konfigurationer), med undtagelse af bygning og kørsel af tests for alle BSD- og Solaris-varianter. Sigende, efter GitHubs handlinger, blev der ikke modtaget nogen afklaringer eller meddelelser, bortset fra en påmindelse om behovet for betaling.

Vigtigste nye funktioner i libmdbx 0.11.7

Siden de seneste nyheder om udgivelsen af ​​libmdbx v0.11.3, ud over at gendanne fra GitHub-handlinger, er følgende forbedringer og rettelser værd at bemærke:

I alt 185 ændringer blev foretaget i 89 filer, ca. 3300 linjer blev tilføjet, cirka 4100 blev fjernet. Fjernet primært på grund af udrensning af allerede ubrugelige tekniske filer forbundet med GitHub og afhængige tjenester.

Tilføjet en rettelse for en opdaget inkonsistenseffekt/defekt i den flettede side og cache af bufferen i Linux-kernen. På systemer, hvor side- og buffercachen virkelig er forenet, giver det ikke mening for kernen at spilde hukommelse på to kopier af data ved at skrive til en allerede hukommelsestildelt fil. Derfor bliver de data, der skrives, synlige gennem hukommelsesallokeringen, før write()-systemkaldet fuldføres, selvom dataene endnu ikke er blevet skrevet til disken.

Helt anden adfærd er ikke rationel, for med en forsinket fletning skal du stadig fange låse til sidelister, kopiere data eller justere PTE'er. Den uudtalte regel om konsistens har således været på plads siden 1989, hvor den forenede buffer-cache dukkede op i SVR4. Som et resultat har det været meget arbejde at finde mærkelige fejl i travle libmdbx-produktionsscenarier. Først reproducere problemet, derefter verificere hypoteser og kontrollere forbedringer.

Vi kan nu trygt sige, at problemet blev pålideligt identificeret, lokaliseret og fjernet på trods af kompleksiteten og specificiteten af ​​afspilningsscenariet. Bypass-mekanismens arbejde blev også bekræftet af en af ​​Erigon (Ethereum)-udviklerne, i hans tilfælde, i debug-builden, blev beskyttelsen udløst som en regression på grund af en yderligere påstandskontrol.

Det skal bemærkes, at i forbindelse med den udbredte brug af libmdbx i arbejdsprojekter, er det grundlæggende vigtigere at sikre pålidelig drift, snarere end at finde ud af, om det er en fejl eller en funktion, og om en sådan konsistens kan stoles på især uden at lede efter årsagerne til inkonsekvens i Linux-kernen. Så her taler vi om at løse et problem, der kan påvirke brugerne.

Rettede en regression af EXDEV-fejlen (link mellem enheder), når du hot-kopierer en database uden komprimering til et andet filsystem, både via API'et og med mdbx_copy-værktøjet.
Kris Zyp har implementeret support til libmdbx på Deno.

Fast håndtering af værdi sat af MDBX_opt_rp_augment_limit mulighed ved behandling af store transaktioner på store databaser. Tidligere, på grund af en fejl, kunne unødvendige handlinger udføres, som nogle gange påvirkede ydeevnen på Ethereum-implementeringer (Erigon/Akula/Silkworm) og Binance Chain-projekter.

Mange fejl er blevet rettet, inklusive dem til C++ API og løste mange byggeproblemer på sjældne og eksotiske konfigurationer. En komplet liste over alle væsentlige forbedringer er tilgængelig på ChangeLog.

Endelig, hvis du er interesseret i at vide mere om det, kan du konsultere detaljerne I det følgende link.


Indholdet af artiklen overholder vores principper for redaktionel etik. Klik på for at rapportere en fejl her.

Vær den første til at kommentere

Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort.

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.