[jira] Updated: (ZOOKEEPER-38) headers (version+) in log/snap files
[ https://issues.apache.org/jira/browse/ZOOKEEPER-38?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Benjamin Reed updated ZOOKEEPER-38: --- Hadoop Flags: [Incompatible change, Reviewed] (was: [Incompatible change]) +1 Looks good mahadev. Marked as an Incompatible change since the data format is not backwards compatible. headers (version+) in log/snap files Key: ZOOKEEPER-38 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-38 Project: Zookeeper Issue Type: New Feature Components: server Reporter: Patrick Hunt Assignee: Mahadev konar Fix For: 3.0.0 Attachments: ZOOKEEPER-38.patch, ZOOKEEPER-38.patch, ZOOKEEPER-38.patch, ZOOKEEPER-38_1.patch, ZOOKEEPER-38_10.patch, ZOOKEEPER-38_11.patch, ZOOKEEPER-38_2.patch, ZOOKEEPER-38_3.patch, ZOOKEEPER-38_5.patch, ZOOKEEPER-38_6.patch, ZOOKEEPER-38_7.patch, ZOOKEEPER-38_8.patch, ZOOKEEPER-38_9.patch Moved from SourceForge to Apache. http://sourceforge.net/tracker/index.php?func=detailaid=1961767group_id=209147atid=1008547 -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
[jira] Updated: (ZOOKEEPER-38) headers (version+) in log/snap files
[ https://issues.apache.org/jira/browse/ZOOKEEPER-38?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Benjamin Reed updated ZOOKEEPER-38: --- Resolution: Fixed Hadoop Flags: [Incompatible change, Reviewed] (was: [Reviewed, Incompatible change]) Status: Resolved (was: Patch Available) headers (version+) in log/snap files Key: ZOOKEEPER-38 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-38 Project: Zookeeper Issue Type: New Feature Components: server Reporter: Patrick Hunt Assignee: Mahadev konar Fix For: 3.0.0 Attachments: ZOOKEEPER-38.patch, ZOOKEEPER-38.patch, ZOOKEEPER-38.patch, ZOOKEEPER-38_1.patch, ZOOKEEPER-38_10.patch, ZOOKEEPER-38_11.patch, ZOOKEEPER-38_2.patch, ZOOKEEPER-38_3.patch, ZOOKEEPER-38_5.patch, ZOOKEEPER-38_6.patch, ZOOKEEPER-38_7.patch, ZOOKEEPER-38_8.patch, ZOOKEEPER-38_9.patch Moved from SourceForge to Apache. http://sourceforge.net/tracker/index.php?func=detailaid=1961767group_id=209147atid=1008547 -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
[jira] Commented: (ZOOKEEPER-17) zookeeper_init doc needs clarification
[ https://issues.apache.org/jira/browse/ZOOKEEPER-17?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=12635964#action_12635964 ] Austin Shoemaker commented on ZOOKEEPER-17: --- The documentation states that if the client_id given to zookeeper_init is expired or invalid that a new session will be automatically generated, implying that it will proceed to the CONNECTED state. In the implementation an expired or invalid client_id leads to the unrecoverable SESSION_EXPIRED_STATE, which requires closing and reopening a new connection with no client_id specified to continue. Since the server has already assigned a replacement client_id it seems logical to follow the header documentation and proceed with the new value, which appears to be possible by removing the if-block that triggers the expired state in check_events (zookeeper.c). If the client application needs to know if the session was replaced, it can simply compare the client_id it provided with the client_id upon entering CONNECTED_STATE. What do you think? zookeeper_init doc needs clarification -- Key: ZOOKEEPER-17 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-17 Project: Zookeeper Issue Type: Bug Components: c client, documentation Reporter: Patrick Hunt Assignee: Patrick Hunt Fix For: 3.0.0 Attachments: ZOOKEEPER-17.patch Moved from SourceForge to Apache. http://sourceforge.net/tracker/index.php?func=detailaid=1967467group_id=209147atid=1008544 -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
[jira] Updated: (ZOOKEEPER-127) Use of non-standard election ports in config breaks services
[ https://issues.apache.org/jira/browse/ZOOKEEPER-127?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Benjamin Reed updated ZOOKEEPER-127: Hadoop Flags: [Reviewed] +1 looks good Use of non-standard election ports in config breaks services Key: ZOOKEEPER-127 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-127 Project: Zookeeper Issue Type: Bug Components: quorum Affects Versions: 3.0.0 Reporter: Mark Harwood Assignee: Flavio Paiva Junqueira Priority: Critical Fix For: 3.0.0 Attachments: mhPortChanges.patch, ZOOKEEPER-127.patch, ZOOKEEPER-127.patch, ZOOKEEPER-127.patch, ZOOKEEPER-127.patch, ZOOKEEPER-127.patch, ZOOKEEPER-127.patch In QuorumCnxManager.toSend there is a call to create a connection as follows: channel = SocketChannel.open(new InetSocketAddress(addr, port)); Unfortunately addr is the ip address of a remote server while port is the electionPort of *this* server. As an example, given this configuration (taken from my zoo.cfg) server.1=10.20.9.254:2881 server.2=10.20.9.9:2882 server.3=10.20.9.254:2883 Server 3 was observed trying to make a connection to host 10.20.9.9 on port 2883 and obviously failing. In tests where all machines use the same electionPort this bug would not manifest itself. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
[jira] Updated: (ZOOKEEPER-127) Use of non-standard election ports in config breaks services
[ https://issues.apache.org/jira/browse/ZOOKEEPER-127?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Benjamin Reed updated ZOOKEEPER-127: Resolution: Fixed Status: Resolved (was: Patch Available) Committed revision 700714. Use of non-standard election ports in config breaks services Key: ZOOKEEPER-127 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-127 Project: Zookeeper Issue Type: Bug Components: quorum Affects Versions: 3.0.0 Reporter: Mark Harwood Assignee: Flavio Paiva Junqueira Priority: Critical Fix For: 3.0.0 Attachments: mhPortChanges.patch, ZOOKEEPER-127.patch, ZOOKEEPER-127.patch, ZOOKEEPER-127.patch, ZOOKEEPER-127.patch, ZOOKEEPER-127.patch, ZOOKEEPER-127.patch In QuorumCnxManager.toSend there is a call to create a connection as follows: channel = SocketChannel.open(new InetSocketAddress(addr, port)); Unfortunately addr is the ip address of a remote server while port is the electionPort of *this* server. As an example, given this configuration (taken from my zoo.cfg) server.1=10.20.9.254:2881 server.2=10.20.9.9:2882 server.3=10.20.9.254:2883 Server 3 was observed trying to make a connection to host 10.20.9.9 on port 2883 and obviously failing. In tests where all machines use the same electionPort this bug would not manifest itself. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
[jira] Updated: (ZOOKEEPER-136) sync causes hang in all followers of quorum
[ https://issues.apache.org/jira/browse/ZOOKEEPER-136?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Benjamin Reed updated ZOOKEEPER-136: Attachment: ZOOKEEPER-136.patch Fixed the comments suggested by Flavio. Updated the patch to trunk. sync causes hang in all followers of quorum --- Key: ZOOKEEPER-136 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-136 Project: Zookeeper Issue Type: Bug Affects Versions: 3.0.0 Reporter: Patrick Hunt Assignee: Benjamin Reed Fix For: 3.0.0 Attachments: ZOOKEEPER-136.patch The attached test causes all of the followers of a quorum to hang. Leader continues to function correctly. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
[jira] Updated: (ZOOKEEPER-136) sync causes hang in all followers of quorum
[ https://issues.apache.org/jira/browse/ZOOKEEPER-136?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Benjamin Reed updated ZOOKEEPER-136: Status: Patch Available (was: Open) sync causes hang in all followers of quorum --- Key: ZOOKEEPER-136 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-136 Project: Zookeeper Issue Type: Bug Affects Versions: 3.0.0 Reporter: Patrick Hunt Assignee: Benjamin Reed Fix For: 3.0.0 Attachments: ZOOKEEPER-136.patch The attached test causes all of the followers of a quorum to hang. Leader continues to function correctly. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
[jira] Resolved: (ZOOKEEPER-140) Deadlock in QuorumCnxManager
[ https://issues.apache.org/jira/browse/ZOOKEEPER-140?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Flavio Paiva Junqueira resolved ZOOKEEPER-140. -- Resolution: Fixed This issue has been resolved by the patch of 127, which has been committed. Deadlock in QuorumCnxManager Key: ZOOKEEPER-140 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-140 Project: Zookeeper Issue Type: Bug Reporter: Flavio Paiva Junqueira Frequently the servers deadlock in QuorumCnxManager:initiateConnection on s.read(msgBuffer) when reading the challenge from the peer. Calls to initiateConnection and receiveConnection are synchronized, so only one or the other can be executing at a time. This prevents two connections from opening between the same pair of servers. However, it seems that this leads to deadlock, as in this scenario: {noformat} A (initiate -- B) B (initiate -- C) C (initiate -- A) {noformat} initiateConnection can only complete when receiveConnection runs on the remote peer and answers the challenge. If all servers are blocked in initiateConnection, receiveConnection never runs and leader election halts. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
Build failed in Hudson: ZooKeeper-trunk #100
See http://hudson.zones.apache.org/hudson/job/ZooKeeper-trunk/100/changes Changes: [breed] ZOOKEEPER-127. Use of non-standard election ports in config breaks services [breed] ZOOKEEPER-38. headers (version+) in log/snap files [phunt] ZOOKEEPER-144 add tostring support for watcher event, and enums for event type/state -- [...truncated 275 lines...] AU zonestorage/hudson/home/hudson/hudson/jobs/ZooKeeper-trunk/workspace/trunk/src/c/tests/LibCSymTable.cc AU zonestorage/hudson/home/hudson/hudson/jobs/ZooKeeper-trunk/workspace/trunk/src/c/tests/LibCSymTable.h AU zonestorage/hudson/home/hudson/hudson/jobs/ZooKeeper-trunk/workspace/trunk/src/c/tests/Util.cc AU zonestorage/hudson/home/hudson/hudson/jobs/ZooKeeper-trunk/workspace/trunk/src/c/tests/Util.h AU zonestorage/hudson/home/hudson/hudson/jobs/ZooKeeper-trunk/workspace/trunk/src/c/tests/TestWatchers.cc A zonestorage/hudson/home/hudson/hudson/jobs/ZooKeeper-trunk/workspace/trunk/src/c/tests/wrappers.opt AU zonestorage/hudson/home/hudson/hudson/jobs/ZooKeeper-trunk/workspace/trunk/src/c/tests/ZKMocks.cc AU zonestorage/hudson/home/hudson/hudson/jobs/ZooKeeper-trunk/workspace/trunk/src/c/tests/TestOperations.cc AU zonestorage/hudson/home/hudson/hudson/jobs/ZooKeeper-trunk/workspace/trunk/src/c/tests/ZKMocks.h AU zonestorage/hudson/home/hudson/hudson/jobs/ZooKeeper-trunk/workspace/trunk/src/c/tests/PthreadMocks.cc AU zonestorage/hudson/home/hudson/hudson/jobs/ZooKeeper-trunk/workspace/trunk/src/c/tests/PthreadMocks.h AU zonestorage/hudson/home/hudson/hudson/jobs/ZooKeeper-trunk/workspace/trunk/src/c/tests/TestZookeeperInit.cc AU zonestorage/hudson/home/hudson/hudson/jobs/ZooKeeper-trunk/workspace/trunk/src/c/tests/TestZookeeperClose.cc A zonestorage/hudson/home/hudson/hudson/jobs/ZooKeeper-trunk/workspace/trunk/src/c/configure.ac A zonestorage/hudson/home/hudson/hudson/jobs/ZooKeeper-trunk/workspace/trunk/src/c/include AU zonestorage/hudson/home/hudson/hudson/jobs/ZooKeeper-trunk/workspace/trunk/src/c/include/proto.h AU zonestorage/hudson/home/hudson/hudson/jobs/ZooKeeper-trunk/workspace/trunk/src/c/include/zookeeper.h AU zonestorage/hudson/home/hudson/hudson/jobs/ZooKeeper-trunk/workspace/trunk/src/c/include/recordio.h AU zonestorage/hudson/home/hudson/hudson/jobs/ZooKeeper-trunk/workspace/trunk/src/c/INSTALL AU zonestorage/hudson/home/hudson/hudson/jobs/ZooKeeper-trunk/workspace/trunk/src/c/acinclude.m4 AU zonestorage/hudson/home/hudson/hudson/jobs/ZooKeeper-trunk/workspace/trunk/src/c/ChangeLog A zonestorage/hudson/home/hudson/hudson/jobs/ZooKeeper-trunk/workspace/trunk/src/c/c-doc.Doxyfile A zonestorage/hudson/home/hudson/hudson/jobs/ZooKeeper-trunk/workspace/trunk/src/c/src AU zonestorage/hudson/home/hudson/hudson/jobs/ZooKeeper-trunk/workspace/trunk/src/c/src/zk_hashtable.c AU zonestorage/hudson/home/hudson/hudson/jobs/ZooKeeper-trunk/workspace/trunk/src/c/src/st_adaptor.c AU zonestorage/hudson/home/hudson/hudson/jobs/ZooKeeper-trunk/workspace/trunk/src/c/src/zk_adaptor.h AU zonestorage/hudson/home/hudson/hudson/jobs/ZooKeeper-trunk/workspace/trunk/src/c/src/zookeeper.c AU zonestorage/hudson/home/hudson/hudson/jobs/ZooKeeper-trunk/workspace/trunk/src/c/src/zk_hashtable.h AU zonestorage/hudson/home/hudson/hudson/jobs/ZooKeeper-trunk/workspace/trunk/src/c/src/zk_log.c AU zonestorage/hudson/home/hudson/hudson/jobs/ZooKeeper-trunk/workspace/trunk/src/c/src/recordio.c AU zonestorage/hudson/home/hudson/hudson/jobs/ZooKeeper-trunk/workspace/trunk/src/c/src/cli.c AU zonestorage/hudson/home/hudson/hudson/jobs/ZooKeeper-trunk/workspace/trunk/src/c/src/load_gen.c A zonestorage/hudson/home/hudson/hudson/jobs/ZooKeeper-trunk/workspace/trunk/src/c/src/hashtable AU zonestorage/hudson/home/hudson/hudson/jobs/ZooKeeper-trunk/workspace/trunk/src/c/src/hashtable/hashtable_itr.h AU zonestorage/hudson/home/hudson/hudson/jobs/ZooKeeper-trunk/workspace/trunk/src/c/src/hashtable/LICENSE.txt AU zonestorage/hudson/home/hudson/hudson/jobs/ZooKeeper-trunk/workspace/trunk/src/c/src/hashtable/hashtable.h AU zonestorage/hudson/home/hudson/hudson/jobs/ZooKeeper-trunk/workspace/trunk/src/c/src/hashtable/hashtable_itr.c AU zonestorage/hudson/home/hudson/hudson/jobs/ZooKeeper-trunk/workspace/trunk/src/c/src/hashtable/hashtable_private.h AU zonestorage/hudson/home/hudson/hudson/jobs/ZooKeeper-trunk/workspace/trunk/src/c/src/hashtable/hashtable.c AU zonestorage/hudson/home/hudson/hudson/jobs/ZooKeeper-trunk/workspace/trunk/src/c/src/mt_adaptor.c AU zonestorage/hudson/home/hudson/hudson/jobs/ZooKeeper-trunk/workspace/trunk/src/c/src/zk_log.h AU
[jira] Created: (ZOOKEEPER-150) zookeeper build broken
zookeeper build broken -- Key: ZOOKEEPER-150 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-150 Project: Zookeeper Issue Type: Bug Reporter: Mahadev konar Assignee: Mahadev konar Priority: Blocker Fix For: 3.0.0 the build is broekn with ZOOKEEPER-38 checked in. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
[jira] Updated: (ZOOKEEPER-150) zookeeper build broken
[ https://issues.apache.org/jira/browse/ZOOKEEPER-150?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Mahadev konar updated ZOOKEEPER-150: Attachment: ZOOKEEPER-150.patch this patch removes the code which wasnt useful and dependent on 1.6. zookeeper build broken -- Key: ZOOKEEPER-150 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-150 Project: Zookeeper Issue Type: Bug Reporter: Mahadev konar Assignee: Mahadev konar Priority: Blocker Fix For: 3.0.0 Attachments: ZOOKEEPER-150.patch the build is broekn with ZOOKEEPER-38 checked in. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
[jira] Updated: (ZOOKEEPER-150) zookeeper build broken
[ https://issues.apache.org/jira/browse/ZOOKEEPER-150?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Mahadev konar updated ZOOKEEPER-150: Affects Version/s: 3.0.0 Status: Patch Available (was: Open) zookeeper build broken -- Key: ZOOKEEPER-150 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-150 Project: Zookeeper Issue Type: Bug Affects Versions: 3.0.0 Reporter: Mahadev konar Assignee: Mahadev konar Priority: Blocker Fix For: 3.0.0 Attachments: ZOOKEEPER-150.patch the build is broekn with ZOOKEEPER-38 checked in. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
[jira] Updated: (ZOOKEEPER-150) zookeeper build broken
[ https://issues.apache.org/jira/browse/ZOOKEEPER-150?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Patrick Hunt updated ZOOKEEPER-150: --- Resolution: Fixed Hadoop Flags: [Reviewed] Status: Resolved (was: Patch Available) Committed revision 700871. zookeeper build broken -- Key: ZOOKEEPER-150 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-150 Project: Zookeeper Issue Type: Bug Affects Versions: 3.0.0 Reporter: Mahadev konar Assignee: Mahadev konar Priority: Blocker Fix For: 3.0.0 Attachments: ZOOKEEPER-150.patch the build is broekn with ZOOKEEPER-38 checked in. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
[jira] Created: (ZOOKEEPER-151) Document change to server configuration
Document change to server configuration --- Key: ZOOKEEPER-151 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-151 Project: Zookeeper Issue Type: Bug Reporter: Flavio Paiva Junqueira The patch of jira 127 changed the format of server configuration files, but it didn't change the documentation. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
[jira] Created: (ZOOKEEPER-152) Improve unit tests for leader election
Improve unit tests for leader election -- Key: ZOOKEEPER-152 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-152 Project: Zookeeper Issue Type: Improvement Reporter: Flavio Paiva Junqueira There are two possible tasks here: 1- Change the algorithm tested on QuorumTest.java; 2- Add tests for the other supported algorithms. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
[jira] Updated: (ZOOKEEPER-152) Improve unit tests for leader election
[ https://issues.apache.org/jira/browse/ZOOKEEPER-152?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Flavio Paiva Junqueira updated ZOOKEEPER-152: - Priority: Minor (was: Major) Improve unit tests for leader election -- Key: ZOOKEEPER-152 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-152 Project: Zookeeper Issue Type: Improvement Reporter: Flavio Paiva Junqueira Priority: Minor There are two possible tasks here: 1- Change the algorithm tested on QuorumTest.java; 2- Add tests for the other supported algorithms. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
[jira] Resolved: (ZOOKEEPER-32) CRCs for ZooKeeper data
[ https://issues.apache.org/jira/browse/ZOOKEEPER-32?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Mahadev konar resolved ZOOKEEPER-32. Resolution: Fixed Hadoop Flags: [Incompatible change, Reviewed] fixed as part of ZOOKEEPER-38. CRCs for ZooKeeper data --- Key: ZOOKEEPER-32 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-32 Project: Zookeeper Issue Type: New Feature Components: server Reporter: Patrick Hunt Assignee: Mahadev konar Fix For: 3.0.0 Moved from SourceForge to Apache. http://sourceforge.net/tracker/index.php?func=detailaid=1945106group_id=209147atid=1008547 -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
[jira] Resolved: (ZOOKEEPER-27) Unique DB identifiers for servers and clients
[ https://issues.apache.org/jira/browse/ZOOKEEPER-27?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Mahadev konar resolved ZOOKEEPER-27. Resolution: Fixed Hadoop Flags: [Incompatible change] the dbids have been added to servers as a prt of ZOOKEEPER-38. Closing for now. When we need to have zookeeper client id's, we can open a new jira. Unique DB identifiers for servers and clients - Key: ZOOKEEPER-27 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-27 Project: Zookeeper Issue Type: New Feature Components: c client, java client, server Reporter: Patrick Hunt Assignee: Mahadev konar Fix For: 3.0.0 Moved from SourceForge to Apache. http://sourceforge.net/tracker/index.php?func=detailaid=1937075group_id=209147atid=1008547 -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
[jira] Updated: (ZOOKEEPER-147) This is version of the documents with most of the [tbd...] scrubbed out
[ https://issues.apache.org/jira/browse/ZOOKEEPER-147?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Patrick Hunt updated ZOOKEEPER-147: --- Resolution: Fixed Hadoop Flags: [Reviewed] Status: Resolved (was: Patch Available) Committed revision 700955. This is version of the documents with most of the [tbd...] scrubbed out --- Key: ZOOKEEPER-147 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-147 Project: Zookeeper Issue Type: Improvement Components: documentation Affects Versions: 3.0.0 Reporter: Robbie Scott Assignee: Patrick Hunt Fix For: 3.0.0 Attachments: ZOOKEEPER-147.patch, ZOOKEEPER-147.patch Original Estimate: 96h Remaining Estimate: 96h The docs had lots of comments to myself marked [tbd..]. I scrubbed these out. I still have a list I will work from, but the [tbd]s are probably sensible to anyone else. For a few cases where it's obvious what a tbd is asking, I left in in, just in case someone else wants to take a crack at fixing them, knows the answer, etc. The estimate below refers to how many full days I think it would take to get all the tbd's answered and put back into the document. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.
[jira] Created: (ZOOKEEPER-153) add api support for subscribe method
add api support for subscribe method -- Key: ZOOKEEPER-153 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-153 Project: Zookeeper Issue Type: New Feature Components: c client, documentation, java client, server, tests Reporter: Patrick Hunt Priority: Minor Subscribe Method (note, this was moved from http://zookeeper.wiki.sourceforge.net/SubscribeMethod) Outline of the semantics and the requirements of a yet-to-be-implemented subscribe() method. Background ZooKeeper uses a very light weight one-time notification method for notifying interested clients of changes to ZooKeeper data nodes (znode). Clients can set a watch on a node when they request information about a znode. The watch is atomically set and the data returned, so that any subsequent changes to the znode that affect the data returned will trigger a watch event. The watch stays in place until triggered or the client is disconnected from a ZooKeeper server. A disconnect watch event implicitly triggers all watches. ZooKeeper users have wondered if they can set permanent watches rather than one time watches. In reality such permanent watches do not provide any extra benefit over one time watches. Specifically, no data is included in a watch event, so the client still needs to do a query operation to get the data corresponding to a change; even then, the znode can change yet again after the event is received and before the client sends the query operation. Even the number of of changes to a znode can be found using one time watches and checking the mzxid in the stat structure of the znode. And the client will still miss events that happen when the client switches ZooKeeper servers. There are use cases that require clients to see every change to a ZooKeeper node. The most general case is when a client behaves like a state machine and each change to the znode changes the state of the client. In these cases ZooKeeper is much more like a publish/subscribe system than a distributed register. To support this case we need not only reliable permanent watches (we even get the events that happen while switching servers) but also the data that caused the change, so that the client doesn't miss data that occurs between rapid fire changes. Semantics The subscribe(String path) causes ZooKeeper to register a subscription for a znode. The initial value of the znode and any subsequent changes to that znode will cause a watch event with the data to be sent to the client. The client will see all changes in order. If a client switches servers, any missed events with the corresponding data will be sent to the client when the client reconnects to a server. There are three ways to cancel a subscription: 1. Calling unsubscribe(String path) 2. Closing the ZooKeeper session or letting it expire 3. Falling too far behind. If the server decides that a client is not processing the watch events fast enough, it will cancel the subscription and send a SUBSCRIPTION_CANCELLED watch event. Requirements There are a couple of things that make it hard to implement the subscribe() method: 1. Servers must have complete transaction logs - Currently ZooKeeper servers just need to have their data trees and in flight transaction logs in sync. When a follower syncs to a leader, the leader can just blast down a new snapshot of its data tree; it does not need to send past transactions that the follower might have missed. However in order to send changes that might have been missed by a client, the ZooKeeper server must be able to look into the past to send missed changes. 2. Servers must be able to send clients information about past changes - Currenly ZooKeeper servers just send clients information about the current state of the system. However, to implement subscribe clients must be able to go back into the log and send watches for past changes. Implementation Hints There are things that work in our favor. ZooKeeper does have a bound on the amount of time it needs to look into the past. A ZooKeeper server bounds the session expiration time. The server does not need to keep a record of transactions older than this bound. ZooKeeper also keeps a log of transactions. As long as the log is complete enough (as all the transaction back to the longest expiration time) the server has the information it needs and it isn't hard to process. We do not want to cause the log disk to seek while looking at past transactions. There are two complimentary approaches to handling this problems: keep a few of the transactions from the recent past in memory and log to two disks. The first log disk will be synced before letting requests proceed and the second disk will not be synced. Recovery uses the first log disk and ensures that the second log disk has the same log at recovery time. The second log
[jira] Updated: (ZOOKEEPER-17) zookeeper_init doc needs clarification
[ https://issues.apache.org/jira/browse/ZOOKEEPER-17?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Patrick Hunt updated ZOOKEEPER-17: -- Status: Open (was: Patch Available) Hrm. I'll withdraw the patch while I look into this further. Thanks for the feedback. zookeeper_init doc needs clarification -- Key: ZOOKEEPER-17 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-17 Project: Zookeeper Issue Type: Bug Components: c client, documentation Reporter: Patrick Hunt Assignee: Patrick Hunt Fix For: 3.0.0 Attachments: ZOOKEEPER-17.patch Moved from SourceForge to Apache. http://sourceforge.net/tracker/index.php?func=detailaid=1967467group_id=209147atid=1008544 -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.