SUSPEND状態の扱いについて質問したいです。
背景は次のとおりです。
同時実行ジョブのリストのタスク コーディネーターとして curator/zk を使用しています。毎分、すべてのワーカー (個別の VM で実行される各作業) は、以下を呼び出して zk からタスク (ロック) を取得しようとします。
lock = new InterProcessSemaphoreMutex(zkClient, task);
boolean hasLock = false;
hasLock = lock.acquire(1, TimeUnit.SECONDS);
作業がロックを取得すると、タスクが実行されます。
リトリーバー ロック/タスクを担当するクラスは、ConnectionStateListener インターフェイスを実装します。以下は現在の実装です。
RECONNECT : ワーカーは ZK 接続ステータスに関係なくロックを取得しようとするため、何もしません。
LOST : 接続が失われたため、ロックを解除します。
サスペンド:??????
SUSPEND 状態についての質問なのですが、SUSPEND に入ったときにロックを解除する (基本的には紛失扱い) か、それとも別のことをすべきでしょうか?
SUSPEND 状態を処理するためのベスト プラクティスは何ですか?
ありがとう、