Dumating ang libmdbx 0.11.7 kasama ang paglipat ng proyekto sa GitFlic, mga pag-aayos ng bug at higit pa

Ang release ng bagong libmdbx library na bersyon 0.11.7, ang paglulunsad namumukod-tangi para sa paglipat ng proyekto sa serbisyo ng GitFlic pagkatapos alisin ng administrasyon ng GitHub ang libmdbx kasama ang ilang iba pang proyekto noong Abril 15, 2022 nang walang anumang babala o paliwanag, habang hinaharangan din ang pag-access sa maraming developer na nauugnay sa mga kumpanyang nasa ilalim ng mga parusa ng US.

Mula sa pananaw ng gumagamit, ang lahat ng mga pahina, imbakan at mga tinidor ng proyekto ay biglang naging isang "404" na pahina, na walang posibilidad ng komunikasyon at nang hindi alam ang mga dahilan.

Sa kasamaang palad, halos lahat ng mga bersyon ay nawala, kung saan mayroong maraming mga tanong na may mga detalyadong sagot, pati na rin ang maraming mga talakayan. Ang pagkawala ng impormasyong ito ay ang tanging layuning pinsala na naidulot ng administrasyong GitHub sa proyekto, bagama't ang mga bahagyang kopya ng mga talakayan ay nananatiling available sa archive.org na archive.

Ang pagkawala ng built-in na imprastraktura ng CI at mga script (magagamit nang libre sa mga proyekto ng OpenSource) ay nagpilit sa amin na suriin, pag-isahin, at alisin ang kaunting teknikal na utang. Ngayon, ang CI ay naibalik sa halos parehong volume (mga 100 build configuration), maliban sa pagbuo at pagpapatakbo ng mga pagsubok para sa lahat ng BSD at Solaris na variant. Kapansin-pansin, pagkatapos ng mga aksyon ng GitHub, walang natanggap na paglilinaw o notification, bukod sa isang paalala ng pangangailangan para sa pagbabayad.

Pangunahing mga bagong tampok ng libmdbx 0.11.7

Dahil ang pinakabagong balita tungkol sa paglabas ng libmdbx v0.11.3, bilang karagdagan sa pagbawi mula sa mga pagkilos ng GitHub, ang mga sumusunod na pagpapabuti at pag-aayos ay dapat tandaan:

Isang kabuuan ng 185 mga pagbabago ang ginawa sa 89 na mga file, humigit-kumulang 3300 mga linya ang naidagdag, humigit-kumulang 4100 ang inalis. Inalis lalo na dahil sa pag-purging ng mga walang silbi na tech file na nauugnay sa GitHub at mga umaasa na serbisyo.

Idinagdag a ayusin para sa isang nakitang hindi pagkakapare-pareho na epekto/depekto sa pinagsanib na page at cache ng buffer sa Linux kernel. Sa mga system kung saan tunay na pinag-isa ang page at buffer caches, hindi makatuwiran para sa kernel na mag-aksaya ng memorya sa dalawang kopya ng data sa pamamagitan ng pagsulat sa isang file na nakalaan na sa memorya. Samakatuwid, ang data na nakasulat ay makikita sa pamamagitan ng paglalaan ng memorya bago makumpleto ang write() system call, kahit na ang data ay hindi pa naisulat sa disk.

Sa kabuuan, ang iba pang pag-uugali ay hindi makatwiran, dahil sa isang naantalang pagsasama, kailangan mo pa ring kumuha ng mga lock para sa mga listahan ng page, kopyahin ang data, o ayusin ang mga PTE. Kaya, ang hindi binibigkas na tuntunin ng pagkakapare-pareho ay nasa lugar mula noong 1989, nang lumitaw ang pinag-isang buffer cache sa SVR4. Bilang resulta, ang paghahanap ng mga kakaibang bug sa mga abalang senaryo ng produksyon ng libmdbx ay naging napakahirap. Una, muling gawin ang problema, pagkatapos ay i-verify ang mga hypotheses at suriin ang mga pagpapabuti.

Kumpiyansa na naming masasabi na ang isyu ay mapagkakatiwalaang natukoy, nahanap, at naalis, sa kabila ng pagiging kumplikado at pagtitiyak ng senaryo ng pag-playback. Gayundin, ang gawain ng mekanismo ng bypass ay nakumpirma ng isa sa mga developer ng Erigon (Ethereum), sa kanyang kaso, sa debug build, ang proteksyon ay na-trigger bilang isang regression dahil sa isang karagdagang assertion check.

Dapat pansinin na sa konteksto ng malawakang paggamit ng libmdbx sa mga gumaganang proyekto, sa panimula ay mas mahalaga na tiyakin ang maaasahang operasyon, sa halip na malaman kung ito ay isang bug o isang tampok, at kung ang gayong pagkakapare-pareho ay maaaring umasa sa lalo na nang hindi hinahanap ang mga sanhi ng hindi pagkakapare-pareho sa loob ng Linux kernel. Kaya, dito pinag-uusapan natin ang tungkol sa pag-aayos ng isyu na maaaring makaapekto sa mga user.

Inayos ang regression ng EXDEV bug (link sa pagitan ng mga device) kapag mainit ang pagkopya ng database nang walang compaction sa isa pang file system, kapwa sa pamamagitan ng API at gamit ang mdbx_copy utility.
Ipinatupad ni Kris Zyp ang suporta para sa libmdbx sa Deno.

Nakapirming paghawak ng halaga na itinakda ng MDBX_opt_rp_augment_limit na opsyon kapag nagpoproseso ng malalaking transaksyon sa malalaking database. Dati, dahil sa isang bug, maaaring magsagawa ng mga hindi kinakailangang aksyon, kung minsan ay nakakaapekto sa pagganap sa mga pagpapatupad ng Ethereum (Erigon/Akula/Silkworm) at mga proyekto ng Binance Chain.

Maraming mga bug ang naayos, kabilang ang para sa C++ API at inayos ang maraming isyu sa build sa mga bihira at kakaibang configuration. Ang isang kumpletong listahan ng lahat ng makabuluhang pagpapabuti ay magagamit sa ChangeLog.

Sa wakas, kung interesado kang malaman ang higit pa tungkol dito, maaari mong konsultahin ang mga detalye Sa sumusunod na link.


Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: Miguel Ángel Gatón
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.