zookeeper-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Josh Elser (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (ZOOKEEPER-3253) client should not send requests with cxid=-4, -2, or -1
Date Thu, 07 Mar 2019 13:37:00 GMT

    [ 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)

Mime
View raw message