[jira] [Commented] (ZOOKEEPER-3188) Improve resilience to network
[ https://issues.apache.org/jira/browse/ZOOKEEPER-3188?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16710015#comment-16710015 ] Ted Dunning commented on ZOOKEEPER-3188: Taking the questions in order: bq. Did we consider the compatibility requirement here? Will the new configuration format be backward compatible? One concrete use case is if a customer upgrades to new version with this multiple address per server capability but wants to roll back without rewriting the config files to older version. Yes. We considered this. The compatibility is such that old configurations will work with the new version. New configurations will likely not work with older versions (this is life). Upgrading without configuration changes will allow transparent roll back. Upgrading and changing the configuration to take advantage of multiple configurations will require configuration change to roll back. I think that this is unavoidable with the current configuration format. A better JSON-ish format would be much easier to future proof. If the upgrade is done using multiple DNS A records for each host instead of configuration changes, then transparent roll back should be possible because the old code just takes the first address while the new code accepts all addresses. .bq Did we evaluate the impact of this feature on existing server to server mutual authentication and authorization feature (e.g. ZOOKEEPER-1045 for Kerberos, ZOOKEEPER-236 for SSL), and also the impact on operations? For example how to configure Kerberos principals and / or SSL certs per host given multiple potential IP address and / or FQDN names per server? Yes. This was considered. There are two important cases to consider. The first is the one that arises due to multiple DNS records for the same host name. In this case, binding and authenticating against the same host name should be transparent. We will test this as much as feasible. The second case is where there are multiple host names embedded in the configuration. This case should also work but each separate address must be separately authenticated. Again, we will test this as much as possible. .bq Could we provide more details on expected level of support with regards to dynamic reconfiguration feature? I don't understand the question. Dynamic reconfiguration involves changing the dynamic part of the configuration file. That can involve addresses, for instance. Such changes should be handled exactly the way they are now and there should be no interactions with the changes to the networking stack. A commit of a new config is a commit. .bq Examples would be great - for example: we would support adding, removing, or updating server address that's appertained to a given server via dynamic reconfiguration, and also the expected behavior in each case. For example, adding a new address to an existing ensemble member should not cause any disconnect / reconnect but removing an in use address of a server should cause a disconnect. Likely the dynamic reconfig API / CLI / doc should be updated because of this. I don't really see how this pertains other than the desire not to lose a live connection. The documentation, in particular, should be essentially identical except that an example of adding an address might be nice (but kind of redundant). > Improve resilience to network > - > > Key: ZOOKEEPER-3188 > URL: https://issues.apache.org/jira/browse/ZOOKEEPER-3188 > Project: ZooKeeper > Issue Type: Bug >Reporter: Ted Dunning >Priority: Major > Labels: pull-request-available > Time Spent: 0.5h > Remaining Estimate: 0h > > We propose to add network level resiliency to Zookeeper. The ideas that we > have on the topic have been discussed on the mailing list and via a > specification document that is located at > [https://docs.google.com/document/d/1iGVwxeHp57qogwfdodCh9b32P2_kOQaJZ2GDo7j36fI/edit?usp=sharing] > That document is copied to this issue which is being created to report the > results of experimental implementations. > h1. Zookeeper Network Resilience > h2. Background > Zookeeper is designed to help in building distributed systems. It provides a > variety of operations for doing this and all of these operations have rather > strict guarantees on semantics. Zookeeper itself is a distributed system made > up of cluster containing a leader and a number of followers. The leader is > designated in a process known as leader election in which a majority of all > nodes in the cluster must agree on a leader. All subsequent operations are > initiated by the leader and completed when a majority of nodes have confirmed > the operation. Whenever an operation cannot be confirmed by a majority or > whenever the leader goes missing for a time, a new leader
[jira] [Comment Edited] (ZOOKEEPER-3188) Improve resilience to network
[ https://issues.apache.org/jira/browse/ZOOKEEPER-3188?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16710015#comment-16710015 ] Ted Dunning edited comment on ZOOKEEPER-3188 at 12/5/18 12:37 PM: -- Taking the questions in order: bq. Did we consider the compatibility requirement here? Will the new configuration format be backward compatible? One concrete use case is if a customer upgrades to new version with this multiple address per server capability but wants to roll back without rewriting the config files to older version. Yes. We considered this. The compatibility is such that old configurations will work with the new version. New configurations will likely not work with older versions (this is life). Upgrading without configuration changes will allow transparent roll back. Upgrading and changing the configuration to take advantage of multiple configurations will require configuration change to roll back. I think that this is unavoidable with the current configuration format. A better JSON-ish format would be much easier to future proof. If the upgrade is done using multiple DNS A records for each host instead of configuration changes, then transparent roll back should be possible because the old code just takes the first address while the new code accepts all addresses. bq. Did we evaluate the impact of this feature on existing server to server mutual authentication and authorization feature (e.g. ZOOKEEPER-1045 for Kerberos, ZOOKEEPER-236 for SSL), and also the impact on operations? For example how to configure Kerberos principals and / or SSL certs per host given multiple potential IP address and / or FQDN names per server? Yes. This was considered. There are two important cases to consider. The first is the one that arises due to multiple DNS records for the same host name. In this case, binding and authenticating against the same host name should be transparent. We will test this as much as feasible. The second case is where there are multiple host names embedded in the configuration. This case should also work but each separate address must be separately authenticated. Again, we will test this as much as possible. bq. Could we provide more details on expected level of support with regards to dynamic reconfiguration feature? I don't understand the question. Dynamic reconfiguration involves changing the dynamic part of the configuration file. That can involve addresses, for instance. Such changes should be handled exactly the way they are now and there should be no interactions with the changes to the networking stack. A commit of a new config is a commit. bq. Examples would be great - for example: we would support adding, removing, or updating server address that's appertained to a given server via dynamic reconfiguration, and also the expected behavior in each case. For example, adding a new address to an existing ensemble member should not cause any disconnect / reconnect but removing an in use address of a server should cause a disconnect. Likely the dynamic reconfig API / CLI / doc should be updated because of this. I don't really see how this pertains other than the desire not to lose a live connection. The documentation, in particular, should be essentially identical except that an example of adding an address might be nice (but kind of redundant). was (Author: tdunning): Taking the questions in order: bq. Did we consider the compatibility requirement here? Will the new configuration format be backward compatible? One concrete use case is if a customer upgrades to new version with this multiple address per server capability but wants to roll back without rewriting the config files to older version. Yes. We considered this. The compatibility is such that old configurations will work with the new version. New configurations will likely not work with older versions (this is life). Upgrading without configuration changes will allow transparent roll back. Upgrading and changing the configuration to take advantage of multiple configurations will require configuration change to roll back. I think that this is unavoidable with the current configuration format. A better JSON-ish format would be much easier to future proof. If the upgrade is done using multiple DNS A records for each host instead of configuration changes, then transparent roll back should be possible because the old code just takes the first address while the new code accepts all addresses. .bq Did we evaluate the impact of this feature on existing server to server mutual authentication and authorization feature (e.g. ZOOKEEPER-1045 for Kerberos, ZOOKEEPER-236 for SSL), and also the impact on operations? For example how to configure Kerberos principals and / or SSL certs per host given multiple potential IP address and / or FQDN names per server? Yes. This was
[jira] [Commented] (ZOOKEEPER-3189) Support new configuration syntax for resilient network feature
[ https://issues.apache.org/jira/browse/ZOOKEEPER-3189?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16684812#comment-16684812 ] Ted Dunning commented on ZOOKEEPER-3189: Supporting any syntax requires having the semantics available. > Support new configuration syntax for resilient network feature > -- > > Key: ZOOKEEPER-3189 > URL: https://issues.apache.org/jira/browse/ZOOKEEPER-3189 > Project: ZooKeeper > Issue Type: Bug >Reporter: Ted Dunning >Priority: Major > > > There are simultaneous efforts ongoing to support network resilience (3188, > blocking this issue) and a new configuration syntax (3166, also blocking this > issue) being worked on simultaneously. > This issue captures the fact that the new syntax will need to be supported by > the network resilience code, but both features are pre-requisites for that > support. > -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Created] (ZOOKEEPER-3189) Support new configuration syntax for resilient network feature
Ted Dunning created ZOOKEEPER-3189: -- Summary: Support new configuration syntax for resilient network feature Key: ZOOKEEPER-3189 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-3189 Project: ZooKeeper Issue Type: Bug Reporter: Ted Dunning There are simultaneous efforts ongoing to support network resilience (3188, blocking this issue) and a new configuration syntax (3166, also blocking this issue) being worked on simultaneously. This issue captures the fact that the new syntax will need to be supported by the network resilience code, but both features are pre-requisites for that support. -- This message was sent by Atlassian JIRA (v7.6.3#76005)
[jira] [Created] (ZOOKEEPER-3188) Improve resilience to network
Ted Dunning created ZOOKEEPER-3188: -- Summary: Improve resilience to network Key: ZOOKEEPER-3188 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-3188 Project: ZooKeeper Issue Type: Bug Reporter: Ted Dunning We propose to add network level resiliency to Zookeeper. The ideas that we have on the topic have been discussed on the mailing list and via a specification document that is located at [https://docs.google.com/document/d/1iGVwxeHp57qogwfdodCh9b32P2_kOQaJZ2GDo7j36fI/edit?usp=sharing] That document is copied to this issue which is being created to report the results of experimental implementations. h1. Zookeeper Network Resilience h2. Background Zookeeper is designed to help in building distributed systems. It provides a variety of operations for doing this and all of these operations have rather strict guarantees on semantics. Zookeeper itself is a distributed system made up of cluster containing a leader and a number of followers. The leader is designated in a process known as leader election in which a majority of all nodes in the cluster must agree on a leader. All subsequent operations are initiated by the leader and completed when a majority of nodes have confirmed the operation. Whenever an operation cannot be confirmed by a majority or whenever the leader goes missing for a time, a new leader election is conducted and normal operations proceed once a new leader is confirmed. The details of this are not important relative to this discussion. What is important is that the semantics of the operations conducted by a Zookeeper cluster and the semantics of how client processes communicate with the cluster depend only on the basic fact that messages sent over TCP connections will never appear out of order or missing. Central to the design of ZK is that a server to server network connection is used as long as it works to use it and a new connection is made when it appears that the old connection isn't working. As currently implemented, however, each member of a Zookeeper cluster can have only a single address as viewed from some other process. This means, absent network link bonding, that the loss of a single switch or a few network connections could completely stop the operations of a the Zookeeper cluster. It is the goal of this work to address this issue by allowing each server to listen on multiple network interfaces and to connect to other servers any of several addresses. The effect will be to allow servers to communicate over redundant network paths to improve resiliency to network failures without changing any core algorithms. h2. Proposed Change Interestingly, the correct operations of a Zookeeper cluster do not depend on _how_ a TCP connection was made. There is no reason at all not to advertise multiple addresses for members of a Zookeeper cluster. Connections between members of a Zookeeper cluster and between a client and a cluster member are established by referencing a configuration file (for cluster members) that specifies the address of all of the nodes in a cluster or by using a connection string containing possible addresses of Zookeeper cluster members. As soon as a connection is made, any desired authentication or encryption layers are added and the connection is handed off to the client communications layer or the server to server logic. This means that the only thing that actually needs to change to allow Zookeeper servers to be accessible on multiple networks is a change in the server configuration file format to allow the multiple addresses to be specified and to update the code that establishes the TCP connection to make use of these multiple addresses. No code changes are actually needed on the client since we can simply supply all possible server addresses. The client already has logic for selecting a server address at random and it doesn’t really matter if these addresses represent synonyms for the same server. All that matters is that _some_ connection to a server is established. h2. Configuration File Syntax Change The current Zookeeper syntax looks like this: tickTime=2000 dataDir=/var/zookeeper clientPort=2181 initLimit=5 syncLimit=2 server.1=zoo1:2888:3888 server.2=zoo2:2888:3888 server.3=zoo3:2888:3888 The only lines that matter for this discussion are the last three. These specify the addresses for each of the servers that are part of the Zookeeper cluster as well as the port numbers used for the servers to talk to each other. I propose that the current syntax of these lines be augmented to allow a comma delimited list of addresses. For the current example, we might have this: server.1=zoo1-net1:2888:3888,zoo1-net2:2888:3888 server.2=zoo2-net1:2888:3888,zoo2-net2:2888:3888 server.3=zoo3-net1:2888:3888 The first two servers are available via two different
[jira] [Commented] (ZOOKEEPER-2770) ZooKeeper slow operation log
[ https://issues.apache.org/jira/browse/ZOOKEEPER-2770?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16218937#comment-16218937 ] Ted Dunning commented on ZOOKEEPER-2770: There is a pull request just now that has 95 files changed and 45 commits. What is this?!? https://github.com/apache/zookeeper/pull/307/commits It looks like some wires got seriously crossed here. There is no way that this feature should have so many commits. > ZooKeeper slow operation log > > > Key: ZOOKEEPER-2770 > URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2770 > Project: ZooKeeper > Issue Type: Improvement >Reporter: Karan Mehta >Assignee: Karan Mehta > Attachments: ZOOKEEPER-2770.001.patch, ZOOKEEPER-2770.002.patch, > ZOOKEEPER-2770.003.patch > > > ZooKeeper is a complex distributed application. There are many reasons why > any given read or write operation may become slow: a software bug, a protocol > problem, a hardware issue with the commit log(s), a network issue. If the > problem is constant it is trivial to come to an understanding of the cause. > However in order to diagnose intermittent problems we often don't know where, > or when, to begin looking. We need some sort of timestamped indication of the > problem. Although ZooKeeper is not a datastore, it does persist data, and can > suffer intermittent performance degradation, and should consider implementing > a 'slow query' log, a feature very common to services which persist > information on behalf of clients which may be sensitive to latency while > waiting for confirmation of successful persistence. > Log the client and request details if the server discovers, when finally > processing the request, that the current time minus arrival time of the > request is beyond a configured threshold. > Look at the HBase {{responseTooSlow}} feature for inspiration. -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Commented] (ZOOKEEPER-2770) ZooKeeper slow operation log
[ https://issues.apache.org/jira/browse/ZOOKEEPER-2770?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16102749#comment-16102749 ] Ted Dunning commented on ZOOKEEPER-2770: The typical approach is to set a limit on number of messages per unit time (say one every 10 minutes). Each message that is printed sets a coalescence time during which no further messages are printed, but a counter is updated. At the end of the coalescence time a modified message which mentions that n additional events were detected and the coalescence time is disabled. This way if the warnings are rare, you get normal behavior. If the warnings are frequent, you get at most one message per 10 minutes (or whatever coalescence period you choose). You get instant notification of a problem and limited log output. On Wed, Jul 26, 2017 at 10:05 PM, Karan Mehta (JIRA)> ZooKeeper slow operation log > > > Key: ZOOKEEPER-2770 > URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2770 > Project: ZooKeeper > Issue Type: Improvement >Reporter: Karan Mehta >Assignee: Karan Mehta > Attachments: ZOOKEEPER-2770.001.patch, ZOOKEEPER-2770.002.patch, > ZOOKEEPER-2770.003.patch > > > ZooKeeper is a complex distributed application. There are many reasons why > any given read or write operation may become slow: a software bug, a protocol > problem, a hardware issue with the commit log(s), a network issue. If the > problem is constant it is trivial to come to an understanding of the cause. > However in order to diagnose intermittent problems we often don't know where, > or when, to begin looking. We need some sort of timestamped indication of the > problem. Although ZooKeeper is not a datastore, it does persist data, and can > suffer intermittent performance degradation, and should consider implementing > a 'slow query' log, a feature very common to services which persist > information on behalf of clients which may be sensitive to latency while > waiting for confirmation of successful persistence. > Log the client and request details if the server discovers, when finally > processing the request, that the current time minus arrival time of the > request is beyond a configured threshold. > Look at the HBase {{responseTooSlow}} feature for inspiration. -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Commented] (ZOOKEEPER-2770) ZooKeeper slow operation log
[ https://issues.apache.org/jira/browse/ZOOKEEPER-2770?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16101161#comment-16101161 ] Ted Dunning commented on ZOOKEEPER-2770: Btw I note that there is no metering on this logging. That raise an obligatory question. Is there a plausible circumstance where thousands of nearly identical messages might be logged? > ZooKeeper slow operation log > > > Key: ZOOKEEPER-2770 > URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2770 > Project: ZooKeeper > Issue Type: Improvement >Reporter: Karan Mehta >Assignee: Karan Mehta > Attachments: ZOOKEEPER-2770.001.patch, ZOOKEEPER-2770.002.patch, > ZOOKEEPER-2770.003.patch > > > ZooKeeper is a complex distributed application. There are many reasons why > any given read or write operation may become slow: a software bug, a protocol > problem, a hardware issue with the commit log(s), a network issue. If the > problem is constant it is trivial to come to an understanding of the cause. > However in order to diagnose intermittent problems we often don't know where, > or when, to begin looking. We need some sort of timestamped indication of the > problem. Although ZooKeeper is not a datastore, it does persist data, and can > suffer intermittent performance degradation, and should consider implementing > a 'slow query' log, a feature very common to services which persist > information on behalf of clients which may be sensitive to latency while > waiting for confirmation of successful persistence. > Log the client and request details if the server discovers, when finally > processing the request, that the current time minus arrival time of the > request is beyond a configured threshold. > Look at the HBase {{responseTooSlow}} feature for inspiration. -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Commented] (ZOOKEEPER-2770) ZooKeeper slow operation log
[ https://issues.apache.org/jira/browse/ZOOKEEPER-2770?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16101158#comment-16101158 ] Ted Dunning commented on ZOOKEEPER-2770: {quote} With that said, is 300 ms a good value or even less is better? {quote} I would suggest that getting a real time varying histogram is the right answer. I suggested that early on for just this kind of reason. > ZooKeeper slow operation log > > > Key: ZOOKEEPER-2770 > URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2770 > Project: ZooKeeper > Issue Type: Improvement >Reporter: Karan Mehta >Assignee: Karan Mehta > Attachments: ZOOKEEPER-2770.001.patch, ZOOKEEPER-2770.002.patch, > ZOOKEEPER-2770.003.patch > > > ZooKeeper is a complex distributed application. There are many reasons why > any given read or write operation may become slow: a software bug, a protocol > problem, a hardware issue with the commit log(s), a network issue. If the > problem is constant it is trivial to come to an understanding of the cause. > However in order to diagnose intermittent problems we often don't know where, > or when, to begin looking. We need some sort of timestamped indication of the > problem. Although ZooKeeper is not a datastore, it does persist data, and can > suffer intermittent performance degradation, and should consider implementing > a 'slow query' log, a feature very common to services which persist > information on behalf of clients which may be sensitive to latency while > waiting for confirmation of successful persistence. > Log the client and request details if the server discovers, when finally > processing the request, that the current time minus arrival time of the > request is beyond a configured threshold. > Look at the HBase {{responseTooSlow}} feature for inspiration. -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Commented] (ZOOKEEPER-2770) ZooKeeper slow operation log
[ https://issues.apache.org/jira/browse/ZOOKEEPER-2770?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16100945#comment-16100945 ] Ted Dunning commented on ZOOKEEPER-2770: On second thought, I could imagine that startup transients could cause a long operation. Once you have your quorum in a groove, however, >1 second is very bad, especially if you don't have something like a quorum leader change happening. > ZooKeeper slow operation log > > > Key: ZOOKEEPER-2770 > URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2770 > Project: ZooKeeper > Issue Type: Improvement >Reporter: Karan Mehta >Assignee: Karan Mehta > Attachments: ZOOKEEPER-2770.001.patch, ZOOKEEPER-2770.002.patch, > ZOOKEEPER-2770.003.patch > > > ZooKeeper is a complex distributed application. There are many reasons why > any given read or write operation may become slow: a software bug, a protocol > problem, a hardware issue with the commit log(s), a network issue. If the > problem is constant it is trivial to come to an understanding of the cause. > However in order to diagnose intermittent problems we often don't know where, > or when, to begin looking. We need some sort of timestamped indication of the > problem. Although ZooKeeper is not a datastore, it does persist data, and can > suffer intermittent performance degradation, and should consider implementing > a 'slow query' log, a feature very common to services which persist > information on behalf of clients which may be sensitive to latency while > waiting for confirmation of successful persistence. > Log the client and request details if the server discovers, when finally > processing the request, that the current time minus arrival time of the > request is beyond a configured threshold. > Look at the HBase {{responseTooSlow}} feature for inspiration. -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Commented] (ZOOKEEPER-2770) ZooKeeper slow operation log
[ https://issues.apache.org/jira/browse/ZOOKEEPER-2770?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16100942#comment-16100942 ] Ted Dunning commented on ZOOKEEPER-2770: To put some color on Camille's surprise, I would consider any operation over a second to be indicative of gross failure in the quorum. Operations over 100ms should be vanishingly rare, but I wouldn't leap up to find out what is happening. I would be fairly unhappy, though, and would start checking. > ZooKeeper slow operation log > > > Key: ZOOKEEPER-2770 > URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2770 > Project: ZooKeeper > Issue Type: Improvement >Reporter: Karan Mehta >Assignee: Karan Mehta > Attachments: ZOOKEEPER-2770.001.patch, ZOOKEEPER-2770.002.patch, > ZOOKEEPER-2770.003.patch > > > ZooKeeper is a complex distributed application. There are many reasons why > any given read or write operation may become slow: a software bug, a protocol > problem, a hardware issue with the commit log(s), a network issue. If the > problem is constant it is trivial to come to an understanding of the cause. > However in order to diagnose intermittent problems we often don't know where, > or when, to begin looking. We need some sort of timestamped indication of the > problem. Although ZooKeeper is not a datastore, it does persist data, and can > suffer intermittent performance degradation, and should consider implementing > a 'slow query' log, a feature very common to services which persist > information on behalf of clients which may be sensitive to latency while > waiting for confirmation of successful persistence. > Log the client and request details if the server discovers, when finally > processing the request, that the current time minus arrival time of the > request is beyond a configured threshold. > Look at the HBase {{responseTooSlow}} feature for inspiration. -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Commented] (ZOOKEEPER-2770) ZooKeeper slow operation log
[ https://issues.apache.org/jira/browse/ZOOKEEPER-2770?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16100603#comment-16100603 ] Ted Dunning commented on ZOOKEEPER-2770: [~fournc], I am not so sure that *I* agree with me at this point. It is fair to say that on occasion there are slow operations in ZK and it would be good to know about them. This kind of problem is almost always due, in my own vicarious experience, to bad configuration. Often the bad configuration is simply collocation with a noisy neighbor on a deficient storage layer. There might be situations where an operation is slow due to the content of the query itself, but I cannot imagine what those situations might be. Writing a large value (but that is strictly limited in size), or even doing a huge multi-op (which has the same limited size in aggregate) should never take very long. As such, I would expect that the highest diagnostic value would not be something that dumped the contents of slow queries, but rather a capability that characterizes the entire distribution of query times. The frequency of slow queries is a diagnostic of sorts, but is one that could be inferred from the time-varying distributional information I was suggesting. That said, I don't think that a slow query log is a BAD thing (except a bit bad in terms of security if it logs the actual query). And I wouldn't want the BEST thing (a distribution log) to stop somebody contributing something. > ZooKeeper slow operation log > > > Key: ZOOKEEPER-2770 > URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2770 > Project: ZooKeeper > Issue Type: Improvement >Reporter: Karan Mehta >Assignee: Karan Mehta > Attachments: ZOOKEEPER-2770.001.patch, ZOOKEEPER-2770.002.patch, > ZOOKEEPER-2770.003.patch > > > ZooKeeper is a complex distributed application. There are many reasons why > any given read or write operation may become slow: a software bug, a protocol > problem, a hardware issue with the commit log(s), a network issue. If the > problem is constant it is trivial to come to an understanding of the cause. > However in order to diagnose intermittent problems we often don't know where, > or when, to begin looking. We need some sort of timestamped indication of the > problem. Although ZooKeeper is not a datastore, it does persist data, and can > suffer intermittent performance degradation, and should consider implementing > a 'slow query' log, a feature very common to services which persist > information on behalf of clients which may be sensitive to latency while > waiting for confirmation of successful persistence. > Log the client and request details if the server discovers, when finally > processing the request, that the current time minus arrival time of the > request is beyond a configured threshold. > Look at the HBase {{responseTooSlow}} feature for inspiration. -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Commented] (ZOOKEEPER-2770) ZooKeeper slow operation log
[ https://issues.apache.org/jira/browse/ZOOKEEPER-2770?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16081514#comment-16081514 ] Ted Dunning commented on ZOOKEEPER-2770: Who are we? This kind of feature needs to be discussed on the dev@zookeeper mailing list. I hate to be a prig about this, but one of the truisms at Apache is that if it didn't happen on the list, it didn't happen. > ZooKeeper slow operation log > > > Key: ZOOKEEPER-2770 > URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2770 > Project: ZooKeeper > Issue Type: Improvement >Reporter: Karan Mehta > Attachments: ZOOKEEPER-2770.001.patch, ZOOKEEPER-2770.002.patch, > ZOOKEEPER-2770.003.patch > > > Log the client and request details if the server discovers, when finally > processing the request, that the current time minus arrival time of the > request is beyond a configured threshold. > Look at the HBase {{responseTooSlow}} feature for inspiration. -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Commented] (ZOOKEEPER-2770) ZooKeeper slow operation log
[ https://issues.apache.org/jira/browse/ZOOKEEPER-2770?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16077254#comment-16077254 ] Ted Dunning commented on ZOOKEEPER-2770: Would it be a good idea to extend the idea of this patch to include more generalized latency monitoring? > ZooKeeper slow operation log > > > Key: ZOOKEEPER-2770 > URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2770 > Project: ZooKeeper > Issue Type: Improvement >Reporter: Karan Mehta > Attachments: ZOOKEEPER-2770.001.patch, ZOOKEEPER-2770.002.patch, > ZOOKEEPER-2770.003.patch > > > Log the client and request details if the server discovers, when finally > processing the request, that the current time minus arrival time of the > request is beyond a configured threshold. > Look at the HBase {{responseTooSlow}} feature for inspiration. -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Commented] (ZOOKEEPER-2770) ZooKeeper slow operation log
[ https://issues.apache.org/jira/browse/ZOOKEEPER-2770?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=16077221#comment-16077221 ] Ted Dunning commented on ZOOKEEPER-2770: I don't see any discussion of this on the mailing list. Also, the patch was posted to this bug 2 hours after it was filed. Is the problem you are trying to solve being discussed somewhere off list? > ZooKeeper slow operation log > > > Key: ZOOKEEPER-2770 > URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2770 > Project: ZooKeeper > Issue Type: Improvement >Reporter: Karan Mehta > Attachments: ZOOKEEPER-2770.001.patch, ZOOKEEPER-2770.002.patch, > ZOOKEEPER-2770.003.patch > > > Log the client and request details if the server discovers, when finally > processing the request, that the current time minus arrival time of the > request is beyond a configured threshold. > Look at the HBase {{responseTooSlow}} feature for inspiration. -- This message was sent by Atlassian JIRA (v6.4.14#64029)
[jira] [Updated] (ZOOKEEPER-2509) Secure mode leaks memory
[ https://issues.apache.org/jira/browse/ZOOKEEPER-2509?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ted Dunning updated ZOOKEEPER-2509: --- Attachment: 0001-Updated-patch-for-Netty-leak-testing-to-trunk.patch Updated patch (which was for 3.5.1) to trunk > Secure mode leaks memory > > > Key: ZOOKEEPER-2509 > URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2509 > Project: ZooKeeper > Issue Type: Bug >Affects Versions: 3.5.1, 3.5.2 >Reporter: Ted Dunning > Fix For: 3.5.3 > > Attachments: > 0001-Updated-patch-for-Netty-leak-testing-to-trunk.patch, leak-patch.patch > > > The Netty connection handling logic fails to clean up watches on connection > close. This causes memory to leak. > I will have a repro script available soon and a fix. I am not sure how to > build a unit test since we would need to build an entire server and generate > keys and such. Advice on that appreciated. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (ZOOKEEPER-2509) Secure mode leaks memory
[ https://issues.apache.org/jira/browse/ZOOKEEPER-2509?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15416280#comment-15416280 ] Ted Dunning commented on ZOOKEEPER-2509: [~rgs] Thanks for the pointer. I got some hints from that other test that helped get rid of some spurious exceptions. > Secure mode leaks memory > > > Key: ZOOKEEPER-2509 > URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2509 > Project: ZooKeeper > Issue Type: Bug >Affects Versions: 3.5.1, 3.5.2 >Reporter: Ted Dunning > Fix For: 3.5.3 > > Attachments: leak-patch.patch > > > The Netty connection handling logic fails to clean up watches on connection > close. This causes memory to leak. > I will have a repro script available soon and a fix. I am not sure how to > build a unit test since we would need to build an entire server and generate > keys and such. Advice on that appreciated. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (ZOOKEEPER-2509) Secure mode leaks memory
[ https://issues.apache.org/jira/browse/ZOOKEEPER-2509?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ted Dunning updated ZOOKEEPER-2509: --- Attachment: leak-patch.patch This is a fix for the problem along with a unit test. > Secure mode leaks memory > > > Key: ZOOKEEPER-2509 > URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2509 > Project: ZooKeeper > Issue Type: Bug >Affects Versions: 3.5.1, 3.5.2 >Reporter: Ted Dunning > Fix For: 3.5.3 > > Attachments: leak-patch.patch > > > The Netty connection handling logic fails to clean up watches on connection > close. This causes memory to leak. > I will have a repro script available soon and a fix. I am not sure how to > build a unit test since we would need to build an entire server and generate > keys and such. Advice on that appreciated. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (ZOOKEEPER-2510) org.apache.zookeeper.server.NettyServerCnxnTest uses wrong import for junit
[ https://issues.apache.org/jira/browse/ZOOKEEPER-2510?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ted Dunning updated ZOOKEEPER-2510: --- Attachment: fix-import.patch Trivial fix. Impossible to test, really. > org.apache.zookeeper.server.NettyServerCnxnTest uses wrong import for junit > --- > > Key: ZOOKEEPER-2510 > URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2510 > Project: ZooKeeper > Issue Type: Bug >Reporter: Ted Dunning > Attachments: fix-import.patch > > > junit.framework.Assert is deprecated. The code should use org.junit.Assert > instead. > Patch coming shortly. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Created] (ZOOKEEPER-2510) org.apache.zookeeper.server.NettyServerCnxnTest uses wrong import for junit
Ted Dunning created ZOOKEEPER-2510: -- Summary: org.apache.zookeeper.server.NettyServerCnxnTest uses wrong import for junit Key: ZOOKEEPER-2510 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2510 Project: ZooKeeper Issue Type: Bug Reporter: Ted Dunning junit.framework.Assert is deprecated. The code should use org.junit.Assert instead. Patch coming shortly. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (ZOOKEEPER-2509) Secure mode leaks memory
[ https://issues.apache.org/jira/browse/ZOOKEEPER-2509?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel=15416190#comment-15416190 ] Ted Dunning commented on ZOOKEEPER-2509: [~rgs] It is possible that would work. I have a working test now that exhibits the problem and the fix, but I don't yet like how I had to get the test system to instantiate a Netty connection factory. What I did was to change the system property controlling this. That is, of course, a recipe for non-deterministic disaster if multiple tests run at the same time. Once I got the test to run at all, I ran into a java.nio.channels.ClosedChannelException as the server shuts down. That probably indicates something is wrong with the test framework or the netty code itself, but it is very hard to see what. > Secure mode leaks memory > > > Key: ZOOKEEPER-2509 > URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2509 > Project: ZooKeeper > Issue Type: Bug >Affects Versions: 3.5.1 >Reporter: Ted Dunning > > The Netty connection handling logic fails to clean up watches on connection > close. This causes memory to leak. > I will have a repro script available soon and a fix. I am not sure how to > build a unit test since we would need to build an entire server and generate > keys and such. Advice on that appreciated. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (ZOOKEEPER-2317) Non-OSGi compatible version
[ https://issues.apache.org/jira/browse/ZOOKEEPER-2317?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ted Dunning updated ZOOKEEPER-2317: --- Attachment: 0001-Put-a-different-version-string-into-the-jar-meta-dat.patch Here is a patch with a proposed fix. The idea is to segregate out an OSGI compatible version string that gets put into the meta-data. I don't have an OSGI container handy for testing, but will be able to get a customer to test shortly. > Non-OSGi compatible version > --- > > Key: ZOOKEEPER-2317 > URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2317 > Project: ZooKeeper > Issue Type: Bug > Components: build >Affects Versions: 3.5.1 > Environment: Karaf OSGi container >Reporter: Markus Tippmann >Assignee: Sachin >Priority: Blocker > Fix For: 3.5.3 > > Attachments: > 0001-Put-a-different-version-string-into-the-jar-meta-dat.patch > > > Bundle cannot be deployed to OSGi container. > Manifest version is not OSGi compatible. > Instead of using 3.5.1-alpha, manifest needs to contain 3.5.1.alpha -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Updated] (ZOOKEEPER-2509) Secure mode leaks memory
[ https://issues.apache.org/jira/browse/ZOOKEEPER-2509?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ted Dunning updated ZOOKEEPER-2509: --- Affects Version/s: 3.5.1 > Secure mode leaks memory > > > Key: ZOOKEEPER-2509 > URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2509 > Project: ZooKeeper > Issue Type: Bug >Affects Versions: 3.5.1 >Reporter: Ted Dunning > > The Netty connection handling logic fails to clean up watches on connection > close. This causes memory to leak. > I will have a repro script available soon and a fix. I am not sure how to > build a unit test since we would need to build an entire server and generate > keys and such. Advice on that appreciated. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (ZOOKEEPER-1366) Zookeeper should be tolerant of clock adjustments
[ https://issues.apache.org/jira/browse/ZOOKEEPER-1366?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14300826#comment-14300826 ] Ted Dunning commented on ZOOKEEPER-1366: Actually, no. I hadn't considered them. In fact, I had pretty much given up on this patch since it was ignored for two years after it caused a major P1 outage at multiple sites. I figured it was just me that considered it important enough to try to fix. And at this point, I don't have time to update the patch. Check with Patrick or Michi. (I am only vaguely sorry about being snippy here. This was an egregious case of ignoring a fairly valid patch on an important issue). Zookeeper should be tolerant of clock adjustments - Key: ZOOKEEPER-1366 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1366 Project: ZooKeeper Issue Type: Bug Reporter: Ted Dunning Assignee: Ted Dunning Priority: Critical Fix For: 3.5.1 Attachments: ZOOKEEPER-1366-3.3.3.patch, ZOOKEEPER-1366.patch, ZOOKEEPER-1366.patch, ZOOKEEPER-1366.patch, ZOOKEEPER-1366.patch, ZOOKEEPER-1366.patch, ZOOKEEPER-1366.patch, ZOOKEEPER-1366.patch, ZOOKEEPER-1366.patch, ZOOKEEPER-1366.patch, ZOOKEEPER-1366.patch, zookeeper-3.4.5-ZK1366-SC01.patch If you want to wreak havoc on a ZK based system just do [date -s +1hour] and watch the mayhem as all sessions expire at once. This shouldn't happen. Zookeeper could easily know handle elapsed times as elapsed times rather than as differences between absolute times. The absolute times are subject to adjustment when the clock is set while a timer is not subject to this problem. In Java, System.currentTimeMillis() gives you absolute time while System.nanoTime() gives you time based on a timer from an arbitrary epoch. I have done this and have been running tests now for some tens of minutes with no failures. I will set up a test machine to redo the build again on Ubuntu and post a patch here for discussion. -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (ZOOKEEPER-2025) Single-node ejection caused apparent reconnection storm, leading to cluster unresponsiveness
[ https://issues.apache.org/jira/browse/ZOOKEEPER-2025?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14174009#comment-14174009 ] Ted Dunning commented on ZOOKEEPER-2025: Has anybody looked at this? Single-node ejection caused apparent reconnection storm, leading to cluster unresponsiveness Key: ZOOKEEPER-2025 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2025 Project: ZooKeeper Issue Type: Bug Components: c client, server Affects Versions: 3.4.5 Reporter: Stephen Tyree Attachments: zookeeper_issues.pdf Description will be included in an attached PDF. The two main questions we have are: 1: What would be the cause of the Unreasonable Length error in our context, and how might we prevent it from occurring? 2: What can we do to prevent the reconnection storm that led to the cluster becoming unresponsive? -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (ZOOKEEPER-2025) Single-node ejection caused apparent reconnection storm, leading to cluster unresponsiveness
[ https://issues.apache.org/jira/browse/ZOOKEEPER-2025?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14135510#comment-14135510 ] Ted Dunning commented on ZOOKEEPER-2025: Hongchao, I don't see how that really addresses the problems here. The throttling code is still very naive. And the complete throttling of clients with no client back off is also not a great solution since there is no source quench under pretty reasonable scenarios. It also doesn't address the question of why one server would send an unreasonably large packet to another. Flavio, Have you had a chance to look at this? Single-node ejection caused apparent reconnection storm, leading to cluster unresponsiveness Key: ZOOKEEPER-2025 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2025 Project: ZooKeeper Issue Type: Bug Components: c client, server Affects Versions: 3.4.5 Reporter: Stephen Tyree Attachments: zookeeper_issues.pdf Description will be included in an attached PDF. The two main questions we have are: 1: What would be the cause of the Unreasonable Length error in our context, and how might we prevent it from occurring? 2: What can we do to prevent the reconnection storm that led to the cluster becoming unresponsive? -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (ZOOKEEPER-2025) Single-node ejection caused apparent reconnection storm, leading to cluster unresponsiveness
[ https://issues.apache.org/jira/browse/ZOOKEEPER-2025?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=14132297#comment-14132297 ] Ted Dunning commented on ZOOKEEPER-2025: Brett, That is a pretty interesting scenario. Flavio, What do you think about that? Single-node ejection caused apparent reconnection storm, leading to cluster unresponsiveness Key: ZOOKEEPER-2025 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-2025 Project: ZooKeeper Issue Type: Bug Components: c client, server Affects Versions: 3.4.5 Reporter: Stephen Tyree Attachments: zookeeper_issues.pdf Description will be included in an attached PDF. The two main questions we have are: 1: What would be the cause of the Unreasonable Length error in our context, and how might we prevent it from occurring? 2: What can we do to prevent the reconnection storm that led to the cluster becoming unresponsive? -- This message was sent by Atlassian JIRA (v6.3.4#6332)
[jira] [Commented] (ZOOKEEPER-1502) Prevent multiple zookeeper servers from using the same data directory
[ https://issues.apache.org/jira/browse/ZOOKEEPER-1502?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13944466#comment-13944466 ] Ted Dunning commented on ZOOKEEPER-1502: File locking is notoriously unreliable. There is a history of it not even working correctly on local physical volumes and there are many examples of it not working correctly on SAN and NAS devices. Depending on it, is not a great idea. At the very least, you should make sure that the code works if flock is not available. Prevent multiple zookeeper servers from using the same data directory - Key: ZOOKEEPER-1502 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1502 Project: ZooKeeper Issue Type: Improvement Components: server Affects Versions: 3.4.3 Reporter: Will Johnson Assignee: Rakesh R Fix For: 3.5.0 Attachments: ZOOKEEPER-1502.patch We recently ran into an issue where two zookeepers servers which were a part of two separate quorums were configured to use the same data directory. Interestingly, the zookeeper servers did not seem to complain and both seemed to work fine until one of them was restarted. Once that happened all sort of chaos ensued. I understand that this is a misconfiguration should zookeeper complain about this or do users need to protect themselves in some external fashion? Is a simple file lock enough or are there other things I should take into consideration if it’s up to me to handle? -- This message was sent by Atlassian JIRA (v6.2#6252)
[jira] [Commented] (ZOOKEEPER-1366) Zookeeper should be tolerant of clock adjustments
[ https://issues.apache.org/jira/browse/ZOOKEEPER-1366?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13757489#comment-13757489 ] Ted Dunning commented on ZOOKEEPER-1366: Why do you say this? What scenario would cause a breakage? Zookeeper should be tolerant of clock adjustments - Key: ZOOKEEPER-1366 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1366 Project: ZooKeeper Issue Type: Bug Reporter: Ted Dunning Assignee: Ted Dunning Fix For: 3.5.0 Attachments: ZOOKEEPER-1366-3.3.3.patch, ZOOKEEPER-1366.patch, ZOOKEEPER-1366.patch, ZOOKEEPER-1366.patch, ZOOKEEPER-1366.patch, ZOOKEEPER-1366.patch, ZOOKEEPER-1366.patch, ZOOKEEPER-1366.patch, zookeeper-3.4.5-ZK1366-SC01.patch If you want to wreak havoc on a ZK based system just do [date -s +1hour] and watch the mayhem as all sessions expire at once. This shouldn't happen. Zookeeper could easily know handle elapsed times as elapsed times rather than as differences between absolute times. The absolute times are subject to adjustment when the clock is set while a timer is not subject to this problem. In Java, System.currentTimeMillis() gives you absolute time while System.nanoTime() gives you time based on a timer from an arbitrary epoch. I have done this and have been running tests now for some tens of minutes with no failures. I will set up a test machine to redo the build again on Ubuntu and post a patch here for discussion. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-1633) Introduce a protocol version to connection initiation message
[ https://issues.apache.org/jira/browse/ZOOKEEPER-1633?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13619771#comment-13619771 ] Ted Dunning commented on ZOOKEEPER-1633: Alex, Sorry to come in late here. I have a few comments. 1) is a version number really what you want here? Shouldn't it be done more like modern protocols such as protobufs to introduce a mechanism of optional fields? Strict versioning of protocols is very unpopular any more because of the brittleness introduced into protocols. 2) it is possible that there is an irreconciliable conflict in version between correspondents. In such cases, it is important to signal this clearly. As such, it is good to add not only versioning information to the original request, but a very stable reply that indicates that there is an irreconciliable version mismatch. Is there a way that you can do this in your proposal? Introduce a protocol version to connection initiation message - Key: ZOOKEEPER-1633 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1633 Project: ZooKeeper Issue Type: Bug Components: server Reporter: Alexander Shraer Assignee: Alexander Shraer Fix For: 3.4.6 Attachments: ZOOKEEPER-1633.patch, ZOOKEEPER-1633-v4.patch, ZOOKEEPER-1633-v4.patch, ZOOKEEPER-1633-ver2.patch, ZOOKEEPER-1633-ver3.patch Currently the first message a server sends to another server includes just one field - the server's id (long). This is in QuorumCnxManager.java. This makes changes to the information passed during this initial connection very difficult. This patch will change the first field of the message to be a protocol version (a negative number that can't be a server id). The second field will be the server id. The third field is number of bytes in the remainder of the message. A 3.4 server will read the first field as before, but if this is a negative number it will read the second field to find the server id, and then remove the remainder of the message from the stream. This will not affect 3.4 since 3.4 and earlier servers send just the server id (so the code in the patch will not run unless there is a server 3.4 trying to connect). This will, however, provide the necessary flexibility for future releases as well as an upgrade path from 3.4 -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-1629) testTrancationLogCorruption occasionally fails
[ https://issues.apache.org/jira/browse/ZOOKEEPER-1629?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13615024#comment-13615024 ] Ted Dunning commented on ZOOKEEPER-1629: WHile you are at it, could you fix the spelling of the test case name? testTrancationLogCorruption occasionally fails -- Key: ZOOKEEPER-1629 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1629 Project: ZooKeeper Issue Type: Bug Components: tests Reporter: Alexander Shraer Attachments: TruncateCorruptionTest-patch.patch It seems that testTransactionLogCorruption is very flaky,for example fails here: https://builds.apache.org/job/ZooKeeper-trunk-jdk7/500/ https://builds.apache.org/job/ZooKeeper-trunk-jdk7/502/ https://builds.apache.org/job/ZooKeeper-trunk-jdk7/503/#showFailuresLink also fails for older builds (no longer on the website), for example all builds from 381 to 399. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-1640) dynamically load class objects instead of hard code
[ https://issues.apache.org/jira/browse/ZOOKEEPER-1640?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13581012#comment-13581012 ] Ted Dunning commented on ZOOKEEPER-1640: Why is this important? Why does it matter for a library to load code on the client side? Isn't that what the caller of the library is supposed to do? dynamically load class objects instead of hard code --- Key: ZOOKEEPER-1640 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1640 Project: ZooKeeper Issue Type: Improvement Components: java client Reporter: Tian Hong Wang Assignee: Tian Hong Wang Labels: patch Fix For: 3.4.5 Attachments: zookeeper.patch Class org.apache.zookeeper.ZooKeeperMain.java uses hard code to load command objects in client site. It need to dynamically load command objects in case of command extension. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-1640) dynamically load command objects in zk
[ https://issues.apache.org/jira/browse/ZOOKEEPER-1640?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13581035#comment-13581035 ] Ted Dunning commented on ZOOKEEPER-1640: So why is this important on the server side? Do you really imagine that anybody would normally do this? Isn't this a massive security hole waiting to happen? dynamically load command objects in zk -- Key: ZOOKEEPER-1640 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1640 Project: ZooKeeper Issue Type: Improvement Components: java client Reporter: Tian Hong Wang Assignee: Tian Hong Wang Priority: Minor Labels: patch Fix For: 3.4.5 Attachments: zookeeper.patch In class org.apache.zookeeper.ZooKeeperMain.java, new CloseCommand().addToMap(commandMapCli); new CreateCommand().addToMap(commandMapCli); new DeleteCommand().addToMap(commandMapCli); new DeleteAllCommand().addToMap(commandMapCli); // Depricated: rmr new DeleteAllCommand(rmr).addToMap(commandMapCli); new SetCommand().addToMap(commandMapCli); new GetCommand().addToMap(commandMapCli); new LsCommand().addToMap(commandMapCli); new Ls2Command().addToMap(commandMapCli); new GetAclCommand().addToMap(commandMapCli); new SetAclCommand().addToMap(commandMapCli); new StatCommand().addToMap(commandMapCli); new SyncCommand().addToMap(commandMapCli); new SetQuotaCommand().addToMap(commandMapCli); new ListQuotaCommand().addToMap(commandMapCli); new DelQuotaCommand().addToMap(commandMapCli); new AddAuthCommand().addToMap(commandMapCli); The above code is not flexible for command object scalability. It's better to refine the code to load and create the command objects dynamically. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-1616) time calculations should use a monotonic clock
[ https://issues.apache.org/jira/browse/ZOOKEEPER-1616?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13548949#comment-13548949 ] Ted Dunning commented on ZOOKEEPER-1616: OK, So can we get ZOOKEEPER-1366 patches reviewed and committed? I can bring them up to date on whatever branch anybody would like. Just let me know which branches you are willing to review on. time calculations should use a monotonic clock -- Key: ZOOKEEPER-1616 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1616 Project: ZooKeeper Issue Type: Bug Reporter: Todd Lipcon We recently had an issue with ZooKeeper sessions acting strangely due to a bad NTP setup on a set of hosts. Looking at the code, ZK seems to use System.currentTimeMillis to measure durations or intervals in many places. This is bad since that time can move backwards or skip ahead by several minutes. Instead, it should use System.nanoTime (or a wrapper such as Guava's Stopwatch class) -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-1616) time calculations should use a monotonic clock
[ https://issues.apache.org/jira/browse/ZOOKEEPER-1616?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13547649#comment-13547649 ] Ted Dunning commented on ZOOKEEPER-1616: Uh... I thought we patched this ages ago. See ZOOKEEPER-1366 time calculations should use a monotonic clock -- Key: ZOOKEEPER-1616 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1616 Project: ZooKeeper Issue Type: Bug Reporter: Todd Lipcon We recently had an issue with ZooKeeper sessions acting strangely due to a bad NTP setup on a set of hosts. Looking at the code, ZK seems to use System.currentTimeMillis to measure durations or intervals in many places. This is bad since that time can move backwards or skip ahead by several minutes. Instead, it should use System.nanoTime (or a wrapper such as Guava's Stopwatch class) -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-1616) time calculations should use a monotonic clock
[ https://issues.apache.org/jira/browse/ZOOKEEPER-1616?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13547651#comment-13547651 ] Ted Dunning commented on ZOOKEEPER-1616: Todd, Can you fill in the versions for which you observed this problem? time calculations should use a monotonic clock -- Key: ZOOKEEPER-1616 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1616 Project: ZooKeeper Issue Type: Bug Reporter: Todd Lipcon We recently had an issue with ZooKeeper sessions acting strangely due to a bad NTP setup on a set of hosts. Looking at the code, ZK seems to use System.currentTimeMillis to measure durations or intervals in many places. This is bad since that time can move backwards or skip ahead by several minutes. Instead, it should use System.nanoTime (or a wrapper such as Guava's Stopwatch class) -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-1599) 3.3 server cannot join 3.4 quorum
[ https://issues.apache.org/jira/browse/ZOOKEEPER-1599?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13532801#comment-13532801 ] Ted Dunning commented on ZOOKEEPER-1599: I think that Flavio is simply pointing out that if 3.4 can follow 3.3, but 3.3 cannot follow 3.4, then a rolling upgrade works. If you have A,B,C then upgrading A will force B or C to lead. Assume B WLOG. When you take down B, A might want to become leader, but will fail so C will lead with A and C in the quorum. When you take down C after B is back, either A or B can become a 3.4 leader. Surprisingly, this also works for downgrades. If you downgrade C, A or B can remain leader. When you downgrade B, however, A cannot be leader anymore so C will take over while B is down. Downgrading A now gives you a pure 3.3 cluster. The question of how a 3.4 leader can be sure not to allow a 3.3 follower while staying otherwise compatible is a different kettle of fish, but obviously critical to the scenario. 3.3 server cannot join 3.4 quorum - Key: ZOOKEEPER-1599 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1599 Project: ZooKeeper Issue Type: Bug Components: quorum Affects Versions: 3.3.6, 3.4.5 Reporter: Skye Wanderman-Milne Assignee: Skye Wanderman-Milne Priority: Blocker Fix For: 3.4.6 Attachments: ZOOKEEPER-1599.patch When a 3.3 server attempts to join an existing quorum lead by a 3.4 server, the 3.3 server is disconnected while trying to download the leader's snapshot. The 3.3 server restarts and starts the process over again, but is never able to join the quorum. 3.3 server log: {code} 2012-12-07 10:44:34,582 - INFO [QuorumPeer:/0:0:0:0:0:0:0:0:2183:Learner@294] - Getting a snapshot from leader 2012-12-07 10:44:34,582 - INFO [QuorumPeer:/0:0:0:0:0:0:0:0:2183:Learner@325] - Setting leader epoch 12 2012-12-07 10:44:54,604 - WARN [QuorumPeer:/0:0:0:0:0:0:0:0:2183:Follower@82] - Exception when following the leader java.io.EOFException at java.io.DataInputStream.readInt(DataInputStream.java:392) at org.apache.jute.BinaryInputArchive.readInt(BinaryInputArchive.java:63) at org.apache.zookeeper.server.quorum.QuorumPacket.deserialize(QuorumPacket.java:84) at org.apache.jute.BinaryInputArchive.readRecord(BinaryInputArchive.java:108) at org.apache.zookeeper.server.quorum.Learner.readPacket(Learner.java:148) at org.apache.zookeeper.server.quorum.Learner.syncWithLeader(Learner.java:332) at org.apache.zookeeper.server.quorum.Follower.followLeader(Follower.java:75) at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:645) 2012-12-07 10:44:54,605 - INFO [QuorumPeer:/0:0:0:0:0:0:0:0:2183:Follower@165] - shutdown called java.lang.Exception: shutdown Follower at org.apache.zookeeper.server.quorum.Follower.shutdown(Follower.java:165) at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:649) {code} 3.4 leader log: {code} 2012-12-07 10:51:35,178 [myid:2] - INFO [WorkerReceiver[myid=2]:FastLeaderElection$Messenger$WorkerReceiver@273] - Backward compatibility mode, server id=3 2012-12-07 10:51:35,178 [myid:2] - INFO [WorkerReceiver[myid=2]:FastLeaderElection@542] - Notification: 3 (n.leader), 0x11 (n.zxid), 0x2 (n.round), LOOKING (n.state), 3 (n.sid), 0x11 (n.peerEPoch), LEADING (my state) 2012-12-07 10:51:35,182 [myid:2] - INFO [LearnerHandler-/127.0.0.1:37654:LearnerHandler@263] - Follower sid: 3 : info : org.apache.zookeeper.server.quorum.QuorumPeer$QuorumServer@262f4873 2012-12-07 10:51:35,182 [myid:2] - INFO [LearnerHandler-/127.0.0.1:37654:LearnerHandler@318] - Synchronizing with Follower sid: 3 maxCommittedLog=0x0 minCommittedLog=0x0 peerLastZxid=0x11 2012-12-07 10:51:35,182 [myid:2] - INFO [LearnerHandler-/127.0.0.1:37654:LearnerHandler@395] - Sending SNAP 2012-12-07 10:51:35,183 [myid:2] - INFO [LearnerHandler-/127.0.0.1:37654:LearnerHandler@419] - Sending snapshot last zxid of peer is 0x11 zxid of leader is 0x12sent zxid of db as 0x12 2012-12-07 10:51:55,204 [myid:2] - ERROR [LearnerHandler-/127.0.0.1:37654:LearnerHandler@562] - Unexpected exception causing shutdown while sock still open java.net.SocketTimeoutException: Read timed out at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:150) at java.net.SocketInputStream.read(SocketInputStream.java:121) at java.io.BufferedInputStream.fill(BufferedInputStream.java:235) at java.io.BufferedInputStream.read(BufferedInputStream.java:254) at
[jira] [Commented] (ZOOKEEPER-1599) 3.3 server cannot join 3.4 quorum
[ https://issues.apache.org/jira/browse/ZOOKEEPER-1599?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13532825#comment-13532825 ] Ted Dunning commented on ZOOKEEPER-1599: Ultimately, if somebody else gets a quorum, the 3.4 node should give up trying to become leader. 3.3 server cannot join 3.4 quorum - Key: ZOOKEEPER-1599 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1599 Project: ZooKeeper Issue Type: Bug Components: quorum Affects Versions: 3.3.6, 3.4.5 Reporter: Skye Wanderman-Milne Assignee: Skye Wanderman-Milne Priority: Blocker Fix For: 3.4.6 Attachments: ZOOKEEPER-1599.patch When a 3.3 server attempts to join an existing quorum lead by a 3.4 server, the 3.3 server is disconnected while trying to download the leader's snapshot. The 3.3 server restarts and starts the process over again, but is never able to join the quorum. 3.3 server log: {code} 2012-12-07 10:44:34,582 - INFO [QuorumPeer:/0:0:0:0:0:0:0:0:2183:Learner@294] - Getting a snapshot from leader 2012-12-07 10:44:34,582 - INFO [QuorumPeer:/0:0:0:0:0:0:0:0:2183:Learner@325] - Setting leader epoch 12 2012-12-07 10:44:54,604 - WARN [QuorumPeer:/0:0:0:0:0:0:0:0:2183:Follower@82] - Exception when following the leader java.io.EOFException at java.io.DataInputStream.readInt(DataInputStream.java:392) at org.apache.jute.BinaryInputArchive.readInt(BinaryInputArchive.java:63) at org.apache.zookeeper.server.quorum.QuorumPacket.deserialize(QuorumPacket.java:84) at org.apache.jute.BinaryInputArchive.readRecord(BinaryInputArchive.java:108) at org.apache.zookeeper.server.quorum.Learner.readPacket(Learner.java:148) at org.apache.zookeeper.server.quorum.Learner.syncWithLeader(Learner.java:332) at org.apache.zookeeper.server.quorum.Follower.followLeader(Follower.java:75) at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:645) 2012-12-07 10:44:54,605 - INFO [QuorumPeer:/0:0:0:0:0:0:0:0:2183:Follower@165] - shutdown called java.lang.Exception: shutdown Follower at org.apache.zookeeper.server.quorum.Follower.shutdown(Follower.java:165) at org.apache.zookeeper.server.quorum.QuorumPeer.run(QuorumPeer.java:649) {code} 3.4 leader log: {code} 2012-12-07 10:51:35,178 [myid:2] - INFO [WorkerReceiver[myid=2]:FastLeaderElection$Messenger$WorkerReceiver@273] - Backward compatibility mode, server id=3 2012-12-07 10:51:35,178 [myid:2] - INFO [WorkerReceiver[myid=2]:FastLeaderElection@542] - Notification: 3 (n.leader), 0x11 (n.zxid), 0x2 (n.round), LOOKING (n.state), 3 (n.sid), 0x11 (n.peerEPoch), LEADING (my state) 2012-12-07 10:51:35,182 [myid:2] - INFO [LearnerHandler-/127.0.0.1:37654:LearnerHandler@263] - Follower sid: 3 : info : org.apache.zookeeper.server.quorum.QuorumPeer$QuorumServer@262f4873 2012-12-07 10:51:35,182 [myid:2] - INFO [LearnerHandler-/127.0.0.1:37654:LearnerHandler@318] - Synchronizing with Follower sid: 3 maxCommittedLog=0x0 minCommittedLog=0x0 peerLastZxid=0x11 2012-12-07 10:51:35,182 [myid:2] - INFO [LearnerHandler-/127.0.0.1:37654:LearnerHandler@395] - Sending SNAP 2012-12-07 10:51:35,183 [myid:2] - INFO [LearnerHandler-/127.0.0.1:37654:LearnerHandler@419] - Sending snapshot last zxid of peer is 0x11 zxid of leader is 0x12sent zxid of db as 0x12 2012-12-07 10:51:55,204 [myid:2] - ERROR [LearnerHandler-/127.0.0.1:37654:LearnerHandler@562] - Unexpected exception causing shutdown while sock still open java.net.SocketTimeoutException: Read timed out at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:150) at java.net.SocketInputStream.read(SocketInputStream.java:121) at java.io.BufferedInputStream.fill(BufferedInputStream.java:235) at java.io.BufferedInputStream.read(BufferedInputStream.java:254) at java.io.DataInputStream.readInt(DataInputStream.java:387) at org.apache.jute.BinaryInputArchive.readInt(BinaryInputArchive.java:63) at org.apache.zookeeper.server.quorum.QuorumPacket.deserialize(QuorumPacket.java:83) at org.apache.jute.BinaryInputArchive.readRecord(BinaryInputArchive.java:108) at org.apache.zookeeper.server.quorum.LearnerHandler.run(LearnerHandler.java:450) 2012-12-07 10:51:55,205 [myid:2] - WARN [LearnerHandler-/127.0.0.1:37654:LearnerHandler@575] - *** GOODBYE /127.0.0.1:37654 {code} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA,
[jira] [Commented] (ZOOKEEPER-1346) Handle 4lws and monitoring on separate port
[ https://issues.apache.org/jira/browse/ZOOKEEPER-1346?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13509551#comment-13509551 ] Ted Dunning commented on ZOOKEEPER-1346: Regarding resty-ness, I think that this interface is a real candidate for not using the GET/PUT/POST/DELETE verb at all but simply post-pending a verb to the URL of appropriate report. For that matter, the available verbs could be added to each report for convenience if there is an HTML view. This allows mumble/connection/close which is much more clearly self-documenting than a guess about what different operations might do to the connection in question. Handle 4lws and monitoring on separate port --- Key: ZOOKEEPER-1346 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1346 Project: ZooKeeper Issue Type: Improvement Components: server Reporter: Camille Fournier Assignee: Skye Wanderman-Milne Fix For: 3.5.0 Attachments: ZOOKEEPER-1346.2.patch, ZOOKEEPER-1346_jetty.patch, ZOOKEEPER-1346.patch Move the 4lws to their own port, off of the client port, and support them properly via long-lived sessions instead of polling. Deprecate the 4lw support on the client port. Will enable us to enhance the functionality of the commands via extended command syntax, address security concerns and fix bugs involving the socket close being received before all of the data on the client end. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-1366) Zookeeper should be tolerant of clock adjustments
[ https://issues.apache.org/jira/browse/ZOOKEEPER-1366?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13500520#comment-13500520 ] Ted Dunning commented on ZOOKEEPER-1366: This patch never got committed. It should have been committed long ago. I am happy to resurrect it. Which branches should I generate patches for? Zookeeper should be tolerant of clock adjustments - Key: ZOOKEEPER-1366 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1366 Project: ZooKeeper Issue Type: Bug Reporter: Ted Dunning Assignee: Ted Dunning Fix For: 3.5.0 Attachments: ZOOKEEPER-1366-3.3.3.patch, ZOOKEEPER-1366.patch, ZOOKEEPER-1366.patch, ZOOKEEPER-1366.patch, ZOOKEEPER-1366.patch If you want to wreak havoc on a ZK based system just do [date -s +1hour] and watch the mayhem as all sessions expire at once. This shouldn't happen. Zookeeper could easily know handle elapsed times as elapsed times rather than as differences between absolute times. The absolute times are subject to adjustment when the clock is set while a timer is not subject to this problem. In Java, System.currentTimeMillis() gives you absolute time while System.nanoTime() gives you time based on a timer from an arbitrary epoch. I have done this and have been running tests now for some tens of minutes with no failures. I will set up a test machine to redo the build again on Ubuntu and post a patch here for discussion. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-1346) Handle 4lws and monitoring on separate port
[ https://issues.apache.org/jira/browse/ZOOKEEPER-1346?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13499264#comment-13499264 ] Ted Dunning commented on ZOOKEEPER-1346: Skye, Nice work. Is there documentation about what URL structure you used? Is there a way to make it a bit more REST-y? Are there commands that are natural to decompose a bit using a hierarchical URL style? For instance, if have something that lists live quorum members, it would be nice be able to append the quorum member id to the URL to get more details on that member alone. Likewise for live sessions. Further afield, are there metrics that should be reported/set using this mechanism? I know that we report a fair number of metrics using JMX, but would it be good to have a different mechanism? Handle 4lws and monitoring on separate port --- Key: ZOOKEEPER-1346 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1346 Project: ZooKeeper Issue Type: Improvement Components: server Reporter: Camille Fournier Assignee: Skye Wanderman-Milne Fix For: 3.5.0 Attachments: ZOOKEEPER-1346_jetty.patch, ZOOKEEPER-1346.patch Move the 4lws to their own port, off of the client port, and support them properly via long-lived sessions instead of polling. Deprecate the 4lw support on the client port. Will enable us to enhance the functionality of the commands via extended command syntax, address security concerns and fix bugs involving the socket close being received before all of the data on the client end. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-1502) Prevent multiple zookeeper servers from using the same data directory
[ https://issues.apache.org/jira/browse/ZOOKEEPER-1502?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13426248#comment-13426248 ] Ted Dunning commented on ZOOKEEPER-1502: Another, more robust option, is to put the PID of the ZK process into the lock file. If that process doesn't exist or isn't a ZK process, then the lock is an orphan and can be removed. Touching the file every minute or so also makes identification of an orphan very easy. Other systems that use a similar approach include mySQL, Solr and mongodb. Prevent multiple zookeeper servers from using the same data directory - Key: ZOOKEEPER-1502 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1502 Project: ZooKeeper Issue Type: Improvement Components: server Affects Versions: 3.4.3 Reporter: Will Johnson We recently ran into an issue where two zookeepers servers which were a part of two separate quorums were configured to use the same data directory. Interestingly, the zookeeper servers did not seem to complain and both seemed to work fine until one of them was restarted. Once that happened all sort of chaos ensued. I understand that this is a misconfiguration should zookeeper complain about this or do users need to protect themselves in some external fashion? Is a simple file lock enough or are there other things I should take into consideration if it’s up to me to handle? -- 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
[jira] [Commented] (ZOOKEEPER-1174) FD leak when network unreachable
[ https://issues.apache.org/jira/browse/ZOOKEEPER-1174?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13108010#comment-13108010 ] Ted Dunning commented on ZOOKEEPER-1174: OK. Can you say specifically which branches you mean? FD leak when network unreachable Key: ZOOKEEPER-1174 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1174 Project: ZooKeeper Issue Type: Bug Components: java client Affects Versions: 3.3.3 Reporter: Ted Dunning Assignee: Ted Dunning Priority: Critical Fix For: 3.3.4, 3.4.0, 3.5.0 Attachments: ZOOKEEPER-1174.patch, ZOOKEEPER-1174.patch, ZOOKEEPER-1174.patch, ZOOKEEPER-1174.patch, ZOOKEEPER-1174.patch, zk-fd-leak.tgz In the socket connection logic there are several errors that result in bad behavior. The basic problem is that a socket is registered with a selector unconditionally when there are nuances that should be dealt with. First, the socket may connect immediately. Secondly, the connect may throw an exception. In either of these two cases, I don't think that the socket should be registered. I will attach a test case that demonstrates the problem. I have been unable to create a unit test that exhibits the problem because I would have to mock the low level socket libraries to do so. It would still be good to do so if somebody can figure out a good way. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-1174) FD leak when network unreachable
[ https://issues.apache.org/jira/browse/ZOOKEEPER-1174?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13101642#comment-13101642 ] Ted Dunning commented on ZOOKEEPER-1174: Mocking the test sounds great. Using this bug to bring in a mocking technology that can mock static methods is a little more ambitious than I wanted it to be. I see that jmockit and powermock both claim the ability to do this. Powermock requires another mocking technology underneath. Jmockit has the problem that it isn't available in an official maven repo. My tendency is to suggest that we commit this without the unit test and open another JIRA to address the testing problem in general. If I can get sign-off on that, then I will produce a final patch to verify. The code right now stands like this: {code} try { boolean immediateConnect = sock.connect(addr); sockKey = sock.register(selector, SelectionKey.OP_CONNECT); if (immediateConnect) { sendThread.primeConnection(); } } catch (IOException e) { sock.close(); } initialized = false; {code} FD leak when network unreachable Key: ZOOKEEPER-1174 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1174 Project: ZooKeeper Issue Type: Bug Components: java client Affects Versions: 3.3.3 Reporter: Ted Dunning Assignee: Ted Dunning Priority: Critical Fix For: 3.3.4 Attachments: ZOOKEEPER-1174.patch, ZOOKEEPER-1174.patch, ZOOKEEPER-1174.patch, ZOOKEEPER-1174.patch, zk-fd-leak.tgz In the socket connection logic there are several errors that result in bad behavior. The basic problem is that a socket is registered with a selector unconditionally when there are nuances that should be dealt with. First, the socket may connect immediately. Secondly, the connect may throw an exception. In either of these two cases, I don't think that the socket should be registered. I will attach a test case that demonstrates the problem. I have been unable to create a unit test that exhibits the problem because I would have to mock the low level socket libraries to do so. It would still be good to do so if somebody can figure out a good way. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Created] (ZOOKEEPER-1174) FD leak when network unreachable
FD leak when network unreachable Key: ZOOKEEPER-1174 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1174 Project: ZooKeeper Issue Type: Bug Components: java client Affects Versions: 3.3.3 Reporter: Ted Dunning Assignee: Ted Dunning Priority: Critical Fix For: 3.3.4 In the socket connection logic there are several errors that result in bad behavior. The basic problem is that a socket is registered with a selector unconditionally when there are nuances that should be dealt with. First, the socket may connect immediately. Secondly, the connect may throw an exception. In either of these two cases, I don't think that the socket should be registered. I will attach a test case that demonstrates the problem. I have been unable to create a unit test that exhibits the problem because I would have to mock the low level socket libraries to do so. It would still be good to do so if somebody can figure out a good way. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (ZOOKEEPER-1174) FD leak when network unreachable
[ https://issues.apache.org/jira/browse/ZOOKEEPER-1174?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ted Dunning updated ZOOKEEPER-1174: --- Attachment: zk-fd-leak.tgz Here is a program that demonstrates the problem. It includes a README and sample output with and without the fix. FD leak when network unreachable Key: ZOOKEEPER-1174 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1174 Project: ZooKeeper Issue Type: Bug Components: java client Affects Versions: 3.3.3 Reporter: Ted Dunning Assignee: Ted Dunning Priority: Critical Fix For: 3.3.4 Attachments: zk-fd-leak.tgz In the socket connection logic there are several errors that result in bad behavior. The basic problem is that a socket is registered with a selector unconditionally when there are nuances that should be dealt with. First, the socket may connect immediately. Secondly, the connect may throw an exception. In either of these two cases, I don't think that the socket should be registered. I will attach a test case that demonstrates the problem. I have been unable to create a unit test that exhibits the problem because I would have to mock the low level socket libraries to do so. It would still be good to do so if somebody can figure out a good way. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (ZOOKEEPER-1174) FD leak when network unreachable
[ https://issues.apache.org/jira/browse/ZOOKEEPER-1174?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ted Dunning updated ZOOKEEPER-1174: --- Attachment: ZOOKEEPER-1174.patch Here is a proposed patch. There are a few considerations here that merit review. First, is it safe to register sockets with a selector after the connect call? I assert yes because select is level based rather than transition based. Secondly, is it safe to not register sockets that connect immediately? I think, but am not sure, that the answer is yes because we have clearly already called primeConnection(). Thirdly, is it OK to not rethrow the io exception from the connect call? I am not sure here. The immediate effect is that connection is only attempted at the timeout rate rather than the faster rate specified by some of the delays in the code. This seems OK at first glance, but other opinions would be nice to have. FD leak when network unreachable Key: ZOOKEEPER-1174 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1174 Project: ZooKeeper Issue Type: Bug Components: java client Affects Versions: 3.3.3 Reporter: Ted Dunning Assignee: Ted Dunning Priority: Critical Fix For: 3.3.4 Attachments: ZOOKEEPER-1174.patch, zk-fd-leak.tgz In the socket connection logic there are several errors that result in bad behavior. The basic problem is that a socket is registered with a selector unconditionally when there are nuances that should be dealt with. First, the socket may connect immediately. Secondly, the connect may throw an exception. In either of these two cases, I don't think that the socket should be registered. I will attach a test case that demonstrates the problem. I have been unable to create a unit test that exhibits the problem because I would have to mock the low level socket libraries to do so. It would still be good to do so if somebody can figure out a good way. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-1174) FD leak when network unreachable
[ https://issues.apache.org/jira/browse/ZOOKEEPER-1174?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13100635#comment-13100635 ] Ted Dunning commented on ZOOKEEPER-1174: Camille, Thanks for looking at this. I am not sure if it my assertion is true either, but it does seem correct to me. (happily, I expressed some doubt) The documentation for sock.connect is exactly what I base my (current) position on. The idea is that if connect returns true, then you don't need to use select to wait for the connection and can proceed immediately with the primeConnection and light up the connection for prime time. It is only if connect returns false that deferred actions are required. FD leak when network unreachable Key: ZOOKEEPER-1174 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1174 Project: ZooKeeper Issue Type: Bug Components: java client Affects Versions: 3.3.3 Reporter: Ted Dunning Assignee: Ted Dunning Priority: Critical Fix For: 3.3.4 Attachments: ZOOKEEPER-1174.patch, zk-fd-leak.tgz In the socket connection logic there are several errors that result in bad behavior. The basic problem is that a socket is registered with a selector unconditionally when there are nuances that should be dealt with. First, the socket may connect immediately. Secondly, the connect may throw an exception. In either of these two cases, I don't think that the socket should be registered. I will attach a test case that demonstrates the problem. I have been unable to create a unit test that exhibits the problem because I would have to mock the low level socket libraries to do so. It would still be good to do so if somebody can figure out a good way. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-1174) FD leak when network unreachable
[ https://issues.apache.org/jira/browse/ZOOKEEPER-1174?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13100714#comment-13100714 ] Ted Dunning commented on ZOOKEEPER-1174: Correct. Is sockKey needed if we don't register with the selector? FD leak when network unreachable Key: ZOOKEEPER-1174 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1174 Project: ZooKeeper Issue Type: Bug Components: java client Affects Versions: 3.3.3 Reporter: Ted Dunning Assignee: Ted Dunning Priority: Critical Fix For: 3.3.4 Attachments: ZOOKEEPER-1174.patch, zk-fd-leak.tgz In the socket connection logic there are several errors that result in bad behavior. The basic problem is that a socket is registered with a selector unconditionally when there are nuances that should be dealt with. First, the socket may connect immediately. Secondly, the connect may throw an exception. In either of these two cases, I don't think that the socket should be registered. I will attach a test case that demonstrates the problem. I have been unable to create a unit test that exhibits the problem because I would have to mock the low level socket libraries to do so. It would still be good to do so if somebody can figure out a good way. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (ZOOKEEPER-1174) FD leak when network unreachable
[ https://issues.apache.org/jira/browse/ZOOKEEPER-1174?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ted Dunning updated ZOOKEEPER-1174: --- Attachment: ZOOKEEPER-1174.patch Here is an updated patch that maintains the sockKey even for immediate loads. My guess is that this didn't matter in testing so far because it is rare for an async socket to connect instantly. This addresses Camille's eagle-eyed comments. I have added a few javadoc fixes and one weakening of a catch from Exception to Throwable in the general spirit of making things better when I see them. They are unrelated to this JIRA, but are very minor so do not warrant their own bug report. FD leak when network unreachable Key: ZOOKEEPER-1174 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1174 Project: ZooKeeper Issue Type: Bug Components: java client Affects Versions: 3.3.3 Reporter: Ted Dunning Assignee: Ted Dunning Priority: Critical Fix For: 3.3.4 Attachments: ZOOKEEPER-1174.patch, ZOOKEEPER-1174.patch, zk-fd-leak.tgz In the socket connection logic there are several errors that result in bad behavior. The basic problem is that a socket is registered with a selector unconditionally when there are nuances that should be dealt with. First, the socket may connect immediately. Secondly, the connect may throw an exception. In either of these two cases, I don't think that the socket should be registered. I will attach a test case that demonstrates the problem. I have been unable to create a unit test that exhibits the problem because I would have to mock the low level socket libraries to do so. It would still be good to do so if somebody can figure out a good way. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (ZOOKEEPER-1174) FD leak when network unreachable
[ https://issues.apache.org/jira/browse/ZOOKEEPER-1174?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ted Dunning updated ZOOKEEPER-1174: --- Attachment: ZOOKEEPER-1174.patch Here is a cheesy test. The idea is that I injected an explicit throw of the same exception that a downed internet connection causes. Is this just t cheesy to stomach? FD leak when network unreachable Key: ZOOKEEPER-1174 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1174 Project: ZooKeeper Issue Type: Bug Components: java client Affects Versions: 3.3.3 Reporter: Ted Dunning Assignee: Ted Dunning Priority: Critical Fix For: 3.3.4 Attachments: ZOOKEEPER-1174.patch, ZOOKEEPER-1174.patch, ZOOKEEPER-1174.patch, ZOOKEEPER-1174.patch, zk-fd-leak.tgz In the socket connection logic there are several errors that result in bad behavior. The basic problem is that a socket is registered with a selector unconditionally when there are nuances that should be dealt with. First, the socket may connect immediately. Secondly, the connect may throw an exception. In either of these two cases, I don't think that the socket should be registered. I will attach a test case that demonstrates the problem. I have been unable to create a unit test that exhibits the problem because I would have to mock the low level socket libraries to do so. It would still be good to do so if somebody can figure out a good way. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-1124) Multiop submitted to non-leader always fails due to timeout
[ https://issues.apache.org/jira/browse/ZOOKEEPER-1124?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13064684#comment-13064684 ] Ted Dunning commented on ZOOKEEPER-1124: All, Is there a way to restructure the code so that naive implementors don't run into this situation? Essentially, the code as it stands is default-fail and it would be nice to make it be default-succeed in the presence of new ops. Or is the addition of new ops rare enough that this doesn't matter? Multiop submitted to non-leader always fails due to timeout --- Key: ZOOKEEPER-1124 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1124 Project: ZooKeeper Issue Type: Bug Components: server Affects Versions: 3.4.0 Environment: all Reporter: Marshall McMullen Priority: Critical Fix For: 3.4.0 Attachments: multi-non-observer.patch The new Multiop support added under zookeeper-965 fails every single time if the multiop is submitted to a non-leader in quorum mode. In standalone mode it always works properly and this bug only presents itself in quorum mode (with 2 or more nodes). After 12 hours of debugging (*sigh*) it turns out to be a really simple fix. There are a couple of missing case statements inside FollowerRequestProcessor.java and ObserverRequestProcessor.java to ensure that multiop is forwarded to the leader for commit. I've attached a patch that fixes this problem. It's probably worth nothing that zookeeper-965 has already been committed to trunk. But this is a fatal flaw that will prevent multiop support from working properly and as such needs to get committed to 3.4.0 as well. Is there a way to tie these two cases together in some way? -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-1124) Multiop submitted to non-leader always fails due to timeout
[ https://issues.apache.org/jira/browse/ZOOKEEPER-1124?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13064683#comment-13064683 ] Ted Dunning commented on ZOOKEEPER-1124: Marshall, This fix is clearly important. Do you have any tests? The role of these tests is not just to verify this bug, but also to provide a prototype for any later implementors of new operations. Multiop submitted to non-leader always fails due to timeout --- Key: ZOOKEEPER-1124 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1124 Project: ZooKeeper Issue Type: Bug Components: server Affects Versions: 3.4.0 Environment: all Reporter: Marshall McMullen Priority: Critical Fix For: 3.4.0 Attachments: multi-non-observer.patch The new Multiop support added under zookeeper-965 fails every single time if the multiop is submitted to a non-leader in quorum mode. In standalone mode it always works properly and this bug only presents itself in quorum mode (with 2 or more nodes). After 12 hours of debugging (*sigh*) it turns out to be a really simple fix. There are a couple of missing case statements inside FollowerRequestProcessor.java and ObserverRequestProcessor.java to ensure that multiop is forwarded to the leader for commit. I've attached a patch that fixes this problem. It's probably worth nothing that zookeeper-965 has already been committed to trunk. But this is a fatal flaw that will prevent multiop support from working properly and as such needs to get committed to 3.4.0 as well. Is there a way to tie these two cases together in some way? -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (ZOOKEEPER-965) Need a multi-update command to allow multiple znodes to be updated safely
[ https://issues.apache.org/jira/browse/ZOOKEEPER-965?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ted Dunning updated ZOOKEEPER-965: -- Attachment: ZOOKEEPER-965.patch Final patch for committing Need a multi-update command to allow multiple znodes to be updated safely - Key: ZOOKEEPER-965 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-965 Project: ZooKeeper Issue Type: Bug Affects Versions: 3.3.3 Reporter: Ted Dunning Assignee: Ted Dunning Fix For: 3.4.0 Attachments: ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch The basic idea is to have a single method called multi that will accept a list of create, delete, update or check objects each of which has a desired version or file state in the case of create. If all of the version and existence constraints can be satisfied, then all updates will be done atomically. Two API styles have been suggested. One has a list as above and the other style has a Transaction that allows builder-like methods to build a set of updates and a commit method to finalize the transaction. This can trivially be reduced to the first kind of API so the list based API style should be considered the primitive and the builder style should be implemented as syntactic sugar. The total size of all the data in all updates and creates in a single transaction should be limited to 1MB. Implementation-wise this capability can be done using standard ZK internals. The changes include: - update to ZK clients to all the new call - additional wire level request - on the server, in the code that converts transactions to idempotent form, the code should be slightly extended to convert a list of operations to idempotent form. - on the client, a down-rev server that rejects the multi-update should be detected gracefully and an informative exception should be thrown. To facilitate shared development, I have established a github repository at https://github.com/tdunning/zookeeper and am happy to extend committer status to anyone who agrees to donate their code back to Apache. The final patch will be attached to this bug as normal. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-1064) Startup script needs more LSB compatability
[ https://issues.apache.org/jira/browse/ZOOKEEPER-1064?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13053563#comment-13053563 ] Ted Dunning commented on ZOOKEEPER-1064: Awesome! Startup script needs more LSB compatability --- Key: ZOOKEEPER-1064 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1064 Project: ZooKeeper Issue Type: Bug Affects Versions: 3.3.2 Reporter: Ted Dunning Fix For: 3.2.3, 3.3.3, 3.3.4 The zkServer.sh script kind of sort of implements the standard init.d style of interaction. It lacks - nice return codes - status method - standard output messages See http://refspecs.freestandards.org/LSB_3.1.0/LSB-Core-generic/LSB-Core-generic/iniscrptact.html and http://refspecs.freestandards.org/LSB_3.1.0/LSB-Core-generic/LSB-Core-generic/iniscrptfunc.html and http://wiki.debian.org/LSBInitScripts It is an open question how much zkServer should use these LSB scripts because that may impair portability. I think it should produce similar messages, however, and should return standardized error codes. If lsb functions are available, I think that they should be used so that ZK works as a first class citizen. I will produce a proposed patch. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-965) Need a multi-update command to allow multiple znodes to be updated safely
[ https://issues.apache.org/jira/browse/ZOOKEEPER-965?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13052703#comment-13052703 ] Ted Dunning commented on ZOOKEEPER-965: --- Pushed to github. Need a multi-update command to allow multiple znodes to be updated safely - Key: ZOOKEEPER-965 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-965 Project: ZooKeeper Issue Type: Bug Affects Versions: 3.3.3 Reporter: Ted Dunning Assignee: Ted Dunning Fix For: 3.4.0 Attachments: ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch The basic idea is to have a single method called multi that will accept a list of create, delete, update or check objects each of which has a desired version or file state in the case of create. If all of the version and existence constraints can be satisfied, then all updates will be done atomically. Two API styles have been suggested. One has a list as above and the other style has a Transaction that allows builder-like methods to build a set of updates and a commit method to finalize the transaction. This can trivially be reduced to the first kind of API so the list based API style should be considered the primitive and the builder style should be implemented as syntactic sugar. The total size of all the data in all updates and creates in a single transaction should be limited to 1MB. Implementation-wise this capability can be done using standard ZK internals. The changes include: - update to ZK clients to all the new call - additional wire level request - on the server, in the code that converts transactions to idempotent form, the code should be slightly extended to convert a list of operations to idempotent form. - on the client, a down-rev server that rejects the multi-update should be detected gracefully and an informative exception should be thrown. To facilitate shared development, I have established a github repository at https://github.com/tdunning/zookeeper and am happy to extend committer status to anyone who agrees to donate their code back to Apache. The final patch will be attached to this bug as normal. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Created] (ZOOKEEPER-1102) Need update for programmer manual to cover multi operation
Need update for programmer manual to cover multi operation -- Key: ZOOKEEPER-1102 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1102 Project: ZooKeeper Issue Type: Bug Reporter: Ted Dunning The new multi operation is undocumented as yet. Clearly it needs some doc to cover: 1) the basic syntax 2) java code sample 3) C code sample -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-965) Need a multi-update command to allow multiple znodes to be updated safely
[ https://issues.apache.org/jira/browse/ZOOKEEPER-965?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13052715#comment-13052715 ] Ted Dunning commented on ZOOKEEPER-965: --- Done. See ZOOKEEPER-1102 On Tue, Jun 21, 2011 at 7:49 PM, Marshall McMullen (JIRA) Need a multi-update command to allow multiple znodes to be updated safely - Key: ZOOKEEPER-965 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-965 Project: ZooKeeper Issue Type: Bug Affects Versions: 3.3.3 Reporter: Ted Dunning Assignee: Ted Dunning Fix For: 3.4.0 Attachments: ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch The basic idea is to have a single method called multi that will accept a list of create, delete, update or check objects each of which has a desired version or file state in the case of create. If all of the version and existence constraints can be satisfied, then all updates will be done atomically. Two API styles have been suggested. One has a list as above and the other style has a Transaction that allows builder-like methods to build a set of updates and a commit method to finalize the transaction. This can trivially be reduced to the first kind of API so the list based API style should be considered the primitive and the builder style should be implemented as syntactic sugar. The total size of all the data in all updates and creates in a single transaction should be limited to 1MB. Implementation-wise this capability can be done using standard ZK internals. The changes include: - update to ZK clients to all the new call - additional wire level request - on the server, in the code that converts transactions to idempotent form, the code should be slightly extended to convert a list of operations to idempotent form. - on the client, a down-rev server that rejects the multi-update should be detected gracefully and an informative exception should be thrown. To facilitate shared development, I have established a github repository at https://github.com/tdunning/zookeeper and am happy to extend committer status to anyone who agrees to donate their code back to Apache. The final patch will be attached to this bug as normal. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-965) Need a multi-update command to allow multiple znodes to be updated safely
[ https://issues.apache.org/jira/browse/ZOOKEEPER-965?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13052730#comment-13052730 ] Ted Dunning commented on ZOOKEEPER-965: --- My tests completed successfully. On Tue, Jun 21, 2011 at 7:57 PM, Marshall McMullen (JIRA) Need a multi-update command to allow multiple znodes to be updated safely - Key: ZOOKEEPER-965 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-965 Project: ZooKeeper Issue Type: Bug Affects Versions: 3.3.3 Reporter: Ted Dunning Assignee: Ted Dunning Fix For: 3.4.0 Attachments: ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch The basic idea is to have a single method called multi that will accept a list of create, delete, update or check objects each of which has a desired version or file state in the case of create. If all of the version and existence constraints can be satisfied, then all updates will be done atomically. Two API styles have been suggested. One has a list as above and the other style has a Transaction that allows builder-like methods to build a set of updates and a commit method to finalize the transaction. This can trivially be reduced to the first kind of API so the list based API style should be considered the primitive and the builder style should be implemented as syntactic sugar. The total size of all the data in all updates and creates in a single transaction should be limited to 1MB. Implementation-wise this capability can be done using standard ZK internals. The changes include: - update to ZK clients to all the new call - additional wire level request - on the server, in the code that converts transactions to idempotent form, the code should be slightly extended to convert a list of operations to idempotent form. - on the client, a down-rev server that rejects the multi-update should be detected gracefully and an informative exception should be thrown. To facilitate shared development, I have established a github repository at https://github.com/tdunning/zookeeper and am happy to extend committer status to anyone who agrees to donate their code back to Apache. The final patch will be attached to this bug as normal. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-965) Need a multi-update command to allow multiple znodes to be updated safely
[ https://issues.apache.org/jira/browse/ZOOKEEPER-965?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13049669#comment-13049669 ] Ted Dunning commented on ZOOKEEPER-965: --- I can take a quick look, but I am having trouble getting reliable net access. On Wed, Jun 15, 2011 at 6:29 AM, Marshall McMullen (JIRA) Need a multi-update command to allow multiple znodes to be updated safely - Key: ZOOKEEPER-965 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-965 Project: ZooKeeper Issue Type: Bug Affects Versions: 3.3.3 Reporter: Ted Dunning Assignee: Ted Dunning Fix For: 3.4.0 Attachments: ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch The basic idea is to have a single method called multi that will accept a list of create, delete, update or check objects each of which has a desired version or file state in the case of create. If all of the version and existence constraints can be satisfied, then all updates will be done atomically. Two API styles have been suggested. One has a list as above and the other style has a Transaction that allows builder-like methods to build a set of updates and a commit method to finalize the transaction. This can trivially be reduced to the first kind of API so the list based API style should be considered the primitive and the builder style should be implemented as syntactic sugar. The total size of all the data in all updates and creates in a single transaction should be limited to 1MB. Implementation-wise this capability can be done using standard ZK internals. The changes include: - update to ZK clients to all the new call - additional wire level request - on the server, in the code that converts transactions to idempotent form, the code should be slightly extended to convert a list of operations to idempotent form. - on the client, a down-rev server that rejects the multi-update should be detected gracefully and an informative exception should be thrown. To facilitate shared development, I have established a github repository at https://github.com/tdunning/zookeeper and am happy to extend committer status to anyone who agrees to donate their code back to Apache. The final patch will be attached to this bug as normal. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-965) Need a multi-update command to allow multiple znodes to be updated safely
[ https://issues.apache.org/jira/browse/ZOOKEEPER-965?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13049670#comment-13049670 ] Ted Dunning commented on ZOOKEEPER-965: --- OK. As a first step, I rebased our changes to current trunk. This will require the usual recheckout due to non-fast-forward operations. Now to the problems you are seeing. Need a multi-update command to allow multiple znodes to be updated safely - Key: ZOOKEEPER-965 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-965 Project: ZooKeeper Issue Type: Bug Affects Versions: 3.3.3 Reporter: Ted Dunning Assignee: Ted Dunning Fix For: 3.4.0 Attachments: ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch The basic idea is to have a single method called multi that will accept a list of create, delete, update or check objects each of which has a desired version or file state in the case of create. If all of the version and existence constraints can be satisfied, then all updates will be done atomically. Two API styles have been suggested. One has a list as above and the other style has a Transaction that allows builder-like methods to build a set of updates and a commit method to finalize the transaction. This can trivially be reduced to the first kind of API so the list based API style should be considered the primitive and the builder style should be implemented as syntactic sugar. The total size of all the data in all updates and creates in a single transaction should be limited to 1MB. Implementation-wise this capability can be done using standard ZK internals. The changes include: - update to ZK clients to all the new call - additional wire level request - on the server, in the code that converts transactions to idempotent form, the code should be slightly extended to convert a list of operations to idempotent form. - on the client, a down-rev server that rejects the multi-update should be detected gracefully and an informative exception should be thrown. To facilitate shared development, I have established a github repository at https://github.com/tdunning/zookeeper and am happy to extend committer status to anyone who agrees to donate their code back to Apache. The final patch will be attached to this bug as normal. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-965) Need a multi-update command to allow multiple znodes to be updated safely
[ https://issues.apache.org/jira/browse/ZOOKEEPER-965?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13049673#comment-13049673 ] Ted Dunning commented on ZOOKEEPER-965: --- I see a clean compile on my mac. Looks like I don't understand the problem. I can't run all the tests just now, but last time I looked they ran. BuzzBook-Pro:zookeeper[trunk*]$ git checkout multi Switched to branch 'multi' BuzzBook-Pro:zookeeper[multi*]$ ant clean Buildfile: /Users/tdunning/Apache/zookeeper/build.xml ... clean: BUILD SUCCESSFUL Total time: 0 seconds BuzzBook-Pro:zookeeper[multi*]$ ant compile ... version-info: [java] Unknown REVISION number, using -1 ... [javac] Compiling 52 source files to /Users/tdunning/Apache/zookeeper/build/classes ... [javac] Compiling 134 source files to /Users/tdunning/Apache/zookeeper/build/classes BUILD SUCCESSFUL Total time: 11 seconds BuzzBook-Pro:zookeeper[multi*]$ On Wed, Jun 15, 2011 at 10:01 AM, Ted Dunning (JIRA) j...@apache.org https://issues.apache.org/jira/browse/ZOOKEEPER-965?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13049670#comment-13049670] ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch a list of create, delete, update or check objects each of which has a desired version or file state in the case of create. If all of the version and existence constraints can be satisfied, then all updates will be done atomically. other style has a Transaction that allows builder-like methods to build a set of updates and a commit method to finalize the transaction. This can trivially be reduced to the first kind of API so the list based API style should be considered the primitive and the builder style should be implemented as syntactic sugar. transaction should be limited to 1MB. internals. The changes include: form, the code should be slightly extended to convert a list of operations to idempotent form. be detected gracefully and an informative exception should be thrown. at https://github.com/tdunning/zookeeper and am happy to extend committer status to anyone who agrees to donate their code back to Apache. The final patch will be attached to this bug as normal. Need a multi-update command to allow multiple znodes to be updated safely - Key: ZOOKEEPER-965 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-965 Project: ZooKeeper Issue Type: Bug Affects Versions: 3.3.3 Reporter: Ted Dunning Assignee: Ted Dunning Fix For: 3.4.0 Attachments: ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch The basic idea is to have a single method called multi that will accept a list of create, delete, update or check objects each of which has a desired version or file state in the case of create. If all of the version and existence constraints can be satisfied, then all updates will be done atomically. Two API styles have been suggested. One has a list as above and the other style has a Transaction that allows builder-like methods to build a set of updates and a commit method to finalize the transaction. This can trivially be reduced to the first kind of API so the list based API style should be considered the primitive and the builder style should be implemented as syntactic sugar. The total size of all the data in all updates and creates in a single transaction should be limited to 1MB. Implementation-wise this capability can be done using standard ZK internals. The changes include: - update to ZK clients to all the new call - additional wire level request - on the server, in the code that converts transactions to idempotent form, the code should be slightly extended to convert a list of operations to idempotent form. - on the client, a down-rev server that rejects the multi-update should be detected gracefully and an informative exception should be thrown. To facilitate shared development, I have established a github repository at https://github.com/tdunning/zookeeper and am happy to extend committer status to anyone who agrees to donate their code back to Apache
[jira] [Commented] (ZOOKEEPER-965) Need a multi-update command to allow multiple znodes to be updated safely
[ https://issues.apache.org/jira/browse/ZOOKEEPER-965?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13049953#comment-13049953 ] Ted Dunning commented on ZOOKEEPER-965: --- Ahhh... no. I didn't notice that. I will take a look. On Wed, Jun 15, 2011 at 4:45 PM, Marshall McMullen (JIRA) Need a multi-update command to allow multiple znodes to be updated safely - Key: ZOOKEEPER-965 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-965 Project: ZooKeeper Issue Type: Bug Affects Versions: 3.3.3 Reporter: Ted Dunning Assignee: Ted Dunning Fix For: 3.4.0 Attachments: ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch The basic idea is to have a single method called multi that will accept a list of create, delete, update or check objects each of which has a desired version or file state in the case of create. If all of the version and existence constraints can be satisfied, then all updates will be done atomically. Two API styles have been suggested. One has a list as above and the other style has a Transaction that allows builder-like methods to build a set of updates and a commit method to finalize the transaction. This can trivially be reduced to the first kind of API so the list based API style should be considered the primitive and the builder style should be implemented as syntactic sugar. The total size of all the data in all updates and creates in a single transaction should be limited to 1MB. Implementation-wise this capability can be done using standard ZK internals. The changes include: - update to ZK clients to all the new call - additional wire level request - on the server, in the code that converts transactions to idempotent form, the code should be slightly extended to convert a list of operations to idempotent form. - on the client, a down-rev server that rejects the multi-update should be detected gracefully and an informative exception should be thrown. To facilitate shared development, I have established a github repository at https://github.com/tdunning/zookeeper and am happy to extend committer status to anyone who agrees to donate their code back to Apache. The final patch will be attached to this bug as normal. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-965) Need a multi-update command to allow multiple znodes to be updated safely
[ https://issues.apache.org/jira/browse/ZOOKEEPER-965?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13049955#comment-13049955 ] Ted Dunning commented on ZOOKEEPER-965: --- Marshall, I just tried with and without your patch. It compiles either way. My feeling is that excessive throws declarations are bad juju anyway so the current state (with your change) is better than the previous state (with the extra throws in processTxn). I would leave it as is. Need a multi-update command to allow multiple znodes to be updated safely - Key: ZOOKEEPER-965 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-965 Project: ZooKeeper Issue Type: Bug Affects Versions: 3.3.3 Reporter: Ted Dunning Assignee: Ted Dunning Fix For: 3.4.0 Attachments: ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch The basic idea is to have a single method called multi that will accept a list of create, delete, update or check objects each of which has a desired version or file state in the case of create. If all of the version and existence constraints can be satisfied, then all updates will be done atomically. Two API styles have been suggested. One has a list as above and the other style has a Transaction that allows builder-like methods to build a set of updates and a commit method to finalize the transaction. This can trivially be reduced to the first kind of API so the list based API style should be considered the primitive and the builder style should be implemented as syntactic sugar. The total size of all the data in all updates and creates in a single transaction should be limited to 1MB. Implementation-wise this capability can be done using standard ZK internals. The changes include: - update to ZK clients to all the new call - additional wire level request - on the server, in the code that converts transactions to idempotent form, the code should be slightly extended to convert a list of operations to idempotent form. - on the client, a down-rev server that rejects the multi-update should be detected gracefully and an informative exception should be thrown. To facilitate shared development, I have established a github repository at https://github.com/tdunning/zookeeper and am happy to extend committer status to anyone who agrees to donate their code back to Apache. The final patch will be attached to this bug as normal. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-965) Need a multi-update command to allow multiple znodes to be updated safely
[ https://issues.apache.org/jira/browse/ZOOKEEPER-965?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13045799#comment-13045799 ] Ted Dunning commented on ZOOKEEPER-965: --- I just integrated changes to trunk (ZOOKEEPER-1069) and rebased the github. This also picked up some small changes I made to the API to get results from the exception. Marshall, can you say if you are happy about the API change in 5ce6043f4 ? I have pushed the rebase to github so everybody will have to pull from scratch to make sure that they get the right history. I will also attach the patch for this right now. Need a multi-update command to allow multiple znodes to be updated safely - Key: ZOOKEEPER-965 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-965 Project: ZooKeeper Issue Type: Bug Affects Versions: 3.3.3 Reporter: Ted Dunning Assignee: Ted Dunning Fix For: 3.4.0 Attachments: ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch The basic idea is to have a single method called multi that will accept a list of create, delete, update or check objects each of which has a desired version or file state in the case of create. If all of the version and existence constraints can be satisfied, then all updates will be done atomically. Two API styles have been suggested. One has a list as above and the other style has a Transaction that allows builder-like methods to build a set of updates and a commit method to finalize the transaction. This can trivially be reduced to the first kind of API so the list based API style should be considered the primitive and the builder style should be implemented as syntactic sugar. The total size of all the data in all updates and creates in a single transaction should be limited to 1MB. Implementation-wise this capability can be done using standard ZK internals. The changes include: - update to ZK clients to all the new call - additional wire level request - on the server, in the code that converts transactions to idempotent form, the code should be slightly extended to convert a list of operations to idempotent form. - on the client, a down-rev server that rejects the multi-update should be detected gracefully and an informative exception should be thrown. To facilitate shared development, I have established a github repository at https://github.com/tdunning/zookeeper and am happy to extend committer status to anyone who agrees to donate their code back to Apache. The final patch will be attached to this bug as normal. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-965) Need a multi-update command to allow multiple znodes to be updated safely
[ https://issues.apache.org/jira/browse/ZOOKEEPER-965?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13044991#comment-13044991 ] Ted Dunning commented on ZOOKEEPER-965: --- The jute-ly issue can only be corrected by cut-and-paste coding on the jute definitions. Putting the message into jute will involve replicating a union of the fields in the sub-fields. With ZK's history of wire compatibility, that probably isn't a big deal. On Mon, Jun 6, 2011 at 10:56 AM, Marshall McMullen (JIRA) Need a multi-update command to allow multiple znodes to be updated safely - Key: ZOOKEEPER-965 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-965 Project: ZooKeeper Issue Type: Bug Affects Versions: 3.3.3 Reporter: Ted Dunning Assignee: Ted Dunning Fix For: 3.4.0 Attachments: ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch The basic idea is to have a single method called multi that will accept a list of create, delete, update or check objects each of which has a desired version or file state in the case of create. If all of the version and existence constraints can be satisfied, then all updates will be done atomically. Two API styles have been suggested. One has a list as above and the other style has a Transaction that allows builder-like methods to build a set of updates and a commit method to finalize the transaction. This can trivially be reduced to the first kind of API so the list based API style should be considered the primitive and the builder style should be implemented as syntactic sugar. The total size of all the data in all updates and creates in a single transaction should be limited to 1MB. Implementation-wise this capability can be done using standard ZK internals. The changes include: - update to ZK clients to all the new call - additional wire level request - on the server, in the code that converts transactions to idempotent form, the code should be slightly extended to convert a list of operations to idempotent form. - on the client, a down-rev server that rejects the multi-update should be detected gracefully and an informative exception should be thrown. To facilitate shared development, I have established a github repository at https://github.com/tdunning/zookeeper and am happy to extend committer status to anyone who agrees to donate their code back to Apache. The final patch will be attached to this bug as normal. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-965) Need a multi-update command to allow multiple znodes to be updated safely
[ https://issues.apache.org/jira/browse/ZOOKEEPER-965?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13041733#comment-13041733 ] Ted Dunning commented on ZOOKEEPER-965: --- {quote} I don't see any corresponding changes in FileTxnSnapLog {quote} Of course, you are correct here. The individual operations in a multi work exactly like the individual operations. Unless we somehow inherit the right behavior, your change will need to be replicated. I won't get to this for a day or two. Would it be possible for you to drop this change in on the github version? Need a multi-update command to allow multiple znodes to be updated safely - Key: ZOOKEEPER-965 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-965 Project: ZooKeeper Issue Type: Bug Affects Versions: 3.3.3 Reporter: Ted Dunning Assignee: Ted Dunning Fix For: 3.4.0 Attachments: ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch The basic idea is to have a single method called multi that will accept a list of create, delete, update or check objects each of which has a desired version or file state in the case of create. If all of the version and existence constraints can be satisfied, then all updates will be done atomically. Two API styles have been suggested. One has a list as above and the other style has a Transaction that allows builder-like methods to build a set of updates and a commit method to finalize the transaction. This can trivially be reduced to the first kind of API so the list based API style should be considered the primitive and the builder style should be implemented as syntactic sugar. The total size of all the data in all updates and creates in a single transaction should be limited to 1MB. Implementation-wise this capability can be done using standard ZK internals. The changes include: - update to ZK clients to all the new call - additional wire level request - on the server, in the code that converts transactions to idempotent form, the code should be slightly extended to convert a list of operations to idempotent form. - on the client, a down-rev server that rejects the multi-update should be detected gracefully and an informative exception should be thrown. To facilitate shared development, I have established a github repository at https://github.com/tdunning/zookeeper and am happy to extend committer status to anyone who agrees to donate their code back to Apache. The final patch will be attached to this bug as normal. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (ZOOKEEPER-965) Need a multi-update command to allow multiple znodes to be updated safely
[ https://issues.apache.org/jira/browse/ZOOKEEPER-965?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ted Dunning updated ZOOKEEPER-965: -- Attachment: ZOOKEEPER-965.patch Updated to track trunk Need a multi-update command to allow multiple znodes to be updated safely - Key: ZOOKEEPER-965 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-965 Project: ZooKeeper Issue Type: Bug Affects Versions: 3.3.3 Reporter: Ted Dunning Assignee: Ted Dunning Fix For: 3.4.0 Attachments: ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch The basic idea is to have a single method called multi that will accept a list of create, delete, update or check objects each of which has a desired version or file state in the case of create. If all of the version and existence constraints can be satisfied, then all updates will be done atomically. Two API styles have been suggested. One has a list as above and the other style has a Transaction that allows builder-like methods to build a set of updates and a commit method to finalize the transaction. This can trivially be reduced to the first kind of API so the list based API style should be considered the primitive and the builder style should be implemented as syntactic sugar. The total size of all the data in all updates and creates in a single transaction should be limited to 1MB. Implementation-wise this capability can be done using standard ZK internals. The changes include: - update to ZK clients to all the new call - additional wire level request - on the server, in the code that converts transactions to idempotent form, the code should be slightly extended to convert a list of operations to idempotent form. - on the client, a down-rev server that rejects the multi-update should be detected gracefully and an informative exception should be thrown. To facilitate shared development, I have established a github repository at https://github.com/tdunning/zookeeper and am happy to extend committer status to anyone who agrees to donate their code back to Apache. The final patch will be attached to this bug as normal. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (ZOOKEEPER-965) Need a multi-update command to allow multiple znodes to be updated safely
[ https://issues.apache.org/jira/browse/ZOOKEEPER-965?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ted Dunning updated ZOOKEEPER-965: -- Attachment: ZOOKEEPER-965.patch Rebased patch to current trunk. Note that there were several conflicts in the merge. The most important was in src/java/main/org/apache/zookeeper/server/DataTree.java around line 891. The conflict was versus changes introduced by ZOOKEEPER-1046 Camille, if you can, could you check that my merge preserved your fix? Need a multi-update command to allow multiple znodes to be updated safely - Key: ZOOKEEPER-965 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-965 Project: ZooKeeper Issue Type: Bug Affects Versions: 3.3.3 Reporter: Ted Dunning Assignee: Ted Dunning Fix For: 3.4.0 Attachments: ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch The basic idea is to have a single method called multi that will accept a list of create, delete, update or check objects each of which has a desired version or file state in the case of create. If all of the version and existence constraints can be satisfied, then all updates will be done atomically. Two API styles have been suggested. One has a list as above and the other style has a Transaction that allows builder-like methods to build a set of updates and a commit method to finalize the transaction. This can trivially be reduced to the first kind of API so the list based API style should be considered the primitive and the builder style should be implemented as syntactic sugar. The total size of all the data in all updates and creates in a single transaction should be limited to 1MB. Implementation-wise this capability can be done using standard ZK internals. The changes include: - update to ZK clients to all the new call - additional wire level request - on the server, in the code that converts transactions to idempotent form, the code should be slightly extended to convert a list of operations to idempotent form. - on the client, a down-rev server that rejects the multi-update should be detected gracefully and an informative exception should be thrown. To facilitate shared development, I have established a github repository at https://github.com/tdunning/zookeeper and am happy to extend committer status to anyone who agrees to donate their code back to Apache. The final patch will be attached to this bug as normal. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (ZOOKEEPER-965) Need a multi-update command to allow multiple znodes to be updated safely
[ https://issues.apache.org/jira/browse/ZOOKEEPER-965?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ted Dunning updated ZOOKEEPER-965: -- Attachment: ZOOKEEPER-965.patch Cut and paste error in resolving conflict. Need a multi-update command to allow multiple znodes to be updated safely - Key: ZOOKEEPER-965 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-965 Project: ZooKeeper Issue Type: Bug Affects Versions: 3.3.3 Reporter: Ted Dunning Assignee: Ted Dunning Fix For: 3.4.0 Attachments: ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch The basic idea is to have a single method called multi that will accept a list of create, delete, update or check objects each of which has a desired version or file state in the case of create. If all of the version and existence constraints can be satisfied, then all updates will be done atomically. Two API styles have been suggested. One has a list as above and the other style has a Transaction that allows builder-like methods to build a set of updates and a commit method to finalize the transaction. This can trivially be reduced to the first kind of API so the list based API style should be considered the primitive and the builder style should be implemented as syntactic sugar. The total size of all the data in all updates and creates in a single transaction should be limited to 1MB. Implementation-wise this capability can be done using standard ZK internals. The changes include: - update to ZK clients to all the new call - additional wire level request - on the server, in the code that converts transactions to idempotent form, the code should be slightly extended to convert a list of operations to idempotent form. - on the client, a down-rev server that rejects the multi-update should be detected gracefully and an informative exception should be thrown. To facilitate shared development, I have established a github repository at https://github.com/tdunning/zookeeper and am happy to extend committer status to anyone who agrees to donate their code back to Apache. The final patch will be attached to this bug as normal. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (ZOOKEEPER-965) Need a multi-update command to allow multiple znodes to be updated safely
[ https://issues.apache.org/jira/browse/ZOOKEEPER-965?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ted Dunning updated ZOOKEEPER-965: -- Attachment: ZOOKEEPER-965.patch Updated patch with Marshall's latest. Need a multi-update command to allow multiple znodes to be updated safely - Key: ZOOKEEPER-965 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-965 Project: ZooKeeper Issue Type: Bug Affects Versions: 3.3.3 Reporter: Ted Dunning Assignee: Ted Dunning Fix For: 3.4.0 Attachments: ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch The basic idea is to have a single method called multi that will accept a list of create, delete, update or check objects each of which has a desired version or file state in the case of create. If all of the version and existence constraints can be satisfied, then all updates will be done atomically. Two API styles have been suggested. One has a list as above and the other style has a Transaction that allows builder-like methods to build a set of updates and a commit method to finalize the transaction. This can trivially be reduced to the first kind of API so the list based API style should be considered the primitive and the builder style should be implemented as syntactic sugar. The total size of all the data in all updates and creates in a single transaction should be limited to 1MB. Implementation-wise this capability can be done using standard ZK internals. The changes include: - update to ZK clients to all the new call - additional wire level request - on the server, in the code that converts transactions to idempotent form, the code should be slightly extended to convert a list of operations to idempotent form. - on the client, a down-rev server that rejects the multi-update should be detected gracefully and an informative exception should be thrown. To facilitate shared development, I have established a github repository at https://github.com/tdunning/zookeeper and am happy to extend committer status to anyone who agrees to donate their code back to Apache. The final patch will be attached to this bug as normal. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-965) Need a multi-update command to allow multiple znodes to be updated safely
[ https://issues.apache.org/jira/browse/ZOOKEEPER-965?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13038656#comment-13038656 ] Ted Dunning commented on ZOOKEEPER-965: --- Marshall, After logging in as Patrick says, you also need to click on the number on the far left. That will pop up an overlay window that will let you type in your response. Or riposte as the case may be. If the replies are general rather than line by line, you can also just put them here. That can even be better. Need a multi-update command to allow multiple znodes to be updated safely - Key: ZOOKEEPER-965 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-965 Project: ZooKeeper Issue Type: Bug Affects Versions: 3.3.3 Reporter: Ted Dunning Assignee: Ted Dunning Fix For: 3.4.0 Attachments: ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch The basic idea is to have a single method called multi that will accept a list of create, delete, update or check objects each of which has a desired version or file state in the case of create. If all of the version and existence constraints can be satisfied, then all updates will be done atomically. Two API styles have been suggested. One has a list as above and the other style has a Transaction that allows builder-like methods to build a set of updates and a commit method to finalize the transaction. This can trivially be reduced to the first kind of API so the list based API style should be considered the primitive and the builder style should be implemented as syntactic sugar. The total size of all the data in all updates and creates in a single transaction should be limited to 1MB. Implementation-wise this capability can be done using standard ZK internals. The changes include: - update to ZK clients to all the new call - additional wire level request - on the server, in the code that converts transactions to idempotent form, the code should be slightly extended to convert a list of operations to idempotent form. - on the client, a down-rev server that rejects the multi-update should be detected gracefully and an informative exception should be thrown. To facilitate shared development, I have established a github repository at https://github.com/tdunning/zookeeper and am happy to extend committer status to anyone who agrees to donate their code back to Apache. The final patch will be attached to this bug as normal. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-965) Need a multi-update command to allow multiple znodes to be updated safely
[ https://issues.apache.org/jira/browse/ZOOKEEPER-965?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13035792#comment-13035792 ] Ted Dunning commented on ZOOKEEPER-965: --- Patch will be updated shortly. I will also update reviewboard if I hear from somebody that this will not damage ongoing reviews. Also, the private branch mentioned below is available to anyone at https://github.com/tdunning/zookeeper On Wed, May 18, 2011 at 12:56 PM, Marshall McMullen (JIRA) Need a multi-update command to allow multiple znodes to be updated safely - Key: ZOOKEEPER-965 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-965 Project: ZooKeeper Issue Type: Bug Affects Versions: 3.3.3 Reporter: Ted Dunning Assignee: Ted Dunning Fix For: 3.4.0 Attachments: ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch The basic idea is to have a single method called multi that will accept a list of create, delete, update or check objects each of which has a desired version or file state in the case of create. If all of the version and existence constraints can be satisfied, then all updates will be done atomically. Two API styles have been suggested. One has a list as above and the other style has a Transaction that allows builder-like methods to build a set of updates and a commit method to finalize the transaction. This can trivially be reduced to the first kind of API so the list based API style should be considered the primitive and the builder style should be implemented as syntactic sugar. The total size of all the data in all updates and creates in a single transaction should be limited to 1MB. Implementation-wise this capability can be done using standard ZK internals. The changes include: - update to ZK clients to all the new call - additional wire level request - on the server, in the code that converts transactions to idempotent form, the code should be slightly extended to convert a list of operations to idempotent form. - on the client, a down-rev server that rejects the multi-update should be detected gracefully and an informative exception should be thrown. To facilitate shared development, I have established a github repository at https://github.com/tdunning/zookeeper and am happy to extend committer status to anyone who agrees to donate their code back to Apache. The final patch will be attached to this bug as normal. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Created] (ZOOKEEPER-1064) Startup script needs more LSB compatability
Startup script needs more LSB compatability --- Key: ZOOKEEPER-1064 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1064 Project: ZooKeeper Issue Type: Bug Affects Versions: 3.3.2 Reporter: Ted Dunning Fix For: 3.2.3, 3.3.3, 3.3.4 The zkServer.sh script kind of sort of implements the standard init.d style of interaction. It lacks - nice return codes - status method - standard output messages See http://refspecs.freestandards.org/LSB_3.1.0/LSB-Core-generic/LSB-Core-generic/iniscrptact.html and http://refspecs.freestandards.org/LSB_3.1.0/LSB-Core-generic/LSB-Core-generic/iniscrptfunc.html and http://wiki.debian.org/LSBInitScripts It is an open question how much zkServer should use these LSB scripts because that may impair portability. I think it should produce similar messages, however, and should return standardized error codes. If lsb functions are available, I think that they should be used so that ZK works as a first class citizen. I will produce a proposed patch. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (ZOOKEEPER-965) Need a multi-update command to allow multiple znodes to be updated safely
[ https://issues.apache.org/jira/browse/ZOOKEEPER-965?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ted Dunning updated ZOOKEEPER-965: -- Attachment: ZOOKEEPER-965.patch Updated to trunk. Includes Marshall's latest naming tweaks. Need a multi-update command to allow multiple znodes to be updated safely - Key: ZOOKEEPER-965 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-965 Project: ZooKeeper Issue Type: Bug Affects Versions: 3.3.3 Reporter: Ted Dunning Assignee: Ted Dunning Fix For: 3.4.0 Attachments: ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch The basic idea is to have a single method called multi that will accept a list of create, delete, update or check objects each of which has a desired version or file state in the case of create. If all of the version and existence constraints can be satisfied, then all updates will be done atomically. Two API styles have been suggested. One has a list as above and the other style has a Transaction that allows builder-like methods to build a set of updates and a commit method to finalize the transaction. This can trivially be reduced to the first kind of API so the list based API style should be considered the primitive and the builder style should be implemented as syntactic sugar. The total size of all the data in all updates and creates in a single transaction should be limited to 1MB. Implementation-wise this capability can be done using standard ZK internals. The changes include: - update to ZK clients to all the new call - additional wire level request - on the server, in the code that converts transactions to idempotent form, the code should be slightly extended to convert a list of operations to idempotent form. - on the client, a down-rev server that rejects the multi-update should be detected gracefully and an informative exception should be thrown. To facilitate shared development, I have established a github repository at https://github.com/tdunning/zookeeper and am happy to extend committer status to anyone who agrees to donate their code back to Apache. The final patch will be attached to this bug as normal. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-965) Need a multi-update command to allow multiple znodes to be updated safely
[ https://issues.apache.org/jira/browse/ZOOKEEPER-965?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13035919#comment-13035919 ] Ted Dunning commented on ZOOKEEPER-965: --- Updated review board Need a multi-update command to allow multiple znodes to be updated safely - Key: ZOOKEEPER-965 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-965 Project: ZooKeeper Issue Type: Bug Affects Versions: 3.3.3 Reporter: Ted Dunning Assignee: Ted Dunning Fix For: 3.4.0 Attachments: ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch The basic idea is to have a single method called multi that will accept a list of create, delete, update or check objects each of which has a desired version or file state in the case of create. If all of the version and existence constraints can be satisfied, then all updates will be done atomically. Two API styles have been suggested. One has a list as above and the other style has a Transaction that allows builder-like methods to build a set of updates and a commit method to finalize the transaction. This can trivially be reduced to the first kind of API so the list based API style should be considered the primitive and the builder style should be implemented as syntactic sugar. The total size of all the data in all updates and creates in a single transaction should be limited to 1MB. Implementation-wise this capability can be done using standard ZK internals. The changes include: - update to ZK clients to all the new call - additional wire level request - on the server, in the code that converts transactions to idempotent form, the code should be slightly extended to convert a list of operations to idempotent form. - on the client, a down-rev server that rejects the multi-update should be detected gracefully and an informative exception should be thrown. To facilitate shared development, I have established a github repository at https://github.com/tdunning/zookeeper and am happy to extend committer status to anyone who agrees to donate their code back to Apache. The final patch will be attached to this bug as normal. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (ZOOKEEPER-965) Need a multi-update command to allow multiple znodes to be updated safely
[ https://issues.apache.org/jira/browse/ZOOKEEPER-965?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ted Dunning updated ZOOKEEPER-965: -- Attachment: ZOOKEEPER-965.patch Added some javadocs per request. Need a multi-update command to allow multiple znodes to be updated safely - Key: ZOOKEEPER-965 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-965 Project: ZooKeeper Issue Type: Bug Affects Versions: 3.3.3 Reporter: Ted Dunning Assignee: Ted Dunning Fix For: 3.4.0 Attachments: ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch The basic idea is to have a single method called multi that will accept a list of create, delete, update or check objects each of which has a desired version or file state in the case of create. If all of the version and existence constraints can be satisfied, then all updates will be done atomically. Two API styles have been suggested. One has a list as above and the other style has a Transaction that allows builder-like methods to build a set of updates and a commit method to finalize the transaction. This can trivially be reduced to the first kind of API so the list based API style should be considered the primitive and the builder style should be implemented as syntactic sugar. The total size of all the data in all updates and creates in a single transaction should be limited to 1MB. Implementation-wise this capability can be done using standard ZK internals. The changes include: - update to ZK clients to all the new call - additional wire level request - on the server, in the code that converts transactions to idempotent form, the code should be slightly extended to convert a list of operations to idempotent form. - on the client, a down-rev server that rejects the multi-update should be detected gracefully and an informative exception should be thrown. To facilitate shared development, I have established a github repository at https://github.com/tdunning/zookeeper and am happy to extend committer status to anyone who agrees to donate their code back to Apache. The final patch will be attached to this bug as normal. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-965) Need a multi-update command to allow multiple znodes to be updated safely
[ https://issues.apache.org/jira/browse/ZOOKEEPER-965?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13033654#comment-13033654 ] Ted Dunning commented on ZOOKEEPER-965: --- Great. I will use this as an excuse to jump on the problem with the patch again. On Sat, May 14, 2011 at 8:09 PM, Marshall McMullen (JIRA) Need a multi-update command to allow multiple znodes to be updated safely - Key: ZOOKEEPER-965 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-965 Project: ZooKeeper Issue Type: Bug Affects Versions: 3.3.3 Reporter: Ted Dunning Assignee: Ted Dunning Fix For: 3.4.0 Attachments: ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch The basic idea is to have a single method called multi that will accept a list of create, delete, update or check objects each of which has a desired version or file state in the case of create. If all of the version and existence constraints can be satisfied, then all updates will be done atomically. Two API styles have been suggested. One has a list as above and the other style has a Transaction that allows builder-like methods to build a set of updates and a commit method to finalize the transaction. This can trivially be reduced to the first kind of API so the list based API style should be considered the primitive and the builder style should be implemented as syntactic sugar. The total size of all the data in all updates and creates in a single transaction should be limited to 1MB. Implementation-wise this capability can be done using standard ZK internals. The changes include: - update to ZK clients to all the new call - additional wire level request - on the server, in the code that converts transactions to idempotent form, the code should be slightly extended to convert a list of operations to idempotent form. - on the client, a down-rev server that rejects the multi-update should be detected gracefully and an informative exception should be thrown. To facilitate shared development, I have established a github repository at https://github.com/tdunning/zookeeper and am happy to extend committer status to anyone who agrees to donate their code back to Apache. The final patch will be attached to this bug as normal. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (ZOOKEEPER-965) Need a multi-update command to allow multiple znodes to be updated safely
[ https://issues.apache.org/jira/browse/ZOOKEEPER-965?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ted Dunning updated ZOOKEEPER-965: -- Attachment: ZOOKEEPER-965.patch Name changes in the C code only. Need a multi-update command to allow multiple znodes to be updated safely - Key: ZOOKEEPER-965 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-965 Project: ZooKeeper Issue Type: Bug Affects Versions: 3.3.3 Reporter: Ted Dunning Assignee: Ted Dunning Fix For: 3.4.0 Attachments: ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch The basic idea is to have a single method called multi that will accept a list of create, delete, update or check objects each of which has a desired version or file state in the case of create. If all of the version and existence constraints can be satisfied, then all updates will be done atomically. Two API styles have been suggested. One has a list as above and the other style has a Transaction that allows builder-like methods to build a set of updates and a commit method to finalize the transaction. This can trivially be reduced to the first kind of API so the list based API style should be considered the primitive and the builder style should be implemented as syntactic sugar. The total size of all the data in all updates and creates in a single transaction should be limited to 1MB. Implementation-wise this capability can be done using standard ZK internals. The changes include: - update to ZK clients to all the new call - additional wire level request - on the server, in the code that converts transactions to idempotent form, the code should be slightly extended to convert a list of operations to idempotent form. - on the client, a down-rev server that rejects the multi-update should be detected gracefully and an informative exception should be thrown. To facilitate shared development, I have established a github repository at https://github.com/tdunning/zookeeper and am happy to extend committer status to anyone who agrees to donate their code back to Apache. The final patch will be attached to this bug as normal. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-965) Need a multi-update command to allow multiple znodes to be updated safely
[ https://issues.apache.org/jira/browse/ZOOKEEPER-965?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13033163#comment-13033163 ] Ted Dunning commented on ZOOKEEPER-965: --- I will take a look. It is likely the prefix issue. Need a multi-update command to allow multiple znodes to be updated safely - Key: ZOOKEEPER-965 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-965 Project: ZooKeeper Issue Type: Bug Affects Versions: 3.3.3 Reporter: Ted Dunning Assignee: Ted Dunning Fix For: 3.4.0 Attachments: ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch The basic idea is to have a single method called multi that will accept a list of create, delete, update or check objects each of which has a desired version or file state in the case of create. If all of the version and existence constraints can be satisfied, then all updates will be done atomically. Two API styles have been suggested. One has a list as above and the other style has a Transaction that allows builder-like methods to build a set of updates and a commit method to finalize the transaction. This can trivially be reduced to the first kind of API so the list based API style should be considered the primitive and the builder style should be implemented as syntactic sugar. The total size of all the data in all updates and creates in a single transaction should be limited to 1MB. Implementation-wise this capability can be done using standard ZK internals. The changes include: - update to ZK clients to all the new call - additional wire level request - on the server, in the code that converts transactions to idempotent form, the code should be slightly extended to convert a list of operations to idempotent form. - on the client, a down-rev server that rejects the multi-update should be detected gracefully and an informative exception should be thrown. To facilitate shared development, I have established a github repository at https://github.com/tdunning/zookeeper and am happy to extend committer status to anyone who agrees to donate their code back to Apache. The final patch will be attached to this bug as normal. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-1061) Zookeeper stop fails if start called twice
[ https://issues.apache.org/jira/browse/ZOOKEEPER-1061?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13033178#comment-13033178 ] Ted Dunning commented on ZOOKEEPER-1061: Any hope for a commit on this? Zookeeper stop fails if start called twice -- Key: ZOOKEEPER-1061 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1061 Project: ZooKeeper Issue Type: Bug Components: scripts Affects Versions: 3.3.2 Reporter: Ted Dunning Assignee: Ted Dunning Fix For: 3.3.3, 3.4.0 Attachments: ZOOKEEPER-1061.patch The zkServer.sh script doesn't check properly to see if a previously started server is still running. If you call start twice, the second invocation will over-write the PID file with a process that then fails due to port occupancy. This means that stop will subsequently fail. Here is a reference that describes how init scripts should normally work: http://refspecs.freestandards.org/LSB_3.1.0/LSB-Core-generic/LSB-Core-generic/iniscrptact.html -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-965) Need a multi-update command to allow multiple znodes to be updated safely
[ https://issues.apache.org/jira/browse/ZOOKEEPER-965?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13032647#comment-13032647 ] Ted Dunning commented on ZOOKEEPER-965: --- Stephen, Nice work on the code review. Marshall will have to comment on your points, but it is clear that you read the code well and deserve a stroke for that! Need a multi-update command to allow multiple znodes to be updated safely - Key: ZOOKEEPER-965 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-965 Project: ZooKeeper Issue Type: Bug Affects Versions: 3.3.3 Reporter: Ted Dunning Assignee: Ted Dunning Fix For: 3.4.0 Attachments: ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch The basic idea is to have a single method called multi that will accept a list of create, delete, update or check objects each of which has a desired version or file state in the case of create. If all of the version and existence constraints can be satisfied, then all updates will be done atomically. Two API styles have been suggested. One has a list as above and the other style has a Transaction that allows builder-like methods to build a set of updates and a commit method to finalize the transaction. This can trivially be reduced to the first kind of API so the list based API style should be considered the primitive and the builder style should be implemented as syntactic sugar. The total size of all the data in all updates and creates in a single transaction should be limited to 1MB. Implementation-wise this capability can be done using standard ZK internals. The changes include: - update to ZK clients to all the new call - additional wire level request - on the server, in the code that converts transactions to idempotent form, the code should be slightly extended to convert a list of operations to idempotent form. - on the client, a down-rev server that rejects the multi-update should be detected gracefully and an informative exception should be thrown. To facilitate shared development, I have established a github repository at https://github.com/tdunning/zookeeper and am happy to extend committer status to anyone who agrees to donate their code back to Apache. The final patch will be attached to this bug as normal. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Assigned] (ZOOKEEPER-1061) Zookeeper stop fails if start called twice
[ https://issues.apache.org/jira/browse/ZOOKEEPER-1061?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ted Dunning reassigned ZOOKEEPER-1061: -- Assignee: Ted Dunning Zookeeper stop fails if start called twice -- Key: ZOOKEEPER-1061 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1061 Project: ZooKeeper Issue Type: Bug Components: scripts Affects Versions: 3.3.2 Reporter: Ted Dunning Assignee: Ted Dunning Fix For: 3.3.3 The zkServer.sh script doesn't check properly to see if a previously started server is still running. If you call start twice, the second invocation will over-write the PID file with a process that then fails due to port occupancy. This means that stop will subsequently fail. Here is a reference that describes how init scripts should normally work: http://refspecs.freestandards.org/LSB_3.1.0/LSB-Core-generic/LSB-Core-generic/iniscrptact.html -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (ZOOKEEPER-1061) Zookeeper stop fails if start called twice
[ https://issues.apache.org/jira/browse/ZOOKEEPER-1061?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ted Dunning updated ZOOKEEPER-1061: --- Attachment: ZOOKEEPER-1061.patch Here is a patch that handles the double start and fixes up some exit values. Zookeeper stop fails if start called twice -- Key: ZOOKEEPER-1061 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1061 Project: ZooKeeper Issue Type: Bug Components: scripts Affects Versions: 3.3.2 Reporter: Ted Dunning Assignee: Ted Dunning Fix For: 3.3.3 Attachments: ZOOKEEPER-1061.patch The zkServer.sh script doesn't check properly to see if a previously started server is still running. If you call start twice, the second invocation will over-write the PID file with a process that then fails due to port occupancy. This means that stop will subsequently fail. Here is a reference that describes how init scripts should normally work: http://refspecs.freestandards.org/LSB_3.1.0/LSB-Core-generic/LSB-Core-generic/iniscrptact.html -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-1061) Zookeeper stop fails if start called twice
[ https://issues.apache.org/jira/browse/ZOOKEEPER-1061?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13031401#comment-13031401 ] Ted Dunning commented on ZOOKEEPER-1061: No unit tests are reasonably for these script-only changes. Here is a manual test. Without the fix, we see this mal-behavior: {code} tdunning@ted-desk:~/Apache/zookeeper$ sudo bin/zkServer.sh start JMX enabled by default Using config: /etc/zookeeper/zoo.cfg Starting zookeeper ... STARTED tdunning@ted-desk:~/Apache/zookeeper$ sudo jps 17610 QuorumPeerMain 17646 Jps tdunning@ted-desk:~/Apache/zookeeper$ sudo bin/zkServer.sh start JMX enabled by default Using config: /etc/zookeeper/zoo.cfg Starting zookeeper ... STARTED tdunning@ted-desk:~/Apache/zookeeper$ sudo jps 17685 Jps 17610 QuorumPeerMain tdunning@ted-desk:~/Apache/zookeeper$ sudo bin/zkServer.sh stop JMX enabled by default Using config: /etc/zookeeper/zoo.cfg Stopping zookeeper ... kill: 160: No such process STOPPED tdunning@ted-desk:~/Apache/zookeeper$ sudo jps 17730 Jps 17610 QuorumPeerMain {code} With the fix, I get this. {code} tdunning@ted-desk:~/Apache/zookeeper$ patch ZOOKEEPER-1061.patch patching file zkServer.sh # first start works tdunning@ted-desk:~/Apache/zookeeper$ sudo bin/zkServer.sh start JMX enabled by default Using config: /etc/zookeeper/zoo.cfg Starting zookeeper ... STARTED # second start fails with good message tdunning@ted-desk:~/Apache/zookeeper$ sudo bin/zkServer.sh start JMX enabled by default Using config: /etc/zookeeper/zoo.cfg Starting zookeeper ... already running as process 17928. # and this is persistent behavior tdunning@ted-desk:~/Apache/zookeeper$ sudo bin/zkServer.sh start JMX enabled by default Using config: /etc/zookeeper/zoo.cfg Starting zookeeper ... already running as process 17928. # stop now works tdunning@ted-desk:~/Apache/zookeeper$ sudo bin/zkServer.sh stop JMX enabled by default Using config: /etc/zookeeper/zoo.cfg Stopping zookeeper ... STOPPED # repeated stop works correctly tdunning@ted-desk:~/Apache/zookeeper$ sudo bin/zkServer.sh stop JMX enabled by default Using config: /etc/zookeeper/zoo.cfg Stopping zookeeper ... error: could not find file /var/zookeeper/zookeeper_server.pid # and start works again tdunning@ted-desk:~/Apache/zookeeper$ sudo bin/zkServer.sh start JMX enabled by default Using config: /etc/zookeeper/zoo.cfg Starting zookeeper ... STARTED # but can't be repeated tdunning@ted-desk:~/Apache/zookeeper$ sudo bin/zkServer.sh start JMX enabled by default Using config: /etc/zookeeper/zoo.cfg Starting zookeeper ... already running as process 18155. # running without proper permissions gives a different error tdunning@ted-desk:~/Apache/zookeeper$ bin/zkServer.sh start JMX enabled by default Using config: /etc/zookeeper/zoo.cfg Starting zookeeper ... bin/zkServer.sh: 169: cannot create /var/zookeeper/zookeeper_server.pid: Permission denied FAILED TO WRITE PID tdunning@ted-desk:~/Apache/zookeeper$ sudo bin/zkServer.sh stop JMX enabled by default Using config: /etc/zookeeper/zoo.cfg Stopping zookeeper ... STOPPED {code} Zookeeper stop fails if start called twice -- Key: ZOOKEEPER-1061 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1061 Project: ZooKeeper Issue Type: Bug Components: scripts Affects Versions: 3.3.2 Reporter: Ted Dunning Assignee: Ted Dunning Fix For: 3.3.3, 3.4.0 Attachments: ZOOKEEPER-1061.patch The zkServer.sh script doesn't check properly to see if a previously started server is still running. If you call start twice, the second invocation will over-write the PID file with a process that then fails due to port occupancy. This means that stop will subsequently fail. Here is a reference that describes how init scripts should normally work: http://refspecs.freestandards.org/LSB_3.1.0/LSB-Core-generic/LSB-Core-generic/iniscrptact.html -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (ZOOKEEPER-965) Need a multi-update command to allow multiple znodes to be updated safely
[ https://issues.apache.org/jira/browse/ZOOKEEPER-965?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ted Dunning updated ZOOKEEPER-965: -- Attachment: ZOOKEEPER-965.patch This is a WIP patch. Marshall says that he has a setData issue still that is giving a bit of pause. This is still a very good reference for review. Need a multi-update command to allow multiple znodes to be updated safely - Key: ZOOKEEPER-965 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-965 Project: ZooKeeper Issue Type: Bug Affects Versions: 3.3.3 Reporter: Ted Dunning Assignee: Ted Dunning Fix For: 3.4.0 Attachments: ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch The basic idea is to have a single method called multi that will accept a list of create, delete, update or check objects each of which has a desired version or file state in the case of create. If all of the version and existence constraints can be satisfied, then all updates will be done atomically. Two API styles have been suggested. One has a list as above and the other style has a Transaction that allows builder-like methods to build a set of updates and a commit method to finalize the transaction. This can trivially be reduced to the first kind of API so the list based API style should be considered the primitive and the builder style should be implemented as syntactic sugar. The total size of all the data in all updates and creates in a single transaction should be limited to 1MB. Implementation-wise this capability can be done using standard ZK internals. The changes include: - update to ZK clients to all the new call - additional wire level request - on the server, in the code that converts transactions to idempotent form, the code should be slightly extended to convert a list of operations to idempotent form. - on the client, a down-rev server that rejects the multi-update should be detected gracefully and an informative exception should be thrown. To facilitate shared development, I have established a github repository at https://github.com/tdunning/zookeeper and am happy to extend committer status to anyone who agrees to donate their code back to Apache. The final patch will be attached to this bug as normal. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (ZOOKEEPER-965) Need a multi-update command to allow multiple znodes to be updated safely
[ https://issues.apache.org/jira/browse/ZOOKEEPER-965?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ted Dunning updated ZOOKEEPER-965: -- Attachment: ZOOKEEPER-965.patch Here is Marshall's code in the form of an updated patch against trunk Need a multi-update command to allow multiple znodes to be updated safely - Key: ZOOKEEPER-965 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-965 Project: ZooKeeper Issue Type: Bug Affects Versions: 3.3.3 Reporter: Ted Dunning Assignee: Ted Dunning Fix For: 3.4.0 Attachments: ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch The basic idea is to have a single method called multi that will accept a list of create, delete, update or check objects each of which has a desired version or file state in the case of create. If all of the version and existence constraints can be satisfied, then all updates will be done atomically. Two API styles have been suggested. One has a list as above and the other style has a Transaction that allows builder-like methods to build a set of updates and a commit method to finalize the transaction. This can trivially be reduced to the first kind of API so the list based API style should be considered the primitive and the builder style should be implemented as syntactic sugar. The total size of all the data in all updates and creates in a single transaction should be limited to 1MB. Implementation-wise this capability can be done using standard ZK internals. The changes include: - update to ZK clients to all the new call - additional wire level request - on the server, in the code that converts transactions to idempotent form, the code should be slightly extended to convert a list of operations to idempotent form. - on the client, a down-rev server that rejects the multi-update should be detected gracefully and an informative exception should be thrown. To facilitate shared development, I have established a github repository at https://github.com/tdunning/zookeeper and am happy to extend committer status to anyone who agrees to donate their code back to Apache. The final patch will be attached to this bug as normal. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-965) Need a multi-update command to allow multiple znodes to be updated safely
[ https://issues.apache.org/jira/browse/ZOOKEEPER-965?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13028622#comment-13028622 ] Ted Dunning commented on ZOOKEEPER-965: --- Marshall, Do these C unit tests have a corresponding set of Java unit tests? Need a multi-update command to allow multiple znodes to be updated safely - Key: ZOOKEEPER-965 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-965 Project: ZooKeeper Issue Type: Bug Affects Versions: 3.3.3 Reporter: Ted Dunning Assignee: Ted Dunning Fix For: 3.4.0 Attachments: ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch The basic idea is to have a single method called multi that will accept a list of create, delete, update or check objects each of which has a desired version or file state in the case of create. If all of the version and existence constraints can be satisfied, then all updates will be done atomically. Two API styles have been suggested. One has a list as above and the other style has a Transaction that allows builder-like methods to build a set of updates and a commit method to finalize the transaction. This can trivially be reduced to the first kind of API so the list based API style should be considered the primitive and the builder style should be implemented as syntactic sugar. The total size of all the data in all updates and creates in a single transaction should be limited to 1MB. Implementation-wise this capability can be done using standard ZK internals. The changes include: - update to ZK clients to all the new call - additional wire level request - on the server, in the code that converts transactions to idempotent form, the code should be slightly extended to convert a list of operations to idempotent form. - on the client, a down-rev server that rejects the multi-update should be detected gracefully and an informative exception should be thrown. To facilitate shared development, I have established a github repository at https://github.com/tdunning/zookeeper and am happy to extend committer status to anyone who agrees to donate their code back to Apache. The final patch will be attached to this bug as normal. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (ZOOKEEPER-965) Need a multi-update command to allow multiple znodes to be updated safely
[ https://issues.apache.org/jira/browse/ZOOKEEPER-965?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ted Dunning updated ZOOKEEPER-965: -- Attachment: ZOOKEEPER-965.patch Latests repairs from Marshall. This should be ready for review, but not commit. Need a multi-update command to allow multiple znodes to be updated safely - Key: ZOOKEEPER-965 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-965 Project: ZooKeeper Issue Type: Bug Affects Versions: 3.3.3 Reporter: Ted Dunning Assignee: Ted Dunning Fix For: 3.4.0 Attachments: ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch The basic idea is to have a single method called multi that will accept a list of create, delete, update or check objects each of which has a desired version or file state in the case of create. If all of the version and existence constraints can be satisfied, then all updates will be done atomically. Two API styles have been suggested. One has a list as above and the other style has a Transaction that allows builder-like methods to build a set of updates and a commit method to finalize the transaction. This can trivially be reduced to the first kind of API so the list based API style should be considered the primitive and the builder style should be implemented as syntactic sugar. The total size of all the data in all updates and creates in a single transaction should be limited to 1MB. Implementation-wise this capability can be done using standard ZK internals. The changes include: - update to ZK clients to all the new call - additional wire level request - on the server, in the code that converts transactions to idempotent form, the code should be slightly extended to convert a list of operations to idempotent form. - on the client, a down-rev server that rejects the multi-update should be detected gracefully and an informative exception should be thrown. To facilitate shared development, I have established a github repository at https://github.com/tdunning/zookeeper and am happy to extend committer status to anyone who agrees to donate their code back to Apache. The final patch will be attached to this bug as normal. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-965) Need a multi-update command to allow multiple znodes to be updated safely
[ https://issues.apache.org/jira/browse/ZOOKEEPER-965?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13028802#comment-13028802 ] Ted Dunning commented on ZOOKEEPER-965: --- Camille is correct. I don't think that we can get rid of these warnings because passing the buffer around here is of the essence. The warning is reasonable except for the fact that the data structure is really just a wrapper around the byte array. Mahadev, Ben, Is it OK to ultimately commit code that has these two warnings? Need a multi-update command to allow multiple znodes to be updated safely - Key: ZOOKEEPER-965 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-965 Project: ZooKeeper Issue Type: Bug Affects Versions: 3.3.3 Reporter: Ted Dunning Assignee: Ted Dunning Fix For: 3.4.0 Attachments: ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch The basic idea is to have a single method called multi that will accept a list of create, delete, update or check objects each of which has a desired version or file state in the case of create. If all of the version and existence constraints can be satisfied, then all updates will be done atomically. Two API styles have been suggested. One has a list as above and the other style has a Transaction that allows builder-like methods to build a set of updates and a commit method to finalize the transaction. This can trivially be reduced to the first kind of API so the list based API style should be considered the primitive and the builder style should be implemented as syntactic sugar. The total size of all the data in all updates and creates in a single transaction should be limited to 1MB. Implementation-wise this capability can be done using standard ZK internals. The changes include: - update to ZK clients to all the new call - additional wire level request - on the server, in the code that converts transactions to idempotent form, the code should be slightly extended to convert a list of operations to idempotent form. - on the client, a down-rev server that rejects the multi-update should be detected gracefully and an informative exception should be thrown. To facilitate shared development, I have established a github repository at https://github.com/tdunning/zookeeper and am happy to extend committer status to anyone who agrees to donate their code back to Apache. The final patch will be attached to this bug as normal. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-965) Need a multi-update command to allow multiple znodes to be updated safely
[ https://issues.apache.org/jira/browse/ZOOKEEPER-965?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13028847#comment-13028847 ] Ted Dunning commented on ZOOKEEPER-965: --- Pushed fix to github. Note that I also reworded the commit messages to include the JIRA. This will require that you force the pull. Need a multi-update command to allow multiple znodes to be updated safely - Key: ZOOKEEPER-965 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-965 Project: ZooKeeper Issue Type: Bug Affects Versions: 3.3.3 Reporter: Ted Dunning Assignee: Ted Dunning Fix For: 3.4.0 Attachments: ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch The basic idea is to have a single method called multi that will accept a list of create, delete, update or check objects each of which has a desired version or file state in the case of create. If all of the version and existence constraints can be satisfied, then all updates will be done atomically. Two API styles have been suggested. One has a list as above and the other style has a Transaction that allows builder-like methods to build a set of updates and a commit method to finalize the transaction. This can trivially be reduced to the first kind of API so the list based API style should be considered the primitive and the builder style should be implemented as syntactic sugar. The total size of all the data in all updates and creates in a single transaction should be limited to 1MB. Implementation-wise this capability can be done using standard ZK internals. The changes include: - update to ZK clients to all the new call - additional wire level request - on the server, in the code that converts transactions to idempotent form, the code should be slightly extended to convert a list of operations to idempotent form. - on the client, a down-rev server that rejects the multi-update should be detected gracefully and an informative exception should be thrown. To facilitate shared development, I have established a github repository at https://github.com/tdunning/zookeeper and am happy to extend committer status to anyone who agrees to donate their code back to Apache. The final patch will be attached to this bug as normal. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-965) Need a multi-update command to allow multiple znodes to be updated safely
[ https://issues.apache.org/jira/browse/ZOOKEEPER-965?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13028850#comment-13028850 ] Ted Dunning commented on ZOOKEEPER-965: --- I made the tweaks. I will post another patch and see what jenkins has to say. Need a multi-update command to allow multiple znodes to be updated safely - Key: ZOOKEEPER-965 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-965 Project: ZooKeeper Issue Type: Bug Affects Versions: 3.3.3 Reporter: Ted Dunning Assignee: Ted Dunning Fix For: 3.4.0 Attachments: ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch The basic idea is to have a single method called multi that will accept a list of create, delete, update or check objects each of which has a desired version or file state in the case of create. If all of the version and existence constraints can be satisfied, then all updates will be done atomically. Two API styles have been suggested. One has a list as above and the other style has a Transaction that allows builder-like methods to build a set of updates and a commit method to finalize the transaction. This can trivially be reduced to the first kind of API so the list based API style should be considered the primitive and the builder style should be implemented as syntactic sugar. The total size of all the data in all updates and creates in a single transaction should be limited to 1MB. Implementation-wise this capability can be done using standard ZK internals. The changes include: - update to ZK clients to all the new call - additional wire level request - on the server, in the code that converts transactions to idempotent form, the code should be slightly extended to convert a list of operations to idempotent form. - on the client, a down-rev server that rejects the multi-update should be detected gracefully and an informative exception should be thrown. To facilitate shared development, I have established a github repository at https://github.com/tdunning/zookeeper and am happy to extend committer status to anyone who agrees to donate their code back to Apache. The final patch will be attached to this bug as normal. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (ZOOKEEPER-965) Need a multi-update command to allow multiple znodes to be updated safely
[ https://issues.apache.org/jira/browse/ZOOKEEPER-965?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ted Dunning updated ZOOKEEPER-965: -- Attachment: ZOOKEEPER-965.patch This should fix the niggling warnings Need a multi-update command to allow multiple znodes to be updated safely - Key: ZOOKEEPER-965 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-965 Project: ZooKeeper Issue Type: Bug Affects Versions: 3.3.3 Reporter: Ted Dunning Assignee: Ted Dunning Fix For: 3.4.0 Attachments: ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch The basic idea is to have a single method called multi that will accept a list of create, delete, update or check objects each of which has a desired version or file state in the case of create. If all of the version and existence constraints can be satisfied, then all updates will be done atomically. Two API styles have been suggested. One has a list as above and the other style has a Transaction that allows builder-like methods to build a set of updates and a commit method to finalize the transaction. This can trivially be reduced to the first kind of API so the list based API style should be considered the primitive and the builder style should be implemented as syntactic sugar. The total size of all the data in all updates and creates in a single transaction should be limited to 1MB. Implementation-wise this capability can be done using standard ZK internals. The changes include: - update to ZK clients to all the new call - additional wire level request - on the server, in the code that converts transactions to idempotent form, the code should be slightly extended to convert a list of operations to idempotent form. - on the client, a down-rev server that rejects the multi-update should be detected gracefully and an informative exception should be thrown. To facilitate shared development, I have established a github repository at https://github.com/tdunning/zookeeper and am happy to extend committer status to anyone who agrees to donate their code back to Apache. The final patch will be attached to this bug as normal. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-965) Need a multi-update command to allow multiple znodes to be updated safely
[ https://issues.apache.org/jira/browse/ZOOKEEPER-965?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13028875#comment-13028875 ] Ted Dunning commented on ZOOKEEPER-965: --- This latest Hudson report appears to be a Jenkins problem rather than a real test failure. Need a multi-update command to allow multiple znodes to be updated safely - Key: ZOOKEEPER-965 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-965 Project: ZooKeeper Issue Type: Bug Affects Versions: 3.3.3 Reporter: Ted Dunning Assignee: Ted Dunning Fix For: 3.4.0 Attachments: ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch The basic idea is to have a single method called multi that will accept a list of create, delete, update or check objects each of which has a desired version or file state in the case of create. If all of the version and existence constraints can be satisfied, then all updates will be done atomically. Two API styles have been suggested. One has a list as above and the other style has a Transaction that allows builder-like methods to build a set of updates and a commit method to finalize the transaction. This can trivially be reduced to the first kind of API so the list based API style should be considered the primitive and the builder style should be implemented as syntactic sugar. The total size of all the data in all updates and creates in a single transaction should be limited to 1MB. Implementation-wise this capability can be done using standard ZK internals. The changes include: - update to ZK clients to all the new call - additional wire level request - on the server, in the code that converts transactions to idempotent form, the code should be slightly extended to convert a list of operations to idempotent form. - on the client, a down-rev server that rejects the multi-update should be detected gracefully and an informative exception should be thrown. To facilitate shared development, I have established a github repository at https://github.com/tdunning/zookeeper and am happy to extend committer status to anyone who agrees to donate their code back to Apache. The final patch will be attached to this bug as normal. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (ZOOKEEPER-965) Need a multi-update command to allow multiple znodes to be updated safely
[ https://issues.apache.org/jira/browse/ZOOKEEPER-965?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13028051#comment-13028051 ] Ted Dunning commented on ZOOKEEPER-965: --- Mahadev, There is a patch on this JIRA. Need a multi-update command to allow multiple znodes to be updated safely - Key: ZOOKEEPER-965 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-965 Project: ZooKeeper Issue Type: Bug Affects Versions: 3.3.3 Reporter: Ted Dunning Assignee: Ted Dunning Fix For: 3.4.0 Attachments: ZOOKEEPER-965.patch The basic idea is to have a single method called multi that will accept a list of create, delete, update or check objects each of which has a desired version or file state in the case of create. If all of the version and existence constraints can be satisfied, then all updates will be done atomically. Two API styles have been suggested. One has a list as above and the other style has a Transaction that allows builder-like methods to build a set of updates and a commit method to finalize the transaction. This can trivially be reduced to the first kind of API so the list based API style should be considered the primitive and the builder style should be implemented as syntactic sugar. The total size of all the data in all updates and creates in a single transaction should be limited to 1MB. Implementation-wise this capability can be done using standard ZK internals. The changes include: - update to ZK clients to all the new call - additional wire level request - on the server, in the code that converts transactions to idempotent form, the code should be slightly extended to convert a list of operations to idempotent form. - on the client, a down-rev server that rejects the multi-update should be detected gracefully and an informative exception should be thrown. To facilitate shared development, I have established a github repository at https://github.com/tdunning/zookeeper and am happy to extend committer status to anyone who agrees to donate their code back to Apache. The final patch will be attached to this bug as normal. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (ZOOKEEPER-965) Need a multi-update command to allow multiple znodes to be updated safely
[ https://issues.apache.org/jira/browse/ZOOKEEPER-965?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ted Dunning updated ZOOKEEPER-965: -- Attachment: ZOOKEEPER-965.patch Updated to trunk and Marshall's changes Need a multi-update command to allow multiple znodes to be updated safely - Key: ZOOKEEPER-965 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-965 Project: ZooKeeper Issue Type: Bug Affects Versions: 3.3.3 Reporter: Ted Dunning Assignee: Ted Dunning Fix For: 3.4.0 Attachments: ZOOKEEPER-965.patch, ZOOKEEPER-965.patch The basic idea is to have a single method called multi that will accept a list of create, delete, update or check objects each of which has a desired version or file state in the case of create. If all of the version and existence constraints can be satisfied, then all updates will be done atomically. Two API styles have been suggested. One has a list as above and the other style has a Transaction that allows builder-like methods to build a set of updates and a commit method to finalize the transaction. This can trivially be reduced to the first kind of API so the list based API style should be considered the primitive and the builder style should be implemented as syntactic sugar. The total size of all the data in all updates and creates in a single transaction should be limited to 1MB. Implementation-wise this capability can be done using standard ZK internals. The changes include: - update to ZK clients to all the new call - additional wire level request - on the server, in the code that converts transactions to idempotent form, the code should be slightly extended to convert a list of operations to idempotent form. - on the client, a down-rev server that rejects the multi-update should be detected gracefully and an informative exception should be thrown. To facilitate shared development, I have established a github repository at https://github.com/tdunning/zookeeper and am happy to extend committer status to anyone who agrees to donate their code back to Apache. The final patch will be attached to this bug as normal. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (ZOOKEEPER-965) Need a multi-update command to allow multiple znodes to be updated safely
[ https://issues.apache.org/jira/browse/ZOOKEEPER-965?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ted Dunning updated ZOOKEEPER-965: -- Attachment: ZOOKEEPER-965.patch Hopefully this makes jenkins happier. Need a multi-update command to allow multiple znodes to be updated safely - Key: ZOOKEEPER-965 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-965 Project: ZooKeeper Issue Type: Bug Affects Versions: 3.3.3 Reporter: Ted Dunning Assignee: Ted Dunning Fix For: 3.4.0 Attachments: ZOOKEEPER-965.patch, ZOOKEEPER-965.patch, ZOOKEEPER-965.patch The basic idea is to have a single method called multi that will accept a list of create, delete, update or check objects each of which has a desired version or file state in the case of create. If all of the version and existence constraints can be satisfied, then all updates will be done atomically. Two API styles have been suggested. One has a list as above and the other style has a Transaction that allows builder-like methods to build a set of updates and a commit method to finalize the transaction. This can trivially be reduced to the first kind of API so the list based API style should be considered the primitive and the builder style should be implemented as syntactic sugar. The total size of all the data in all updates and creates in a single transaction should be limited to 1MB. Implementation-wise this capability can be done using standard ZK internals. The changes include: - update to ZK clients to all the new call - additional wire level request - on the server, in the code that converts transactions to idempotent form, the code should be slightly extended to convert a list of operations to idempotent form. - on the client, a down-rev server that rejects the multi-update should be detected gracefully and an informative exception should be thrown. To facilitate shared development, I have established a github repository at https://github.com/tdunning/zookeeper and am happy to extend committer status to anyone who agrees to donate their code back to Apache. The final patch will be attached to this bug as normal. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (ZOOKEEPER-965) Need a multi-update command to allow multiple znodes to be updated safely
[ https://issues.apache.org/jira/browse/ZOOKEEPER-965?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ted Dunning updated ZOOKEEPER-965: -- Attachment: ZOOKEEPER-965.patch Patch against current trunk. Commit messages are reworded versus github version Need a multi-update command to allow multiple znodes to be updated safely - Key: ZOOKEEPER-965 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-965 Project: ZooKeeper Issue Type: Bug Reporter: Ted Dunning Assignee: Ted Dunning Fix For: 3.4.0 Attachments: ZOOKEEPER-965.patch The basic idea is to have a single method called multi that will accept a list of create, delete, update or check objects each of which has a desired version or file state in the case of create. If all of the version and existence constraints can be satisfied, then all updates will be done atomically. Two API styles have been suggested. One has a list as above and the other style has a Transaction that allows builder-like methods to build a set of updates and a commit method to finalize the transaction. This can trivially be reduced to the first kind of API so the list based API style should be considered the primitive and the builder style should be implemented as syntactic sugar. The total size of all the data in all updates and creates in a single transaction should be limited to 1MB. Implementation-wise this capability can be done using standard ZK internals. The changes include: - update to ZK clients to all the new call - additional wire level request - on the server, in the code that converts transactions to idempotent form, the code should be slightly extended to convert a list of operations to idempotent form. - on the client, a down-rev server that rejects the multi-update should be detected gracefully and an informative exception should be thrown. To facilitate shared development, I have established a github repository at https://github.com/tdunning/zookeeper and am happy to extend committer status to anyone who agrees to donate their code back to Apache. The final patch will be attached to this bug as normal. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Resolved] (ZOOKEEPER-966) Client side for multi
[ https://issues.apache.org/jira/browse/ZOOKEEPER-966?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ted Dunning resolved ZOOKEEPER-966. --- Resolution: Fixed Consolidated patch for all sub-tasks is found on ZOOKEEPER-965 Client side for multi - Key: ZOOKEEPER-966 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-966 Project: ZooKeeper Issue Type: Sub-task Reporter: Ted Dunning Fix For: 3.4.0 This is jus the client side of the code up to and including the serialization of requests. -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Resolved] (ZOOKEEPER-967) Server side decoding and function dispatch
[ https://issues.apache.org/jira/browse/ZOOKEEPER-967?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Ted Dunning resolved ZOOKEEPER-967. --- Resolution: Fixed Consolidated patch attached to ZOOKEEPER-965 Server side decoding and function dispatch -- Key: ZOOKEEPER-967 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-967 Project: ZooKeeper Issue Type: Sub-task Reporter: Ted Dunning Fix For: 3.4.0 This would include making the server catch the request and hand it down to the actual transaction code -- This message is automatically generated by JIRA. For more information on JIRA, see: http://www.atlassian.com/software/jira