Retry transient I/O errors (e.g. NoHttpResponseException) talking to OpenSearch - #146
Open
jordanpadams wants to merge 2 commits into
Open
Retry transient I/O errors (e.g. NoHttpResponseException) talking to OpenSearch#146jordanpadams wants to merge 2 commits into
jordanpadams wants to merge 2 commits into
Conversation
…OpenSearch Adds an IOException catch clause to RestClientWrapper.Retryable.retry() that rebuilds the client connection and retries with a capped backoff, bounded by the existing retry_limit (75 attempts). Mirrors the behavior already in place for the 403/429 cases. Ported from NASA-PDS/registry-common#306. Also updates CLAUDE.md to document that this repo is a hard fork/merge of registry-common, harvest, and registry-manager — upstream fixes must be manually ported here. Fixes #144 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.




🗒️ Summary
Fixes a Harvest error reported in #144 where transient network-level I/O failures (e.g.
NoHttpResponseException) were not being retried, causing Harvest to log an "Unexpected error (should not have made it here)" and abort the batch.RestClientWrapper.Retryable.retry()already handledOpenSearchExceptionresponses with status403(re-auth) and429(throttling), but had no handling for transport-levelIOExceptions. This adds anIOExceptioncatch clause that rebuilds the client connection and retries with a capped backoff (up to 30s), bounded by the existingretry_limitof 75 attempts.Ported from NASA-PDS/registry-common#306. Note: this repo is a hard fork/merge of
registry-common,harvest, andregistry-manager— upstream fixes must be manually ported here (documented in CLAUDE.md).🤖 AI Assistance Disclosure
Estimated % of code influenced by AI: 80%
⚙️ Test Data and/or Report
No dedicated unit tests exist for
RestClientWrapper's retry logic (it requires a live/mocked OpenSearch transport); the change mirrors the existing 403/429 retry pattern in the same class. Manual verification will come from re-running the reporter's Harvest manifest againstsbnumd-registryonce released.♻️ Related Issues
Fixes #144
🤓 Reviewer Checklist
Reviewers: Please verify the following before approving this pull request.
Documentation and PR Content
Security & Quality
Testing & Validation
Maintenance
🤖 Generated with Claude Code