At this point I'm not sure you can reliably do so without https://issues.apache.org/jira/browse/ZOOKEEPER-829
Anyone? Patrick On Fri, Jul 22, 2011 at 6:17 AM, Will Johnson <[email protected]> wrote: > So give the ticket I created and ZOOKEEPER-710 how do i go about testing > session timeouts programmatically? > > On Fri, Jul 22, 2011 at 8:57 AM, Will Johnson > <[email protected]>wrote: > >> Created: https://issues.apache.org/jira/browse/ZOOKEEPER-1132 >> >> >> On Thu, Jul 21, 2011 at 6:25 PM, Patrick Hunt <[email protected]> wrote: >> >>> I think the FAQ is out of date, iirc it's probably due to this change >>> https://issues.apache.org/jira/browse/ZOOKEEPER-710 >>> specifically >>> "the leader needs to drop the connection when it sees the MOVED error >>> so that the client can reestablish the session properly with another >>> machine" >>> which I believe you are seeing here. >>> >>> Also see this thread, there are other issues: >>> http://markmail.org/message/wqj347dlrsd74qya >>> >>> I would think though that zoo1 should eventually see the session >>> expiration - it will get disconnected but will then re-attempt to >>> connect to the server, at which point it will be notice the session is >>> expired. >>> >>> Would you mind entering a JIRA for this (to update the FAQ). Thanks! >>> >>> Patrick >>> >>> On Thu, Jul 21, 2011 at 1:36 PM, Will Johnson >>> <[email protected]> wrote: >>> > i'm trying to test SessionExpired based on the FAQ ( >>> > http://wiki.apache.org/hadoop/ZooKeeper/FAQ) can anyone point out why >>> i'm >>> > getting ConnectionLoss exceptions instead of SessionExpiredExceptions >>> based >>> > on the unit test below: >>> > >>> > @Test >>> > public void testSimpleConnection() throws Exception { >>> > String hostPort = "localhost:9999"; >>> > ZooKeeper zoo1 = new ZooKeeper(hostPort, 1000, null); >>> > >>> > // just make sure we can talk to zookeeper >>> > Assert.assertNull(zoo1.exists("/foo", false)); >>> > zoo1.create("/foo", null, Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL); >>> > Assert.assertNotNull(zoo1.exists("/foo", false)); >>> > >>> > // construct another client with the same id >>> > ZooKeeper zoo2 = new ZooKeeper(hostPort, zoo1.getSessionTimeout(), >>> null, >>> > zoo1.getSessionId(), null); >>> > // closing this session should invalidate the first: >>> > http://wiki.apache.org/hadoop/ZooKeeper/FAQ >>> > zoo2.close(); >>> > >>> > // sleep just to make sure everything gets evicted >>> > Thread.sleep(zoo1.getSessionTimeout() * 2); >>> > >>> > // closing this session should invalidate the first: >>> > http://wiki.apache.org/hadoop/ZooKeeper/FAQ >>> > // this is where i always get ConnectionLoss instead of >>> SessionExpired >>> > Assert.assertNull(zoo1.exists("/foo", false)); >>> > >>> > } >>> > >>> >> >> >
