Pagpagawas sa DBMS libmdbx 0.11.7. Ibalhin ang Pag-uswag sa GitFlic Human sa Lockdown sa GitHub

Ang libmdbx 0.11.7 (MDBX) nga librarya gipagawas uban ang pagpatuman sa usa ka high-performance nga compact embedded key-value database. Ang libmdbx code kay gipang-apud-apod ubos sa OpenLDAP Public License. Ang tanan nga kasamtangan nga operating system ug arkitektura gisuportahan, ingon man ang Russian Elbrus 2000.

Nailhan ang pagpagawas alang sa paglalin sa proyekto sa serbisyo sa GitFlic pagkahuman gitangtang sa administrasyon sa GitHub ang libmdbx kauban ang daghang uban pang mga proyekto kaniadtong Abril 15, 2022 nga wala’y bisan unsang pasidaan o katin-awan, samtang dungan nga gibabagan ang pag-access sa daghang mga developer nga nakig-uban sa mga kompanya nga nahulog. ubos sa mga silot sa US. Gikan sa punto sa panglantaw sa user, ang tanan nga mga panid, repositoryo ug mga tinidor sa proyekto kalit nga nahimong "404" nga panid, nga walay posibilidad sa bisan unsa nga komunikasyon ug pagpangita sa mga rason.

Ikasubo, hapit tanan nga mga isyu nawala, diin adunay daghang mga pangutana nga adunay detalyado nga mga tubag, ingon man daghang mga panaghisgot. Ang pagkawala sa kini nga kasayuran mao ra ang katuyoan nga kadaot nga nahimo sa administrasyon sa GitHub sa proyekto. Ang mga partial nga kopya sa mga diskusyon nagpabilin nga anaa sa archive.org archive.

Ang pagkawala sa mga built-in nga CI script ug imprastraktura (anaa alang sa mga proyekto sa OpenSource nga libre) nagpugos kanamo sa paghimo sa pagbag-o, paghiusa ug pagwagtang sa gamay nga teknikal nga utang. Karon ang CI gipahiuli sa halos parehas nga gidak-on, gawas sa mga pagtukod ug pagsulay nga nagdagan alang sa tanan nga mga variant sa BSD ug Solaris. Sa tinuud, pagkahuman sa mga aksyon sa GitHub, wala’y mga pagpatin-aw o pahibalo nga nadawat, gawas sa usa ka pahinumdom sa panginahanglan sa pagbayad ug pagsulay sa pagtangtang sa salapi.

Sukad sa katapusang balita bahin sa pagpagawas sa libmdbx v0.11.3, dugang sa pagbawi gikan sa mga aksyon sa GitHub, ang mga mosunud nga pag-ayo ug pag-ayo angay nga matikdan:

  • Gidugang ang usa ka workaround alang sa usa ka nakit-an nga incoherence nga epekto/depekto sa hiniusa nga panid ug buffer cache sa Linux kernel. Sa mga sistema diin ang panid ug buffer caches tinuod nga nahiusa, dili makatarunganon nga ang kernel mag-usik sa panumduman sa duha ka kopya sa datos kung magsulat sa usa ka file nga gi-mapa sa memorya. Busa, ang data nga gisulat mahimong makita pinaagi sa memory mapping sa dili pa makompleto ang write() system call, bisan kung ang data wala pa masulat sa disk.

    Sa kinatibuk-an, ang uban nga kinaiya dili makatarunganon, tungod kay sa usa ka nalangan nga paghiusa, kinahanglan pa nimo nga kuhaon ang mga kandado alang sa mga lista sa panid, kopyahon ang datos, o i-adjust ang PTE. Busa, ang wala gisulti nga lagda sa panaghiusa nagsugod na sukad sa 1989, sa dihang ang hiniusang buffer cache nagpakita sa SRV4. Busa, ang pagpangita sa mga katingad-an nga mga kapakyasan sa busy nga mga senaryo sa produksiyon sa libmdbx nanginahanglan daghang trabaho. Una, pinaagi sa pagkopya sa problema, dayon pinaagi sa pag-verify sa mga pangagpas ug pagsusi sa mga kalamboan.

    Karon kami masaligon nga makaingon nga ang problema kasaligan nga nahibal-an, na-localize ug kasaligan nga giwagtang, bisan pa sa pagkakomplikado ug espesipiko sa senaryo sa playback. Dugang pa, ang buhat sa mekanismo sa bypass gipamatud-an sa usa sa mga nag-develop sa Erigon (Ethereum), sa iyang kaso, sa debug build, ang proteksyon na-trigger isip usa ka regression tungod sa usa ka dugang nga assert check.

    Kinahanglan nga hinumdoman nga sa konteksto sa kaylap nga paggamit sa libmdbx sa mga nagtrabaho nga mga proyekto, hinungdanon nga labi ka hinungdanon aron masiguro ang kasaligan nga operasyon, ug dili mahibal-an "kini ba usa ka bug o usa ka bahin" ug kung ang ingon nga panagsama mahimong masaligan. , ilabi na sa dili pagpangita sa mga hinungdan sa incoherence sulod sa Linux kernel. Busa, dinhi kita naghisgot mahitungod sa pag-ayo sa usa ka problema nga makaapekto sa mga tiggamit.

  • Giayo ang usa ka pagbag-o sa EXDEV (Cross-device link) nga sayup kung init nga pagkopya sa usa ka database nga wala’y compactification sa lain nga file system, pinaagi sa API ug gamit ang mdbx_copy utility.
  • Gipatuman ni Kris Zyp ang suporta alang sa libmdbx sa Deno. Gi-package ni Kai Wetlesen ang mga RPM para sa Fedora. Gipatuman ni David Bouyssie ang mga pagbugkos alang sa Scala.
  • Naayo nga pagdumala sa kantidad nga gitakda sa MDBX_opt_rp_augment_limit nga kapilian sa pagproseso sa dagkong mga transaksyon sa dagkong mga database. Kaniadto, tungod sa usa ka bug, ang wala kinahanglana nga mga aksyon mahimo’g, nga usahay makaapekto sa pasundayag sa mga pagpatuman sa Ethereum (Erigon / Akula / Silkworm) ug mga proyekto sa Binance Chain.
  • Daghang mga bug ang naayo, lakip ang naa sa C++ API. Giayo ang daghang mga isyu sa pagtukod sa talagsaon ug eksotikong mga pag-configure. Ang usa ka kompleto nga lista sa tanan nga hinungdanon nga mga pag-uswag anaa sa ChangeLog.
  • Kinatibuk-ang 185 ka kausaban ang gihimo sa 89 ka mga file, ≈3300 ka linya ang gidugang, ≈4100 ang natangtang. Gikuha ang labi ka daghan tungod sa paglimpyo sa wala’y kapuslanan nga mga file sa teknolohiya nga adunay kalabotan sa GitHub ug mga nagsalig nga serbisyo.

Sa kasaysayan, ang libmdbx usa ka lawom nga pagdesinyo pag-usab sa LMDB DBMS ug milabaw sa iyang katigulangan sa termino sa pagkakasaligan, feature set ug performance. Kung itandi sa LMDB, ang libmdbx nagbutang ug daghang gibug-aton sa kalidad sa code, kalig-on sa API, pagsulay, ug awtomatiko nga pagsusi. Ang usa ka gamit alang sa pagsusi sa integridad sa istruktura sa database gihatagan og pipila ka mga kapilian sa pagbawi.

Sa teknolohiya, ang libmdbx nagtanyag sa ACID, estrikto nga pagbag-o sa serialization, ug non-blocking nga mga pagbasa nga adunay linear scaling sa mga CPU cores. Gisuportahan ang autocompactification, awtomatik nga pagdumala sa gidak-on sa database, ug gibanabana nga range sa pangutana. Sukad sa 2016, ang proyekto gipondohan sa Positive Technologies ug gigamit sa mga produkto niini sukad sa 2017.

Nagtanyag ang libmdbx og usa ka naugmad nga C++ API, ingon man ang gisuportahan sa mga mahiligon nga pagbugkos sa Rust, Haskell, Python, NodeJS, Ruby, Go, Nim, Deno, Scala.

Source: opennet.ru

Idugang sa usa ka comment