You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@curator.apache.org by "coder_czp (JIRA)" <ji...@apache.org> on 2015/06/30 04:40:04 UTC
[jira] [Created] (CURATOR-228) A serious death cycle error(一个严重的死循环错误)
coder_czp created CURATOR-228:
---------------------------------
Summary: A serious death cycle error(一个严重的死循环错误)
Key: CURATOR-228
URL: https://issues.apache.org/jira/browse/CURATOR-228
Project: Apache Curator
Issue Type: Bug
Components: Framework
Affects Versions: 2.8.0, 2.7.1, 2.7.0
Environment: windows linux mac ....
Reporter: coder_czp
当用异步的方式创建带有多层目录的临时节点时,如果客户端没有zookeeper的写入权限,curator 就会陷入死循环,客户端会一直向服务器提交写入报文,但是永远不会成功。出错的代码逻辑如下:
When used asynchronous way to create a temporary node multi directory, if the client does not have the zookeeper write permissions, the curator will get into a cycle of death, the client will has been submitted to the server write message, but never succeed. Error code logic is as follows:
1 PersistentEphemeralNode sessionNode = new PersistentEphemeralNode(curatorClient, Mode.EPHEMERAL,"/a/b/c", "test");
sessionNode.start();
CreateBuilderImpl:
forPath(xx)-->pathInBackground(xx)-->
CuratorFrameworkImpl:processBackgroundOperation(operationAndData, null);
--->performBackgroundOperation(xx)
OperationAndData:callPerformBackgroundOperation(xx)-->
CreateBuilderImpl:performBackgroundOperation(xx)->backgroundCreateParentsThenNode(xx)
-->queueOperation(xx){backgroundOperations.offer(operationAndData);}
//这个循环会触发1,导致循环无法退出
//This cycle will trigger 1, causing the loop to exit.
//CuratorFrameworkImpl
2 private void backgroundOperationsLoop()
{
while ( !Thread.currentThread().isInterrupted() )
{
OperationAndData<?> operationAndData;
try
{
operationAndData = backgroundOperations.take();
if ( debugListener != null )
{
debugListener.listen(operationAndData);
}
}
catch ( InterruptedException e )
{
Thread.currentThread().interrupt();
break;
}
performBackgroundOperation(operationAndData);
}
}
如果需要更多细节,请给我发邮件: coder_czp@126.com
If you need more details, please email me:coder_czp@126.com
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)