Skip to content

ARSN-623: guard missing data backend client in protectAzureBlocks - #2686

Merged
bert-e merged 1 commit into
development/8.5from
bugfix/ARSN-623/guard-missing-data-backend-client
Aug 19, 2026
Merged

ARSN-623: guard missing data backend client in protectAzureBlocks#2686
bert-e merged 1 commit into
development/8.5from
bugfix/ARSN-623/guard-missing-data-backend-client

Conversation

@DarkIsDude

@DarkIsDude DarkIsDude commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Issue: ARSN-623

Problem

MultipleBackendGateway.protectAzureBlocks() dereferences this.clients[location] without checking that the client exists:

const client = this.clients[location];
if (client.protectAzureBlocks) {   // TypeError when client is undefined

The if guards whether the client implements the method, but never whether it exists.

When a location is removed from the config overlay, objects that still reference it keep dataStoreName pointing at it, and cloudserver/lib/data/wrapper.js rebuilds the clients map without it. Deleting one of those objects then throws a TypeError, which crosses an async callback that has already fired, becomes Error: Callback was already called., is raised as an unhandledRejection — and Node exits the process.

Impact observed in the field: a single delete-objects call took every cloudserver pod into CrashLoopBackOff and the ARTESCA S3 endpoint fully offline, because each client retry landed on and killed a fresh pod. Found during the IronMountain XDM scale campaign (OS-1095) on ARTESCA 4.3.0-rc2 / cloudserver:9.3.9 with arsenal 8.4.4.

This is not Azure-specific: protectAzureBlocks runs on the shared object-delete path for every delete when backends.data === 'multiple' (the Zenko/XDM default). The Azure logic is inside the client, past the lookup that crashes.

Change

Return early when no client is configured for the location, and log it. Skipping is correct here — the call exists only to protect Azure blocks, and a location with no configured client cannot be an Azure backend.

@DarkIsDude DarkIsDude self-assigned this Aug 12, 2026
@bert-e

bert-e commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Hello darkisdude,

My role is to assist you with the merge of this
pull request. Please type @bert-e help to get information
on this process, or consult the user documentation.

Available options
name description privileged authored
/after_pull_request Wait for the given pull request id to be merged before continuing with the current one.
/bypass_author_approval Bypass the pull request author's approval
/bypass_build_status Bypass the build and test status
/bypass_commit_size Bypass the check on the size of the changeset TBA
/bypass_incompatible_branch Bypass the check on the source branch prefix
/bypass_jira_check Bypass the Jira issue check
/bypass_peer_approval Bypass the pull request peers' approval
/bypass_leader_approval Bypass the pull request leaders' approval
/approve Instruct Bert-E that the author has approved the pull request. ✍️
/create_pull_requests Allow the creation of integration pull requests.
/create_integration_branches Allow the creation of integration branches.
/no_octopus Prevent Wall-E from doing any octopus merge and use multiple consecutive merge instead
/unanimity Change review acceptance criteria from one reviewer at least to all reviewers
/wait Instruct Bert-E not to run until further notice.
Available commands
name description privileged
/help Print Bert-E's manual in the pull request.
/status Print Bert-E's current status in the pull request.
/clear Remove all comments from Bert-E from the history TBA
/retry Re-start a fresh build TBA
/build Re-start a fresh build TBA
/force_reset Delete integration branches & pull requests, and restart merge process from the beginning.
/reset Try to remove integration branches unless there are commits on them which do not appear on the source branch.

Status report is not available.

@bert-e

bert-e commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Incorrect fix version

The Fix Version/s in issue ARSN-623 contains:

  • None

Considering where you are trying to merge, I ignored possible hotfix versions and I expected to find:

  • 8.4.24

  • 8.5.13

Please check the Fix Version/s of ARSN-623, or the target
branch of this pull request.

@codecov

codecov Bot commented Aug 12, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 74.45%. Comparing base (c3f1564) to head (43a5307).
⚠️ Report is 41 commits behind head on development/8.5.

Additional details and impacted files
@@                 Coverage Diff                 @@
##           development/8.5    #2686      +/-   ##
===================================================
+ Coverage            74.40%   74.45%   +0.04%     
===================================================
  Files                  229      229              
  Lines                18546    18549       +3     
  Branches              3809     3810       +1     
===================================================
+ Hits                 13800    13810      +10     
+ Misses                4741     4734       -7     
  Partials                 5        5              

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@DarkIsDude
DarkIsDude changed the base branch from development/8.4 to development/8.5 August 12, 2026 14:36
@bert-e

bert-e commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Incorrect fix version

The Fix Version/s in issue ARSN-623 contains:

  • None

Considering where you are trying to merge, I ignored possible hotfix versions and I expected to find:

  • 8.5.13

Please check the Fix Version/s of ARSN-623, or the target
branch of this pull request.

@DarkIsDude
DarkIsDude force-pushed the bugfix/ARSN-623/guard-missing-data-backend-client branch 3 times, most recently from 4803c5b to 349dd80 Compare August 12, 2026 14:59
A location removed from the config overlay leaves objects behind that
still reference it, so this.clients[location] can be undefined. Reading
a property off it threw a TypeError which, crossing an async callback
that had already fired, became "Callback was already called" and was
raised as an unhandledRejection - killing the cloudserver process. With
client retries that took down every pod and the whole S3 endpoint.

Skip block protection when no client is configured for the location: a
location with no client cannot be an Azure backend.

Issue: ARSN-623
@DarkIsDude
DarkIsDude force-pushed the bugfix/ARSN-623/guard-missing-data-backend-client branch from 349dd80 to 43a5307 Compare August 12, 2026 15:03
@DarkIsDude
DarkIsDude requested review from a team, SylvainSenechal and benzekrimaha August 12, 2026 15:15
@DarkIsDude
DarkIsDude marked this pull request as ready for review August 13, 2026 09:19
@bert-e

bert-e commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Incorrect fix version

The Fix Version/s in issue ARSN-623 contains:

  • None

Considering where you are trying to merge, I ignored possible hotfix versions and I expected to find:

  • 8.5.14

Please check the Fix Version/s of ARSN-623, or the target
branch of this pull request.

@SylvainSenechal SylvainSenechal left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Side question : Is it normal that someone can remove a location, while their arstesca is still holding objects referencing that locations 🤔 seems like many other bug could follow from this situation 🤔

@bert-e

bert-e commented Aug 13, 2026

Copy link
Copy Markdown
Contributor

Waiting for approval

The following approvals are needed before I can proceed with the merge:

  • the author

  • 2 peers

@bert-e

bert-e commented Aug 17, 2026

Copy link
Copy Markdown
Contributor

Incorrect fix version

The Fix Version/s in issue ARSN-623 contains:

  • 8.5.14

Considering where you are trying to merge, I ignored possible hotfix versions and I expected to find:

  • 8.5.15

Please check the Fix Version/s of ARSN-623, or the target
branch of this pull request.

@DarkIsDude

Copy link
Copy Markdown
Contributor Author

/approve

@bert-e

bert-e commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

In the queue

The changeset has received all authorizations and has been added to the
relevant queue(s). The queue(s) will be merged in the target development
branch(es) as soon as builds have passed.

The changeset will be merged in:

  • ✔️ development/8.5

The following branches will NOT be impacted:

  • development/6.4
  • development/7.10
  • development/7.4
  • development/7.70
  • development/8.1
  • development/8.2
  • development/8.3
  • development/8.4

This pull request does not target the following hotfix branch(es) so they
will be left untouched:

  • hotfix/8.2.48
  • hotfix/7.4.4
  • hotfix/7.5.0
  • hotfix/7.6.0
  • hotfix/7.4.0
  • hotfix/7.10.46
  • hotfix/7.10.0
  • hotfix/7.4.6
  • hotfix/7.4.3
  • hotfix/7.8.0
  • hotfix/7.2.0
  • hotfix/7.4.2
  • hotfix/7.4.1
  • hotfix/7.10.1
  • hotfix/7.70.20
  • hotfix/7.10.57
  • hotfix/7.70.14
  • hotfix/7.9.0
  • hotfix/7.10.43
  • hotfix/7.10.31
  • hotfix/7.10.3
  • hotfix/7.4.8
  • hotfix/7.70.25
  • hotfix/7.4.9
  • hotfix/7.4.5
  • hotfix/7.4.7
  • hotfix/7.7.0
  • hotfix/7.10.4
  • hotfix/7.4.10
  • hotfix/7.10.29
  • hotfix/7.70.4
  • hotfix/7.10.36
  • hotfix/7.10.47
  • hotfix/7.10.2
  • hotfix/6.4.7

There is no action required on your side. You will be notified here once
the changeset has been merged. In the unlikely event that the changeset
fails permanently on the queue, a member of the admin team will
contact you to help resolve the matter.

IMPORTANT

Please do not attempt to modify this pull request.

  • Any commit you add on the source branch will trigger a new cycle after the
    current queue is merged.
  • Any commit you add on one of the integration branches will be lost.

If you need this pull request to be removed from the queue, please contact a
member of the admin team now.

The following options are set: approve

@bert-e

bert-e commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

I have successfully merged the changeset of this pull request
into targetted development branches:

  • ✔️ development/8.5

The following branches have NOT changed:

  • development/6.4
  • development/7.10
  • development/7.4
  • development/7.70
  • development/8.1
  • development/8.2
  • development/8.3
  • development/8.4

Please check the status of the associated issue ARSN-623.

Goodbye darkisdude.

@bert-e
bert-e merged commit d6ef4ed into development/8.5 Aug 19, 2026
14 checks passed
@bert-e
bert-e deleted the bugfix/ARSN-623/guard-missing-data-backend-client branch August 19, 2026 12:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants