External API Configuration
Develocity Provenance Governor communicates with two external APIs to generate dependency insights during Policy Scan™ evaluations:
Both clients support configurable retry with exponential backoff, concurrency limits, and graceful degradation when retries are exhausted. All properties are optional — sensible defaults are applied when omitted.
OSV Properties
| Property | Type | Default | Description |
|---|---|---|---|
|
int |
|
Maximum number of retry attempts for transient failures. |
|
duration |
|
Minimum backoff duration between retries (exponential backoff). |
|
int |
|
Maximum queries per OSV batch call. Hard-capped at 1000 (OSV API limit); values above 1000 are clamped with a warning. |
|
int |
|
Maximum concurrent OSV requests for batch and detail fetching. |
|
string |
Base URL of the OSV API. |
|
|
data size |
|
Maximum in-memory buffer size for response decoding. Value is a number followed by a unit: |
OSI Properties
| Property | Type | Default | Description |
|---|---|---|---|
|
int |
|
Maximum number of retry attempts for transient failures. |
|
duration |
|
Minimum backoff duration between retries (exponential backoff). |
|
int |
|
Maximum concurrent OSI requests. Reduced from a previous default of 20 to lower the risk of triggering rate limits. |
|
string |
Base URL of the OSI API. |
|
|
data size |
|
Maximum in-memory buffer size for response decoding. Value is a number followed by a unit: |
Retry Behavior
Transient failures are automatically retried with exponential backoff. The following error types are classified as retryable:
-
HTTP 5xx server errors
-
HTTP 429 Too Many Requests
-
Network-level errors (I/O exceptions, channel errors)
When all retries are exhausted:
-
Vulnerability lookups — the affected vulnerability is silently omitted from the report.
-
Package metadata lookups — the package is treated as if the OSI API returned no data.
This ensures that a single flaky API call does not fail an entire scan.
Configuration Example
osv:
retries:
attempts: 3
min-backoff: 1s
batch-size: 1000
max-concurrency: 20
osi:
retries:
attempts: 3
min-backoff: 1s
max-concurrency: 10
Tuning for Rate-Limited Environments
If you observe frequent retry exhaustion in logs, consider:
-
Reducing
max-concurrency— lowers burst pressure on the external API (e.g.,osi.max-concurrency: 5). -
Increasing
min-backoff— gives the external API more time to recover between retries. -
Reducing
osv.batch-size— sends smaller batches to the OSV API if large batches trigger rate limiting.