Commit Graph

367 Commits

Author SHA1 Message Date
Kubernetes Submit Queue
b5145e1924 Merge pull request #34322 from wojtek-t/cacher_improvements
Automatic merge from submit-queue

Improve some logging in cacher
2016-10-08 00:38:48 -07:00
deads2k
518d5500c7 remove testapi.Default.GroupVersion 2016-10-07 10:10:54 -04:00
Wojciech Tyczynski
c02df26ad6 Improve some logging in cacher 2016-10-07 15:04:08 +02:00
Wojciech Tyczynski
d70a9615ec Minor clearnup in etcd3 code 2016-10-06 15:38:34 +02:00
Wojciech Tyczynski
90bc19959d Extend logging in cacher to understand its bottleneck 2016-10-06 10:57:46 +02:00
Wojciech Tyczynski
82c360a252 Make gets for previous value in watch serializable 2016-10-05 13:18:31 +02:00
Hongchao Deng
35917e552a revert #32012 (Unshare cluster in each test suite)
Since #33393 is merged, the bug should have been fixed.
2016-09-27 09:38:18 -07:00
Hongchao Deng
6f3ac807fd pass SelectionPredicate instead of Filter to storage layer 2016-09-26 09:47:19 -07:00
Kubernetes Submit Queue
331eb83585 Merge pull request #33376 from luxas/fix_arm_atomics_2
Automatic merge from submit-queue

Move HighWaterMark to the top of the struct in order to fix arm, second time

ref: #33117

Sorry for not fixing everyone at once, but I seriously wasn't prepared for that quick LGTM 😄, so here's the other half.

@lavalamp 

> lgtm, but seriously, this is terrible, we probably have this bug all over. And what if someone embeds the etcdWatcher struct in something else not at the top? We need the compiler to enforce things like this, it just can't be done manually. Can you file or link a golang issue for this?

I totally agree! There isn't currently a way of programmatically detecting this unfortunately.
I guess @davecheney or @minux can explain better to you why it's so hard.

This is noted in https://github.com/kubernetes/kubernetes/blob/master/docs/proposals/multi-platform.md as a corner case indeed.

@pwittrock This should be cherrypicked toghether with #33117
2016-09-23 12:05:09 -07:00
Lucas Käldström
06917531b3 Move HighWaterMark to the top of the struct in order to fix arm, second time 2016-09-23 20:58:28 +03:00
Madhusudan.C.S
c1f0d91c2a Dereference the UID pointer for a readable error message. 2016-09-22 20:34:06 -07:00
Kubernetes Submit Queue
d323fed024 Merge pull request #33003 from hongchaodeng/etcd_fix2
Automatic merge from submit-queue

stop etcd watcher when watch chan is closed

When startWatching() stops due to the watch chan is closed, the watcher could still keeps running in the background. When this case happen, we should stop the watcher entirely and close ResultChan() too.
2016-09-20 20:21:24 -07:00
Hongchao Deng
8e3b40735a stop etcd watcher when watch chan is closed 2016-09-20 12:45:28 -07:00
Lucas Käldström
519379138d Move HighWaterMark to the top of the struct in order to fix 32-bit platforms 2016-09-20 22:44:56 +03:00
Hongchao Deng
5a4a095e29 etcd watcher: centralize error handling 2016-09-16 15:31:49 -07:00
Hongchao Deng
3e9af272d5 etcd3/watcher: logging error 2016-09-15 17:23:04 -07:00
Kubernetes Submit Queue
0a62dab566 Merge pull request #32645 from wojtek-t/fix_cacher_logging
Automatic merge from submit-queue

Fix logging in cacher

@smarterclayton @liggitt @hongchaodeng
2016-09-15 05:56:39 -07:00
Timothy St. Clair
9f3841b452 Revert "Revert "Enable v3 Client as the default on UTs""
This reverts commit 9dcef2e3cd.
2016-09-14 07:27:21 -05:00
Wojciech Tyczynski
e5b3f19638 Fix logging in cacher 2016-09-14 09:13:41 +02:00
Wojciech Tyczynski
949dd90593 Extend logging for performance debuggin 2016-09-12 12:46:19 +02:00
Wojciech Tyczynski
03a23aed09 Log water mark for incoming queue in cacher 2016-09-09 11:35:05 +02:00
Kubernetes Submit Queue
504ccc6f37 Merge pull request #32275 from wojtek-t/split_process_event
Automatic merge from submit-queue

Split dispatching to watchers in Cacher into separate goroutine.

Should help with #32257
2016-09-08 07:42:12 -07:00
Wojciech Tyczynski
e750454c31 Fix allow for non-ready nodes in e2e framework 2016-09-08 14:22:08 +02:00
Wojciech Tyczynski
378cd81dbe Split dispatching to watchers in Cacher into separate goroutine. 2016-09-08 13:27:54 +02:00
Wojciech Tyczynski
bd54c389f5 Extend logging for scalability tests debugging 2016-09-08 12:02:59 +02:00
Kubernetes Submit Queue
9f58a867e1 Merge pull request #31522 from krousey/path_validation
Automatic merge from submit-queue

Split path validation into a separate library

This PR splits path segment validation into it's own package. This cuts off one of the restclient's dependency paths to some docker packages, and completely eliminates its dependency on go-restful swagger validation.


cc @kubernetes/sig-api-machinery
2016-09-07 10:14:32 -07:00
Hongchao Deng
8723fbaa61 unshare cluster, store in each test suite 2016-09-02 15:04:23 -07:00
Kris
e87edf9bd5 Split path validation into a separate library 2016-08-26 08:05:20 -07:00
Hongchao Deng
9131fbd446 refactor destroy func in unit testing 2016-08-25 22:57:28 -07:00
Hongchao Deng
9fc0e1e98d return destroy func to clean up internal resources of storage 2016-08-25 08:32:21 -07:00
Kubernetes Submit Queue
c63f43b329 Merge pull request #31387 from hongchaodeng/docs
Automatic merge from submit-queue

etcd3 compactor: update docs

Minor fix/improvement on compactor docs.
2016-08-24 21:37:21 -07:00
Hongchao Deng
0b253b519e etcd3 compactor: update docs 2016-08-24 16:24:24 -07:00
Daniel Smith
9dcef2e3cd Revert "Enable v3 Client as the default on UTs" 2016-08-24 13:16:40 -07:00
Hongchao Deng
874cc7f2b6 separate test watch from zero and nonzero 2016-08-23 20:34:39 -07:00
Timothy St. Clair
99e017661a Fix for etcd3 TLS config options 2016-08-22 22:17:55 -05:00
Timothy St. Clair
49b7ebd791 Switch UT default settings to leverage etcd3.v3client 2016-08-22 22:17:55 -05:00
Hongchao Deng
77ffae128e add boilerplate 2016-08-21 21:45:36 -07:00
Hongchao Deng
41d14d665e fix 2016-08-21 21:08:16 -07:00
Hongchao Deng
6e4f80909d unit test for tls of etcd3 2016-08-21 15:59:51 -07:00
Hongchao Deng
014ad63111 etcd3 backend: support TLS 2016-08-21 15:59:51 -07:00
Wojciech Tyczynski
e76c0b7c72 Increase buffer size in etcd_watcher 2016-08-19 13:00:31 +02:00
Kubernetes Submit Queue
18aa761b07 Merge pull request #30664 from hongchaodeng/r3
Automatic merge from submit-queue

pkg/storage: remove Codec() from interface

What?
Removes Codec() from storage.Interface.

Why?
- storage interface doesn't need to expose Codec().
- Codec() isn't used anywhere.
2016-08-17 00:56:05 -07:00
Kubernetes Submit Queue
6bbc99937d Merge pull request #30492 from lixiaobing10051267/masterUID
Automatic merge from submit-queue

Modify IsInvalidObj name and description

IsInvalidObj  note incorrect, modify it.
2016-08-17 00:55:01 -07:00
Hongchao Deng
a607a69f4a pkg/storage: cleanup Codec() from interface 2016-08-15 20:46:13 -07:00
Hongchao Deng
ed79925dd6 pkg/storage: remove unused Config 2016-08-15 14:20:38 -07:00
Hongchao Deng
d0938094d9 move new etcd storage into cacher 2016-08-12 18:40:20 -07:00
lixiaobing10051267
65f772d050 Modify IsInvalidObj name and description 2016-08-12 11:17:08 +08:00
Kubernetes Submit Queue
a69054f9c3 Merge pull request #30368 from wojtek-t/log_terminating_all_watchers
Automatic merge from submit-queue

Log warning when terminating all watchers

Ref #30275

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.kubernetes.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.kubernetes.io/reviews/kubernetes/kubernetes/30368)
<!-- Reviewable:end -->
2016-08-10 09:26:07 -07:00
Wojciech Tyczynski
497f891cfb Log warning when terminating all watchers 2016-08-10 17:04:10 +02:00
Kubernetes Submit Queue
0da589fa9c Merge pull request #30197 from hongchaodeng/r1
Automatic merge from submit-queue

storage interface: remove Backends()



<!-- Reviewable:start -->
This change is [<img src="https://reviewable.kubernetes.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.kubernetes.io/reviews/kubernetes/kubernetes/30197)
<!-- Reviewable:end -->
2016-08-10 00:45:29 -07:00
Timothy St. Clair
24993b0343 Update generated files due to dependency shift.
Also minor bug fix in federation api.
2016-08-09 10:41:09 -05:00
Timothy St. Clair
4adb23c8cc Update dependency shift from etcd3 changes in latest release. 2016-08-09 08:51:15 -05:00
Hongchao Deng
7f28eda9be storage interface: remove Backends() 2016-08-07 16:10:18 -07:00
Kubernetes Submit Queue
f9cadb290b Merge pull request #22919 from liggitt/http-test-etcd
Automatic merge from submit-queue

Allow starting test etcd with http

There are cases where we'll want to start a test etcd without https (external tools monitoring tests, tests with lots of parallelism, etc). This makes it an option.

Helps with https://github.com/kubernetes/kubernetes/issues/23127

<!-- Reviewable:start -->
---
This change is [<img src="http://reviewable.k8s.io/review_button.svg" height="35" align="absmiddle" alt="Reviewable"/>](http://reviewable.k8s.io/reviews/kubernetes/kubernetes/22919)
<!-- Reviewable:end -->
2016-08-05 12:06:12 -07:00
Harry Zhang
cb14b35bde Refactor util clock into it's own pkg 2016-07-28 02:29:04 -04:00
Hongchao Deng
60d165a830 storage error: precondition failure should return invalid object error 2016-07-24 20:21:42 -07:00
Wojciech Tyczynski
33e612e101 Revert "cacher.go: embed storage.Interface into cacher" 2016-07-22 07:28:45 +02:00
k8s-merge-robot
42a1deeff3 Merge pull request #26861 from xiang90/embed
Automatic merge from submit-queue

cacher.go: embed storage.Interface into cacher

Continuous effort to simplify cacher implementation.
2016-07-21 09:50:19 -07:00
Xiang Li
44c0a1190c cacher.go: embed storage.Interface into cacher 2016-07-16 23:25:48 -07:00
Davanum Srinivas
2b0ed014b7 Use Go canonical import paths
Add canonical imports only in existing doc.go files.
https://golang.org/doc/go1.4#canonicalimports

Fixes #29014
2016-07-16 13:48:21 -04:00
Hongchao Deng
54025ce8b3 etcd3/store: Add test for compact conflict 2016-07-15 10:24:50 -07:00
Hongchao Deng
186b4858b4 better handle etcd compaction in multi-apiserver 2016-07-15 10:24:49 -07:00
Jordan Liggitt
4fcd999c25
Fix watch cache filtering 2016-07-14 13:13:17 -04:00
joe2far
5ead89b5bb Fixed several typos 2016-07-13 15:06:24 +01:00
Wojciech Tyczynski
1d9bc58328 Extend Filter interface with Trigger() and use it for pods and nodes 2016-07-13 08:45:18 +02:00
Wojciech Tyczynski
7f7ef0879f Change filter to interface in storage.Interface 2016-07-13 08:44:22 +02:00
Jordan Liggitt
d4d6a0ee4c
Allow starting test etcd with http 2016-07-10 22:28:01 -04:00
Jordan Liggitt
e43e58c787
Allow specifying base location for test etcd data 2016-07-08 16:24:41 -04:00
Xiang Li
aa472ff734 cacher: replace usable lock with conditional variable 2016-07-04 08:57:59 -07:00
David McMahon
ef0c9f0c5b Remove "All rights reserved" from all the headers. 2016-06-29 17:47:36 -07:00
k8s-merge-robot
00b5b548d6 Merge pull request #26854 from xiang90/cacher
Automatic merge from submit-queue

cacher.go: remove NewCacher func

NewCacher is a wrapper of NewCacherFromConfig. NewCacher understands
how to create a key func from scopeStrategy. However, it is not the
responsibility of cacher. So we should remove this function, and
construct the config in its caller, which should understand scopeStrategy.
2016-06-25 11:10:06 -07:00
k8s-merge-robot
b71e499c92 Merge pull request #26502 from gyuho/remove_name_field
Automatic merge from submit-queue

pkg/storage/etcd3: remove name field in test

Current test gets the name with its test table index,
so there seems to be no reason to have name field in test table.
2016-06-25 07:09:36 -07:00
k8s-merge-robot
e65965fca6 Merge pull request #26855 from xiang90/cacher_rm
Automatic merge from submit-queue

cacher: remove unnecessary initialzation
2016-06-24 13:56:47 -07:00
Wojciech Tyczynski
394db3b407 Fix traces 2016-06-06 10:49:46 +02:00
Xiang Li
c530a5810a cacher: remove unnecessary initialzation 2016-06-04 22:49:45 -07:00
Xiang Li
e2aab093aa cacher.go: remove NewCacher func
NewCacher is a wrapper of NewCacherFromConfig. NewCacher understands
how to create a key func from scopeStrategy. However, it is not the
responsibility of cacher. So we should remove this function, and
construct the config in its caller, which should understand scopeStrategy.
2016-06-04 22:46:58 -07:00
Gyu-Ho Lee
b8740c2c67 pkg/storage/etcd3: remove name field in test
Current test gets the name with its test table index,
so there seems to be no reason to have name field in test table.
2016-05-29 02:17:35 -07:00
k8s-merge-robot
ae28564526 Merge pull request #26386 from janetkuo/etcd-test-flake
Automatic merge from submit-queue

Increase etcd test server up timeout and disallow returning nil server 

Fixes #25047

[![Analytics](https://kubernetes-site.appspot.com/UA-36037335-10/GitHub/.github/PULL_REQUEST_TEMPLATE.md?pixel)]()
2016-05-27 05:49:51 -07:00
k8s-merge-robot
8bfaec4b59 Merge pull request #26334 from fejta/own
Automatic merge from submit-queue

Create pkg/storage/OWNERS

Fixes #26118
2016-05-26 16:10:03 -07:00
Janet Kuo
672cd64035 Disallow returning nil server in NewEtcdTestClientServer 2016-05-26 14:37:12 -07:00
Janet Kuo
3cc2311c54 Increase etcd test server up timeout to wait.ForeverTestTimeout 2016-05-26 14:35:57 -07:00
Alex Mohr
edda837142 Merge pull request #25599 from caesarxuchao/orphaning-finalizer
Add orphaning finalizer logic to GC
2016-05-26 13:19:19 -07:00
Erick Fejta
f4d07ddf7d Create pkg/storage/OWNERS 2016-05-25 21:13:10 -07:00
Chao Xu
1665546d2d add finalizer logics to the API server and the garbage collector; handling DeleteOptions.OrphanDependents in the API server 2016-05-24 13:07:28 -07:00
deads2k
02c0181f26 reduce conflict retries 2016-05-23 13:09:37 -04:00
Hongchao Deng
ae6166f97d etcd3/compactor: fix logging endpoints 2016-05-20 14:35:42 -07:00
Wojciech Tyczynski
9784dff94e Merge pull request #25871 from smarterclayton/retry_on_error
Fix the Retry-After code path to work for clients, and send correct bodies
2016-05-19 16:18:18 +02:00
k8s-merge-robot
044d55ed7d Merge pull request #24142 from rrati/controller-sync-interval-23394
Automatic merge from submit-queue

Separated resync and relist functionality in reflector #23394

controller-manager #23394
2016-05-19 07:10:00 -07:00
k8s-merge-robot
d89d45a861 Merge pull request #25266 from smarterclayton/common_storage
Automatic merge from submit-queue

kube-apiserver options should be decoupled from impls

A few months ago we refactored options to keep it independent of the
implementations, so that it could be used in CLI tools to validate
config or to generate config, without pulling in the full dependency
tree of the master.  This change restores that by separating
server_run_options.go back to its own package.

Also, options structs should never contain non-serializable types, which
storagebackend.Config was doing with runtime.Codec. Split the codec out.

Fix a typo on the name of the etcd2.go storage backend.

Finally, move DefaultStorageMediaType to server_run_options.

@nikhiljindal as per my comment in #24454, @liggitt because you and I
discussed this last time
2016-05-19 06:13:38 -07:00
Clayton Coleman
e5fbf86157
Allow StatusErrors to be modified after creation 2016-05-19 09:08:53 -04:00
Robert Rati
e388c137bb Separate sync and list functionality in the reflector. #23394 2016-05-19 07:41:24 -04:00
Clayton Coleman
633683c08d
kube-apiserver options should be decoupled from impls
A few months ago we refactored options to keep it independent of the
implementations, so that it could be used in CLI tools to validate
config or to generate config, without pulling in the full dependency
tree of the master.  This change restores that by separating
server_run_options.go back to its own package.

Also, options structs should never contain non-serializable types, which
storagebackend.Config was doing with runtime.Codec. Split the codec out.

Fix a typo on the name of the etcd2.go storage backend.

Finally, move DefaultStorageMediaType to server_run_options.
2016-05-18 10:39:21 -04:00
Tim Hockin
152c86ab06 Make name validators return string slices 2016-05-18 00:48:01 -07:00
Wojciech Tyczynski
7452bc3f5b Tune traces thresholds in etcdHelper 2016-05-16 11:10:31 +02:00
k8s-merge-robot
be104a8271 Merge pull request #25415 from hongchaodeng/e2
Automatic merge from submit-queue

etcd_watcher: make Deleted Event.Object's version consistent

### What's the problem?

In [sendDelete()](995f022808/pkg/storage/etcd/etcd_watcher.go (L437-L442)), Deleted Event.Object's resource version will be set to the latest resource version. This is actually an assumption made by cacher that all later events should have objects with larger verions; See [here](995f022808/pkg/storage/cacher.go (L579-L581)).

In sendModify(), it could also return Deleted event. However, the resource version is still the old version, which is inconsistent behavior with sendDelete().

### What's this PR?
This PR sets the version of oldObj in sendModify() to be the latest version.
Provided unit test for it.
2016-05-14 20:46:20 -07:00
Matt Liggett
2bc46d5085 It's 2016, yo. 2016-05-13 12:41:40 -07:00
Hongchao Deng
5337bc220a etcd_watcher: test for ensuring delete event have latest index 2016-05-12 11:01:26 -07:00
Hongchao Deng
fcf63a6c4b etcd_watcher: make Deleted Event.Object's version consistent 2016-05-12 11:01:26 -07:00
k8s-merge-robot
aa8fddb7d9 Merge pull request #25369 from liggitt/cached-watch
Automatic merge from submit-queue

Return 'too old' errors from watch cache via watch stream

Fixes #25151

This PR updates the API server to produce the same results when a watch is attempted with a resourceVersion that is too old, regardless of whether the etcd watch cache is enabled. The expected result is a `200` http status, with a single watch event of type `ERROR`. Previously, the watch cache would deliver a `410` http response.

This is the uncached watch impl:
```
// Implements storage.Interface.
func (h *etcdHelper) WatchList(ctx context.Context, key string, resourceVersion string, filter storage.FilterFunc) (watch.Interface, error) {
	if ctx == nil {
		glog.Errorf("Context is nil")
	}
	watchRV, err := storage.ParseWatchResourceVersion(resourceVersion)
	if err != nil {
		return nil, err
	}
	key = h.prefixEtcdKey(key)
	w := newEtcdWatcher(true, h.quorum, exceptKey(key), filter, h.codec, h.versioner, nil, h)
	go w.etcdWatch(ctx, h.etcdKeysAPI, key, watchRV)
	return w, nil
}
```

once the resourceVersion parses, there is no path that returns a direct error, so all errors would have to be returned as an `ERROR` event via the ResultChan().
2016-05-10 18:15:15 -07:00
Hongchao Deng
cd3f7f41c1 etcd3/watcher: refactor test 2016-05-10 12:37:31 -07:00