-
Notifications
You must be signed in to change notification settings - Fork 501
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
Split Sync statuses to smaller objects in etcd #542
Split Sync statuses to smaller objects in etcd #542
Conversation
Codecov Report
@@ Coverage Diff @@
## main #542 +/- ##
==========================================
- Coverage 80.56% 78.74% -1.83%
==========================================
Files 88 94 +6
Lines 10123 10814 +691
==========================================
+ Hits 8156 8515 +359
- Misses 1514 1814 +300
- Partials 453 485 +32
Continue to review full report at Codecov.
|
Here's a memory usage of the same scenario as described in issues #413 and #541 : The memory usage is captured by running Here's another view of the same data, for 6 hours of execution and with additional change that pipelines are saved to etcd in groups of 20: SummaryThis graph shows that the PR helps to fix the memory leak in the main branch (graphs in the left, blue line) |
Co-authored-by: Yun Long <[email protected]>
* split traffic controller to smaller messages (hack) * fix type conversion * split both trafficcontroller and rawconfigtrafficcontroller statuses * include object name to key * fix typo * fix egctl object status get * address code review * group status updates to transactions of 20 update * make status update max batch size configurable * address review: put also the rest to cluster * Update pkg/option/option.go Co-authored-by: Yun Long <[email protected]> Co-authored-by: Yun Long <[email protected]>
* split traffic controller to smaller messages (hack) * fix type conversion * split both trafficcontroller and rawconfigtrafficcontroller statuses * include object name to key * fix typo * fix egctl object status get * address code review * group status updates to transactions of 20 update * make status update max batch size configurable * address review: put also the rest to cluster * Update pkg/option/option.go Co-authored-by: Yun Long <[email protected]> Co-authored-by: Yun Long <[email protected]>
Close #541 .
Change periodically (every 5s) called
StatusSyncController.handleStatus
.TrafficController
andRawconfigSyncController
, split the large status data structure to smaller items so that eachHTTPServer
object and eachHTTPPipeline
object has unique key "${kind}-${specName}" in etcd.Adapt pkg/api/cluster.go to these changes:
egctl object status list
does not require changesegctl object status get ${httpPipelineName|httpServerName}
uses_getStatusObjectFromTrafficController
--> adapt this function to read new status data from etcd