Commit Graph

376 Commits

Author SHA1 Message Date
Wojciech Tyczynski
d5e235c831 Reduce timeout for waiting for resource version 2016-12-20 10:05:38 +01:00
Wojciech Tyczynski
457c9a2e6e Reduce amount of allocations in cacher 2016-12-19 13:51:07 +01:00
Kubernetes Submit Queue
f02c8e47bc Merge pull request #38669 from caesarxuchao/fix-cacher
Automatic merge from submit-queue

Fix leaking goroutines in watch cache

Fixes #38670 which causes leaked goroutines in the API server. The root cause is: if the WatchServer timeout [fires](https://github.com/kubernetes/kubernetes/blob/master/pkg/apiserver/watch.go#L187-L188) when the `result` channel is full, `sendWatchCacheEvent` will be blocked on the write to the `result` even though `cacheWatch.Stop()` is [called](https://github.com/kubernetes/kubernetes/blob/master/pkg/apiserver/watch.go#L171), because WatchServer stops consuming the `result` channel after the timeout.
Thanks to @krousey for identifying the problem. cc @mml @yujuhong
2016-12-13 00:43:08 -08:00
Chao Xu
7e787b144a fix leaking goroutine issues in watch cache 2016-12-12 21:41:33 -08:00
Mike Danese
c87de85347 autoupdate BUILD files 2016-12-12 13:30:07 -08:00
Kubernetes Submit Queue
e732ee70f4 Merge pull request #38406 from liggitt/remove-internal-json-annotations
Automatic merge from submit-queue

Remove json serialization annotations from internal types

fixes #3933

Internal types should never be serialized, and including json serialization tags on them makes it possible to accidentally do that without realizing it.

fixes in this PR:

* types
  * [x] remove json tags from internal types
  * [x] fix references from serialized types to internal ObjectMeta
* generation
  * [x] remove generated json codecs for internal types (they should never be used)
* kubectl
  * [x] fix `apply` to operate on versioned object
  * [x] fix sorting by field to operate on versioned object
  * [x] fix `--record` to build annotation patch using versioned object
* hpa
  * [x] fix unmarshaling to internal CustomMetricTargetList in validation
* thirdpartyresources
  * [x] fix encoding API responses using internal ObjectMeta
* tests
  * [x] fix tests to use versioned objects when checking encoded content
  * [x] fix tests passing internal objects to generic printers

follow ups (will open tracking issues or additional PRs):
- [ ] remove json tags from internal kubeconfig types (`kubectl config set` pathfinding needs to work against external type)
- [ ] HPA should version CustomMetricTargetList serialization in annotations
- [ ] revisit how TPR resthandlers encoding objects
- [ ] audit and add tests for printer use (human-readable printer requires internal versions, generic printers require external versions)
- [ ] add static analysis tests preventing new internal types from adding tags
- [ ] add static analysis tests requiring json tags on external types (and enforcing lower-case first letter)
- [ ] add more tests for `kubectl get` exercising known and unknown types with all output options
2016-12-10 14:00:17 -08:00
Jordan Liggitt
4536388909
Update bazel 2016-12-09 16:26:06 -05:00
Jordan Liggitt
fcf5bbccd6
Fix references from serializable types to use v1.ObjectMeta 2016-12-09 16:26:04 -05:00
Wojciech Tyczynski
01699ef320 Proper fix for non-receiving watchers 2016-12-09 09:43:10 +01:00
Kubernetes Submit Queue
34c873a748 Merge pull request #36711 from hongchaodeng/e4
Automatic merge from submit-queue (batch tested with PRs 38181, 38128, 36711)

etcd2: have prefix always prepended

The prefix issue is discussed in #36290.

This is fixing etcd2 behavior separately.

**release note**:
```
etcd2: have prefix always prepended
```
2016-12-07 03:09:34 -08:00
Kubernetes Submit Queue
6cfe041b53 Merge pull request #38200 from hongchaodeng/e
Automatic merge from submit-queue (batch tested with PRs 37032, 38119, 38186, 38200, 38139)

etcd2: remove unnecessary PrevValue in SetOption

ref: https://github.com/kubernetes/kubernetes/issues/37994

Summary:
- PrevValue is set in HTTP header, and large value (>1MB) could exceed check limit
- We don't need PrevValue indeed since we already use PrevIndex in SetOptions and each PrevIndex corresponds to each PrevValue.

I don't really think we need extra tests for this. There is already test for GuaranteedUpdate covering its use cases.
2016-12-06 18:29:38 -08:00
Hongchao Deng
7a0176da57 etcd2: remove unnecessary PrevValue in SetOption 2016-12-06 09:24:49 -08:00
Hongchao Deng
14ed02d0dd pkg/storage/etcd: update bazel 2016-12-05 15:10:38 -08:00
Hongchao Deng
b6e329654e etcd2: have prefix always prepended 2016-12-05 15:10:38 -08:00
Hongchao Deng
62c0e5abc3 pkg/storage: docs on watch 0 behavior 2016-12-05 15:10:24 -08:00
Hongchao Deng
34db128af9 etcd2: watch on 0 to return ADDED always 2016-12-05 15:10:24 -08:00
Hongchao Deng
51d9bb1f2b etcd3: have prefix to always prepended 2016-12-04 21:45:07 -08:00
Clayton Coleman
3454a8d52c
refactor: update bazel, codec, and gofmt 2016-12-03 19:10:53 -05:00
Clayton Coleman
5df8cc39c9
refactor: generated 2016-12-03 19:10:46 -05:00
Kubernetes Submit Queue
16a9c0b49c Merge pull request #37692 from wojtek-t/storage_resource_version_for_get
Automatic merge from submit-queue

Handle RV in Get calls to storage interface.

Ref #37473
2016-12-03 11:44:29 -08:00
Kubernetes Submit Queue
959d386ccf Merge pull request #36709 from hongchaodeng/e3
Automatic merge from submit-queue (batch tested with PRs 35300, 36709, 37643, 37813, 37697)

[etcd] test cleanup: remove unnecessary AddPrefix()

What?
Remove etcdtest.AddPrefix() in tests. They will be automatically prepended in etcd storage.

Why?
ref: #36290 #36374
After the change, it will double prepend.
2016-12-03 08:55:56 -08:00
Wojciech Tyczynski
ec247315be Handle RV in Get calls to storage interface. 2016-12-03 10:18:43 +01:00
Kubernetes Submit Queue
cd560926bd Merge pull request #36889 from wojtek-t/reuse_fields_and_labels
Automatic merge from submit-queue

Reuse fields and labels

This should significantly reduce memory allocations in apiserver in large cluster.
Explanation:
- every kubelet is refreshing watch every 5-10 minutes (this generally is not causing relist - it just renews watch)
- that means, in 5000-node cluster, we are issuing ~10 watches per second
- since we don't have "watch heartbets", the watch is issued from previously received resourceVersion
- to make some assumption, let's assume pods are evenly spread across pods, and writes for them are evenly spread - that means, that a given kubelet is interested in 1 per 5000 pod changes
- with that assumption, each watch, has to process 2500 (on average) previous watch events
- for each of such even, we are currently computing fields.

This PR is fixing this problem.
2016-12-02 21:49:43 -08:00
Wojciech Tyczynski
36e6cd19e1 Cache fields for filtering in watchCache. 2016-11-29 09:48:09 +01:00
Wojciech Tyczynski
ac7b1065e7 Better waiting for watch event delivery in cacher 2016-11-28 09:25:33 +01:00
Clayton Coleman
35a6bfbcee
generated: refactor 2016-11-23 22:30:47 -06:00
Chao Xu
bcc783c594 run hack/update-all.sh 2016-11-23 15:53:09 -08:00
Chao Xu
4f3d0e3bde more dependencies packages:
pkg/metrics
pkg/credentialprovider
pkg/security
pkg/securitycontext
pkg/serviceaccount
pkg/storage
pkg/fieldpath
2016-11-23 15:53:09 -08:00
Antoine Pelisse
e7bc178829 Revert "Add fast-path for Listing with ResourceVersion=0" 2016-11-18 14:15:08 -08:00
gmarek
e1542300ae Add fast-path for Listing with ResourceVersion=0 2016-11-18 13:54:10 +01:00
Kubernetes Submit Queue
38cc6df7b3 Merge pull request #36712 from hongchaodeng/e5
Automatic merge from submit-queue

cacher test: fix leftover v2 test server

I think this was dismissed in #30890

@timothysc @wojtek-t
2016-11-14 01:58:18 -08:00
Hongchao Deng
32a96b7dc0 pkg/storage: update bazel 2016-11-13 18:34:55 -08:00
Hongchao Deng
1972270f7b cacher test: fix leftover v2 test server 2016-11-13 16:22:24 -08:00
Hongchao Deng
3a28b7f848 test cleanup: remove unnecessary AddPrefix() 2016-11-12 16:04:23 -08:00
Hongchao Deng
5da4028aff etcd3: remove stale comments in test 2016-11-12 14:41:47 -08:00
Jordan Liggitt
7f61d37996
Fix watching from resourceVersion=0 in etcd3 watcher 2016-11-11 11:35:53 -08:00
Wojciech Tyczynski
f5cac3469e Add traces to etcd3 code 2016-11-09 16:13:46 +01:00
Wojciech Tyczynski
1f09d79584 Increase etcd3 compaction frequency 2016-10-31 08:40:13 +01:00
Andy Goldstein
d8fec75658 Fixes for golint tip
golint as of
3390df4df2/lint.go (L1440-L1442)
requires that any function that has a context.Context argument have said
argument in the first position. This commit fixes the one function we had where
it wasn't.
2016-10-27 12:07:23 -04:00
Kubernetes Submit Queue
6f80ec91d6 Merge pull request #35415 from wojtek-t/avoid_get
Automatic merge from submit-queue

Try to avoid Get to etcd in GuaranteedUpdate in Cacher
2016-10-26 16:15:06 -07:00
Kubernetes Submit Queue
6fd9acd3e1 Merge pull request #35621 from wojtek-t/reduce_watch_cache_lock_contention
Automatic merge from submit-queue

Reduce lock contention in watchCache
2016-10-26 14:23:30 -07:00
Wojciech Tyczynski
04e50ae119 Reduce lock contention in watchCache 2016-10-26 13:44:16 +02:00
Wojciech Tyczynski
5d2062db9f Reduce amount of not-helping logs in apiserver 2016-10-26 13:20:07 +02:00
Wojciech Tyczynski
a1090151ef Try to avoid Get to etcd in GuaranteedUpdate in Cacher 2016-10-25 21:59:02 +02:00
Mike Danese
3b6a067afc autogenerated 2016-10-21 17:32:32 -07:00
Wojciech Tyczynski
93c008f8a4 Support resourceVersion in GetToList - unify interface of List and GetToList 2016-10-21 10:09:23 +02:00
Kubernetes Submit Queue
5fcb9fd056 Merge pull request #35125 from wojtek-t/avoid_unnecessary_reallocations
Automatic merge from submit-queue

Avoid unnecessary reallocations of slice in Cacher
2016-10-19 20:33:13 -07:00
Wojciech Tyczynski
0ced3f43bf Avoid unnecessary reallocations of slice in Cacher 2016-10-19 19:33:33 +02:00
Wojciech Tyczynski
8040719d7f Avoid computing key func multiple times in cacher 2016-10-19 08:38:18 +02:00
Wojciech Tyczynski
f10b0205e7 Store keys in watchCache store 2016-10-19 08:38:18 +02:00