libmdbx 0.11.7は、GitFlicへのプロジェクトの移行、バグ修正などとともに提供されます。

新しいlibmdbxライブラリバージョン0.11.7のリリース、 打ち上げ プロジェクトのGitFlicサービスへの移行で際立っています GitHubの管理者が、15年2022月XNUMX日に、警告や説明なしにlibmdbxと他の多くのプロジェクトを削除した後、米国の制裁下にある企業に関連する多くの開発者へのアクセスをブロックしました。

ユーザーの観点からは、プロジェクトのすべてのページ、リポジトリ、およびフォークが突然「404」ページに変わり、通信の可能性がなく、理由もわかりませんでした。

残念ながら、ほとんどすべてのバージョンが失われました、詳細な回答を含む多くの質問と多くの議論がありました。 この情報の損失は、GitHub管理者がプロジェクトに与えることができた唯一の客観的な損害ですが、ディスカッションの部分的なコピーは、archive.orgアーカイブで引き続き利用できます。

組み込みのCIインフラストラクチャとスクリプト(オープンソースプロジェクトで無料で利用可能)が失われたため、技術的負債を確認、統合、および排除する必要がありました。 これで、すべてのBSDおよびSolarisバリアントのテストをビルドして実行することを除いて、CIはほぼ同じボリューム(約100のビルド構成)に復元されました。 言うまでもなく、GitHubのアクションの後、支払いの必要性のリマインダーを除いて、説明や通知は受信されませんでした。

libmdbx0.11.7の主な新機能

libmdbx v0.11.3のリリースに関する最新ニュース以降、GitHubアクションからの回復に加えて、次の改善と修正に注目する価値があります。

185個のファイルに合計89個の変更が加えられ、約3300行が追加されました。 約4100が削除されました。主に、GitHubおよび依存サービスに関連付けられているすでに役に立たない技術ファイルが削除されたために削除されました。

追加された マージされたページとキャッシュで検出された不整合の影響/欠陥を修正 Linuxカーネルのバッファの。 ページキャッシュとバッファキャッシュが完全に統合されているシステムでは、すでにメモリが割り当てられているファイルに書き込むことによって、カーネルがデータのXNUMXつのコピーでメモリを浪費することは意味がありません。 したがって、書き込まれたデータは、データがまだディスクに書き込まれていない場合でも、write()システムコールが完了する前にメモリ割り当てによって表示されます。

マージが遅れても、ページリストのロックをキャッチしたり、データをコピーしたり、PTEを調整したりする必要があるため、他の動作はまったく合理的ではありません。 したがって、統合バッファキャッシュがSVR1989に登場した4年以来、暗黙の一貫性のルールが適用されています。 その結果、忙しいlibmdbxの本番シナリオで奇妙なバグを見つけるのは大変な作業でした。 まず、問題を再現し、次に仮説を検証して改善点を確認します。

再生シナリオの複雑さと特異性にもかかわらず、問題は確実に特定され、特定され、削除されたと自信を持って言えるようになりました。 また、バイパスメカニズムの動作は、Erigon(Ethereum)開発者のXNUMX人によって確認されました。彼の場合、デバッグビルドでは、追加のアサーションチェックによるリグレッションとして保護がトリガーされました。

作業中のプロジェクトでlibmdbxが広く使用されている状況では、それがバグなのか機能なのか、そしてそのような一貫性を信頼できるのかどうかを調べるよりも、信頼できる操作を保証することが基本的に重要であることに注意してください。特にLinuxカーネル内の不整合の原因を探すことなく。 そこで、ここでは、ユーザーに影響を与える可能性のある問題の修正について話します。

EXDEVバグのリグレッションを修正しました (デバイス間のリンク)APIとmdbx_copyユーティリティの両方を使用して、圧縮せずにデータベースを別のファイルシステムにホットコピーする場合。
Kris Zypは、Denoでlibmdbxのサポートを実装しました。

MDBX_opt_rp_augment_limitオプションによって設定された値の処理を修正しました 大規模なデータベースで大規模なトランザクションを処理する場合。 以前は、バグが原因で不要なアクションが実行される可能性があり、Ethereum実装(Erigon / Akula / Silkworm)およびBinanceChainプロジェクトのパフォーマンスに影響を与えることがありました。

多くのバグが修正されましたが、 C ++ APIの問題を含み、まれでエキゾチックな構成での多くのビルドの問題を修正しました。 すべての重要な改善の完全なリストは、ChangeLogで入手できます。

最後に、それについてもっと知りたい場合は、詳細を調べることができます 次のリンクで.


コメントを残す

あなたのメールアドレスが公開されることはありません。 必須フィールドには付いています *

*

*

  1. データの責任者:MiguelÁngelGatón
  2. データの目的:SPAMの制御、コメント管理。
  3. 正当化:あなたの同意
  4. データの伝達:法的義務がある場合を除き、データが第三者に伝達されることはありません。
  5. データストレージ:Occentus Networks(EU)がホストするデータベース
  6. 権利:いつでも情報を制限、回復、削除できます。