Skip to content

fix(federation): change HashMap/HashSet usage to IndexMap/IndexSet to avoid non-determinism#5827

Merged
sachindshinde merged 2 commits intodevfrom
sachin/fix-nondeterministic-qp
Aug 16, 2024
Merged

fix(federation): change HashMap/HashSet usage to IndexMap/IndexSet to avoid non-determinism#5827
sachindshinde merged 2 commits intodevfrom
sachin/fix-nondeterministic-qp

Conversation

@sachindshinde
Copy link
Contributor

@sachindshinde sachindshinde commented Aug 15, 2024

One of the tests was failing with a non-deterministic QP snapshot failure. I suspected this was due to usage of HashMap/HashSet, and after converting all usages of them to apollo_compiler's IndexMap/IndexSet, the test's QP snapshot is now consistent across 100 runs. (We probably don't need to convert all usages for this test to pass, but this may help reduce non-determinism/help reproducibility in the future.)

@github-actions
Copy link
Contributor

@sachindshinde, please consider creating a changeset entry in /.changesets/. These instructions describe the process and tooling.

@router-perf
Copy link

router-perf bot commented Aug 15, 2024

CI performance tests

  • const - Basic stress test that runs with a constant number of users
  • demand-control-instrumented - A copy of the step test, but with demand control monitoring and metrics enabled
  • demand-control-uninstrumented - A copy of the step test, but with demand control monitoring enabled
  • enhanced-signature - Enhanced signature enabled
  • events - Stress test for events with a lot of users and deduplication ENABLED
  • events_big_cap_high_rate - Stress test for events with a lot of users, deduplication enabled and high rate event with a big queue capacity
  • events_big_cap_high_rate_callback - Stress test for events with a lot of users, deduplication enabled and high rate event with a big queue capacity using callback mode
  • events_callback - Stress test for events with a lot of users and deduplication ENABLED in callback mode
  • events_without_dedup - Stress test for events with a lot of users and deduplication DISABLED
  • events_without_dedup_callback - Stress test for events with a lot of users and deduplication DISABLED using callback mode
  • extended-reference-mode - Extended reference mode enabled
  • large-request - Stress test with a 1 MB request payload
  • no-tracing - Basic stress test, no tracing
  • reload - Reload test over a long period of time at a constant rate of users
  • step-jemalloc-tuning - Clone of the basic stress test for jemalloc tuning
  • step-local-metrics - Field stats that are generated from the router rather than FTV1
  • step-with-prometheus - A copy of the step test with the Prometheus metrics exporter enabled
  • step - Basic stress test that steps up the number of users over time
  • xlarge-request - Stress test with 10 MB request payload
  • xxlarge-request - Stress test with 100 MB request payload

@sachindshinde sachindshinde force-pushed the sachin/fix-nondeterministic-qp branch 2 times, most recently from 2c95ac4 to b590e5b Compare August 15, 2024 19:52
@sachindshinde sachindshinde force-pushed the sachin/fix-nondeterministic-qp branch from b590e5b to b8ca12f Compare August 15, 2024 20:39
@sachindshinde sachindshinde merged commit ada3920 into dev Aug 16, 2024
@sachindshinde sachindshinde deleted the sachin/fix-nondeterministic-qp branch August 16, 2024 01:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants