6

分散ロック レシピに InterProcessSemaphoreMutex を使用しています。

ロックの一般的なパスは次のとおりです。

/ロック/カレンダー/uuid

uuid はもちろん uuid であるため、多くのロック パスが生成される可能性があります。

これらのパスは最終的にクリーンアップする必要があると思うので、ロックを解除した後、childreaper と reaper を使用してクリーンアップを試みました。

ChildReaper のような作品。/lock/calendar/uuid を追加すると、子は問題なく削除されます。ログには、リースとロックが削除され、ノード自体が zkClient でなくなっていることが示されています。これは、Mode.Delete と Mode.Until Gone を試したにもかかわらずです。

/lock/calendar/uuid に子があるため、Reaper は何もしません。

何か不足していますか?これらのロックをクリーンアップする必要はありませんか? 同時実行に関して何を心配する必要がありますか。

4

4 に答える 4

0

Reaper は子 (ロック、レシート IIRC) を持つため、InterprocessSemaphoreMutex では機能しません。ChildReaper は部分的に機能しますが、親を失うことについて泣き言を言い始めます。これは、2.7.1 以降で現在修正されている既知のバグです (まだリリースされていません)。回避策は、再入可能性が許容される場合、InterprocessLock で ChildReaper を使用することです。

于 2015-04-01T23:57:10.797 に答える