-
Notifications
You must be signed in to change notification settings - Fork 649
[TESTING][PLUGINS]: Test, harden and document retry with exponential backoff pluginย #3746
Copy link
Copy link
Closed
Copy link
Labels
MUSTP1: Non-negotiable, critical requirements without which the product is non-functional or unsafeP1: Non-negotiable, critical requirements without which the product is non-functional or unsafechoreLinting, formatting, dependency hygiene, or project maintenance choresLinting, formatting, dependency hygiene, or project maintenance choresplannedPlanned for future releasePlanned for future releasepluginstestingTesting (unit, e2e, manual, automated, etc)Testing (unit, e2e, manual, automated, etc)wxowxo integrationwxo integration
Milestone
Metadata
Metadata
Assignees
Labels
MUSTP1: Non-negotiable, critical requirements without which the product is non-functional or unsafeP1: Non-negotiable, critical requirements without which the product is non-functional or unsafechoreLinting, formatting, dependency hygiene, or project maintenance choresLinting, formatting, dependency hygiene, or project maintenance choresplannedPlanned for future releasePlanned for future releasepluginstestingTesting (unit, e2e, manual, automated, etc)Testing (unit, e2e, manual, automated, etc)wxowxo integrationwxo integration
Type
Fields
Give feedbackNo fields configured for Task.
๐งช Summary
Sub-issue of #3735 โ Test, harden, and document the Retry with Backoff plugin (
plugins/retry_with_backoff/) to bring it to production quality for the 1.0.0 release.This plugin currently operates as an advisory-only plugin: it annotates retry policy metadata (max retries, backoff parameters, retry-triggering status codes) on
tool_post_invokeandresource_post_fetchhooks for downstream orchestration consumption, but does not itself perform retries.๐งฑ Area Affected
plugins/retry_with_backoff/โ Resilient retry logic with exponential backoff for transient failuresโ๏ธ Context / Rationale
The plugin is listed as Priority 1 โ Critical path in the parent issue. It is one of three plugins blocking for 1.0.0 along with Secrets Detection and Output Length Guard.
Current state:
tool_post_invokeandresource_post_fetchtests/unit/mcpgateway/utils/test_retry_manager.pycovers the utility layer)๐ Acceptance Criteria
Testing
tests/unit/plugins/test_retry_with_backoff.pycovering:tool_post_invokereturns correct metadata with default configresource_post_fetchreturns correct metadata includingretry_on_statusRetryPolicyConfigvalidation (e.g., negativemax_retries)retry_on_statuswith empty listmax_retries: 0(no retries)backoff_base_ms: 0/max_backoff_ms: 0Documentation
plugins/retry_with_backoff/README.mdto include:interrogatestandardsplugins/config.yamlhas a complete example entry for this pluginHardening
RetryPolicyConfigrejects or clamps out-of-range values (e.g.,backoff_base_ms > max_backoff_ms)DEBUGlevel, no sensitive data in logsjitter: true/falseconfig field and document behaviorOverall
plugin-manifest.yaml) is accurate and complete๐ Key Files
plugins/retry_with_backoff/retry_with_backoff.pyโ Plugin implementationplugins/retry_with_backoff/README.mdโ Plugin documentationplugins/retry_with_backoff/plugin-manifest.yamlโ Plugin manifestplugins/config.yamlโ Plugin configurationtests/unit/mcpgateway/utils/test_retry_manager.pyโ Existing retry utility tests (reference, not same layer)plugins/AGENTS.mdโ Plugin development guidelines