[ 
https://issues.apache.org/jira/browse/CURATOR-218?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14600340#comment-14600340
 ] 

Mike Drob commented on CURATOR-218:
-----------------------------------

So, I've continued digging into this, and I have good news! It has nothing to 
do with the TreeCache!

Unfortunately, it looks like there might be a bug in blockUntilConnected. I can 
file a new JIRA, or rescope this one; whichever people prefer.

Given the following test code:
{code}
        CuratorFramework client;
        for(int i = 0 ; i < 50 ; i++)
        {
            client = 
CuratorFrameworkFactory.newClient(server.getConnectString(), new 
RetryOneTime(100));
            try 
            {
                client.start();
                client.blockUntilConnected();
                
                Assert.assertTrue(client.getZookeeperClient().isConnected(), 
"Not connected after blocking for connection #" + i);
            }
            finally
            {
                client.close();
            }
        }
{code}

I'll get an assertion failure fairly regularly. Here's the output in my logs 
from the test run -

{noformat}
java.lang.AssertionError: Not connected after blocking for connection #3 
expected [true] but found [false]
        at org.testng.Assert.fail(Assert.java:94)
        at org.testng.Assert.failNotEquals(Assert.java:494)
        at org.testng.Assert.assertTrue(Assert.java:42)
        at 
org.apache.curator.framework.imps.TestBlockUntilConnected.testBlockUntilConnectedTightLoop(TestBlockUntilConnected.java:251)


INFO  org.apache.curator.framework.imps.CuratorFrameworkImpl  Starting [main]
DEBUG org.apache.curator.CuratorZookeeperClient  Starting [main]
DEBUG org.apache.curator.ConnectionState  Starting [main]
DEBUG org.apache.curator.ConnectionState  reset [main]
INFO  org.apache.curator.framework.state.ConnectionStateManager  State change: 
CONNECTED [main-EventThread]
DEBUG org.apache.curator.framework.imps.CuratorFrameworkImpl  Closing [main]
DEBUG org.apache.curator.CuratorZookeeperClient  Closing [main]
DEBUG org.apache.curator.ConnectionState  Closing [main]
{noformat}

I understand that connections are a transient and finicky thing, like gold dust 
or rainbows, they are apt to disappear when you least expect them to. However, 
I don't see anything given by the CSM to indicate that we would _not_ be 
connected... no connection loss, no session loss, nothing...

Anybody have a pointer on where to look next? I suspect that there is a 
synchronization issue where the method returns before the state on 
CuratorZookeeperClient is updated, but I'm not sure how to prove that yet.

Anyway, the TreeCache never sees that INITIALIZED event as the issue reported 
describes because of the connection issue I described.

> TreeCache initialization problem with non existant root path
> ------------------------------------------------------------
>
>                 Key: CURATOR-218
>                 URL: https://issues.apache.org/jira/browse/CURATOR-218
>             Project: Apache Curator
>          Issue Type: Bug
>          Components: Recipes
>    Affects Versions: 2.7.0, 2.7.1, 2.8.0
>         Environment: host: AWS EC2 t2.medium type
> uname -a = Linux bamboo-agent 3.13.0-44-generic #73-Ubuntu SMP Tue Dec 16 
> 00:22:43 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux
> lsb_release -a = 
> Distributor ID:       Ubuntu
> Description:  Ubuntu 14.04.1 LTS
> Release:      14.04
> Codename:     trusty
> ZK version: is a curator TestingServer
> java: java 8
> maven: 3.2.5
>            Reporter: Samuel García Martínez
>            Assignee: Scott Blum
>         Attachments: failing_test.txt
>
>
> I'm implementing a Guava service relying on the startAsync feature. I'm using 
> a listener to wait for the INITIALIZED event to fire the guava service 
> notifyStarted method, but sometimes the listener never receives the event if 
> the root path does not exist.
> I've created a repository with a failing test (looping over the failing test 
> to force it).
> repo with tests: 
> https://github.com/samuelgmartinez/curator-treecache-tests.git
> failing test: mvn -Dtest=TreeCacheTest#testListenerNonExistentRootLoop test



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to