forked from domwong/go-zookeeper
-
Notifications
You must be signed in to change notification settings - Fork 3
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update #4
Open
leibowitz
wants to merge
88
commits into
master
Choose a base branch
from
update
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sometimes zookeeper just drops connection on invalid session data, we prefer to drop session and start from scratch when that event occurs instead of dropping into loop of connect/disconnect attempts. This can be emulated by stopping zookeeper, cleaning it's database and starting it again. But we experience same bug in production without cleaning zookeeper, but in case of network partition (not every partition event).
- Add a test for slow servers
Add timeouts around IO calls during authenticate
I have a need for polling the Zookeeper instance with some of the four-letter words. In this PR te following words are implemneted with tests: * srvr * cons * ruok `srvr` get some stats about the server (connections, latencies, leader/follower mode, etc.) `cons` gets detailed information about the individual connections and their sessions `ruok` is actually mostly useless, but specifies whether the server has returned `imok` when prompted with `ruok` I'm not sold on the name of the public API functions, `FLWCons()`, and would happily change them to something better.
Without that patch Conn.Close cannot interrupt Conn.connect. So it's impossible to dispose two goroutines related to a connection, if the connection hasn't been established yet. Signed-off-by: Anton Tiurin <[email protected]>
[Fix] Conn.Close stops all goroutines if we haven't connencted yet
add support for some of the FourLetter words
Fix continuous loop of connect attempts
By adding this Logger interface, and by fulfilling the interface with a function that has no body, you can silence the log messages from the *zk.Conn instance. The `Connect()` and `ConnectWithDialer()` functions both set the logger up by default to log to `Stderr`. Fixes samuel#60.
* remove custom formatting in one of the `Printf()` statements to add a newline character at the end * changed how the default logger is instantiated -- new defaultLogger type, and an exported variable that is an instance of it
add a Logger interface and setter for the logging Printf calls
ZooKeeper seemingly has a bug in which if it receives a Set request with an empty path then it'll take down the server. This change returns a client side error on empty paths as it's not a valid request regardless.
…ookeeper into spenczar-careful_test_setup
Expose connection session ID
Background: The channel approach causes lost events during period of scheduling contention. Of particular harm is the loss of HasSession since it's usually the state that triggers actions. The callback approch puts the responsiblity on the caller of the library to decide on the tradeoff between losing events and blocking the main event loop.
This causes problems if Authentication is enabled.
Previously the code wasn't correctly unpacking error responses for Multi() calls. If any operation within the Multi() call failed, we'd return ErrAPIError. This patch extracts the error code from each multiResponseOp, allowing the caller to determine which specific operation failed. The error code from the first op to fail is used as the return error for the Multi() call.
Add an option to supply a callback to be run for each Event.
Handle Multi() errors correctly.
In case when reconnection occurs, it is necessary to re-authenticate with ZK because it "forgets" the authentication data.
Do not try to create intermitent nodes if they exist during Lock()
Re-submit authentication data on reconnect
Consider the case where there are two clients contending for a lock. The first creates '/lock/00000' The second creates '/lock/00001' Now, the first lists the children of '/lock' and sees that it has created the lock and returns. The second starts looping through the children in the aforementioned order. Before the first child is processed we have lowestSeq=1 prevSeq=0 prevSeqPath="" Since the first child is '00000' we set lowestSeq=0. However, prevSeq == s, so the second condition fails and we don't update the prevSeqPath. Then we process '00001' and again, since s == seq, so !(s<seq), we again don't update prevSeqPath. This leads to a scenario where lowerdown we call GetW("/lock/") instead of GetW("/lock/00000")
Conflicts: zk/conn.go zk/lock.go zk/structs.go
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
But keep most of the changes that were made