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

Josh Elser commented on ZOOKEEPER-3253:
---------------------------------------

FWIW, I had pulled this change into a fork and ran into the same issue. I 
assumed it was an issue with my fork :)
{code:java}
diff --git a/zookeeper-server/src/main/java/org/apache/zookeeper/ZooKeeper.java 
b/zookeeper-server/src/main/java/org/apache/zookeeper/ZooKeeper.java
index 03c8b0d7e..0577d5f15 100644
--- a/zookeeper-server/src/main/java/org/apache/zookeeper/ZooKeeper.java
+++ b/zookeeper-server/src/main/java/org/apache/zookeeper/ZooKeeper.java
@@ -448,12 +448,21 @@ public ZooKeeper(String connectString, int 
sessionTimeout, Watcher watcher,
                 connectString);
         HostProvider hostProvider = new StaticHostProvider(
                 connectStringParser.getServerAddresses());
-        cnxn = new ClientCnxn(connectStringParser.getChrootPath(),
+        cnxn = createConnection(connectStringParser.getChrootPath(),
                 hostProvider, sessionTimeout, this, watchManager,
                 getClientCnxnSocket(), canBeReadOnly);
         cnxn.start();
     }

+    // @VisibleForTesting
+    protected ClientCnxn createConnection(String chrootPath,
+            HostProvider hostProvider, int sessionTimeout, ZooKeeper zooKeeper,
+            ClientWatchManager watcher, ClientCnxnSocket clientCnxnSocket,
+            boolean canBeReadOnly) throws IOException {
+        return new ClientCnxn(chrootPath, hostProvider, sessionTimeout, this,
+                watchManager, clientCnxnSocket, canBeReadOnly);
+    }
+
     /**
      * To create a ZooKeeper client object, the application needs to pass a
      * connection string containing a comma separated list of host:port 
pairs,{code}
Just missing the "hook" to inject a custom {{ClientCnxn}} object that the test 
code relies on.

(Can send this as a PR, just didn't want to steal [~sjust2]'s thunder ;))

> client should not send requests with cxid=-4, -2, or -1
> -------------------------------------------------------
>
>                 Key: ZOOKEEPER-3253
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-3253
>             Project: ZooKeeper
>          Issue Type: Bug
>          Components: java client
>    Affects Versions: 3.4.9, 3.5.4, 3.6.0
>            Reporter: Samuel Just
>            Assignee: Samuel Just
>            Priority: Minor
>              Labels: pull-request-available
>             Fix For: 3.6.0, 3.5.5, 3.4.15
>
>   Original Estimate: 48h
>          Time Spent: 4h 50m
>  Remaining Estimate: 43h 10m
>
> Once the cxid value increments to -4, the client will interpret the response 
> as an auth packet rather than as a response to a request and will 
> transparently drop the response and the request will hang.  Similarly, -2 
> will be seen as a ping and will be dropped hanging the request.  -1 shows up 
> as a WatcherEvent and results in the error below.
>  
> {quote}2019-01-07T21:58:23.209+00:00 [INFO ] 
> [main-SendThread(mnds1-2-phx.ops.sfdc.net:2181)] [ClientCnxn.java:1381] [:] - 
> Session establishment complete on server 
> mnds1-2-phx.ops.sfdc.net/10.246.244.71:2181, sessionid = 0x267859729d66320, 
> negotiated timeout = 10000
>  2019-01-07T21:58:22.281+00:00 20190107215822.281000 [WARN ] 
> [main-SendThread(mnds1-3-phx.ops.sfdc.net:2181)] [ClientCnxn.java:1235] [:] - 
> Session 0x267859729d66320 for server 
> mnds1-3-phx.ops.sfdc.net/10.246.244.69:2181, unexpected error, closing socket 
> connection and attempting reconnect
>  java.io.IOException: Unreasonable length = 892612659
>  at 
> org.apache.jute.BinaryInputArchive.checkLength(BinaryInputArchive.java:127) 
> ~[zookeeper-3.5.3-beta.jar:3.5.3-beta-8ce24f9e675cbefffb8f21a47e06b42864475a60]
>  at org.apache.jute.BinaryInputArchive.readString(BinaryInputArchive.java:81) 
> ~[zookeeper-3.5.3-beta.jar:3.5.3-beta-8ce24f9e675cbefffb8f21a47e06b42864475a60]
>  at org.apache.zookeeper.proto.WatcherEvent.deserialize(WatcherEvent.java:66) 
> ~[zookeeper-3.5.3-beta.jar:3.5.3-beta-8ce24f9e675cbefffb8f21a47e06b42864475a60]
>  at 
> org.apache.zookeeper.ClientCnxn$SendThread.readResponse(ClientCnxn.java:839) 
> ~[zookeeper-3.5.3-beta.jar:3.5.3-beta-8ce24f9e675cbefffb8f21a47e06b42864475a60]
>  at 
> org.apache.zookeeper.ClientCnxnSocketNIO.doIO(ClientCnxnSocketNIO.java:101) 
> ~[zookeeper-3.5.3-beta.jar:3.5.3-beta-8ce24f9e675cbefffb8f21a47e06b42864475a60]
>  at 
> org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:363)
>  
> ~[zookeeper-3.5.3-beta.jar:3.5.3-beta-8ce24f9e675cbefffb8f21a47e06b42864475a60]
>  at org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1214) 
> ~[zookeeper-3.5.3-beta.jar:3.5.3-beta-8ce24f9e675cbefffb8f21a47e06b42864475a60]
> {quote}
>  



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

Reply via email to