Skip to content

ti_*: Use num_failure_retries instead of unattended mode#18404

Draft
kcreddy wants to merge 1 commit intoelastic:mainfrom
kcreddy:ti_all-num_failure_retries
Draft

ti_*: Use num_failure_retries instead of unattended mode#18404
kcreddy wants to merge 1 commit intoelastic:mainfrom
kcreddy:ti_all-num_failure_retries

Conversation

@kcreddy
Copy link
Copy Markdown
Contributor

@kcreddy kcreddy commented Apr 15, 2026

Proposed commit message

ti_*: use num_failure_retries instead of unattended mode

Replace settings.unattended: true with settings.num_failure_retries: -1
in all ti_* managed transforms. Unlike unattended mode which retries
all failures indefinitely (masking irrecoverable errors),
num_failure_retries: -1 retries only recoverable failures while still
surfacing genuinely irrecoverable ones to users.

Three packages (ti_anyrun, ti_flashpoint, ti_strider) that were added
after the original unattended PR (#16535) had no failure resilience at
all and now get num_failure_retries: -1 added.

[git-generate]
for transform in $(find packages/ti_*/ -type f -name transform.yml \
  -path '*/elasticsearch/transform/*'); do
    yq -i 'del(.settings.unattended)' "$transform"
    yq -i '.settings.num_failure_retries = -1' "$transform"
done

for transform in $(git diff --name-only packages/ | \
  grep 'transform\.yml$'); do
    current=$(yq '._meta.fleet_transform_version' "$transform")
    next=$(echo "$current" | awk -F. '{printf "%d.%d.%d",$1,$2+1,0}')
    yq -i "._meta.fleet_transform_version = \"$next\"" "$transform"
done

for pkg in $(git diff --name-only packages/ | cut -d/ -f1,2 | \
  sort -u); do
    cd "$pkg"
    elastic-package changelog add \
      --description "Use num_failure_retries instead of unattended mode for transform failure recovery." \
      --type enhancement --next minor \
      --link "https://github.com/elastic/integrations/pull/18404"
    cd ../../
done

Summary

Switches all ti_* managed transforms from settings.unattended: true to settings.num_failure_retries: -1.

  • unattended: true retries all failures indefinitely, including irrecoverable ones, which masks real problems from users.
  • num_failure_retries: -1 retries only recoverable failures indefinitely (network blips, transient cluster instability) while still surfacing irrecoverable errors.

This covers 52 transforms across 23 packages. Three packages (ti_anyrun, ti_flashpoint, ti_strider) were added after the original unattended PR (#16535) and had no failure resilience at all -- they now get num_failure_retries: -1 for the first time.

Changes per package

For each affected transform:

  1. Removed settings.unattended: true
  2. Added settings.num_failure_retries: -1
  3. Bumped _meta.fleet_transform_version (minor bump triggers reinstall)
  4. Added a changelog entry

Checklist

  • I have reviewed tips for building integrations and this pull request is aligned with them.
  • I have verified that all data streams collect metrics or logs.
  • I have added an entry to my package's changelog.yml file.
  • I have verified that Kibana version constraints are current according to guidelines.
  • I have verified that any added dashboard complies with Kibana's Dashboard good practices

Related issues

@kcreddy kcreddy requested a review from a team as a code owner April 15, 2026 06:47
@kcreddy kcreddy marked this pull request as draft April 15, 2026 06:47
@kcreddy kcreddy self-assigned this Apr 15, 2026
@kcreddy kcreddy added enhancement New feature or request Team:Security-Service Integrations Security Service Integrations team [elastic/security-service-integrations] labels Apr 15, 2026
Replace settings.unattended: true with settings.num_failure_retries: -1
in all ti_* managed transforms. Unlike unattended mode which retries
all failures indefinitely (masking irrecoverable errors),
num_failure_retries: -1 retries only recoverable failures while still
surfacing genuinely irrecoverable ones to users.

Three packages (ti_anyrun, ti_flashpoint, ti_strider) that were added
after the original unattended PR (elastic#16535) had no failure resilience at
all and now get num_failure_retries: -1 added.

Requires elastic/package-spec#1124 (add num_failure_retries to the
transform settings schema).

[git-generate]
for transform in $(find packages/ti_*/ -type f -name transform.yml \
  -path '*/elasticsearch/transform/*'); do
    yq -i 'del(.settings.unattended)' "$transform"
    yq -i '.settings.num_failure_retries = -1' "$transform"
done

for transform in $(git diff --name-only packages/ | \
  grep 'transform\.yml$'); do
    current=$(yq '._meta.fleet_transform_version' "$transform")
    next=$(echo "$current" | awk -F. '{printf "%d.%d.%d",$1,$2+1,0}')
    yq -i "._meta.fleet_transform_version = \"$next\"" "$transform"
done

for pkg in $(git diff --name-only packages/ | cut -d/ -f1,2 | \
  sort -u); do
    cd "$pkg"
    elastic-package changelog add \
      --description "Use num_failure_retries instead of unattended mode for transform failure recovery." \
      --type enhancement --next minor \
      --link "elastic#18404"
    cd ../../
done

Made-with: Cursor
@kcreddy kcreddy force-pushed the ti_all-num_failure_retries branch from 2fc72f0 to f441298 Compare April 15, 2026 06:53
@andrewkroh andrewkroh added Integration:ti_recordedfuture Recorded Future Integration:ti_rapid7_threat_command Rapid7 Threat Command (Partner supported) Integration:ti_domaintools DomainTools Feeds (Partner supported) Integration:ti_otx AlienVault OTX Integration:ti_strider Strider Shield (Partner supported) Integration:ti_anyrun ANY.RUN Threat Intelligence Feeds (Partner supported) Integration:ti_misp MISP Integration:ti_opencti OpenCTI Integration:ti_cybersixgill Cybersixgill Integration:ti_anomali Anomali ThreatStream Integration:ti_maltiverse Maltiverse (Partner supported) Integration:ti_eset ESET Threat Intelligence (Partner supported) Integration:ti_eclecticiq EclecticIQ (Partner supported) Integration:ti_abusech abuse.ch Integration:ti_greynoise GreyNoise (Community supported) Integration:ti_google_threat_intelligence Google Threat Intelligence (Partner supported) Integration:ti_threatq ThreatQuotient (Partner supported) Integration:ti_crowdstrike CrowdStrike Falcon Intelligence Integration:ti_custom Custom Threat Intelligence Integration:ti_threatconnect ThreatConnect (Partner supported) Integration:ti_cif3 Collective Intelligence Framework v3 (Community supported) Integration:ti_flashpoint Flashpoint labels Apr 15, 2026
@andrewkroh andrewkroh added the Integration:ti_cyware_intel_exchange Cyware Intel Exchange label Apr 15, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request Integration:ti_abusech abuse.ch Integration:ti_anomali Anomali ThreatStream Integration:ti_anyrun ANY.RUN Threat Intelligence Feeds (Partner supported) Integration:ti_cif3 Collective Intelligence Framework v3 (Community supported) Integration:ti_crowdstrike CrowdStrike Falcon Intelligence Integration:ti_custom Custom Threat Intelligence Integration:ti_cybersixgill Cybersixgill Integration:ti_cyware_intel_exchange Cyware Intel Exchange Integration:ti_domaintools DomainTools Feeds (Partner supported) Integration:ti_eclecticiq EclecticIQ (Partner supported) Integration:ti_eset ESET Threat Intelligence (Partner supported) Integration:ti_flashpoint Flashpoint Integration:ti_google_threat_intelligence Google Threat Intelligence (Partner supported) Integration:ti_greynoise GreyNoise (Community supported) Integration:ti_maltiverse Maltiverse (Partner supported) Integration:ti_misp MISP Integration:ti_opencti OpenCTI Integration:ti_otx AlienVault OTX Integration:ti_rapid7_threat_command Rapid7 Threat Command (Partner supported) Integration:ti_recordedfuture Recorded Future Integration:ti_strider Strider Shield (Partner supported) Integration:ti_threatconnect ThreatConnect (Partner supported) Integration:ti_threatq ThreatQuotient (Partner supported) Team:Security-Service Integrations Security Service Integrations team [elastic/security-service-integrations]

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ti_*: Replace unattended: true with num_failure_retries: -1 in all managed transforms

3 participants