セロリと動物園の飼育係(カズーロック)を使って労働者をロックしています。ロックを解除する前にワーカーの1人を殺す(-9)と、そのロックが永久にロックされたままになるという問題があります。
だから私の質問は:プロセスを殺すとそのプロセスのロックが解除されますか、それともこれはzookeeperのバグですか?
セロリと動物園の飼育係(カズーロック)を使って労働者をロックしています。ロックを解除する前にワーカーの1人を殺す(-9)と、そのロックが永久にロックされたままになるという問題があります。
だから私の質問は:プロセスを殺すとそのプロセスのロックが解除されますか、それともこれはzookeeperのバグですか?
Zookeeperロックは、一時的なノードを使用します。エフェメラルノードは、それを作成したセッションが存続している限り存続するノードです。セッションは、定期的にハートビートメッセージを動物園の飼育係に送信するセッションを作成するプロセスによって存続します。
したがって、ロックを作成したプロセスを強制終了すると、動物園の飼育係がハートビートを受信しなくなるとセッションが終了するため、ロックは最終的に解放されます。
したがって、ロックが解除される前にワーカーを強制終了すると、最終的にはロックが解除されます。
ロックが解除されない場合は、いくつかのことが発生している可能性があります。
これが飼育係のバグである可能性はほとんどありません。
ロックが解除されていないことをどうやって知ることができますか?
強制終了シグナルを使用してプロセスを強制終了しても、ZooKeeperロックなどの「ソフトウェアロック」はクリアされません。
KILLシグナルによって強制終了される唯一の種類のロックは、OSレベルのロックです。これは、すべてのファイル記述子が強制終了されるため、ファイル記述子のロックも強制終了されるためです。ただし、ZooKeeperに関する限り、これらはOSレベルのロックではありません(同じマシン上であっても、ZooKeeperプロセスがPythonプロセスの1つではないためです)。
したがって、これはZooKeeperのバグではなく、kill-9の予想される動作です。