Libelektra: mmap:環境の変化

作成日 2019年04月06日  ·  4コメント  ·  ソース: ElektraInitiative/libelektra

#1433のフォローアップとして、mmapプラグインも影響を受けると思います。 たとえば、$ HOMEが変更され、新しい構成ファイルもmmapキャッシュファイルよりも古いとします。 次に、実際には古くなっていますが、キャッシュファイルが取得されます。

簡単に修正できるとは思いませんが、そのような問題が発生しないという要件を説明していただければ幸いです。

question

全てのコメント4件

そうです、現在、キャッシュはプラグインkdbOpenのENVのみをチェックします。 動的に簡単にチェックできますが、これによりリゾルバーが呼び出され、パフォーマンスにかなりの影響があると思われます。

編集:補足:構成は正確なタイムスタンプ(ナノ秒の粒度)についてチェックされますが、問題は依然として存在し、デフォルトのリゾルバーにも当てはまります。

このバグの回避策は、解決されたファイル名もmmapキャッシュ内に保存することです。 しかし、一般的には役に立ちません。影響を与える可能性のあるすべての変数をキャプチャする必要があります(または、プラグイン内で環境変数を使用しないようにします。これは、とにかくより洗練されたソリューションになる可能性があります)。

このシナリオについては考えていませんでしたが、実際には、解決されたファイル名をmmapキャッシュに保存します。 パスが変更されると、キャッシュミスが発生します。

それでも、KDBハンドルが開いているときに$ HOMEが変更されても、キャッシュは新しいホームに再配置されません。

このシナリオについては考えていませんでしたが、実際には、解決されたファイル名をmmapキャッシュに保存します。 パスが変更されると、キャッシュミスが発生します。

完全! とにかく、これは最も重要なケースです。 Afaik現在、リゾルバー以外の環境変数はありません。 (ただし、すべての環境変数が実際にファイル名に影響を与えるわけではありません。たとえば、curlresolverはHTTP_PROXYを使用します。)

それでも、KDBハンドルが開いているときに$ HOMEが変更されても、キャッシュは新しいホームに再配置されません。

わかりましたが、これは古いバグです(#1433)。 それで、mmapは状況を悪化させないように思われるので、このバグを閉じます。

このページは役に立ちましたか?
0 / 5 - 0 評価