-
Notifications
You must be signed in to change notification settings - Fork 83
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
Tap on another ring and gets its status #27
Open
aravindvs
wants to merge
283
commits into
master
Choose a base branch
from
ring_tapping
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
WhoAmI() is a multivalue return now that only works when the Ringpop instance is ready. Use the hostport we already know about in this case rather than querying the Ringpop instance.
So we can see what's going on.
Lazyinit bugs
Automatically add self to bootstrap list
… code. Included commits - initial thrift-gen file. - Cleanup of .thrift-gen - Remove logging. - Rename the generated struct so it has Ringpop in there. - Use the goType in the signature. - Make return types valid go (tested on supplyindex). - minor optimizations. - Expose a function on ringpop with all the current active members. - Implement GetMembers in Node, and fall through from Ringpop. - Last refactor with an actual test. - Refactor the forwarding configuration and implement N: All. - Settle for GetReachableMembers. - Use GetReachableMembers. - Fix type for isForwarded. - Implement CountReachableMembers. - Implemented a router for ringpop. - Use ringpop.Router in generated RingpopAdapter. - License. - Key closure should be able to return an error. - earlier escape when there are no clients, - Users should be able to provide a reducer even when there is only 1 fanout to do simple post processing. - Optimize ctx creation. - Remove leaving/faulty nodes from the router cache. - Rename Interface to Adapter. - typo. - Rename ringpop stub file. - Rename ringpop.RingpopInterface to ringpop.Interface. - Better naming for header related logic. - Call the receiver variable a since it is an Adapter. - Simplify thrift-forwarding for v1 release without replication. - errors are formatted with %q. - Remove magic that passes on the adapter to the implementation. - documentation. - validate the user input for configuration. - Keep existing headers on ctx. - Better naming for the variables that keep the name for the configuration structs. - Move more code from template to Router. - Moved forwarded header logic outside generated code. - Implementing tests for all publicly used generated functions. - Allow running the tests with $ make test. - Generate ringpop.Interface mocks from make. - typo. - Use mockery for router test. - To achieve this the router should not be in the ringpop package due to circular dependencies.
Exclusion covered by .gitignore in root.
Feature/thrift forward adapter
PR #41 introduced an enhancement where Ringpop will automatically add the current/local node's identity to the Host list of swim.BootstrapOptions. This broke file-based bootstrapping, as the host identity was always added to the Hosts field, even when file-based bootstrapping was used. swim.Node reads the Host list as priority over reading a file, so this caused file-based bootstrapping to always create a single-node cluster. This fix checks that a File has not been specified before first adding the node's identity to the Host list.
Fix bug preventing bootstrapping from file
also added more verbose logging of where things went south.
Implement stat ‘updates’.
This will prevent leaking goroutines when these operations timeout: * join * ping * ping_req Related: #63
This will prevent leaking goroutines when these operations timeout: * join * ping * ping_req Related: #63
…nto release-v0.5.0
Release v0.5.0
* Support headers forwarding * Update examples to include headers forwarding
…discovery provider returns the reference to a static hostlist. (#145)
Add suspect, faulty and tombstone period flags so that integration tests can set a small faulty->tombstone period of 5 seconds while having a big faulty->tombstone period when running from tickcluster.
Install pre-commit hook correctly
…e. (#150) * When creating the change for reincarnation use your self as the source. * Make sure that the address of the local node does not match the hardcoded address we use to originate a gossip from.
Previously the lookup stat was emitted from the event-handler inside of ringpop.go when a LookupEvent was emitted. However, the lookup-event is emitted on ringpop itself so it's internal event-handler isn't triggered. Also a stat and an event on ringpop for LookupN has been added to be on par with ringpop-node.
In preparation for automated performance and failure testing we want to be able to emit stats to a file or a network address from testpop. This commit add two new flags (-stats-udp, -stats-file) to `testpop` to control if and where stats should be emitted; if the flags are omitted, no stats are emitted.
* do not increment the incarnation number when the current version is newer. * When creating the change for reincarnation use your self as the source. * Make sure that the address of the local node does not match the hardcoded address we use to originate a gossip from. * enable double-reincarnation tests * Add check for incarnation number to test. * Update documentation for localOverride test. * More verbose documentation on localOverrid. * the tests for double-reincarnation have become mandatory in the integration tests. * run integration tests from master
* Replace godep with glide * Remove dead code in Makefile * Document usage of glide * Remove godep from examples/*/README.md It works as well without it * Use original dependencies Upgrading the dependencies is not part of this PR * Remove unnecessary dependencies * Use full 'glide novendor' command name * Remove --debug from glide install * Use glide instructions * Add glide.yaml to examples/ * Fix hash of glide.yaml in glide.lock * Remove glide from examples/ * Support for GO15VENDOREXPERIMENT=0 We shouldn't depend on user's environment variables to setup this project. We use vendor/ for dependencies, and are opinionated about it.
* Release notes for ringpop-go v0.6.0.
This patch adds a TapRing() API to ringpop which queries the given host to get the status of it's ring dynamically (this is a pull based model rather than a push model and should generate n/w traffic only on demand). This will be very useful for client applications which doesn't want to participate on the gossip protocol and gives them the ability to get the status of the other ring to make forwarding decisions.
To use this: 1. start 4 different instances of this example. * We have 3 nodes which bootstrap to the ring (by default the bootstrap will happen with these 3 hosts) go run examples/tapring/main.go --hostport "127.0.0.1:3000" go run examples/tapring/main.go --hostport "127.0.0.1:3001" go run examples/tapring/main.go --hostport "127.0.0.1:3002" * start an instance which just attaches/taps to the ring go run examples/tapring/main.go -attach=true -hostport="127.0.0.1:3003" 2. Use tcurl to lookup servers for the given key by tapping on a host tcurl -p "127.0.0.1:3003" listenring "/lookup" --raw -3 '{"key":"hello","taphost":"127.0.0.1:3000","replicas":3}' As and when you kill the original nodes, lookup will give you different results.
This patch makes sure we register the tapring handler to the specific ringpop app name. This way even if one host:port has multiple rings, we will reach the appropriate end point to tap the ring.
Nils Dijk seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account. You have signed the CLA already but the status is still pending? Let us recheck it. |
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.
@jwolski - as we discussed this is the tapring patch (pull model)..
This patch adds a TapRing() API to ringpop which queries the given host to get the status of it's ring dynamically (this is a pull based model rather than a push mode and should generate n/w traffic only on demand).
This will be very useful for front end client applications which doesn't want to participate on the gossip protocol and gives them the ability to get the status of the other ring to make placement/forwarding decisions.
There is also an example usage of this new API:
To use this example:
1. start 4 different instances of this example.
* We have 3 nodes which bootstrap to the ring (by default the bootstrap will happen with these 3 hosts)
go run examples/tapring/main.go --hostport "127.0.0.1:3000"
go run examples/tapring/main.go --hostport "127.0.0.1:3001"
go run examples/tapring/main.go --hostport "127.0.0.1:3002"