Skip to content

Bump to latest libkv + dependencies#16863

Merged
tiborvass merged 1 commit intomoby:masterfrom
dhiltgen:bump_libkv
Oct 13, 2015
Merged

Bump to latest libkv + dependencies#16863
tiborvass merged 1 commit intomoby:masterfrom
dhiltgen:bump_libkv

Conversation

@dhiltgen
Copy link
Contributor

@dhiltgen dhiltgen commented Oct 8, 2015

The latest libkv uses a different etcd library. Unfortunately
that library uses some funky import paths, so I've added a new cleanup
routine for our vendor scripts to be able to normalize the imports
to be consistent with how imports work in this tree.

Signed-off-by: Daniel Hiltgen [email protected]

@icecrime
Copy link
Contributor

icecrime commented Oct 8, 2015

To summarize the discussions here:

  • The etcd client library we currently use is deprecated and has known issues (I'm told potential crashes due to lack of thread-safety).
  • This PR proposes to upgrade to the newer, supported, etcd client library, which only drawback is to pull a 40k+ LoC dependency with it (https://github.com/ugorji/go).
  • Most likely, the future etcd API v3 will be protobuf based (a dependency we already have), won't require this anymore, and should be available in time for Docker 1.10.

That is to say that I feel the current choice is:

  1. Merge this PR in order to use the more robust client package, and close our eyes on the amount of code it requires. Most likely, this will all be cleaned up for 1.10 with the newer package.
  2. Don't merge this PR, knowing that the daemon might crash when --cluster-store=etcd:// is used, and wait for etcd API v3 to upgrade.

I vote option 1.

@jessfraz
Copy link
Contributor

jessfraz commented Oct 8, 2015

🙈

no. 1

@icecrime
Copy link
Contributor

icecrime commented Oct 8, 2015

Ping @abronan @mavenugo.

@abronan
Copy link
Contributor

abronan commented Oct 8, 2015

Thanks for summing up the situation @icecrime

🙈 option 1

@jessfraz
Copy link
Contributor

jessfraz commented Oct 8, 2015

are we all closing our eyes hahahaha lol

@nathanleclaire
Copy link
Contributor

🙈

@icecrime
Copy link
Contributor

icecrime commented Oct 9, 2015

Discussed with @mavenugo and team: they will be running stress tests tomorrow on Docker daemon with multihost networking backed by etcd using the existing driver. If we do experience the kind of crashes that we worry might happen, we will consider taking this PR for 1.9. If we don't, it might not be worth the effort.

@vdemeester
Copy link
Member

🙈 🙉

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@dhiltgen a comment explaining what this function is doing would be appreciated :)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

will do

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should be sed -i'' to make the script work both on osx and linux (note there are no spaces between -i and '') nope there is no reliable way of doing cross platform with -i.

Copy link
Member

@tianon tianon Oct 13, 2015 via email

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@mavenugo
Copy link
Contributor

@abronan @dhiltgen I tried to integrate this PR on top of #16910 to make sure things work as expected. but I see the dreaded error -
Error response from daemon: failed to update store for object type *libnetwork.network: 104: Not a directory (/docker/network/v1.0/network) [23]

I know @abronan tried to solve it prior to the watch related changes and eventually was closed (moby/libnetwork#582). Do we need that patch in libnetwork in order to make progress ?
I will continue to dig into this. But we need to make sure this works so that we get to test it e2e.

@mrjana
Copy link
Contributor

mrjana commented Oct 13, 2015

@mavenugo I might know what the problem is. I'll add an e2e integration test in libnetwork to verify etcd to fix this once for all. There is a small change needed in libnetwork to make this work. With that change you might be able to verify the new etcd client in docker.

@abronan
Copy link
Contributor

abronan commented Oct 13, 2015

Issue described above fixed in libnetwork with @mavenugo. So we good.

@mavenugo
Copy link
Contributor

@mrjana @abronan thanks for the help. Yes, we have identified a fix. there is an sequencing issue with the PRs though. Lets vendor in libnetwork via #16910 and rebase this PR on top of it.
Sounds good ?

@dhiltgen
Copy link
Contributor Author

Just bumped to the latest libkv at @mavenugo's request

@tiborvass tiborvass added this to the 1.9.0 milestone Oct 13, 2015
@dhiltgen
Copy link
Contributor Author

I have a version of this change rebased on top of 16910 which I'll push up as soon as 16910 is merged.

The latest libkv uses a different etcd library.  Unfortunately
that library uses some funky import paths, so I've added a new cleanup
routine for our vendor scripts to be able to normalize the imports
to be consistent with how imports work in this tree.

Signed-off-by: Daniel Hiltgen <[email protected]>
@tiborvass
Copy link
Contributor

@dhiltgen is 7078e7d the one you pushed after 16910 was merged?

@dhiltgen
Copy link
Contributor Author

correct - it's rebased on top of madhu's change, and includes the latest libnetwork

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@dhiltgen why do we need to bump libnetwork again?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@tiborvass This includes a fix for etcd (see this comment)

@abronan
Copy link
Contributor

abronan commented Oct 13, 2015

Still LGTM

@tiborvass
Copy link
Contributor

LGTM for hack/

@abronan
Copy link
Contributor

abronan commented Oct 13, 2015

ping @mavenugo @icecrime

@mavenugo
Copy link
Contributor

tested minimal etcd integration with libnetwork with the patch here. LGTM.
once we have proper etcd integration tests, we will cover many cases.

this PR is good to go.

tiborvass added a commit that referenced this pull request Oct 13, 2015
Bump to latest libkv + dependencies
@tiborvass tiborvass merged commit 9c94dce into moby:master Oct 13, 2015
@tiborvass tiborvass removed their assignment Oct 14, 2015
@calavera calavera deleted the bump_libkv branch February 9, 2016 05:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.