[
https://issues.apache.org/jira/browse/ZOOKEEPER-1477?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13413501#comment-13413501
]
Diego Oliveira commented on ZOOKEEPER-1477:
-------------------------------------------
I did some logging to look up what is happening. The idea was to log all bytes
send from client to server and the other way back. Running in the working
environment(jdk6) the math was just fine, all bytes send was read BUT with jdk7
in the middle of the communication the server stop to read the data.
Here is the log from the good communication:
{code}
2012-07-13 01:41:32,542 [myid:] - TRACE
[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:11221:NIOServerCnxn@378] - Readed from
cleint, size[4] values [java.nio.HeapByteBuffer[pos=4 lim=4 cap=4]]
2012-07-13 01:41:32,544 [myid:] - INFO
[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:11221:NIOServerCnxn@839] - Processing
stat command from /127.0.0.1:57304
2012-07-13 01:41:32,546 [myid:] - INFO
[Thread-4:NIOServerCnxn$StatCommand@673] - Stat command output
2012-07-13 01:41:32,546 [myid:] - TRACE [Thread-4:NIOServerCnxn@189] - Writting
to client, size[239] values [[90, 111, 111, 107, 101, 101, 112, 101, 114, 32,
118, 101, 114, 115, 105, 111, 110, 58, 32, 51, 46, 53, 46, 48, 45, 49, 51, 54,
49, 48, 51, 51, 44, 32, 98, 117, 105, 108, 116, 32, 111, 110, 32, 48, 55, 47,
49, 51, 47, 50, 48, 49, 50, 32, 48, 51, 58, 52, 50, 32, 71, 77, 84, 10, 67,
108, 105, 101, 110, 116, 115, 58, 10, 32, 47, 49, 50, 55, 46, 48, 46, 48, 46,
49, 58, 53, 55, 51, 48, 52, 91, 48, 93, 40, 113, 117, 101, 117, 101, 100, 61,
48, 44, 114, 101, 99, 118, 101, 100, 61, 49, 44, 115, 101, 110, 116, 61, 48,
41, 10, 10, 76, 97, 116, 101, 110, 99, 121, 32, 109, 105, 110, 47, 97, 118,
103, 47, 109, 97, 120, 58, 32, 48, 47, 48, 47, 48, 10, 82, 101, 99, 101, 105,
118, 101, 100, 58, 32, 49, 10, 83, 101, 110, 116, 58, 32, 48, 10, 67, 111, 110,
110, 101, 99, 116, 105, 111, 110, 115, 58, 32, 49, 10, 79, 117, 116, 115, 116,
97, 110, 100, 105, 110, 103, 58, 32, 48, 10, 90, 120, 105, 100, 58, 32, 48,
120, 48, 10, 77, 111, 100, 101, 58, 32, 115, 116, 97, 110, 100, 97, 108, 111,
110, 101, 10, 78, 111, 100, 101, 32, 99, 111, 117, 110, 116, 58, 32, 52, 10]]
2012-07-13 01:41:32,548 [myid:] - INFO [Thread-4:NIOServerCnxn@1019] - Closed
socket connection for client /127.0.0.1:57304 (no session established for
client)
2012-07-13 01:41:32,549 [myid:] - DEBUG [Thread-4:NIOServerCnxn@1043] -
ignoring exception during input shutdown
2012-07-13 01:41:32,674 [myid:] - TRACE
[main-SendThread(localhost:11221):ClientCnxnSocketNIO@111] - Write to server,
size[49] values [[0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117,
48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0]]
2012-07-13 01:41:32,775 [myid:] - TRACE
[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:11221:NIOServerCnxn@378] - Readed from
cleint, size[4] values [java.nio.HeapByteBuffer[pos=4 lim=4 cap=4]]
2012-07-13 01:41:32,776 [myid:] - TRACE
[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:11221:NIOServerCnxn@378] - Readed from
cleint, size[45] values [java.nio.HeapByteBuffer[pos=45 lim=45 cap=45]]
2012-07-13 01:41:32,788 [myid:] - TRACE [SyncThread:0:NIOServerCnxn@189] -
Writting to client, size[41] values [[0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 117, 48,
1, 56, 126, -92, 74, 5, 0, 0, 0, 0, 0, 16, -47, -36, -106, 57, -118, -4, -32,
-86, -105, 78, -24, 7, -29, 104, 91, 15, 0]]
2012-07-13 01:41:32,977 [myid:] - TRACE
[main-SendThread(localhost:11221):ClientCnxnSocketNIO@133] - Readed from
server, size[4] values [java.nio.DirectByteBuffer[pos=4 lim=4 cap=4]]
2012-07-13 01:41:33,078 [myid:] - TRACE
[main-SendThread(localhost:11221):ClientCnxnSocketNIO@133] - Readed from
server, size[37] values [java.nio.HeapByteBuffer[pos=37 lim=37 cap=37]]
2012-07-13 01:41:33,184 [myid:] - TRACE
[main-SendThread(localhost:11221):ClientCnxnSocketNIO@111] - Write to server,
size[29] values [[0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 1, 47, 0, 0, 0,
4, 115, 111, 109, 101, -1, -1, -1, -1]]
*** This is OK in the jdk6, in the jdk7 the communication hangs up.
2012-07-13 01:41:33,285 [myid:] - TRACE
[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:11221:NIOServerCnxn@378] - Readed from
cleint, size[4] values [java.nio.HeapByteBuffer[pos=4 lim=4 cap=4]]
2012-07-13 01:41:33,286 [myid:] - TRACE
[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:11221:NIOServerCnxn@378] - Readed from
cleint, size[25] values [java.nio.HeapByteBuffer[pos=25 lim=25 cap=25]]
2012-07-13 01:41:33,289 [myid:] - TRACE [SyncThread:0:NIOServerCnxn@189] -
Writting to client, size[88] values [[0, 0, 0, 84, 0, 0, 0, 1, 0, 0, 0, 0, 0,
0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 1, 56, 126, -92, 77, 102, 0, 0, 0, 1, -1, -1, -1, -1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
0]]
2012-07-13 01:41:33,391 [myid:] - TRACE
[main-SendThread(localhost:11221):ClientCnxnSocketNIO@133] - Readed from
server, size[4] values [java.nio.DirectByteBuffer[pos=4 lim=4 cap=4]]
2012-07-13 01:41:33,492 [myid:] - TRACE
[main-SendThread(localhost:11221):ClientCnxnSocketNIO@133] - Readed from
server, size[84] values [java.nio.HeapByteBuffer[pos=84 lim=84 cap=84]]
2012-07-13 01:41:33,595 [myid:] - TRACE
[main-SendThread(localhost:11221):ClientCnxnSocketNIO@111] - Write to server,
size[57] values [[0, 0, 0, 53, 0, 0, 0, 2, 0, 0, 0, 1, 0, 0, 0, 2, 47, 97, 0,
0, 0, 4, 115, 111, 109, 101, 0, 0, 0, 1, 0, 0, 0, 31, 0, 0, 0, 5, 119, 111,
114, 108, 100, 0, 0, 0, 6, 97, 110, 121, 111, 110, 101, 0, 0, 0, 0]]
{code}
Jdk7 log.
{code}
2012-07-13 01:49:37,588 [myid:] - TRACE
[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:11221:NIOServerCnxn@378] - Readed from
cleint, size[4] values [java.nio.HeapByteBuffer[pos=4 lim=4 cap=4]]
2012-07-13 01:49:37,591 [myid:] - INFO
[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:11221:NIOServerCnxn@839] - Processing
stat command from /127.0.0.1:57445
2012-07-13 01:49:37,594 [myid:] - INFO
[Thread-2:NIOServerCnxn$StatCommand@673] - Stat command output
2012-07-13 01:49:37,595 [myid:] - TRACE [Thread-2:NIOServerCnxn@189] - Writting
to client, size[239] values [[90, 111, 111, 107, 101, 101, 112, 101, 114, 32,
118, 101, 114, 115, 105, 111, 110, 58, 32, 51, 46, 53, 46, 48, 45, 49, 51, 54,
49, 48, 51, 51, 44, 32, 98, 117, 105, 108, 116, 32, 111, 110, 32, 48, 55, 47,
49, 51, 47, 50, 48, 49, 50, 32, 48, 51, 58, 52, 50, 32, 71, 77, 84, 10, 67,
108, 105, 101, 110, 116, 115, 58, 10, 32, 47, 49, 50, 55, 46, 48, 46, 48, 46,
49, 58, 53, 55, 52, 52, 53, 91, 48, 93, 40, 113, 117, 101, 117, 101, 100, 61,
48, 44, 114, 101, 99, 118, 101, 100, 61, 49, 44, 115, 101, 110, 116, 61, 48,
41, 10, 10, 76, 97, 116, 101, 110, 99, 121, 32, 109, 105, 110, 47, 97, 118,
103, 47, 109, 97, 120, 58, 32, 48, 47, 48, 47, 48, 10, 82, 101, 99, 101, 105,
118, 101, 100, 58, 32, 49, 10, 83, 101, 110, 116, 58, 32, 48, 10, 67, 111, 110,
110, 101, 99, 116, 105, 111, 110, 115, 58, 32, 49, 10, 79, 117, 116, 115, 116,
97, 110, 100, 105, 110, 103, 58, 32, 48, 10, 90, 120, 105, 100, 58, 32, 48,
120, 48, 10, 77, 111, 100, 101, 58, 32, 115, 116, 97, 110, 100, 97, 108, 111,
110, 101, 10, 78, 111, 100, 101, 32, 99, 111, 117, 110, 116, 58, 32, 52, 10]]
2012-07-13 01:49:37,596 [myid:] - INFO [Thread-2:NIOServerCnxn@1019] - Closed
socket connection for client /127.0.0.1:57445 (no session established for
client)
2012-07-13 01:49:37,723 [myid:] - TRACE
[main-SendThread(localhost:11221):ClientCnxnSocketNIO@111] - Write to server,
size[49] values [[0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117,
48, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0]]
2012-07-13 01:49:37,824 [myid:] - TRACE
[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:11221:NIOServerCnxn@378] - Readed from
cleint, size[4] values [java.nio.HeapByteBuffer[pos=4 lim=4 cap=4]]
2012-07-13 01:49:37,825 [myid:] - TRACE
[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:11221:NIOServerCnxn@378] - Readed from
cleint, size[45] values [java.nio.HeapByteBuffer[pos=45 lim=45 cap=45]]
2012-07-13 01:49:37,835 [myid:] - TRACE [SyncThread:0:NIOServerCnxn@189] -
Writting to client, size[41] values [[0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 117, 48,
1, 56, 126, -85, -80, -68, 0, 0, 0, 0, 0, 16, -122, 112, 53, -37, -101, 126,
-10, 20, -44, -11, -105, 43, -36, 107, -94, 35, 0]]
2012-07-13 01:49:38,025 [myid:] - TRACE
[main-SendThread(localhost:11221):ClientCnxnSocketNIO@133] - Readed from
server, size[4] values [java.nio.DirectByteBuffer[pos=4 lim=4 cap=4]]
2012-07-13 01:49:38,126 [myid:] - TRACE
[main-SendThread(localhost:11221):ClientCnxnSocketNIO@133] - Readed from
server, size[37] values [java.nio.HeapByteBuffer[pos=37 lim=37 cap=37]]
2012-07-13 01:49:38,233 [myid:] - TRACE
[main-SendThread(localhost:11221):ClientCnxnSocketNIO@111] - Write to server,
size[29] values [[0, 0, 0, 25, 0, 0, 0, 1, 0, 0, 0, 5, 0, 0, 0, 1, 47, 0, 0, 0,
4, 115, 111, 109, 101, -1, -1, -1, -1]]
** Where is the read from the server side?
2012-07-13 01:49:48,336 [myid:] - TRACE
[main-SendThread(localhost:11221):ClientCnxnSocketNIO@111] - Write to server,
size[12] values [[0, 0, 0, 8, -1, -1, -1, -2, 0, 0, 0, 11]]
2012-07-13 01:49:59,667 [myid:] - TRACE
[main-SendThread(localhost:11221):ClientCnxnSocketNIO@111] - Write to server,
size[49] values [[0, 0, 0, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 117,
48, 1, 56, 126, -85, -80, -68, 0, 0, 0, 0, 0, 16, -122, 112, 53, -37, -101,
126, -10, 20, -44, -11, -105, 43, -36, 107, -94, 35, 0]]
2012-07-13 01:49:59,769 [myid:] - TRACE
[main-SendThread(localhost:11221):ClientCnxnSocketNIO@111] - Write to server,
size[12] values [[0, 0, 0, 8, 0, 0, 0, 2, -1, -1, -1, -11]]
2012-07-13 01:49:59,769 [myid:] - TRACE
[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:11221:NIOServerCnxn@378] - Readed from
cleint, size[4] values [java.nio.HeapByteBuffer[pos=4 lim=4 cap=4]]
2012-07-13 01:49:59,770 [myid:] - TRACE
[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:11221:NIOServerCnxn@378] - Readed from
cleint, size[45] values [java.nio.HeapByteBuffer[pos=45 lim=45 cap=45]]
2012-07-13 01:49:59,770 [myid:] - INFO
[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:11221:NIOServerCnxn@1019] - Closed socket
connection for client /127.0.0.1:57448 which had sessionid 0x1387eabb0bc0000
2012-07-13 01:49:59,771 [myid:] - TRACE
[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:11221:NIOServerCnxn@189] - Writting to
client, size[41] values [[0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 117, 48, 1, 56, 126,
-85, -80, -68, 0, 0, 0, 0, 0, 16, -122, 112, 53, -37, -101, 126, -10, 20, -44,
-11, -105, 43, -36, 107, -94, 35, 0]]
2012-07-13 01:49:59,872 [myid:] - TRACE
[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:11221:NIOServerCnxn@378] - Readed from
cleint, size[4] values [java.nio.HeapByteBuffer[pos=4 lim=4 cap=4]]
2012-07-13 01:49:59,873 [myid:] - TRACE
[NIOServerCxn.Factory:0.0.0.0/0.0.0.0:11221:NIOServerCnxn@378] - Readed from
cleint, size[8] values [java.nio.HeapByteBuffer[pos=8 lim=8 cap=8]]
2012-07-13 01:49:59,874 [myid:] - TRACE [SyncThread:0:NIOServerCnxn@189] -
Writting to client, size[20] values [[0, 0, 0, 16, 0, 0, 0, 2, 0, 0, 0, 0, 0,
0, 0, 2, 0, 0, 0, 0]]
2012-07-13 01:49:59,874 [myid:] - TRACE [SyncThread:0:NIOServerCnxn@173] - Add
a buffer to outgoingBuffers, sk sun.nio.ch.SelectionKeyImpl@64aedc96 is valid:
true
2012-07-13 01:49:59,971 [myid:] - TRACE
[main-SendThread(localhost:11221):ClientCnxnSocketNIO@133] - Readed from
server, size[4] values [java.nio.DirectByteBuffer[pos=4 lim=4 cap=4]]
2012-07-13 01:50:00,072 [myid:] - TRACE
[main-SendThread(localhost:11221):ClientCnxnSocketNIO@133] - Readed from
server, size[37] values [java.nio.HeapByteBuffer[pos=37 lim=37 cap=37]]
2012-07-13 01:50:00,174 [myid:] - TRACE
[main-SendThread(localhost:11221):ClientCnxnSocketNIO@133] - Readed from
server, size[4] values [java.nio.DirectByteBuffer[pos=4 lim=4 cap=4]]
2012-07-13 01:50:00,275 [myid:] - TRACE
[main-SendThread(localhost:11221):ClientCnxnSocketNIO@133] - Readed from
server, size[16] values [java.nio.HeapByteBuffer[pos=16 lim=16 cap=16]]
2012-07-13 01:50:00,276 [myid:] - INFO [main:NIOServerCnxn@1019] - Closed
socket connection for client /127.0.0.1:57449 which had sessionid
0x1387eabb0bc0000
{code}
In my search I sow some changes in minor issues in the jdk7 regarding socket
channels, but I don't know if it is the root cause. Tomorrow I will go a little
deeper.
> Test failures with Java 7 on Mac OS X
> -------------------------------------
>
> Key: ZOOKEEPER-1477
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1477
> Project: ZooKeeper
> Issue Type: Bug
> Components: server, tests
> Affects Versions: 3.4.3
> Environment: Mac OS X Lion (10.7.4)
> Java version:
> java version "1.7.0_04"
> Java(TM) SE Runtime Environment (build 1.7.0_04-b21)
> Java HotSpot(TM) 64-Bit Server VM (build 23.0-b21, mixed mode)
> Reporter: Diwaker Gupta
> Priority: Critical
>
> I downloaded ZK 3.4.3 sources and ran {{ant test}}. Many of the tests failed,
> including ZooKeeperTest. A common symptom was spurious
> {{ConnectionLossException}}:
> {code}
> 2012-06-01 12:01:23,420 [myid:] - INFO
> [main:JUnit4ZKTestRunner$LoggedInvokeMethod@54] - TEST METHOD FAILED
> testDeleteRecursiveAsync
> org.apache.zookeeper.KeeperException$ConnectionLossException: KeeperErrorCode
> = ConnectionLoss for /
> at
> org.apache.zookeeper.KeeperException.create(KeeperException.java:99)
> at
> org.apache.zookeeper.KeeperException.create(KeeperException.java:51)
> at org.apache.zookeeper.ZooKeeper.setData(ZooKeeper.java:1246)
> at
> org.apache.zookeeper.ZooKeeperTest.testDeleteRecursiveAsync(ZooKeeperTest.java:77)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> ... (snipped)
> {code}
> As background, I was actually investigating some non-deterministic failures
> when using Netflix's Curator with Java 7 (see
> https://github.com/Netflix/curator/issues/79). After a while, I figured I
> should establish a clean ZK baseline first and realized it is actually a ZK
> issue, not a Curator issue.
> We are trying to migrate to Java 7 but this is a blocking issue for us right
> now.
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira