Skip to content

Conversation

@jessejlt
Copy link
Member

@jessejlt jessejlt commented Nov 6, 2025

Summary

  • add sustained throttling detection that auto-suspends SummaryRule execution and surfaces context in status
  • block new submissions, backlog resubmits, and async retries while suspended to protect ADX
  • expand tests around the suspension heuristic and document the manual recovery requirements

Testing

  • go test ./adxexporter
  • go test ./...

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR introduces an auto-suspension feature for SummaryRules to protect ADX from sustained throttling. When a SummaryRule experiences throttling errors for an extended period (at least max(3 * spec.interval, 15m)), the ADX Exporter automatically suspends execution and surfaces a condition requiring manual operator intervention to resume.

Key changes:

  • Adds suspension detection logic that monitors throttling failures and automatically suspends rules exceeding the threshold
  • Updates reconciliation flow to skip submissions, backfill, and retries when a rule is suspended while still tracking inflight operations
  • Adds comprehensive test coverage for suspension scenarios including skip logic and threshold calculations

Reviewed Changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 7 comments.

File Description
docs/crds.md Documents the auto-suspension guardrail feature with details on trigger conditions and operator intervention requirements
adxexporter/summaryrule.go Implements suspension evaluation, throttle detection, and updates reconciliation flow to respect suspension state
adxexporter/summaryrule_test.go Adds five new tests covering suspension scenarios: skip submission, idle backlog, inflight tracking, retry skipping, and threshold evaluation
Comments suppressed due to low confidence (1)

adxexporter/summaryrule.go:1

  • [nitpick] The logic for handling backlog operations when suspended is split across two conditionals (lines 553-555 and 556-559). This could be simplified by combining into a single conditional: if op.OperationId == \"\" { if !suspended { r.processBacklogOperation(ctx, rule, op) } return }.
package adxexporter

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