Return-Path: X-Original-To: apmail-curator-dev-archive@minotaur.apache.org Delivered-To: apmail-curator-dev-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id C998618426 for ; Wed, 29 Jul 2015 00:21:04 +0000 (UTC) Received: (qmail 62247 invoked by uid 500); 29 Jul 2015 00:21:04 -0000 Delivered-To: apmail-curator-dev-archive@curator.apache.org Received: (qmail 62198 invoked by uid 500); 29 Jul 2015 00:21:04 -0000 Mailing-List: contact dev-help@curator.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@curator.apache.org Delivered-To: mailing list dev@curator.apache.org Received: (qmail 62184 invoked by uid 99); 29 Jul 2015 00:21:04 -0000 Received: from arcas.apache.org (HELO arcas.apache.org) (140.211.11.28) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 29 Jul 2015 00:21:04 +0000 Date: Wed, 29 Jul 2015 00:21:04 +0000 (UTC) From: "ASF GitHub Bot (JIRA)" To: dev@curator.apache.org Message-ID: In-Reply-To: References: Subject: =?utf-8?Q?[jira]_[Commented]_(CURATOR-228)_A_s?= =?utf-8?Q?erious_death_cycle?= =?utf-8?Q?_error(=E4=B8=80=E4=B8=AA?= =?utf-8?Q?=E4=B8=A5=E9=87=8D=E7=9A=84=E6=AD=BB?= =?utf-8?Q?=E5=BE=AA=E7=8E=AF=E9=94=99=E8=AF=AF)?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-JIRA-FingerPrint: 30527f35849b9dde25b450d4833f0394 [ https://issues.apache.org/jira/browse/CURATOR-228?page=3Dcom.atlassia= n.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=3D146= 45263#comment-14645263 ]=20 ASF GitHub Bot commented on CURATOR-228: ---------------------------------------- Github user cammckenzie commented on the pull request: https://github.com/apache/curator/pull/93#issuecomment-125788009 =20 I had a look into implementing a Watch in the case where we get a NOAUT= H error when trying to create the ephemeral node. The plan was that when th= e parent node ACL was modified that the watch would fire and we would retry= . Unfortunately it seems that ACL changes in ZK don't fire Watches (I wasn'= t aware of this), so there doesn't seem to be a way to reliably know when t= he ACL changes without doing some sort of polling which is pretty ugly. > A serious death cycle error(=E4=B8=80=E4=B8=AA=E4=B8=A5=E9=87=8D=E7=9A=84= =E6=AD=BB=E5=BE=AA=E7=8E=AF=E9=94=99=E8=AF=AF) > --------------------------------------- > > Key: CURATOR-228 > URL: https://issues.apache.org/jira/browse/CURATOR-228 > Project: Apache Curator > Issue Type: Bug > Components: Framework > Affects Versions: 2.7.0, 2.7.1, 2.8.0 > Environment: windows linux mac .... > Reporter: coder_czp > Assignee: Cameron McKenzie > > =E5=BD=93=E7=94=A8=E5=BC=82=E6=AD=A5=E7=9A=84=E6=96=B9=E5=BC=8F=E5=88=9B= =E5=BB=BA=E5=B8=A6=E6=9C=89=E5=A4=9A=E5=B1=82=E7=9B=AE=E5=BD=95=E7=9A=84=E4= =B8=B4=E6=97=B6=E8=8A=82=E7=82=B9=E6=97=B6=EF=BC=8C=E5=A6=82=E6=9E=9C=E5=AE= =A2=E6=88=B7=E7=AB=AF=E6=B2=A1=E6=9C=89zookeeper=E7=9A=84=E5=86=99=E5=85=A5= =E6=9D=83=E9=99=90=EF=BC=8Ccurator =E5=B0=B1=E4=BC=9A=E9=99=B7=E5=85=A5=E6= =AD=BB=E5=BE=AA=E7=8E=AF,=E5=AE=A2=E6=88=B7=E7=AB=AF=E4=BC=9A=E4=B8=80=E7= =9B=B4=E5=90=91=E6=9C=8D=E5=8A=A1=E5=99=A8=E6=8F=90=E4=BA=A4=E5=86=99=E5=85= =A5=E6=8A=A5=E6=96=87=EF=BC=8C=E4=BD=86=E6=98=AF=E6=B0=B8=E8=BF=9C=E4=B8=8D= =E4=BC=9A=E6=88=90=E5=8A=9F=E3=80=82=E5=87=BA=E9=94=99=E7=9A=84=E4=BB=A3=E7= =A0=81=E9=80=BB=E8=BE=91=E5=A6=82=E4=B8=8B: > 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 serve= r write message, but never succeed. Error code logic is as follows: > 1 PersistentEphemeralNode sessionNode =3D new PersistentEphemeralNode(cu= ratorClient, Mode.EPHEMERAL,"/a/b/c", "test"); > sessionNode.start(); > CreateBuilderImpl: > forPath(xx)-->pathInBackground(xx)--> > =09=09 CuratorFrameworkImpl:processBackgroundOperation(operationAndDat= a, null); > =09=09=09=09 --->performBackgroundOperation(xx) > =09=09=09=09OperationAndData:callPerformBackgroundOperation(xx)--> > CreateBuilderImpl:performBackgroundOperation(xx)= ->backgroundCreateParentsThenNode(xx) > -->queueOperation(xx){backgr= oundOperations.offer(operationAndData);}=20 > =20 > //=E8=BF=99=E4=B8=AA=E5=BE=AA=E7=8E=AF=E4=BC=9A=E8=A7=A6=E5=8F=911=EF= =BC=8C=E5=AF=BC=E8=87=B4=E5=BE=AA=E7=8E=AF=E6=97=A0=E6=B3=95=E9=80=80=E5=87= =BA > //This cycle will trigger 1, causing the loop to exit. =20 > //CuratorFrameworkImpl > 2 private void backgroundOperationsLoop() > { > while ( !Thread.currentThread().isInterrupted() ) > { > OperationAndData operationAndData; > try > { > operationAndData =3D backgroundOperations.take(); > if ( debugListener !=3D null ) > { > debugListener.listen(operationAndData); > } > } > catch ( InterruptedException e ) > { > Thread.currentThread().interrupt(); > break; > } > performBackgroundOperation(operationAndData); > } > }=09 > =E5=A6=82=E6=9E=9C=E9=9C=80=E8=A6=81=E6=9B=B4=E5=A4=9A=E7=BB=86=E8=8A=82= =EF=BC=8C=E8=AF=B7=E7=BB=99=E6=88=91=E5=8F=91=E9=82=AE=E4=BB=B6: coder_czp@= 126.com=09 > If you need more details, please email me:coder_czp@126.com -- This message was sent by Atlassian JIRA (v6.3.4#6332)