Commit 4b6bb2b
* [x-pack/filebeat/input/azureblobstorage] - Harden blob listing against transient failures and implement configurable retries (#51701)
x-pack/filebeat/input/azureblobstorage: harden blob listing against transient failures
Transient Azure Storage failures (HTTP 503 ServerBusy, HTTP 429
throttling, or brief network timeouts) during blob listing (pagination)
could exhaust the small, non-configurable default retries and fatally
stop the input with no recovery, leaving long ingestion gaps.
This change:
- Exposes a retry configuration block (max_retries, initial_retry_delay,
max_retry_delay) wired into the Azure SDK pipeline retry policy. Because
the policy lives in the client request pipeline, it covers blob listing
as well as downloads, and the download stream reader's retry count is
also driven by max_retries. Defaults mirror the SDK's own policy (3
retries, 800ms base delay, 60s ceiling), so configs that omit the block
behave exactly as before.
- Makes a transient listing failure non-fatal while polling: the input is
marked Degraded and the listing is retried on the next poll interval, so
it rides out longer outages and recovers on its own. No blobs are
skipped, because each poll re-lists from scratch and the checkpoint only
advances for processed blobs. Permanent failures (a missing container or
an authentication error) still stop the input, and one-shot (non-polling)
runs are unchanged.
- Reports Running again after a successful listing pass that schedules no
jobs, so a poll that recovers but has no new work (no new blobs, or
everything filtered out or already past the checkpoint) no longer leaves
the input stuck in Degraded.
- Migrates the package tests to localized logptest loggers (dropping the
deprecated logp.TestingSetup) and documents the stack versions the retry
attribute is available in.
Assisted-By: Cursor (Claude Opus 4.8)
(cherry picked from commit 0f86bf1)
# Conflicts:
# docs/reference/filebeat/filebeat-input-azure-blob-storage.md
# x-pack/filebeat/input/azureblobstorage/config.go
# x-pack/filebeat/input/azureblobstorage/input.go
# x-pack/filebeat/input/azureblobstorage/input_stateless.go
# x-pack/filebeat/input/azureblobstorage/types.go
* x-pack/filebeat/input/azureblobstorage: clean up botched retry backport
The 8.19 backport of #51701 (configurable retries) was committed with
unresolved merge-conflict markers in config.go, input.go,
input_stateless.go, types.go and the input reference docs, so the
package did not compile.
Resolving the conflict had also pulled in the unrelated path_prefix
feature, which exists only on main and was never backported to 8.19: a
PathPrefix config field, its Source plumbing, and a documented
path_prefix option. With the supporting filtering logic absent on 8.19
this was dead config.
Remove the conflict markers, drop the stray path_prefix additions from
both the code and the docs, and keep only the retry changes that #51701
actually introduced. Also drop the v9-only {applies_to} version
directives and the batch_size entry from the docs, which the 8.19
reference does not use.
Assisted-By: Cursor (Claude Opus 4.8)
* x-pack/filebeat/input/azureblobstorage: document retry in the asciidoc
On 8.19.x the input reference documentation is published from the
Asciidoc sources under x-pack/filebeat/docs/inputs, not the Markdown
files under docs/reference, which are irrelevant on this branch. The
previous cleanup had left the new retry documentation in the Markdown
file.
Add the retry attribute to input-azure-blob-storage.asciidoc (a
supported-attributes list entry and a new retry section describing
max_retries, initial_retry_delay and max_retry_delay), and revert the
Markdown file to its base state so the branch does not touch it.
Assisted-By: Cursor (Claude Opus 4.8)
* Update x-pack/filebeat/docs/inputs/input-azure-blob-storage.asciidoc
Co-authored-by: Visha Angelova <91186315+vishaangelova@users.noreply.github.com>
---------
Co-authored-by: Shourie Ganguly <shourie.ganguly@elastic.co>
Co-authored-by: Visha Angelova <91186315+vishaangelova@users.noreply.github.com>
1 parent 86604c5 commit 4b6bb2b
13 files changed
Lines changed: 740 additions & 45 deletions
File tree
- changelog/fragments
- x-pack/filebeat
- docs/inputs
- input/azureblobstorage
Lines changed: 41 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
Lines changed: 35 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
140 | 140 | | |
141 | 141 | | |
142 | 142 | | |
| 143 | + | |
143 | 144 | | |
144 | 145 | | |
145 | 146 | | |
| |||
393 | 394 | | |
394 | 395 | | |
395 | 396 | | |
| 397 | + | |
| 398 | + | |
| 399 | + | |
| 400 | + | |
| 401 | + | |
| 402 | + | |
| 403 | + | |
| 404 | + | |
| 405 | + | |
| 406 | + | |
| 407 | + | |
| 408 | + | |
| 409 | + | |
| 410 | + | |
| 411 | + | |
| 412 | + | |
| 413 | + | |
| 414 | + | |
| 415 | + | |
| 416 | + | |
| 417 | + | |
| 418 | + | |
| 419 | + | |
| 420 | + | |
| 421 | + | |
| 422 | + | |
| 423 | + | |
| 424 | + | |
| 425 | + | |
| 426 | + | |
| 427 | + | |
| 428 | + | |
| 429 | + | |
| 430 | + | |
396 | 431 | | |
397 | 432 | | |
398 | 433 | | |
| |||
0 commit comments