Skip to content

Commit db48e43

Browse files
committed
Wire per-trace flush limit into span buffer
1 parent 7313af4 commit db48e43

File tree

2 files changed

+10
-0
lines changed

2 files changed

+10
-0
lines changed

src/sentry/options/defaults.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3214,6 +3214,13 @@
32143214
default=500,
32153215
flags=FLAG_PRIORITIZE_DISK | FLAG_AUTOMATOR_MODIFIABLE,
32163216
)
3217+
# Maximum number of segments per trace to flush in one cycle. 0 disables the limit.
3218+
register(
3219+
"spans.buffer.max-flush-segments-per-trace",
3220+
type=Int,
3221+
default=0,
3222+
flags=FLAG_PRIORITIZE_DISK | FLAG_AUTOMATOR_MODIFIABLE,
3223+
)
32173224
# Maximum memory percentage for the span buffer in Redis before rejecting messages.
32183225
register(
32193226
"spans.buffer.max-memory-percentage",

src/sentry/spans/buffer.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -568,6 +568,7 @@ def flush_segments(self, now: int) -> dict[SegmentKey, FlushedSegment]:
568568
queue_keys = []
569569
shard_factor = max(1, len(self.assigned_shards))
570570
max_flush_segments = options.get("spans.buffer.max-flush-segments")
571+
max_flush_segments_per_trace = options.get("spans.buffer.max-flush-segments-per-trace")
571572
flusher_logger_enabled = options.get("spans.buffer.flusher-cumulative-logger-enabled")
572573
max_segments_per_shard = math.ceil(max_flush_segments / shard_factor)
573574

@@ -589,6 +590,8 @@ def flush_segments(self, now: int) -> dict[SegmentKey, FlushedSegment]:
589590
for segment_key, score in keys_with_scores:
590591
segment_keys.append((shard, queue_key, segment_key, score))
591592

593+
segment_keys = self._apply_per_trace_limit(segment_keys, max_flush_segments_per_trace, now)
594+
592595
data_start = time.monotonic()
593596
with metrics.timer("spans.buffer.flush_segments.load_segment_data"):
594597
segments, ingested_counts = self._load_segment_data([k for _, _, k, _ in segment_keys])

0 commit comments

Comments
 (0)