libmdbx 0.11.7 tiba dengan pemindahan projek ke GitFlic, pembetulan pepijat dan banyak lagi

The keluaran perpustakaan libmdbx baharu versi 0.11.7, pelancaran itu menonjol untuk migrasi projek ke perkhidmatan GitFlic selepas pentadbiran GitHub mengalih keluar libmdbx bersama-sama dengan beberapa projek lain pada 15 April 2022 tanpa sebarang amaran atau penjelasan, sambil turut menyekat akses kepada banyak pembangun yang dikaitkan dengan syarikat yang berada di bawah sekatan AS.

Dari sudut pandangan pengguna, semua halaman, repositori dan garpu projek tiba-tiba bertukar menjadi halaman "404", tanpa kemungkinan komunikasi dan tanpa mengetahui sebabnya.

Malangnya, hampir semua versi telah hilang, di mana terdapat banyak soalan dengan jawapan terperinci, serta banyak perbincangan. Kehilangan maklumat ini adalah satu-satunya kerosakan objektif yang berjaya ditimbulkan oleh pentadbiran GitHub ke atas projek itu, walaupun sebahagian salinan perbincangan kekal tersedia dalam arkib archive.org.

Kehilangan infrastruktur dan skrip CI terbina dalam (tersedia secara percuma untuk projek OpenSource) memaksa kami menyemak, menyatukan dan menghapuskan sedikit hutang teknikal. Kini CI telah dipulihkan kepada volum yang hampir sama (kira-kira 100 konfigurasi binaan), kecuali membina dan menjalankan ujian untuk semua varian BSD dan Solaris. Jelasnya, selepas tindakan GitHub, tiada penjelasan atau pemberitahuan diterima, selain daripada peringatan tentang keperluan untuk pembayaran.

Ciri baru utama libmdbx 0.11.7

Sejak berita terkini tentang keluaran libmdbx v0.11.3, selain daripada memulihkan daripada tindakan GitHub, penambahbaikan dan pembetulan berikut perlu diberi perhatian:

Sebanyak 185 perubahan telah dibuat kepada 89 fail, kira-kira 3300 baris telah ditambah, kira-kira 4100 telah dialih keluar. Dialih keluar terutamanya disebabkan pembersihan fail teknologi yang sudah tidak berguna yang dikaitkan dengan GitHub dan perkhidmatan bergantung.

Menambah a betulkan kesan/kecacatan ketidakkonsistenan yang dikesan dalam halaman gabungan dan cache penimbal dalam kernel Linux. Pada sistem di mana cache halaman dan penimbal benar-benar bersatu, adalah tidak masuk akal untuk kernel membazirkan memori pada dua salinan data dengan menulis ke fail yang telah diperuntukkan memori. Oleh itu, data yang ditulis menjadi kelihatan melalui peruntukan memori sebelum panggilan sistem write() selesai, walaupun data masih belum ditulis ke cakera.

Keseluruhan tingkah laku lain adalah tidak rasional, kerana dengan gabungan tertunda, anda masih perlu menangkap kunci untuk senarai halaman, menyalin data atau melaraskan PTE. Oleh itu, peraturan ketekalan yang tidak dinyatakan telah dilaksanakan sejak 1989, apabila cache penimbal bersatu muncul dalam SVR4. Akibatnya, mencari pepijat pelik dalam senario pengeluaran libmdbx yang sibuk telah menjadi banyak kerja. Pertama, menghasilkan semula masalah, kemudian mengesahkan hipotesis dan menyemak penambahbaikan.

Kami kini boleh dengan yakin mengatakan bahawa isu itu telah dikenal pasti, ditempatkan dan dialih keluar dengan pasti, walaupun senario main balik itu senario yang rumit dan khusus. Selain itu, kerja mekanisme pintasan telah disahkan oleh salah seorang pembangun Erigon (Ethereum), dalam kesnya, dalam binaan nyahpepijat, perlindungan telah dicetuskan sebagai regresi kerana pemeriksaan penegasan tambahan.

Perlu diingat bahawa dalam konteks penggunaan meluas libmdbx dalam projek kerja, pada asasnya adalah lebih penting untuk memastikan operasi yang boleh dipercayai, dan bukannya untuk mengetahui sama ada ia adalah pepijat atau ciri, dan sama ada konsistensi tersebut boleh dipercayai. terutamanya tanpa mencari punca ketidakkonsistenan dalam kernel Linux. Jadi, di sini kita bercakap tentang menyelesaikan isu yang boleh menjejaskan pengguna.

Membetulkan regresi pepijat EXDEV (pautan antara peranti) apabila panas menyalin pangkalan data tanpa pemadatan ke sistem fail lain, kedua-dua melalui API dan dengan utiliti mdbx_copy.
Kris Zyp telah melaksanakan sokongan untuk libmdbx pada Deno.

Pengendalian tetap nilai yang ditetapkan oleh pilihan MDBX_opt_rp_augment_limit apabila memproses transaksi besar pada pangkalan data yang besar. Sebelum ini, disebabkan pepijat, tindakan yang tidak perlu boleh dilakukan, kadangkala menjejaskan prestasi pada pelaksanaan Ethereum (Erigon/Akula/Ulat Sutera) dan projek Rantaian Binance.

Banyak pepijat telah diperbaiki, termasuk yang untuk API C++ dan membetulkan banyak isu binaan pada konfigurasi yang jarang berlaku dan eksotik. Senarai penuh semua penambahbaikan ketara tersedia pada ChangeLog.

Akhir sekali, jika anda berminat untuk mengetahui lebih lanjut mengenainya, anda boleh merujuk butirannya Dalam pautan berikut.


Tinggalkan komen anda

Alamat email anda tidak akan disiarkan. Ruangan yang diperlukan ditanda dengan *

*

*

  1. Bertanggungjawab atas data: Miguel Ángel Gatón
  2. Tujuan data: Mengendalikan SPAM, pengurusan komen.
  3. Perundangan: Persetujuan anda
  4. Komunikasi data: Data tidak akan disampaikan kepada pihak ketiga kecuali dengan kewajiban hukum.
  5. Penyimpanan data: Pangkalan data yang dihoskan oleh Occentus Networks (EU)
  6. Hak: Pada bila-bila masa anda boleh menghadkan, memulihkan dan menghapus maklumat anda.