This repository has been archived by the owner on Sep 30, 2024. It is now read-only.
Add Consul KV store based on atomic transactions #1276
Merged
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.
Related issue: #1273
Description
This PR introduces a new, optional KV store for performing atomic Consul KV updates. This KV store hopes to address a race condition when performing updates of several key-values, context: #1273
This new KV store updates many KVPairs by:
go/kv/consul.go
)go/kv/consul.go
)A new Consul library was required to add this support, the official consul api library. Unfortunately this new library has a tonne of dependencies. At first
govendor fetch github.com/hashicorp/consul/api
added 1500+ files to thevendor/
dir. After manually removing various dependencies I was able to get it compile with just 500~ additional files (👎)It seems the bulk of the dependencies come from
github.com/hashicorp/go-hclog
, which requiresgithub.com/mattn/go-isatty
which requires the huge librarygolang.org/x/sys/unix
(about 300 of the 500 files) 😕. We could shave off a few more files by deleting_test.go
files, but I suspect this might confusegovendor
. Any ideas to reduce deps further appreciated!Lastly, I ran
govendor remove +unused
to drop more deps, which explains the few unrelated files deleted fromvendor/
cc @shlomi-noach