feat(router): optionally add jitter to config polling interval#1506
Merged
StarpTech merged 18 commits intowundergraph:mainfrom Jan 11, 2025
Merged
feat(router): optionally add jitter to config polling interval#1506StarpTech merged 18 commits intowundergraph:mainfrom
StarpTech merged 18 commits intowundergraph:mainfrom
Conversation
StarpTech
requested changes
Jan 9, 2025
StarpTech
requested changes
Jan 9, 2025
StarpTech
requested changes
Jan 9, 2025
StarpTech
reviewed
Jan 9, 2025
Member
Author
|
Should jitter now be a mandatory value with a non-zero default and enforced non-zero value? |
Contributor
|
I also thought about it. I think it is a good default to enable it. We have a default poll interval of 10s. We can have a jitter of 5s. You can validate min by adding a validation rule to the config json schema file. |
these are mostly for compliance, it's obvious they will pass
d7952dc to
ae230df
Compare
Member
Author
|
rebased instead |
Contributor
|
Please update the PR description according to you latest changes. |
Contributor
|
The reason why the CI is failing is because the action is not allowed to run for forks. We would need to improve this. I run the tests locally and the PR is ready to merge to me. Thank you. |
james-braund-cabiri
added a commit
to cabiri-io/cosmo
that referenced
this pull request
Jan 31, 2025
* feat: expose type data and record subgraphs for enums (wundergraph#1495) * chore(release): Publish [skip ci] - cdn@0.12.0 - wgc@0.71.5 - @wundergraph/composition@0.34.0 - controlplane@0.119.0 - @wundergraph/cosmo-shared@0.33.3 - studio@0.97.0 * feat: improve rate limit responses (add code, hide stats) (wundergraph#1497) * chore(release): Publish [skip ci] - router@0.161.0 * fix: provider should be specified in the config.yaml (wundergraph#1397) * fix: update the timeouts for clickhouse and platform service (wundergraph#1500) * chore(release): Publish [skip ci] - wgc@0.71.6 - controlplane@0.119.1 - router@0.161.1 * fix: add edfs to the demo environment (wundergraph#1505) * docs(CONTRIBUTING): fixup minor mistake in CONTRIBUTING.md under Go workspace (wundergraph#1502) Co-authored-by: Dustin Deus <deusdustin@gmail.com> * fix: full demo broken in main branch (wundergraph#1508) * feat(router): optionally add jitter to config polling interval (wundergraph#1506) Co-authored-by: Dustin Deus <deusdustin@gmail.com> * chore(release): Publish [skip ci] - router@0.162.0 * fix(router): remove wildcard from router graphql path (wundergraph#1509) * fix: use gauge for server.uptime metric (wundergraph#1510) Co-authored-by: Ludwig <ludwig.bedacht@gmail.com> * feat: cache warmer (wundergraph#1501) Co-authored-by: Ludwig <ludwig.bedacht@gmail.com> Co-authored-by: starptech <deusdustin@gmail.com> * chore(release): Publish [skip ci] - cdn@0.13.0 - @wundergraph/cosmo-cdn@0.8.0 - wgc@0.72.0 - @wundergraph/cosmo-connect@0.91.0 - controlplane@0.120.0 - graphqlmetrics@0.32.0 - router@0.163.0 - @wundergraph/cosmo-shared@0.33.4 - studio@0.98.0 * fix(cache warmup): consider only po of the last 7 days (wundergraph#1513) * chore(release): Publish [skip ci] - controlplane@0.120.1 * fix(cache operation): swallow cache errors and other improvements (wundergraph#1515) * chore(release): Publish [skip ci] - controlplane@0.120.2 - graphqlmetrics@0.32.1 - router@0.163.1 - studio@0.98.1 * feat: add variables remapping support (wundergraph#1516) Co-authored-by: starptech <deusdustin@gmail.com> * chore(release): Publish [skip ci] - router@0.164.0 * fix(router): write proper line endings and header for multipart (wundergraph#1517) * chore(release): Publish [skip ci] - router@0.164.1 * feat(router): optimize playground delivery, add concurrency_limit to config (wundergraph#1519) * fix(router): enable health checks during startup (wundergraph#1529) * feat: improve cache warmer (wundergraph#1530) Co-authored-by: Ludwig <ludwig.bedacht@gmail.com> * chore(release): Publish [skip ci] - controlplane@0.121.0 - router@0.165.0 - studio@0.99.0 * fix: remove semaphore from ResolveGraphQLSubscription (wundergraph#1532) * chore(release): Publish [skip ci] - router@0.165.1 * feat: add compatibility handshake between router and execution config (wundergraph#1534) * chore(release): Publish [skip ci] - wgc@0.72.1 - @wundergraph/composition@0.35.0 - @wundergraph/cosmo-connect@0.92.0 - controlplane@0.121.1 - router@0.166.0 - @wundergraph/cosmo-shared@0.34.0 - studio@0.99.1 * feat: also add handshake for static execution configs (wundergraph#1535) * chore(router): bump demo library to pickup subscription fix (wundergraph#1518) * feat(router): add interface for trace propagation (wundergraph#1526) * chore(release): Publish [skip ci] - router@0.167.0 * fix: adding/removing directive is not picked up by wgc subgraph check (wundergraph#1494) * chore(deps): upgrade ristretto to v2 (wundergraph#1538) * feat: add normalizedQuery to query plan and request info to trace (wundergraph#1536) Co-authored-by: df-wg <dave@wundergraph.com> * fix: add copy button to subgraph routing url (wundergraph#1543) Co-authored-by: Dustin Deus <deusdustin@gmail.com> * fix: webhooks shot when schema is unchanged (wundergraph#1542) * fix: trim the inputs of group mappers (wundergraph#1541) * fix: subgraphs search functionality (wundergraph#1540) * chore(release): Publish [skip ci] - controlplane@0.121.2 - graphqlmetrics@0.32.2 - router@0.168.0 - studio@0.99.2 * fix: increase max concurrent resolvers (wundergraph#1544) * refactor(router): redesign JWK authentication logic (wundergraph#1498) * chore(release): Publish [skip ci] - router@0.168.1 * fix: increase the test timeout value to prevent failures on slower machines (wundergraph#1547) * fix: reduce the breaking change retention duration (wundergraph#1550) * fix: change the defaults of breaking-change-retention (wundergraph#1551) * feat(router): enable starting the router without subgraphs (wundergraph#1533) * fix(router): parse accept header per rfc 9110 (wundergraph#1549) * chore(release): Publish [skip ci] - controlplane@0.121.3 - router@0.169.0 - studio@0.99.3 * feat(router): enable using redis clusters for rate limiting and apq (wundergraph#1499) * fix: json schema for traffic shaping subgraphs (wundergraph#1552) * chore: Update aws-lambda-router customisation after upstream sync --------- Co-authored-by: Nithin Kumar B <nithinkumar5353@gmail.com> Co-authored-by: hardworker-bot <bot@wundergraph.com> Co-authored-by: Jens Neuse <jens.neuse@gmx.de> Co-authored-by: Alessandro Pagnin <ale@wundergraph.com> Co-authored-by: Suvij Surya <suvijsurya76@gmail.com> Co-authored-by: endigma <endigma@mailcat.ca> Co-authored-by: Dustin Deus <deusdustin@gmail.com> Co-authored-by: Ludwig <ludwig.bedacht@gmail.com> Co-authored-by: Sergiy 🇺🇦 <818351+devsergiy@users.noreply.github.com> Co-authored-by: df-wg <dave@wundergraph.com> Co-authored-by: Aenimus <47415099+Aenimus@users.noreply.github.com>
james-braund-cabiri
added a commit
to cabiri-io/cosmo
that referenced
this pull request
Feb 4, 2025
* feat: expose type data and record subgraphs for enums (wundergraph#1495) * chore(release): Publish [skip ci] - cdn@0.12.0 - wgc@0.71.5 - @wundergraph/composition@0.34.0 - controlplane@0.119.0 - @wundergraph/cosmo-shared@0.33.3 - studio@0.97.0 * feat: improve rate limit responses (add code, hide stats) (wundergraph#1497) * chore(release): Publish [skip ci] - router@0.161.0 * fix: provider should be specified in the config.yaml (wundergraph#1397) * fix: update the timeouts for clickhouse and platform service (wundergraph#1500) * chore(release): Publish [skip ci] - wgc@0.71.6 - controlplane@0.119.1 - router@0.161.1 * fix: add edfs to the demo environment (wundergraph#1505) * docs(CONTRIBUTING): fixup minor mistake in CONTRIBUTING.md under Go workspace (wundergraph#1502) Co-authored-by: Dustin Deus <deusdustin@gmail.com> * fix: full demo broken in main branch (wundergraph#1508) * feat(router): optionally add jitter to config polling interval (wundergraph#1506) Co-authored-by: Dustin Deus <deusdustin@gmail.com> * chore(release): Publish [skip ci] - router@0.162.0 * fix(router): remove wildcard from router graphql path (wundergraph#1509) * fix: use gauge for server.uptime metric (wundergraph#1510) Co-authored-by: Ludwig <ludwig.bedacht@gmail.com> * feat: cache warmer (wundergraph#1501) Co-authored-by: Ludwig <ludwig.bedacht@gmail.com> Co-authored-by: starptech <deusdustin@gmail.com> * chore(release): Publish [skip ci] - cdn@0.13.0 - @wundergraph/cosmo-cdn@0.8.0 - wgc@0.72.0 - @wundergraph/cosmo-connect@0.91.0 - controlplane@0.120.0 - graphqlmetrics@0.32.0 - router@0.163.0 - @wundergraph/cosmo-shared@0.33.4 - studio@0.98.0 * fix(cache warmup): consider only po of the last 7 days (wundergraph#1513) * chore(release): Publish [skip ci] - controlplane@0.120.1 * fix(cache operation): swallow cache errors and other improvements (wundergraph#1515) * chore(release): Publish [skip ci] - controlplane@0.120.2 - graphqlmetrics@0.32.1 - router@0.163.1 - studio@0.98.1 * feat: add variables remapping support (wundergraph#1516) Co-authored-by: starptech <deusdustin@gmail.com> * chore(release): Publish [skip ci] - router@0.164.0 * fix(router): write proper line endings and header for multipart (wundergraph#1517) * chore(release): Publish [skip ci] - router@0.164.1 * feat(router): optimize playground delivery, add concurrency_limit to config (wundergraph#1519) * fix(router): enable health checks during startup (wundergraph#1529) * feat: improve cache warmer (wundergraph#1530) Co-authored-by: Ludwig <ludwig.bedacht@gmail.com> * chore(release): Publish [skip ci] - controlplane@0.121.0 - router@0.165.0 - studio@0.99.0 * fix: remove semaphore from ResolveGraphQLSubscription (wundergraph#1532) * chore(release): Publish [skip ci] - router@0.165.1 * feat: add compatibility handshake between router and execution config (wundergraph#1534) * chore(release): Publish [skip ci] - wgc@0.72.1 - @wundergraph/composition@0.35.0 - @wundergraph/cosmo-connect@0.92.0 - controlplane@0.121.1 - router@0.166.0 - @wundergraph/cosmo-shared@0.34.0 - studio@0.99.1 * feat: also add handshake for static execution configs (wundergraph#1535) * chore(router): bump demo library to pickup subscription fix (wundergraph#1518) * feat(router): add interface for trace propagation (wundergraph#1526) * chore(release): Publish [skip ci] - router@0.167.0 * fix: adding/removing directive is not picked up by wgc subgraph check (wundergraph#1494) * chore(deps): upgrade ristretto to v2 (wundergraph#1538) * feat: add normalizedQuery to query plan and request info to trace (wundergraph#1536) Co-authored-by: df-wg <dave@wundergraph.com> * fix: add copy button to subgraph routing url (wundergraph#1543) Co-authored-by: Dustin Deus <deusdustin@gmail.com> * fix: webhooks shot when schema is unchanged (wundergraph#1542) * fix: trim the inputs of group mappers (wundergraph#1541) * fix: subgraphs search functionality (wundergraph#1540) * chore(release): Publish [skip ci] - controlplane@0.121.2 - graphqlmetrics@0.32.2 - router@0.168.0 - studio@0.99.2 * fix: increase max concurrent resolvers (wundergraph#1544) * refactor(router): redesign JWK authentication logic (wundergraph#1498) * chore(release): Publish [skip ci] - router@0.168.1 * fix: increase the test timeout value to prevent failures on slower machines (wundergraph#1547) * fix: reduce the breaking change retention duration (wundergraph#1550) * fix: change the defaults of breaking-change-retention (wundergraph#1551) * feat(router): enable starting the router without subgraphs (wundergraph#1533) * fix(router): parse accept header per rfc 9110 (wundergraph#1549) * chore(release): Publish [skip ci] - controlplane@0.121.3 - router@0.169.0 - studio@0.99.3 * feat(router): enable using redis clusters for rate limiting and apq (wundergraph#1499) * fix: json schema for traffic shaping subgraphs (wundergraph#1552) * fix: subgraph timeout can't be bigger than global timeout (wundergraph#1548) * fix: error when graph token is not set when cache warmup is enabled (wundergraph#1554) * chore(release): Publish [skip ci] - router@0.170.0 * fix: incorrect graphql endpoint in playground (wundergraph#1562) * chore(release): Publish [skip ci] - @wundergraph/playground@0.8.3 - router@0.170.1 * fix: update vulnerable packages (wundergraph#1560) * fix: synchronize go mod versions (wundergraph#1564) * chore: reduce verbose logging for failed tests (wundergraph#1565) * fix: Add missing config mapping, bump aws-lambda-router version * fix: Repair PNPM lockfile after merge --------- Co-authored-by: Nithin Kumar B <nithinkumar5353@gmail.com> Co-authored-by: hardworker-bot <bot@wundergraph.com> Co-authored-by: Jens Neuse <jens.neuse@gmx.de> Co-authored-by: Alessandro Pagnin <ale@wundergraph.com> Co-authored-by: Suvij Surya <suvijsurya76@gmail.com> Co-authored-by: endigma <endigma@mailcat.ca> Co-authored-by: Dustin Deus <deusdustin@gmail.com> Co-authored-by: Ludwig <ludwig.bedacht@gmail.com> Co-authored-by: Sergiy 🇺🇦 <818351+devsergiy@users.noreply.github.com> Co-authored-by: df-wg <dave@wundergraph.com> Co-authored-by: Aenimus <47415099+Aenimus@users.noreply.github.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Motivation and Context
Users with many server instances may experience burst load issues when all instances refresh their config simultaneously. This feature helps to mitigate this issue by adding a config option:
poll_jitterthat introduces variance on top of the basepollInterval. A value of 0 will result in no jitter, beyond inherent OS timing jitter.Summary
randomDurationto thecontrolplanepackagecontrolplane'sPollimplementation to add variable jitter to the handler start timerandomDurationand add some coverage toPollas wellpoll_jitterhas been created that represents some duration between 0 and its value to be added to the ticker's intervalCaveats of jitter implementation
The jitter is added between the tick being consumed and the handler being executed, which means the period the handler has to execute before a tick is dropped is not consistent. This is a non-issue where ticks being dropped is tolerable, but reusing the Poll implementation with jitter enabled and small intervals may surface this issue.
Checklist