如何知道策展人InterProcessSemaphoreMutex是否在丢失后重新获得?

时间:2015-06-01 07:25:47

标签: java mutex apache-zookeeper apache-curator

我正在使用InterProcessSemaphoreMutex curator recipe来确保我的申请流程始终是单身人士。由于瞬态网络错误或应用程序暂停(例如,因为GC),互斥锁有时会丢失。 我正在使用重试策略,以便进程可以尝试重新获取锁。我希望我的申请流程在5分钟内无法重新获得锁定时退出。

该配方的文档表明我们可以侦听ConnectStateChange事件。指示与zookeeper的连接的事件LOST已丢失,因此进程也丢失了锁。 这样,该过程可以检测它是否失去锁定。

该过程如何检查重新获取锁定是否成功?我无法在互斥锁上找到任何可以提供此信息的方法。可疑的有用的是#AcquiredInThisProcess"方法并没有真正给我这些信息。

1 个答案:

答案 0 :(得分:0)

我不确定retryPolicy是什么意思,一些策展人对象有一个重试策略(例如DistributedAtomicLong)。

我不知道你如何在 declare -A weapons=( ['Straight Sword']=75 ['Tainted Dagger']=54 ['Imperial Sword']=90 ['Edged Shuriken']=25 ) print_weapons() { local -n array=$1 for i in "${!array[@]}"; do printf "%s\t%d\n" "$i" "${array[i]}" done } print_weapons weapons 中使用它,但是InterProcessSemaphoreMutex有一个InterProcessSemaphoreMutex方法,用5分钟就不能解决你的问题?