libmdbx 0.11.7 kommer med prosjektmigrering til GitFlic, feilrettinger og mer

De utgivelse av ny libmdbx-bibliotekversjon 0.11.7, lanseringen skiller seg ut for migreringen av prosjektet til GitFlic-tjenesten etter at GitHub-administrasjonen fjernet libmdbx sammen med en rekke andre prosjekter 15. april 2022 uten noen advarsel eller forklaring, samtidig som de blokkerte tilgangen til mange utviklere knyttet til selskaper som falt under amerikanske sanksjoner.

Fra brukerens synspunkt ble alle sidene, depotet og gaflene til prosjektet plutselig blitt til en "404"-side, uten mulighet for kommunikasjon og uten å finne ut årsakene.

Dessverre har nesten alle versjoner gått tapt, der det var mange spørsmål med detaljerte svar, samt mange diskusjoner. Tapet av denne informasjonen er den eneste objektive skaden som GitHub-administrasjonen klarte å påføre prosjektet, selv om delvise kopier av diskusjonene fortsatt er tilgjengelige i archive.org-arkivet.

Tapet av den innebygde CI-infrastrukturen og skriptene (tilgjengelig gratis for OpenSource-prosjekter) tvang oss til å gjennomgå, forene og eliminere litt teknisk gjeld. Nå har CI blitt gjenopprettet til nesten samme volum (ca. 100 byggekonfigurasjoner), med unntak av bygging og kjøretester for alle BSD- og Solaris-varianter. Sigende nok, etter GitHubs handlinger, ble det ikke mottatt noen avklaringer eller varsler, bortsett fra en påminnelse om behov for betaling.

Nye hovedfunksjoner i libmdbx 0.11.7

Siden de siste nyhetene om utgivelsen av libmdbx v0.11.3, i tillegg til å gjenopprette fra GitHub-handlinger, er følgende forbedringer og rettelser verdt å merke seg:

Totalt ble det gjort 185 endringer i 89 filer, omtrent 3300 linjer ble lagt til, ca. 4100 ble fjernet. Fjernet primært på grunn av tømming av allerede ubrukelige tekniske filer knyttet til GitHub og avhengige tjenester.

Lagt til en fikse for en oppdaget inkonsistenseffekt/defekt i den sammenslåtte siden og hurtigbufferen av bufferen i Linux-kjernen. På systemer der side- og bufferbufferen virkelig er forent, gir det ikke mening for kjernen å kaste bort minne på to kopier av data ved å skrive til en fil som allerede er tildelt minne. Derfor blir dataene som skrives synlige gjennom minneallokeringen før write()-systemkallet fullføres, selv om dataene ennå ikke er skrevet til disk.

Helt annen oppførsel er ikke rasjonell, fordi med en forsinket sammenslåing, må du fortsatt fange låser for sidelister, kopiere data eller justere PTE-er. Dermed har den uuttalte regelen om konsistens vært på plass siden 1989, da den enhetlige bufferbufferen dukket opp i SVR4. Som et resultat har det vært mye arbeid å finne rare feil i travle libmdbx-produksjonsscenarier. Først reprodusere problemet, deretter verifisere hypoteser og sjekke forbedringer.

Vi kan nå trygt si at problemet ble pålitelig identifisert, lokalisert og fjernet, til tross for kompleksiteten og spesifisiteten til avspillingsscenariet. Arbeidet med bypass-mekanismen ble også bekreftet av en av Erigon (Ethereum)-utviklerne, i hans tilfelle, i feilsøkingsbygget, ble beskyttelsen utløst som en regresjon på grunn av en ekstra påstandssjekk.

Det skal bemerkes at i sammenheng med den utbredte bruken av libmdbx i arbeidsprosjekter, er det grunnleggende viktigere å sikre pålitelig drift, i stedet for å finne ut om det er en feil eller en funksjon, og om en slik konsistens kan stole på. spesielt uten å lete etter årsakene til inkonsekvens i Linux-kjernen. Så her snakker vi om å fikse et problem som kan påvirke brukere.

Rettet en regresjon av EXDEV-feilen (kobling mellom enheter) når du hot-kopierer en database uten komprimering til et annet filsystem, både gjennom API og med mdbx_copy-verktøyet.
Kris Zyp har implementert støtte for libmdbx på Deno.

Fast håndtering av verdi satt av MDBX_opt_rp_augment_limit-alternativet ved behandling av store transaksjoner på store databaser. Tidligere, på grunn av en feil, kunne unødvendige handlinger utføres, noen ganger påvirke ytelsen på Ethereum-implementeringer (Erigon/Akula/Silkworm) og Binance Chain-prosjekter.

Mange feil har blitt fikset, inkludert de for C++ API og fikset mange byggeproblemer på sjeldne og eksotiske konfigurasjoner. En fullstendig liste over alle vesentlige forbedringer er tilgjengelig på ChangeLog.

Til slutt, hvis du er interessert i å vite mer om det, kan du se detaljene I den følgende lenken.


Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.