[jira] [Updated] (ZOOKEEPER-2101) Transaction larger than max buffer of jute makes zookeeper unavailable

2017-03-13 Thread Michael Han (JIRA)

 [ 
https://issues.apache.org/jira/browse/ZOOKEEPER-2101?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Michael Han updated ZOOKEEPER-2101:
---
Fix Version/s: (was: 3.5.3)
   3.5.4

> Transaction larger than max buffer of jute makes zookeeper unavailable
> --
>
> Key: ZOOKEEPER-2101
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2101
> Project: ZooKeeper
>  Issue Type: Bug
>  Components: jute
>Affects Versions: 3.4.4
>Reporter: Liu Shaohui
>Assignee: Liu Shaohui
> Fix For: 3.5.4, 3.6.0
>
> Attachments: test.diff, ZOOKEEPER-2101-v1.diff, 
> ZOOKEEPER-2101-v2.diff, ZOOKEEPER-2101-v3.diff, ZOOKEEPER-2101-v4.diff, 
> ZOOKEEPER-2101-v5.diff, ZOOKEEPER-2101-v6.diff, ZOOKEEPER-2101-v7.diff, 
> ZOOKEEPER-2101-v8.diff
>
>
> *Problem*
> For multi operation, PrepRequestProcessor may produce a large transaction 
> whose size may be larger than the max buffer size of jute. There is check of 
> buffer size in readBuffer method  of BinaryInputArchive, but no check in 
> writeBuffer method  of BinaryOutputArchive, which will cause that 
> 1, Leader can sync transaction to txn log and send the large transaction to 
> the followers, but the followers failed to read the transaction and can't 
> sync with leader.
> {code}
> 2015-01-04,12:42:26,474 WARN org.apache.zookeeper.server.quorum.Learner: 
> [myid:2] Exception when following the leader
> java.io.IOException: Unreasonable length = 2054758
> at 
> org.apache.jute.BinaryInputArchive.readBuffer(BinaryInputArchive.java:100)
> at 
> org.apache.zookeeper.server.quorum.QuorumPacket.deserialize(QuorumPacket.java:85)
> at 
> org.apache.jute.BinaryInputArchive.readRecord(BinaryInputArchive.java:108)
> at 
> org.apache.zookeeper.server.quorum.Learner.readPacket(Learner.java:152)
> at 
> org.apache.zookeeper.server.quorum.Follower.followLeader(Follower.java:85)
> at 
> org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:740)
> 2015-01-04,12:42:26,475 INFO org.apache.zookeeper.server.quorum.Learner: 
> [myid:2] shutdown called
> java.lang.Exception: shutdown Follower
> at 
> org.apache.zookeeper.server.quorum.Follower.shutdown(Follower.java:166)
> at 
> org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:744)
> {code}
> 2, The leader lose all followers, which trigger the leader election. The old 
> leader will become leader again for it has up-to-date data.
> {code}
> 2015-01-04,12:42:28,502 INFO org.apache.zookeeper.server.quorum.Leader: 
> [myid:3] Shutting down
> 2015-01-04,12:42:28,502 INFO org.apache.zookeeper.server.quorum.Leader: 
> [myid:3] Shutdown called
> java.lang.Exception: shutdown Leader! reason: Only 1 followers, need 2
> at org.apache.zookeeper.server.quorum.Leader.shutdown(Leader.java:496)
> at org.apache.zookeeper.server.quorum.Leader.lead(Leader.java:471)
> at 
> org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:753)
> {code}
> 3, The leader can not load the transaction from the txn log for the length of 
> data is larger than the max buffer of jute.
> {code}
> 2015-01-04,12:42:31,282 ERROR org.apache.zookeeper.server.quorum.QuorumPeer: 
> [myid:3] Unable to load database on disk
> java.io.IOException: Unreasonable length = 2054758
> at 
> org.apache.jute.BinaryInputArchive.readBuffer(BinaryInputArchive.java:100)
> at 
> org.apache.zookeeper.server.persistence.Util.readTxnBytes(Util.java:233)
> at 
> org.apache.zookeeper.server.persistence.FileTxnLog$FileTxnIterator.next(FileTxnLog.java:602)
> at 
> org.apache.zookeeper.server.persistence.FileTxnSnapLog.restore(FileTxnSnapLog.java:157)
> at 
> org.apache.zookeeper.server.ZKDatabase.loadDataBase(ZKDatabase.java:223)
> at 
> org.apache.zookeeper.server.quorum.QuorumPeer.loadDataBase(QuorumPeer.java:417)
> at 
> org.apache.zookeeper.server.quorum.QuorumPeer.getLastLoggedZxid(QuorumPeer.java:546)
> at 
> org.apache.zookeeper.server.quorum.FastLeaderElection.getInitLastLoggedZxid(FastLeaderElection.java:690)
> at 
> org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:737)
> at 
> org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:716)
> {code}
> The zookeeper service will be unavailable until we enlarge the jute.maxbuffer 
> and restart zookeeper hbase cluster.
> *Solution*
> Add buffer size check in BinaryOutputArchive to avoid large transaction be 
> written to log and sent to followers.
> But I am not sure if there are side-effects of throwing an IOException in 
> BinaryOutputArchive  and RequestProcessors



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)


[jira] [Updated] (ZOOKEEPER-2101) Transaction larger than max buffer of jute makes zookeeper unavailable

2016-06-21 Thread Chris Nauroth (JIRA)

 [ 
https://issues.apache.org/jira/browse/ZOOKEEPER-2101?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Chris Nauroth updated ZOOKEEPER-2101:
-
Fix Version/s: (was: 3.5.2)
   3.5.3

> Transaction larger than max buffer of jute makes zookeeper unavailable
> --
>
> Key: ZOOKEEPER-2101
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2101
> Project: ZooKeeper
>  Issue Type: Bug
>  Components: jute
>Affects Versions: 3.4.4
>Reporter: Liu Shaohui
>Assignee: Liu Shaohui
> Fix For: 3.6.0, 3.5.3
>
> Attachments: ZOOKEEPER-2101-v1.diff, ZOOKEEPER-2101-v2.diff, 
> ZOOKEEPER-2101-v3.diff, ZOOKEEPER-2101-v4.diff, ZOOKEEPER-2101-v5.diff, 
> ZOOKEEPER-2101-v6.diff, ZOOKEEPER-2101-v7.diff, ZOOKEEPER-2101-v8.diff, 
> test.diff
>
>
> *Problem*
> For multi operation, PrepRequestProcessor may produce a large transaction 
> whose size may be larger than the max buffer size of jute. There is check of 
> buffer size in readBuffer method  of BinaryInputArchive, but no check in 
> writeBuffer method  of BinaryOutputArchive, which will cause that 
> 1, Leader can sync transaction to txn log and send the large transaction to 
> the followers, but the followers failed to read the transaction and can't 
> sync with leader.
> {code}
> 2015-01-04,12:42:26,474 WARN org.apache.zookeeper.server.quorum.Learner: 
> [myid:2] Exception when following the leader
> java.io.IOException: Unreasonable length = 2054758
> at 
> org.apache.jute.BinaryInputArchive.readBuffer(BinaryInputArchive.java:100)
> at 
> org.apache.zookeeper.server.quorum.QuorumPacket.deserialize(QuorumPacket.java:85)
> at 
> org.apache.jute.BinaryInputArchive.readRecord(BinaryInputArchive.java:108)
> at 
> org.apache.zookeeper.server.quorum.Learner.readPacket(Learner.java:152)
> at 
> org.apache.zookeeper.server.quorum.Follower.followLeader(Follower.java:85)
> at 
> org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:740)
> 2015-01-04,12:42:26,475 INFO org.apache.zookeeper.server.quorum.Learner: 
> [myid:2] shutdown called
> java.lang.Exception: shutdown Follower
> at 
> org.apache.zookeeper.server.quorum.Follower.shutdown(Follower.java:166)
> at 
> org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:744)
> {code}
> 2, The leader lose all followers, which trigger the leader election. The old 
> leader will become leader again for it has up-to-date data.
> {code}
> 2015-01-04,12:42:28,502 INFO org.apache.zookeeper.server.quorum.Leader: 
> [myid:3] Shutting down
> 2015-01-04,12:42:28,502 INFO org.apache.zookeeper.server.quorum.Leader: 
> [myid:3] Shutdown called
> java.lang.Exception: shutdown Leader! reason: Only 1 followers, need 2
> at org.apache.zookeeper.server.quorum.Leader.shutdown(Leader.java:496)
> at org.apache.zookeeper.server.quorum.Leader.lead(Leader.java:471)
> at 
> org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:753)
> {code}
> 3, The leader can not load the transaction from the txn log for the length of 
> data is larger than the max buffer of jute.
> {code}
> 2015-01-04,12:42:31,282 ERROR org.apache.zookeeper.server.quorum.QuorumPeer: 
> [myid:3] Unable to load database on disk
> java.io.IOException: Unreasonable length = 2054758
> at 
> org.apache.jute.BinaryInputArchive.readBuffer(BinaryInputArchive.java:100)
> at 
> org.apache.zookeeper.server.persistence.Util.readTxnBytes(Util.java:233)
> at 
> org.apache.zookeeper.server.persistence.FileTxnLog$FileTxnIterator.next(FileTxnLog.java:602)
> at 
> org.apache.zookeeper.server.persistence.FileTxnSnapLog.restore(FileTxnSnapLog.java:157)
> at 
> org.apache.zookeeper.server.ZKDatabase.loadDataBase(ZKDatabase.java:223)
> at 
> org.apache.zookeeper.server.quorum.QuorumPeer.loadDataBase(QuorumPeer.java:417)
> at 
> org.apache.zookeeper.server.quorum.QuorumPeer.getLastLoggedZxid(QuorumPeer.java:546)
> at 
> org.apache.zookeeper.server.quorum.FastLeaderElection.getInitLastLoggedZxid(FastLeaderElection.java:690)
> at 
> org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:737)
> at 
> org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:716)
> {code}
> The zookeeper service will be unavailable until we enlarge the jute.maxbuffer 
> and restart zookeeper hbase cluster.
> *Solution*
> Add buffer size check in BinaryOutputArchive to avoid large transaction be 
> written to log and sent to followers.
> But I am not sure if there are side-effects of throwing an IOException in 
> BinaryOutputArchive  and RequestProcessors



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


[jira] [Updated] (ZOOKEEPER-2101) Transaction larger than max buffer of jute makes zookeeper unavailable

2016-03-02 Thread Patrick Hunt (JIRA)

 [ 
https://issues.apache.org/jira/browse/ZOOKEEPER-2101?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Patrick Hunt updated ZOOKEEPER-2101:

Assignee: Liu Shaohui

> Transaction larger than max buffer of jute makes zookeeper unavailable
> --
>
> Key: ZOOKEEPER-2101
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2101
> Project: ZooKeeper
>  Issue Type: Bug
>  Components: jute
>Affects Versions: 3.4.4
>Reporter: Liu Shaohui
>Assignee: Liu Shaohui
> Fix For: 3.5.2, 3.6.0
>
> Attachments: ZOOKEEPER-2101-v1.diff, ZOOKEEPER-2101-v2.diff, 
> ZOOKEEPER-2101-v3.diff, ZOOKEEPER-2101-v4.diff, ZOOKEEPER-2101-v5.diff, 
> ZOOKEEPER-2101-v6.diff, ZOOKEEPER-2101-v7.diff, ZOOKEEPER-2101-v8.diff, 
> test.diff
>
>
> *Problem*
> For multi operation, PrepRequestProcessor may produce a large transaction 
> whose size may be larger than the max buffer size of jute. There is check of 
> buffer size in readBuffer method  of BinaryInputArchive, but no check in 
> writeBuffer method  of BinaryOutputArchive, which will cause that 
> 1, Leader can sync transaction to txn log and send the large transaction to 
> the followers, but the followers failed to read the transaction and can't 
> sync with leader.
> {code}
> 2015-01-04,12:42:26,474 WARN org.apache.zookeeper.server.quorum.Learner: 
> [myid:2] Exception when following the leader
> java.io.IOException: Unreasonable length = 2054758
> at 
> org.apache.jute.BinaryInputArchive.readBuffer(BinaryInputArchive.java:100)
> at 
> org.apache.zookeeper.server.quorum.QuorumPacket.deserialize(QuorumPacket.java:85)
> at 
> org.apache.jute.BinaryInputArchive.readRecord(BinaryInputArchive.java:108)
> at 
> org.apache.zookeeper.server.quorum.Learner.readPacket(Learner.java:152)
> at 
> org.apache.zookeeper.server.quorum.Follower.followLeader(Follower.java:85)
> at 
> org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:740)
> 2015-01-04,12:42:26,475 INFO org.apache.zookeeper.server.quorum.Learner: 
> [myid:2] shutdown called
> java.lang.Exception: shutdown Follower
> at 
> org.apache.zookeeper.server.quorum.Follower.shutdown(Follower.java:166)
> at 
> org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:744)
> {code}
> 2, The leader lose all followers, which trigger the leader election. The old 
> leader will become leader again for it has up-to-date data.
> {code}
> 2015-01-04,12:42:28,502 INFO org.apache.zookeeper.server.quorum.Leader: 
> [myid:3] Shutting down
> 2015-01-04,12:42:28,502 INFO org.apache.zookeeper.server.quorum.Leader: 
> [myid:3] Shutdown called
> java.lang.Exception: shutdown Leader! reason: Only 1 followers, need 2
> at org.apache.zookeeper.server.quorum.Leader.shutdown(Leader.java:496)
> at org.apache.zookeeper.server.quorum.Leader.lead(Leader.java:471)
> at 
> org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:753)
> {code}
> 3, The leader can not load the transaction from the txn log for the length of 
> data is larger than the max buffer of jute.
> {code}
> 2015-01-04,12:42:31,282 ERROR org.apache.zookeeper.server.quorum.QuorumPeer: 
> [myid:3] Unable to load database on disk
> java.io.IOException: Unreasonable length = 2054758
> at 
> org.apache.jute.BinaryInputArchive.readBuffer(BinaryInputArchive.java:100)
> at 
> org.apache.zookeeper.server.persistence.Util.readTxnBytes(Util.java:233)
> at 
> org.apache.zookeeper.server.persistence.FileTxnLog$FileTxnIterator.next(FileTxnLog.java:602)
> at 
> org.apache.zookeeper.server.persistence.FileTxnSnapLog.restore(FileTxnSnapLog.java:157)
> at 
> org.apache.zookeeper.server.ZKDatabase.loadDataBase(ZKDatabase.java:223)
> at 
> org.apache.zookeeper.server.quorum.QuorumPeer.loadDataBase(QuorumPeer.java:417)
> at 
> org.apache.zookeeper.server.quorum.QuorumPeer.getLastLoggedZxid(QuorumPeer.java:546)
> at 
> org.apache.zookeeper.server.quorum.FastLeaderElection.getInitLastLoggedZxid(FastLeaderElection.java:690)
> at 
> org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:737)
> at 
> org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:716)
> {code}
> The zookeeper service will be unavailable until we enlarge the jute.maxbuffer 
> and restart zookeeper hbase cluster.
> *Solution*
> Add buffer size check in BinaryOutputArchive to avoid large transaction be 
> written to log and sent to followers.
> But I am not sure if there are side-effects of throwing an IOException in 
> BinaryOutputArchive  and RequestProcessors



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


[jira] [Updated] (ZOOKEEPER-2101) Transaction larger than max buffer of jute makes zookeeper unavailable

2015-12-01 Thread Liu Shaohui (JIRA)

 [ 
https://issues.apache.org/jira/browse/ZOOKEEPER-2101?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Liu Shaohui updated ZOOKEEPER-2101:
---
Attachment: ZOOKEEPER-2101-v8.diff

Rebase on the trunk

[~brahmareddy] [~hdeng]
Could you help to push this patch?

> Transaction larger than max buffer of jute makes zookeeper unavailable
> --
>
> Key: ZOOKEEPER-2101
> URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2101
> Project: ZooKeeper
>  Issue Type: Bug
>  Components: jute
>Affects Versions: 3.4.4
>Reporter: Liu Shaohui
> Fix For: 3.5.2, 3.6.0
>
> Attachments: ZOOKEEPER-2101-v1.diff, ZOOKEEPER-2101-v2.diff, 
> ZOOKEEPER-2101-v3.diff, ZOOKEEPER-2101-v4.diff, ZOOKEEPER-2101-v5.diff, 
> ZOOKEEPER-2101-v6.diff, ZOOKEEPER-2101-v7.diff, ZOOKEEPER-2101-v8.diff, 
> test.diff
>
>
> *Problem*
> For multi operation, PrepRequestProcessor may produce a large transaction 
> whose size may be larger than the max buffer size of jute. There is check of 
> buffer size in readBuffer method  of BinaryInputArchive, but no check in 
> writeBuffer method  of BinaryOutputArchive, which will cause that 
> 1, Leader can sync transaction to txn log and send the large transaction to 
> the followers, but the followers failed to read the transaction and can't 
> sync with leader.
> {code}
> 2015-01-04,12:42:26,474 WARN org.apache.zookeeper.server.quorum.Learner: 
> [myid:2] Exception when following the leader
> java.io.IOException: Unreasonable length = 2054758
> at 
> org.apache.jute.BinaryInputArchive.readBuffer(BinaryInputArchive.java:100)
> at 
> org.apache.zookeeper.server.quorum.QuorumPacket.deserialize(QuorumPacket.java:85)
> at 
> org.apache.jute.BinaryInputArchive.readRecord(BinaryInputArchive.java:108)
> at 
> org.apache.zookeeper.server.quorum.Learner.readPacket(Learner.java:152)
> at 
> org.apache.zookeeper.server.quorum.Follower.followLeader(Follower.java:85)
> at 
> org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:740)
> 2015-01-04,12:42:26,475 INFO org.apache.zookeeper.server.quorum.Learner: 
> [myid:2] shutdown called
> java.lang.Exception: shutdown Follower
> at 
> org.apache.zookeeper.server.quorum.Follower.shutdown(Follower.java:166)
> at 
> org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:744)
> {code}
> 2, The leader lose all followers, which trigger the leader election. The old 
> leader will become leader again for it has up-to-date data.
> {code}
> 2015-01-04,12:42:28,502 INFO org.apache.zookeeper.server.quorum.Leader: 
> [myid:3] Shutting down
> 2015-01-04,12:42:28,502 INFO org.apache.zookeeper.server.quorum.Leader: 
> [myid:3] Shutdown called
> java.lang.Exception: shutdown Leader! reason: Only 1 followers, need 2
> at org.apache.zookeeper.server.quorum.Leader.shutdown(Leader.java:496)
> at org.apache.zookeeper.server.quorum.Leader.lead(Leader.java:471)
> at 
> org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:753)
> {code}
> 3, The leader can not load the transaction from the txn log for the length of 
> data is larger than the max buffer of jute.
> {code}
> 2015-01-04,12:42:31,282 ERROR org.apache.zookeeper.server.quorum.QuorumPeer: 
> [myid:3] Unable to load database on disk
> java.io.IOException: Unreasonable length = 2054758
> at 
> org.apache.jute.BinaryInputArchive.readBuffer(BinaryInputArchive.java:100)
> at 
> org.apache.zookeeper.server.persistence.Util.readTxnBytes(Util.java:233)
> at 
> org.apache.zookeeper.server.persistence.FileTxnLog$FileTxnIterator.next(FileTxnLog.java:602)
> at 
> org.apache.zookeeper.server.persistence.FileTxnSnapLog.restore(FileTxnSnapLog.java:157)
> at 
> org.apache.zookeeper.server.ZKDatabase.loadDataBase(ZKDatabase.java:223)
> at 
> org.apache.zookeeper.server.quorum.QuorumPeer.loadDataBase(QuorumPeer.java:417)
> at 
> org.apache.zookeeper.server.quorum.QuorumPeer.getLastLoggedZxid(QuorumPeer.java:546)
> at 
> org.apache.zookeeper.server.quorum.FastLeaderElection.getInitLastLoggedZxid(FastLeaderElection.java:690)
> at 
> org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:737)
> at 
> org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:716)
> {code}
> The zookeeper service will be unavailable until we enlarge the jute.maxbuffer 
> and restart zookeeper hbase cluster.
> *Solution*
> Add buffer size check in BinaryOutputArchive to avoid large transaction be 
> written to log and sent to followers.
> But I am not sure if there are side-effects of throwing an IOException in 
> BinaryOutputArchive  and RequestProcessors



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


[jira] [Updated] (ZOOKEEPER-2101) Transaction larger than max buffer of jute makes zookeeper unavailable

2015-05-19 Thread Liu Shaohui (JIRA)

 [ 
https://issues.apache.org/jira/browse/ZOOKEEPER-2101?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Liu Shaohui updated ZOOKEEPER-2101:
---
Attachment: ZOOKEEPER-2101-v6.diff

Update for [~rakeshr]'s review.
- Using IOUtils.cleanup(LOG, baos) Instead of try-catch.
- Update the log messages:
{code}
throw new IOException(Len error  + barr.length
+ , less than 0 or larger than max buffer: 
+ BinaryInputArchive.maxBuffer +  set by jute.maxbuffer);
{code}

 Transaction larger than max buffer of jute makes zookeeper unavailable
 --

 Key: ZOOKEEPER-2101
 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2101
 Project: ZooKeeper
  Issue Type: Bug
  Components: jute
Affects Versions: 3.4.4
Reporter: Liu Shaohui
 Fix For: 3.5.2, 3.6.0

 Attachments: ZOOKEEPER-2101-v1.diff, ZOOKEEPER-2101-v2.diff, 
 ZOOKEEPER-2101-v3.diff, ZOOKEEPER-2101-v4.diff, ZOOKEEPER-2101-v5.diff, 
 ZOOKEEPER-2101-v6.diff, test.diff


 *Problem*
 For multi operation, PrepRequestProcessor may produce a large transaction 
 whose size may be larger than the max buffer size of jute. There is check of 
 buffer size in readBuffer method  of BinaryInputArchive, but no check in 
 writeBuffer method  of BinaryOutputArchive, which will cause that 
 1, Leader can sync transaction to txn log and send the large transaction to 
 the followers, but the followers failed to read the transaction and can't 
 sync with leader.
 {code}
 2015-01-04,12:42:26,474 WARN org.apache.zookeeper.server.quorum.Learner: 
 [myid:2] Exception when following the leader
 java.io.IOException: Unreasonable length = 2054758
 at 
 org.apache.jute.BinaryInputArchive.readBuffer(BinaryInputArchive.java:100)
 at 
 org.apache.zookeeper.server.quorum.QuorumPacket.deserialize(QuorumPacket.java:85)
 at 
 org.apache.jute.BinaryInputArchive.readRecord(BinaryInputArchive.java:108)
 at 
 org.apache.zookeeper.server.quorum.Learner.readPacket(Learner.java:152)
 at 
 org.apache.zookeeper.server.quorum.Follower.followLeader(Follower.java:85)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:740)
 2015-01-04,12:42:26,475 INFO org.apache.zookeeper.server.quorum.Learner: 
 [myid:2] shutdown called
 java.lang.Exception: shutdown Follower
 at 
 org.apache.zookeeper.server.quorum.Follower.shutdown(Follower.java:166)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:744)
 {code}
 2, The leader lose all followers, which trigger the leader election. The old 
 leader will become leader again for it has up-to-date data.
 {code}
 2015-01-04,12:42:28,502 INFO org.apache.zookeeper.server.quorum.Leader: 
 [myid:3] Shutting down
 2015-01-04,12:42:28,502 INFO org.apache.zookeeper.server.quorum.Leader: 
 [myid:3] Shutdown called
 java.lang.Exception: shutdown Leader! reason: Only 1 followers, need 2
 at org.apache.zookeeper.server.quorum.Leader.shutdown(Leader.java:496)
 at org.apache.zookeeper.server.quorum.Leader.lead(Leader.java:471)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:753)
 {code}
 3, The leader can not load the transaction from the txn log for the length of 
 data is larger than the max buffer of jute.
 {code}
 2015-01-04,12:42:31,282 ERROR org.apache.zookeeper.server.quorum.QuorumPeer: 
 [myid:3] Unable to load database on disk
 java.io.IOException: Unreasonable length = 2054758
 at 
 org.apache.jute.BinaryInputArchive.readBuffer(BinaryInputArchive.java:100)
 at 
 org.apache.zookeeper.server.persistence.Util.readTxnBytes(Util.java:233)
 at 
 org.apache.zookeeper.server.persistence.FileTxnLog$FileTxnIterator.next(FileTxnLog.java:602)
 at 
 org.apache.zookeeper.server.persistence.FileTxnSnapLog.restore(FileTxnSnapLog.java:157)
 at 
 org.apache.zookeeper.server.ZKDatabase.loadDataBase(ZKDatabase.java:223)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.loadDataBase(QuorumPeer.java:417)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.getLastLoggedZxid(QuorumPeer.java:546)
 at 
 org.apache.zookeeper.server.quorum.FastLeaderElection.getInitLastLoggedZxid(FastLeaderElection.java:690)
 at 
 org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:737)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:716)
 {code}
 The zookeeper service will be unavailable until we enlarge the jute.maxbuffer 
 and restart zookeeper hbase cluster.
 *Solution*
 Add buffer size check in BinaryOutputArchive to avoid large transaction be 
 written to log and sent to followers.
 But I am not sure if there are side-effects of throwing an IOException in 
 BinaryOutputArchive 

[jira] [Updated] (ZOOKEEPER-2101) Transaction larger than max buffer of jute makes zookeeper unavailable

2015-05-18 Thread Liu Shaohui (JIRA)

 [ 
https://issues.apache.org/jira/browse/ZOOKEEPER-2101?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Liu Shaohui updated ZOOKEEPER-2101:
---
Attachment: ZOOKEEPER-2101-v5.diff

Update for [~rakeshr]'s review.
{quote}
Move {{ baos.close();}} to finally block
{quote}
Done.
{quote}
Please format the lines, few lines exceeds  80 lines.
{quote}
Done.
{quote}
In tests, any specific reason to increase the value of TEST_MAXBUFFER to 1000?
{quote}
The size of extra fields in transaction is large than 100.
So we increase the TEST_MAXBUFFER to 1000.

{quote}
checking  0 condition also.
{quote}
Done.


 Transaction larger than max buffer of jute makes zookeeper unavailable
 --

 Key: ZOOKEEPER-2101
 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2101
 Project: ZooKeeper
  Issue Type: Bug
  Components: jute
Affects Versions: 3.4.4
Reporter: Liu Shaohui
 Fix For: 3.5.2, 3.6.0

 Attachments: ZOOKEEPER-2101-v1.diff, ZOOKEEPER-2101-v2.diff, 
 ZOOKEEPER-2101-v3.diff, ZOOKEEPER-2101-v4.diff, ZOOKEEPER-2101-v5.diff, 
 test.diff


 *Problem*
 For multi operation, PrepRequestProcessor may produce a large transaction 
 whose size may be larger than the max buffer size of jute. There is check of 
 buffer size in readBuffer method  of BinaryInputArchive, but no check in 
 writeBuffer method  of BinaryOutputArchive, which will cause that 
 1, Leader can sync transaction to txn log and send the large transaction to 
 the followers, but the followers failed to read the transaction and can't 
 sync with leader.
 {code}
 2015-01-04,12:42:26,474 WARN org.apache.zookeeper.server.quorum.Learner: 
 [myid:2] Exception when following the leader
 java.io.IOException: Unreasonable length = 2054758
 at 
 org.apache.jute.BinaryInputArchive.readBuffer(BinaryInputArchive.java:100)
 at 
 org.apache.zookeeper.server.quorum.QuorumPacket.deserialize(QuorumPacket.java:85)
 at 
 org.apache.jute.BinaryInputArchive.readRecord(BinaryInputArchive.java:108)
 at 
 org.apache.zookeeper.server.quorum.Learner.readPacket(Learner.java:152)
 at 
 org.apache.zookeeper.server.quorum.Follower.followLeader(Follower.java:85)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:740)
 2015-01-04,12:42:26,475 INFO org.apache.zookeeper.server.quorum.Learner: 
 [myid:2] shutdown called
 java.lang.Exception: shutdown Follower
 at 
 org.apache.zookeeper.server.quorum.Follower.shutdown(Follower.java:166)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:744)
 {code}
 2, The leader lose all followers, which trigger the leader election. The old 
 leader will become leader again for it has up-to-date data.
 {code}
 2015-01-04,12:42:28,502 INFO org.apache.zookeeper.server.quorum.Leader: 
 [myid:3] Shutting down
 2015-01-04,12:42:28,502 INFO org.apache.zookeeper.server.quorum.Leader: 
 [myid:3] Shutdown called
 java.lang.Exception: shutdown Leader! reason: Only 1 followers, need 2
 at org.apache.zookeeper.server.quorum.Leader.shutdown(Leader.java:496)
 at org.apache.zookeeper.server.quorum.Leader.lead(Leader.java:471)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:753)
 {code}
 3, The leader can not load the transaction from the txn log for the length of 
 data is larger than the max buffer of jute.
 {code}
 2015-01-04,12:42:31,282 ERROR org.apache.zookeeper.server.quorum.QuorumPeer: 
 [myid:3] Unable to load database on disk
 java.io.IOException: Unreasonable length = 2054758
 at 
 org.apache.jute.BinaryInputArchive.readBuffer(BinaryInputArchive.java:100)
 at 
 org.apache.zookeeper.server.persistence.Util.readTxnBytes(Util.java:233)
 at 
 org.apache.zookeeper.server.persistence.FileTxnLog$FileTxnIterator.next(FileTxnLog.java:602)
 at 
 org.apache.zookeeper.server.persistence.FileTxnSnapLog.restore(FileTxnSnapLog.java:157)
 at 
 org.apache.zookeeper.server.ZKDatabase.loadDataBase(ZKDatabase.java:223)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.loadDataBase(QuorumPeer.java:417)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.getLastLoggedZxid(QuorumPeer.java:546)
 at 
 org.apache.zookeeper.server.quorum.FastLeaderElection.getInitLastLoggedZxid(FastLeaderElection.java:690)
 at 
 org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:737)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:716)
 {code}
 The zookeeper service will be unavailable until we enlarge the jute.maxbuffer 
 and restart zookeeper hbase cluster.
 *Solution*
 Add buffer size check in BinaryOutputArchive to avoid large transaction be 
 written to log and sent to followers.
 But I am 

[jira] [Updated] (ZOOKEEPER-2101) Transaction larger than max buffer of jute makes zookeeper unavailable

2015-05-15 Thread Michi Mutsuzaki (JIRA)

 [ 
https://issues.apache.org/jira/browse/ZOOKEEPER-2101?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Michi Mutsuzaki updated ZOOKEEPER-2101:
---
Fix Version/s: (was: 3.5.1)
   3.6.0
   3.5.2

 Transaction larger than max buffer of jute makes zookeeper unavailable
 --

 Key: ZOOKEEPER-2101
 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2101
 Project: ZooKeeper
  Issue Type: Bug
  Components: jute
Affects Versions: 3.4.4
Reporter: Liu Shaohui
 Fix For: 3.5.2, 3.6.0

 Attachments: ZOOKEEPER-2101-v1.diff, ZOOKEEPER-2101-v2.diff, 
 ZOOKEEPER-2101-v3.diff, ZOOKEEPER-2101-v4.diff, test.diff


 *Problem*
 For multi operation, PrepRequestProcessor may produce a large transaction 
 whose size may be larger than the max buffer size of jute. There is check of 
 buffer size in readBuffer method  of BinaryInputArchive, but no check in 
 writeBuffer method  of BinaryOutputArchive, which will cause that 
 1, Leader can sync transaction to txn log and send the large transaction to 
 the followers, but the followers failed to read the transaction and can't 
 sync with leader.
 {code}
 2015-01-04,12:42:26,474 WARN org.apache.zookeeper.server.quorum.Learner: 
 [myid:2] Exception when following the leader
 java.io.IOException: Unreasonable length = 2054758
 at 
 org.apache.jute.BinaryInputArchive.readBuffer(BinaryInputArchive.java:100)
 at 
 org.apache.zookeeper.server.quorum.QuorumPacket.deserialize(QuorumPacket.java:85)
 at 
 org.apache.jute.BinaryInputArchive.readRecord(BinaryInputArchive.java:108)
 at 
 org.apache.zookeeper.server.quorum.Learner.readPacket(Learner.java:152)
 at 
 org.apache.zookeeper.server.quorum.Follower.followLeader(Follower.java:85)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:740)
 2015-01-04,12:42:26,475 INFO org.apache.zookeeper.server.quorum.Learner: 
 [myid:2] shutdown called
 java.lang.Exception: shutdown Follower
 at 
 org.apache.zookeeper.server.quorum.Follower.shutdown(Follower.java:166)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:744)
 {code}
 2, The leader lose all followers, which trigger the leader election. The old 
 leader will become leader again for it has up-to-date data.
 {code}
 2015-01-04,12:42:28,502 INFO org.apache.zookeeper.server.quorum.Leader: 
 [myid:3] Shutting down
 2015-01-04,12:42:28,502 INFO org.apache.zookeeper.server.quorum.Leader: 
 [myid:3] Shutdown called
 java.lang.Exception: shutdown Leader! reason: Only 1 followers, need 2
 at org.apache.zookeeper.server.quorum.Leader.shutdown(Leader.java:496)
 at org.apache.zookeeper.server.quorum.Leader.lead(Leader.java:471)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:753)
 {code}
 3, The leader can not load the transaction from the txn log for the length of 
 data is larger than the max buffer of jute.
 {code}
 2015-01-04,12:42:31,282 ERROR org.apache.zookeeper.server.quorum.QuorumPeer: 
 [myid:3] Unable to load database on disk
 java.io.IOException: Unreasonable length = 2054758
 at 
 org.apache.jute.BinaryInputArchive.readBuffer(BinaryInputArchive.java:100)
 at 
 org.apache.zookeeper.server.persistence.Util.readTxnBytes(Util.java:233)
 at 
 org.apache.zookeeper.server.persistence.FileTxnLog$FileTxnIterator.next(FileTxnLog.java:602)
 at 
 org.apache.zookeeper.server.persistence.FileTxnSnapLog.restore(FileTxnSnapLog.java:157)
 at 
 org.apache.zookeeper.server.ZKDatabase.loadDataBase(ZKDatabase.java:223)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.loadDataBase(QuorumPeer.java:417)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.getLastLoggedZxid(QuorumPeer.java:546)
 at 
 org.apache.zookeeper.server.quorum.FastLeaderElection.getInitLastLoggedZxid(FastLeaderElection.java:690)
 at 
 org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:737)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:716)
 {code}
 The zookeeper service will be unavailable until we enlarge the jute.maxbuffer 
 and restart zookeeper hbase cluster.
 *Solution*
 Add buffer size check in BinaryOutputArchive to avoid large transaction be 
 written to log and sent to followers.
 But I am not sure if there are side-effects of throwing an IOException in 
 BinaryOutputArchive  and RequestProcessors



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


[jira] [Updated] (ZOOKEEPER-2101) Transaction larger than max buffer of jute makes zookeeper unavailable

2015-05-14 Thread Liu Shaohui (JIRA)

 [ 
https://issues.apache.org/jira/browse/ZOOKEEPER-2101?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Liu Shaohui updated ZOOKEEPER-2101:
---
Fix Version/s: 3.5.1

 Transaction larger than max buffer of jute makes zookeeper unavailable
 --

 Key: ZOOKEEPER-2101
 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2101
 Project: ZooKeeper
  Issue Type: Bug
  Components: jute
Affects Versions: 3.4.4
Reporter: Liu Shaohui
 Fix For: 3.5.1

 Attachments: ZOOKEEPER-2101-v1.diff, ZOOKEEPER-2101-v2.diff, 
 ZOOKEEPER-2101-v3.diff, ZOOKEEPER-2101-v4.diff, test.diff


 *Problem*
 For multi operation, PrepRequestProcessor may produce a large transaction 
 whose size may be larger than the max buffer size of jute. There is check of 
 buffer size in readBuffer method  of BinaryInputArchive, but no check in 
 writeBuffer method  of BinaryOutputArchive, which will cause that 
 1, Leader can sync transaction to txn log and send the large transaction to 
 the followers, but the followers failed to read the transaction and can't 
 sync with leader.
 {code}
 2015-01-04,12:42:26,474 WARN org.apache.zookeeper.server.quorum.Learner: 
 [myid:2] Exception when following the leader
 java.io.IOException: Unreasonable length = 2054758
 at 
 org.apache.jute.BinaryInputArchive.readBuffer(BinaryInputArchive.java:100)
 at 
 org.apache.zookeeper.server.quorum.QuorumPacket.deserialize(QuorumPacket.java:85)
 at 
 org.apache.jute.BinaryInputArchive.readRecord(BinaryInputArchive.java:108)
 at 
 org.apache.zookeeper.server.quorum.Learner.readPacket(Learner.java:152)
 at 
 org.apache.zookeeper.server.quorum.Follower.followLeader(Follower.java:85)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:740)
 2015-01-04,12:42:26,475 INFO org.apache.zookeeper.server.quorum.Learner: 
 [myid:2] shutdown called
 java.lang.Exception: shutdown Follower
 at 
 org.apache.zookeeper.server.quorum.Follower.shutdown(Follower.java:166)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:744)
 {code}
 2, The leader lose all followers, which trigger the leader election. The old 
 leader will become leader again for it has up-to-date data.
 {code}
 2015-01-04,12:42:28,502 INFO org.apache.zookeeper.server.quorum.Leader: 
 [myid:3] Shutting down
 2015-01-04,12:42:28,502 INFO org.apache.zookeeper.server.quorum.Leader: 
 [myid:3] Shutdown called
 java.lang.Exception: shutdown Leader! reason: Only 1 followers, need 2
 at org.apache.zookeeper.server.quorum.Leader.shutdown(Leader.java:496)
 at org.apache.zookeeper.server.quorum.Leader.lead(Leader.java:471)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:753)
 {code}
 3, The leader can not load the transaction from the txn log for the length of 
 data is larger than the max buffer of jute.
 {code}
 2015-01-04,12:42:31,282 ERROR org.apache.zookeeper.server.quorum.QuorumPeer: 
 [myid:3] Unable to load database on disk
 java.io.IOException: Unreasonable length = 2054758
 at 
 org.apache.jute.BinaryInputArchive.readBuffer(BinaryInputArchive.java:100)
 at 
 org.apache.zookeeper.server.persistence.Util.readTxnBytes(Util.java:233)
 at 
 org.apache.zookeeper.server.persistence.FileTxnLog$FileTxnIterator.next(FileTxnLog.java:602)
 at 
 org.apache.zookeeper.server.persistence.FileTxnSnapLog.restore(FileTxnSnapLog.java:157)
 at 
 org.apache.zookeeper.server.ZKDatabase.loadDataBase(ZKDatabase.java:223)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.loadDataBase(QuorumPeer.java:417)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.getLastLoggedZxid(QuorumPeer.java:546)
 at 
 org.apache.zookeeper.server.quorum.FastLeaderElection.getInitLastLoggedZxid(FastLeaderElection.java:690)
 at 
 org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:737)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:716)
 {code}
 The zookeeper service will be unavailable until we enlarge the jute.maxbuffer 
 and restart zookeeper hbase cluster.
 *Solution*
 Add buffer size check in BinaryOutputArchive to avoid large transaction be 
 written to log and sent to followers.
 But I am not sure if there are side-effects of throwing an IOException in 
 BinaryOutputArchive  and RequestProcessors



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


[jira] [Updated] (ZOOKEEPER-2101) Transaction larger than max buffer of jute makes zookeeper unavailable

2015-05-14 Thread Liu Shaohui (JIRA)

 [ 
https://issues.apache.org/jira/browse/ZOOKEEPER-2101?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Liu Shaohui updated ZOOKEEPER-2101:
---
Attachment: ZOOKEEPER-2101-v4.diff

Update for [~rakeshr] review.
- Add unit tests
- Fix the log problems

{quote}
The attached log is comparing request.request.capacity() and data.length. But 
data.length contains both request and additional fields. So comparing these 
both won't give exact values.
{quote}
Just add more info in the log

 Transaction larger than max buffer of jute makes zookeeper unavailable
 --

 Key: ZOOKEEPER-2101
 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2101
 Project: ZooKeeper
  Issue Type: Bug
  Components: jute
Affects Versions: 3.4.4
Reporter: Liu Shaohui
 Attachments: ZOOKEEPER-2101-v1.diff, ZOOKEEPER-2101-v2.diff, 
 ZOOKEEPER-2101-v3.diff, ZOOKEEPER-2101-v4.diff, test.diff


 *Problem*
 For multi operation, PrepRequestProcessor may produce a large transaction 
 whose size may be larger than the max buffer size of jute. There is check of 
 buffer size in readBuffer method  of BinaryInputArchive, but no check in 
 writeBuffer method  of BinaryOutputArchive, which will cause that 
 1, Leader can sync transaction to txn log and send the large transaction to 
 the followers, but the followers failed to read the transaction and can't 
 sync with leader.
 {code}
 2015-01-04,12:42:26,474 WARN org.apache.zookeeper.server.quorum.Learner: 
 [myid:2] Exception when following the leader
 java.io.IOException: Unreasonable length = 2054758
 at 
 org.apache.jute.BinaryInputArchive.readBuffer(BinaryInputArchive.java:100)
 at 
 org.apache.zookeeper.server.quorum.QuorumPacket.deserialize(QuorumPacket.java:85)
 at 
 org.apache.jute.BinaryInputArchive.readRecord(BinaryInputArchive.java:108)
 at 
 org.apache.zookeeper.server.quorum.Learner.readPacket(Learner.java:152)
 at 
 org.apache.zookeeper.server.quorum.Follower.followLeader(Follower.java:85)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:740)
 2015-01-04,12:42:26,475 INFO org.apache.zookeeper.server.quorum.Learner: 
 [myid:2] shutdown called
 java.lang.Exception: shutdown Follower
 at 
 org.apache.zookeeper.server.quorum.Follower.shutdown(Follower.java:166)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:744)
 {code}
 2, The leader lose all followers, which trigger the leader election. The old 
 leader will become leader again for it has up-to-date data.
 {code}
 2015-01-04,12:42:28,502 INFO org.apache.zookeeper.server.quorum.Leader: 
 [myid:3] Shutting down
 2015-01-04,12:42:28,502 INFO org.apache.zookeeper.server.quorum.Leader: 
 [myid:3] Shutdown called
 java.lang.Exception: shutdown Leader! reason: Only 1 followers, need 2
 at org.apache.zookeeper.server.quorum.Leader.shutdown(Leader.java:496)
 at org.apache.zookeeper.server.quorum.Leader.lead(Leader.java:471)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:753)
 {code}
 3, The leader can not load the transaction from the txn log for the length of 
 data is larger than the max buffer of jute.
 {code}
 2015-01-04,12:42:31,282 ERROR org.apache.zookeeper.server.quorum.QuorumPeer: 
 [myid:3] Unable to load database on disk
 java.io.IOException: Unreasonable length = 2054758
 at 
 org.apache.jute.BinaryInputArchive.readBuffer(BinaryInputArchive.java:100)
 at 
 org.apache.zookeeper.server.persistence.Util.readTxnBytes(Util.java:233)
 at 
 org.apache.zookeeper.server.persistence.FileTxnLog$FileTxnIterator.next(FileTxnLog.java:602)
 at 
 org.apache.zookeeper.server.persistence.FileTxnSnapLog.restore(FileTxnSnapLog.java:157)
 at 
 org.apache.zookeeper.server.ZKDatabase.loadDataBase(ZKDatabase.java:223)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.loadDataBase(QuorumPeer.java:417)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.getLastLoggedZxid(QuorumPeer.java:546)
 at 
 org.apache.zookeeper.server.quorum.FastLeaderElection.getInitLastLoggedZxid(FastLeaderElection.java:690)
 at 
 org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:737)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:716)
 {code}
 The zookeeper service will be unavailable until we enlarge the jute.maxbuffer 
 and restart zookeeper hbase cluster.
 *Solution*
 Add buffer size check in BinaryOutputArchive to avoid large transaction be 
 written to log and sent to followers.
 But I am not sure if there are side-effects of throwing an IOException in 
 BinaryOutputArchive  and RequestProcessors



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


[jira] [Updated] (ZOOKEEPER-2101) Transaction larger than max buffer of jute makes zookeeper unavailable

2015-01-22 Thread Liu Shaohui (JIRA)

 [ 
https://issues.apache.org/jira/browse/ZOOKEEPER-2101?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Liu Shaohui updated ZOOKEEPER-2101:
---
Attachment: ZOOKEEPER-2101-v3.diff

Check proposal size in PrepRequestProcessor and throw ProposalTooLargeException 
exception when proposal is larger then the max jute buffer size.


 Transaction larger than max buffer of jute makes zookeeper unavailable
 --

 Key: ZOOKEEPER-2101
 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2101
 Project: ZooKeeper
  Issue Type: Bug
  Components: jute
Affects Versions: 3.4.4
Reporter: Liu Shaohui
 Attachments: ZOOKEEPER-2101-v1.diff, ZOOKEEPER-2101-v2.diff, 
 ZOOKEEPER-2101-v3.diff, test.diff


 *Problem*
 For multi operation, PrepRequestProcessor may produce a large transaction 
 whose size may be larger than the max buffer size of jute. There is check of 
 buffer size in readBuffer method  of BinaryInputArchive, but no check in 
 writeBuffer method  of BinaryOutputArchive, which will cause that 
 1, Leader can sync transaction to txn log and send the large transaction to 
 the followers, but the followers failed to read the transaction and can't 
 sync with leader.
 {code}
 2015-01-04,12:42:26,474 WARN org.apache.zookeeper.server.quorum.Learner: 
 [myid:2] Exception when following the leader
 java.io.IOException: Unreasonable length = 2054758
 at 
 org.apache.jute.BinaryInputArchive.readBuffer(BinaryInputArchive.java:100)
 at 
 org.apache.zookeeper.server.quorum.QuorumPacket.deserialize(QuorumPacket.java:85)
 at 
 org.apache.jute.BinaryInputArchive.readRecord(BinaryInputArchive.java:108)
 at 
 org.apache.zookeeper.server.quorum.Learner.readPacket(Learner.java:152)
 at 
 org.apache.zookeeper.server.quorum.Follower.followLeader(Follower.java:85)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:740)
 2015-01-04,12:42:26,475 INFO org.apache.zookeeper.server.quorum.Learner: 
 [myid:2] shutdown called
 java.lang.Exception: shutdown Follower
 at 
 org.apache.zookeeper.server.quorum.Follower.shutdown(Follower.java:166)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:744)
 {code}
 2, The leader lose all followers, which trigger the leader election. The old 
 leader will become leader again for it has up-to-date data.
 {code}
 2015-01-04,12:42:28,502 INFO org.apache.zookeeper.server.quorum.Leader: 
 [myid:3] Shutting down
 2015-01-04,12:42:28,502 INFO org.apache.zookeeper.server.quorum.Leader: 
 [myid:3] Shutdown called
 java.lang.Exception: shutdown Leader! reason: Only 1 followers, need 2
 at org.apache.zookeeper.server.quorum.Leader.shutdown(Leader.java:496)
 at org.apache.zookeeper.server.quorum.Leader.lead(Leader.java:471)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:753)
 {code}
 3, The leader can not load the transaction from the txn log for the length of 
 data is larger than the max buffer of jute.
 {code}
 2015-01-04,12:42:31,282 ERROR org.apache.zookeeper.server.quorum.QuorumPeer: 
 [myid:3] Unable to load database on disk
 java.io.IOException: Unreasonable length = 2054758
 at 
 org.apache.jute.BinaryInputArchive.readBuffer(BinaryInputArchive.java:100)
 at 
 org.apache.zookeeper.server.persistence.Util.readTxnBytes(Util.java:233)
 at 
 org.apache.zookeeper.server.persistence.FileTxnLog$FileTxnIterator.next(FileTxnLog.java:602)
 at 
 org.apache.zookeeper.server.persistence.FileTxnSnapLog.restore(FileTxnSnapLog.java:157)
 at 
 org.apache.zookeeper.server.ZKDatabase.loadDataBase(ZKDatabase.java:223)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.loadDataBase(QuorumPeer.java:417)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.getLastLoggedZxid(QuorumPeer.java:546)
 at 
 org.apache.zookeeper.server.quorum.FastLeaderElection.getInitLastLoggedZxid(FastLeaderElection.java:690)
 at 
 org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:737)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:716)
 {code}
 The zookeeper service will be unavailable until we enlarge the jute.maxbuffer 
 and restart zookeeper hbase cluster.
 *Solution*
 Add buffer size check in BinaryOutputArchive to avoid large transaction be 
 written to log and sent to followers.
 But I am not sure if there are side-effects of throwing an IOException in 
 BinaryOutputArchive  and RequestProcessors



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


[jira] [Updated] (ZOOKEEPER-2101) Transaction larger than max buffer of jute makes zookeeper unavailable

2015-01-19 Thread Liu Shaohui (JIRA)

 [ 
https://issues.apache.org/jira/browse/ZOOKEEPER-2101?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Liu Shaohui updated ZOOKEEPER-2101:
---
Attachment: ZOOKEEPER-2101-v2.diff

Limit the size of packet less than the half of jute max buffer size

 Transaction larger than max buffer of jute makes zookeeper unavailable
 --

 Key: ZOOKEEPER-2101
 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2101
 Project: ZooKeeper
  Issue Type: Bug
  Components: jute
Affects Versions: 3.4.4
Reporter: Liu Shaohui
 Attachments: ZOOKEEPER-2101-v1.diff, ZOOKEEPER-2101-v2.diff, test.diff


 *Problem*
 For multi operation, PrepRequestProcessor may produce a large transaction 
 whose size may be larger than the max buffer size of jute. There is check of 
 buffer size in readBuffer method  of BinaryInputArchive, but no check in 
 writeBuffer method  of BinaryOutputArchive, which will cause that 
 1, Leader can sync transaction to txn log and send the large transaction to 
 the followers, but the followers failed to read the transaction and can't 
 sync with leader.
 {code}
 2015-01-04,12:42:26,474 WARN org.apache.zookeeper.server.quorum.Learner: 
 [myid:2] Exception when following the leader
 java.io.IOException: Unreasonable length = 2054758
 at 
 org.apache.jute.BinaryInputArchive.readBuffer(BinaryInputArchive.java:100)
 at 
 org.apache.zookeeper.server.quorum.QuorumPacket.deserialize(QuorumPacket.java:85)
 at 
 org.apache.jute.BinaryInputArchive.readRecord(BinaryInputArchive.java:108)
 at 
 org.apache.zookeeper.server.quorum.Learner.readPacket(Learner.java:152)
 at 
 org.apache.zookeeper.server.quorum.Follower.followLeader(Follower.java:85)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:740)
 2015-01-04,12:42:26,475 INFO org.apache.zookeeper.server.quorum.Learner: 
 [myid:2] shutdown called
 java.lang.Exception: shutdown Follower
 at 
 org.apache.zookeeper.server.quorum.Follower.shutdown(Follower.java:166)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:744)
 {code}
 2, The leader lose all followers, which trigger the leader election. The old 
 leader will become leader again for it has up-to-date data.
 {code}
 2015-01-04,12:42:28,502 INFO org.apache.zookeeper.server.quorum.Leader: 
 [myid:3] Shutting down
 2015-01-04,12:42:28,502 INFO org.apache.zookeeper.server.quorum.Leader: 
 [myid:3] Shutdown called
 java.lang.Exception: shutdown Leader! reason: Only 1 followers, need 2
 at org.apache.zookeeper.server.quorum.Leader.shutdown(Leader.java:496)
 at org.apache.zookeeper.server.quorum.Leader.lead(Leader.java:471)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:753)
 {code}
 3, The leader can not load the transaction from the txn log for the length of 
 data is larger than the max buffer of jute.
 {code}
 2015-01-04,12:42:31,282 ERROR org.apache.zookeeper.server.quorum.QuorumPeer: 
 [myid:3] Unable to load database on disk
 java.io.IOException: Unreasonable length = 2054758
 at 
 org.apache.jute.BinaryInputArchive.readBuffer(BinaryInputArchive.java:100)
 at 
 org.apache.zookeeper.server.persistence.Util.readTxnBytes(Util.java:233)
 at 
 org.apache.zookeeper.server.persistence.FileTxnLog$FileTxnIterator.next(FileTxnLog.java:602)
 at 
 org.apache.zookeeper.server.persistence.FileTxnSnapLog.restore(FileTxnSnapLog.java:157)
 at 
 org.apache.zookeeper.server.ZKDatabase.loadDataBase(ZKDatabase.java:223)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.loadDataBase(QuorumPeer.java:417)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.getLastLoggedZxid(QuorumPeer.java:546)
 at 
 org.apache.zookeeper.server.quorum.FastLeaderElection.getInitLastLoggedZxid(FastLeaderElection.java:690)
 at 
 org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:737)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:716)
 {code}
 The zookeeper service will be unavailable until we enlarge the jute.maxbuffer 
 and restart zookeeper hbase cluster.
 *Solution*
 Add buffer size check in BinaryOutputArchive to avoid large transaction be 
 written to log and sent to followers.
 But I am not sure if there are side-effects of throwing an IOException in 
 BinaryOutputArchive  and RequestProcessors



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


[jira] [Updated] (ZOOKEEPER-2101) Transaction larger than max buffer of jute makes zookeeper unavailable

2015-01-16 Thread Liu Shaohui (JIRA)

 [ 
https://issues.apache.org/jira/browse/ZOOKEEPER-2101?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Liu Shaohui updated ZOOKEEPER-2101:
---
Attachment: test.diff

[~rakeshr]
Add log in ZKDatabase to validate that the  size of Proposal may larger than 
the request size.

{code}
2015-01-16 17:56:07,469 [myid:] - INFO  [SyncThread:0:ZKDatabase@261] - Request 
type 14 size: 5499 zxid: 2, Proposal size:5526
{code}

 Transaction larger than max buffer of jute makes zookeeper unavailable
 --

 Key: ZOOKEEPER-2101
 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2101
 Project: ZooKeeper
  Issue Type: Bug
  Components: jute
Affects Versions: 3.4.4
Reporter: Liu Shaohui
 Attachments: ZOOKEEPER-2101-v1.diff, test.diff


 *Problem*
 For multi operation, PrepRequestProcessor may produce a large transaction 
 whose size may be larger than the max buffer size of jute. There is check of 
 buffer size in readBuffer method  of BinaryInputArchive, but no check in 
 writeBuffer method  of BinaryOutputArchive, which will cause that 
 1, Leader can sync transaction to txn log and send the large transaction to 
 the followers, but the followers failed to read the transaction and can't 
 sync with leader.
 {code}
 2015-01-04,12:42:26,474 WARN org.apache.zookeeper.server.quorum.Learner: 
 [myid:2] Exception when following the leader
 java.io.IOException: Unreasonable length = 2054758
 at 
 org.apache.jute.BinaryInputArchive.readBuffer(BinaryInputArchive.java:100)
 at 
 org.apache.zookeeper.server.quorum.QuorumPacket.deserialize(QuorumPacket.java:85)
 at 
 org.apache.jute.BinaryInputArchive.readRecord(BinaryInputArchive.java:108)
 at 
 org.apache.zookeeper.server.quorum.Learner.readPacket(Learner.java:152)
 at 
 org.apache.zookeeper.server.quorum.Follower.followLeader(Follower.java:85)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:740)
 2015-01-04,12:42:26,475 INFO org.apache.zookeeper.server.quorum.Learner: 
 [myid:2] shutdown called
 java.lang.Exception: shutdown Follower
 at 
 org.apache.zookeeper.server.quorum.Follower.shutdown(Follower.java:166)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:744)
 {code}
 2, The leader lose all followers, which trigger the leader election. The old 
 leader will become leader again for it has up-to-date data.
 {code}
 2015-01-04,12:42:28,502 INFO org.apache.zookeeper.server.quorum.Leader: 
 [myid:3] Shutting down
 2015-01-04,12:42:28,502 INFO org.apache.zookeeper.server.quorum.Leader: 
 [myid:3] Shutdown called
 java.lang.Exception: shutdown Leader! reason: Only 1 followers, need 2
 at org.apache.zookeeper.server.quorum.Leader.shutdown(Leader.java:496)
 at org.apache.zookeeper.server.quorum.Leader.lead(Leader.java:471)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:753)
 {code}
 3, The leader can not load the transaction from the txn log for the length of 
 data is larger than the max buffer of jute.
 {code}
 2015-01-04,12:42:31,282 ERROR org.apache.zookeeper.server.quorum.QuorumPeer: 
 [myid:3] Unable to load database on disk
 java.io.IOException: Unreasonable length = 2054758
 at 
 org.apache.jute.BinaryInputArchive.readBuffer(BinaryInputArchive.java:100)
 at 
 org.apache.zookeeper.server.persistence.Util.readTxnBytes(Util.java:233)
 at 
 org.apache.zookeeper.server.persistence.FileTxnLog$FileTxnIterator.next(FileTxnLog.java:602)
 at 
 org.apache.zookeeper.server.persistence.FileTxnSnapLog.restore(FileTxnSnapLog.java:157)
 at 
 org.apache.zookeeper.server.ZKDatabase.loadDataBase(ZKDatabase.java:223)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.loadDataBase(QuorumPeer.java:417)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.getLastLoggedZxid(QuorumPeer.java:546)
 at 
 org.apache.zookeeper.server.quorum.FastLeaderElection.getInitLastLoggedZxid(FastLeaderElection.java:690)
 at 
 org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:737)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:716)
 {code}
 The zookeeper service will be unavailable until we enlarge the jute.maxbuffer 
 and restart zookeeper hbase cluster.
 *Solution*
 Add buffer size check in BinaryOutputArchive to avoid large transaction be 
 written to log and sent to followers.
 But I am not sure if there are side-effects of throwing an IOException in 
 BinaryOutputArchive  and RequestProcessors



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


[jira] [Updated] (ZOOKEEPER-2101) Transaction larger than max buffer of jute makes zookeeper unavailable

2015-01-04 Thread Liu Shaohui (JIRA)

 [ 
https://issues.apache.org/jira/browse/ZOOKEEPER-2101?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Liu Shaohui updated ZOOKEEPER-2101:
---
Attachment: ZOOKEEPER-2101-v1.diff

Patch for trunk.

 Transaction larger than max buffer of jute makes zookeeper unavailable
 --

 Key: ZOOKEEPER-2101
 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2101
 Project: ZooKeeper
  Issue Type: Bug
  Components: jute
Affects Versions: 3.4.4
Reporter: Liu Shaohui
 Attachments: ZOOKEEPER-2101-v1.diff


 *Problem*
 For multi operation, PrepRequestProcessor may produce a large transaction 
 whose size may be larger than the max buffer size of jute. There is check of 
 buffer size in readBuffer method  of BinaryInputArchive, but no check in 
 writeBuffer method  of BinaryOutputArchive, which will cause that 
 1, Leader can sync transaction to txn log and send the large transaction to 
 the followers, but the followers failed to read the transaction and can't 
 sync with leader.
 {code}
 2015-01-04,12:42:26,474 WARN org.apache.zookeeper.server.quorum.Learner: 
 [myid:2] Exception when following the leader
 java.io.IOException: Unreasonable length = 2054758
 at 
 org.apache.jute.BinaryInputArchive.readBuffer(BinaryInputArchive.java:100)
 at 
 org.apache.zookeeper.server.quorum.QuorumPacket.deserialize(QuorumPacket.java:85)
 at 
 org.apache.jute.BinaryInputArchive.readRecord(BinaryInputArchive.java:108)
 at 
 org.apache.zookeeper.server.quorum.Learner.readPacket(Learner.java:152)
 at 
 org.apache.zookeeper.server.quorum.Follower.followLeader(Follower.java:85)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:740)
 2015-01-04,12:42:26,475 INFO org.apache.zookeeper.server.quorum.Learner: 
 [myid:2] shutdown called
 java.lang.Exception: shutdown Follower
 at 
 org.apache.zookeeper.server.quorum.Follower.shutdown(Follower.java:166)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:744)
 {code}
 2, The leader lose all followers, which trigger the leader election. The old 
 leader will become leader again for it has up-to-date data.
 {code}
 2015-01-04,12:42:28,502 INFO org.apache.zookeeper.server.quorum.Leader: 
 [myid:3] Shutting down
 2015-01-04,12:42:28,502 INFO org.apache.zookeeper.server.quorum.Leader: 
 [myid:3] Shutdown called
 java.lang.Exception: shutdown Leader! reason: Only 1 followers, need 2
 at org.apache.zookeeper.server.quorum.Leader.shutdown(Leader.java:496)
 at org.apache.zookeeper.server.quorum.Leader.lead(Leader.java:471)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:753)
 {code}
 3, The leader can not load the transaction from the txn log for the length of 
 data is larger than the max buffer of jute.
 {code}
 2015-01-04,12:42:31,282 ERROR org.apache.zookeeper.server.quorum.QuorumPeer: 
 [myid:3] Unable to load database on disk
 java.io.IOException: Unreasonable length = 2054758
 at 
 org.apache.jute.BinaryInputArchive.readBuffer(BinaryInputArchive.java:100)
 at 
 org.apache.zookeeper.server.persistence.Util.readTxnBytes(Util.java:233)
 at 
 org.apache.zookeeper.server.persistence.FileTxnLog$FileTxnIterator.next(FileTxnLog.java:602)
 at 
 org.apache.zookeeper.server.persistence.FileTxnSnapLog.restore(FileTxnSnapLog.java:157)
 at 
 org.apache.zookeeper.server.ZKDatabase.loadDataBase(ZKDatabase.java:223)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.loadDataBase(QuorumPeer.java:417)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.getLastLoggedZxid(QuorumPeer.java:546)
 at 
 org.apache.zookeeper.server.quorum.FastLeaderElection.getInitLastLoggedZxid(FastLeaderElection.java:690)
 at 
 org.apache.zookeeper.server.quorum.FastLeaderElection.lookForLeader(FastLeaderElection.java:737)
 at 
 org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:716)
 {code}
 The zookeeper service will be unavailable until we enlarge the jute.maxbuffer 
 and restart zookeeper hbase cluster.
 *Solution*
 Add buffer size check in BinaryOutputArchive to avoid large transaction be 
 written to log and sent to followers.
 But I am not sure if there are side-effects of throwing an IOException in 
 BinaryOutputArchive  and RequestProcessors



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