Skip to content

CLDSRV-937: Drop --ignore-optional from Dockerfile#6203

Merged
bert-e merged 1 commit into
development/9.4from
improvement/CLDSRV-937/drop-ignore-optional
Jun 25, 2026
Merged

CLDSRV-937: Drop --ignore-optional from Dockerfile#6203
bert-e merged 1 commit into
development/9.4from
improvement/CLDSRV-937/drop-ignore-optional

Conversation

@delthas

@delthas delthas commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

Summary

Drop the --ignore-optional flag from Dockerfile:30. There's no documented intent behind it, it's not used by any other Scality service, and removing it has no observable downside on the current dep tree.

-RUN yarn install --production --ignore-optional --frozen-lockfile --ignore-engines --network-concurrency 1
+RUN yarn install --production --frozen-lockfile --ignore-engines --network-concurrency 1

Archeology — why is the flag here?

Added 2019-08-01 in commit 81bce441b:

improvement/S3C-2365 migrate package manager to yarn

That's the whole commit message. The flag was new behaviour in the npm→yarn migration — the prior npm install --production did not skip optionals, so this wasn't a port of an existing constraint. The Dockerfile has been touched many times since (line moves, dep re-orderings, multi-stage build), but the flag itself has never been revisited or referenced anywhere.

Other Scality services don't use this flag

Backbeat, for example:

RUN yarn install --ignore-engines --frozen-lockfile --production --network-concurrency 1

No --ignore-optional. Cloudserver was the outlier — there's no project-wide convention behind it.

Doesn't break anything

Full list of optionalDependencies reachable from the current dep tree:

Package Source Effect when installed
ioctl arsenal Native module. Used by setDirSyncFlag on the Linux file metadata backend only (production Zenko uses bucketd / MongoDB, never the file backend). Already wrapped in try/catch with a warning fallback. Builds cleanly — the builder stage already installs build-essential, python3, node-gyp, libffi-dev, zlib1g-dev.
fsevents chokidar macOS-only file watcher. Modern yarn auto-skips it on Linux via its "os": ["darwin"] field. No-op.
uglify-js, commander, source-map, encoding, @pkgjs/parseargs handlebars / z-schema / escodegen / minipass-fetch / jackspeak Low-impact dev-ish transitives, no runtime regression risk.
@opentelemetry/{sdk-node, sdk-trace-base, resources, exporter-trace-otlp-http} arsenal Being promoted to regular dependencies in ARSN-601, so will be installed regardless of this flag once that lands.

yarn.lock already contains full resolved URLs and integrity hashes for everything — with --frozen-lockfile, yarn just fetches the existing locked tarballs. No package.json or yarn.lock change in this PR.

Related: ARSN-601

Issue: CLDSRV-937

@bert-e

bert-e commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

Hello delthas,

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 TBA
/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 Jun 23, 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

@delthas delthas requested review from a team, DarkIsDude and SylvainSenechal June 23, 2026 15:27
@codecov

codecov Bot commented Jun 23, 2026

Copy link
Copy Markdown

❌ 2 Tests Failed:

Tests completed Failed Passed Skipped
9437 2 9435 0
View the full list of 2 ❄️ flaky test(s)
"after each" hook for "should fail if trying to overwrite a delete marker"::MPU with x-scal-s3-version-id header With default signature "after each" hook for "should fail if trying to overwrite a delete marker"

Flake rate in main: 100.00% (Passed 0 times, Failed 77 times)

Stack Traces | 0.016s run time
We encountered an internal error. Please try again.
"after each" hook for "should fail if trying to overwrite a delete marker"::MPU with x-scal-s3-version-id header With v4 signature "after each" hook for "should fail if trying to overwrite a delete marker"

Flake rate in main: 100.00% (Passed 0 times, Failed 67 times)

Stack Traces | 0.015s run time
We encountered an internal error. Please try again.

To view more test analytics, go to the Test Analytics Dashboard
📋 Got 3 mins? Take this short survey to help us improve Test Analytics.

@delthas delthas requested review from a team and benzekrimaha June 23, 2026 15:46

@DarkIsDude DarkIsDude 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.

I'm not sure this is the right approach. Optional one "must" be optional. They should not trigger an exeception in the code. That's not really the philosophy of npm about them 😬. We have now several solutions:

  • Remove them from optional in arsenal (and package them all the time, that can make sense as we expose them). For example some deployment don't use mongo, but we package it.
  • Keep them optional and find how to fix them in arsenal. But I'm not sure we can as we need to trigger the tracing configuration at the root of the start.
  • Declare them as a dependency in Cloudserver (so only installed by the components that need them) and keep your "optional" philosophy. Not sure it's really useful, as on other component that use arsenal, they don't have the ignore optional and so we'll install them even if we don't use the opentelemetry.

In any case, dropping the ignore here is a good idea (as you describe in your PR, it's the only one). But the fix for opentelemetry should not be this one.

@delthas

delthas commented Jun 24, 2026

Copy link
Copy Markdown
Contributor Author

@DarkIsDude Fixing OTEL in scality/Arsenal#2653 , reworded this PR to be plain flag drop without the OTEL rationale

@delthas delthas requested a review from DarkIsDude June 24, 2026 10:00
@delthas

delthas commented Jun 24, 2026

Copy link
Copy Markdown
Contributor Author

/approve

@bert-e

bert-e commented Jun 24, 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/9.4

The following branches will NOT be impacted:

  • development/7.10
  • development/7.4
  • development/7.70
  • development/8.8
  • development/9.0
  • development/9.1
  • development/9.2
  • development/9.3

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

  • hotfix/7.10.8
  • hotfix/7.10.28
  • hotfix/7.4.2
  • hotfix/7.70.11
  • hotfix/9.0.32
  • hotfix/7.70.45
  • hotfix/7.4.9
  • hotfix/7.7.0
  • hotfix/8.8.45
  • hotfix/7.70.73
  • hotfix/7.4.0
  • hotfix/7.4.10
  • hotfix/7.4.7
  • hotfix/7.10.4
  • hotfix/7.10.2
  • hotfix/7.10.0
  • hotfix/7.10.27
  • hotfix/7.4.3
  • hotfix/7.4.6
  • hotfix/9.0.7
  • hotfix/7.10.15
  • hotfix/7.4.1
  • hotfix/7.10.49
  • hotfix/9.2.24
  • hotfix/7.10.30
  • hotfix/7.9.0
  • hotfix/7.8.0
  • hotfix/7.10.3
  • hotfix/7.4.5
  • hotfix/7.4.8
  • hotfix/7.2.0
  • hotfix/6.4.7
  • hotfix/7.6.0
  • hotfix/7.70.21
  • hotfix/7.70.51
  • hotfix/7.10.1
  • hotfix/7.4.4

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 Jun 24, 2026

Copy link
Copy Markdown
Contributor

Queue build failed

The corresponding build for the queue failed:

  • Checkout the status page.
  • Identify the failing build and review the logs.
  • If no issue is found, re-run the build.
  • If an issue is identified, checkout the steps below to remove
    the pull request from the queue for further analysis and maybe rebase/merge.
Remove the pull request from the queue
  • Add a /wait comment on this pull request.
  • Click on login on the status page.
  • Go into the manage page.
  • Find the option called Rebuild the queue and click on it.
    Bert-E will loop again on all pull requests to put the valid ones
    in the queue again, while skipping the one with the /wait comment.
  • Wait for the new queue to merge, then merge/rebase your pull request
    with the latest changes to then work on a proper fix.
  • Once the issue is fixed, delete the /wait comment and
    follow the usual process to merge the pull request.

@bert-e

bert-e commented Jun 25, 2026

Copy link
Copy Markdown
Contributor

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

  • ✔️ development/9.4

The following branches have NOT changed:

  • development/7.10
  • development/7.4
  • development/7.70
  • development/8.8
  • development/9.0
  • development/9.1
  • development/9.2
  • development/9.3

Please check the status of the associated issue CLDSRV-937.

Goodbye delthas.

@bert-e bert-e merged commit 8af6bfe into development/9.4 Jun 25, 2026
37 checks passed
@bert-e bert-e deleted the improvement/CLDSRV-937/drop-ignore-optional branch June 25, 2026 10:17
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