diff --git a/snuba/web/rpc/v1/resolvers/R_eap_items/resolver_time_series.py b/snuba/web/rpc/v1/resolvers/R_eap_items/resolver_time_series.py index aa46559a9fa..cbeab045c84 100644 --- a/snuba/web/rpc/v1/resolvers/R_eap_items/resolver_time_series.py +++ b/snuba/web/rpc/v1/resolvers/R_eap_items/resolver_time_series.py @@ -483,7 +483,7 @@ def resolve( # When trace_filters are present and the feature is enabled, don't use sampling on the outer query # The inner query (getting trace IDs) will use sampling cross_item_queries_no_sample_outer = state.get_int_config( - "cross_item_queries_no_sample_outer", 0 + "cross_item_queries_no_sample_outer", 1 ) if not (in_msg.trace_filters and cross_item_queries_no_sample_outer): query_settings.set_sampling_tier(routing_decision.tier) diff --git a/snuba/web/rpc/v1/resolvers/R_eap_items/resolver_trace_item_table.py b/snuba/web/rpc/v1/resolvers/R_eap_items/resolver_trace_item_table.py index e4cca8f962f..d736582553f 100644 --- a/snuba/web/rpc/v1/resolvers/R_eap_items/resolver_trace_item_table.py +++ b/snuba/web/rpc/v1/resolvers/R_eap_items/resolver_trace_item_table.py @@ -670,7 +670,7 @@ def resolve( # When trace_filters are present and the feature is enabled, don't use sampling on the outer query # The inner query (getting trace IDs) will use sampling cross_item_queries_no_sample_outer = state.get_int_config( - "cross_item_queries_no_sample_outer", 0 + "cross_item_queries_no_sample_outer", 1 ) if not (in_msg.trace_filters and cross_item_queries_no_sample_outer): query_settings.set_sampling_tier(routing_decision.tier) diff --git a/snuba/web/rpc/v1/resolvers/common/cross_item_queries.py b/snuba/web/rpc/v1/resolvers/common/cross_item_queries.py index 265785da8f2..fc6fb1389d7 100644 --- a/snuba/web/rpc/v1/resolvers/common/cross_item_queries.py +++ b/snuba/web/rpc/v1/resolvers/common/cross_item_queries.py @@ -32,7 +32,9 @@ treeify_or_and_conditions, ) -_TRACE_LIMIT = 10000 +# 50 million trace ids * 16 bytes per id = a limit of 1gigabyte memory usage per cross item query +# most queries do not hit this number this is just an upper bound +_TRACE_LIMIT = 50_000_000 def convert_trace_filters_to_trace_item_filter_with_type( diff --git a/tests/web/rpc/v1/test_endpoint_time_series/test_endpoint_time_series_cross_item_sampling.py b/tests/web/rpc/v1/test_endpoint_time_series/test_endpoint_time_series_cross_item_sampling.py index 1248c7bdd63..95ad4a199ba 100644 --- a/tests/web/rpc/v1/test_endpoint_time_series/test_endpoint_time_series_cross_item_sampling.py +++ b/tests/web/rpc/v1/test_endpoint_time_series/test_endpoint_time_series_cross_item_sampling.py @@ -139,6 +139,9 @@ def test_cross_item_query_sampling_disabled(self) -> None: Test that when cross_item_queries_no_sample_outer is disabled (default): - Both queries use the same storage tier """ + # Explicitly disable the feature flag + state.set_config("cross_item_queries_no_sample_outer", 0) + trace_ids, all_items, start_time, end_time = create_cross_item_test_data() write_cross_item_data_to_storage(all_items) diff --git a/tests/web/rpc/v1/test_endpoint_trace_item_table/test_endpoint_trace_item_table_cross_item_sampling.py b/tests/web/rpc/v1/test_endpoint_trace_item_table/test_endpoint_trace_item_table_cross_item_sampling.py index cbc5f564697..ab3b41ee650 100644 --- a/tests/web/rpc/v1/test_endpoint_trace_item_table/test_endpoint_trace_item_table_cross_item_sampling.py +++ b/tests/web/rpc/v1/test_endpoint_trace_item_table/test_endpoint_trace_item_table_cross_item_sampling.py @@ -123,6 +123,9 @@ def test_cross_item_query_sampling_disabled(self) -> None: Test that when cross_item_queries_no_sample_outer is disabled (default): - Both queries use the same storage tier """ + # Explicitly disable the feature flag + state.set_config("cross_item_queries_no_sample_outer", 0) + trace_ids, all_items, start_time, end_time = create_cross_item_test_data() write_cross_item_data_to_storage(all_items)