Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix service crash when non-arsenal errors is sent to delete route #2267

Merged
merged 12 commits into from
Nov 26, 2024

Conversation

williamlardier
Copy link
Contributor

@williamlardier williamlardier commented Oct 22, 2024

Fixes a crash when the error we receive from the rout is not an Arsenal error (which is a possible and valid case).

@bert-e
Copy link
Contributor

bert-e commented Oct 22, 2024

Hello williamlardier,

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.

Copy link

codecov bot commented Oct 22, 2024

Codecov Report

Attention: Patch coverage is 87.03704% with 7 lines in your changes missing coverage. Please review.

Project coverage is 66.12%. Comparing base (6a33bcc) to head (c95d269).
Report is 12 commits behind head on development/8.1.

Files with missing lines Patch % Lines
lib/s3routes/routesUtils.ts 85.71% 7 Missing ⚠️
Additional details and impacted files
@@                 Coverage Diff                 @@
##           development/8.1    #2267      +/-   ##
===================================================
+ Coverage            64.90%   66.12%   +1.22%     
===================================================
  Files                  215      215              
  Lines                17298    17325      +27     
  Branches              3514     3552      +38     
===================================================
+ Hits                 11228    11457     +229     
+ Misses                6055     5853     -202     
  Partials                15       15              

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

@williamlardier williamlardier marked this pull request as ready for review October 22, 2024 16:06
@scality scality deleted a comment from bert-e Oct 22, 2024
@bert-e
Copy link
Contributor

bert-e commented Oct 22, 2024

Request integration branches

Waiting for integration branch creation to be requested by the user.

To request integration branches, please comment on this pull request with the following command:

/create_integration_branches

Alternatively, the /approve and /create_pull_requests commands will automatically
create the integration branches.

@williamlardier williamlardier force-pushed the bugfix/ARSN-441 branch 2 times, most recently from e4dae6d to 2079ec6 Compare October 23, 2024 09:57
- Error may be returned by modules not using Arsenal
- In this case, any non-arsenal error reaching this code would
  cause a crash of the service.

Issue: ARSN-441
Arsenal routes today are used in cloudserver, that calls these
callback functions using, most of the time, Arsenal errors. But
sometimes, especially when using modules, such as hdclient or
others, we might not return an Arsenal error. In this case, we
still try to access undefined properties, eventually leading to
strange responses to the client.

The changes are introducing support for traditional Error objects,
so that we can safely pass any error from a module used in an API
call.
@williamlardier
Copy link
Contributor Author

/create_integration_branches

@bert-e
Copy link
Contributor

bert-e commented Nov 22, 2024

Integration data created

I have created the integration data for the additional destination branches.

  • this pull request will merge bugfix/ARSN-441 into
    development/8.1
  • w/8.2/bugfix/ARSN-441 will be merged into development/8.2

The following branches will NOT be impacted:

  • development/6.4
  • development/7.10
  • development/7.4
  • development/7.70

You can set option create_pull_requests if you need me to create
integration pull requests in addition to integration branches, with:

@bert-e create_pull_requests

The following options are set: create_integration_branches

@bert-e
Copy link
Contributor

bert-e commented Nov 22, 2024

Waiting for approval

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

  • the author

  • 2 peers

The following options are set: create_integration_branches

@bert-e
Copy link
Contributor

bert-e commented Nov 26, 2024

History mismatch

Merge commit #4f641951bf8210352d7b0cbc96e3872538f7a99c on the integration branch
w/8.2/bugfix/ARSN-441 is merging a branch which is neither the current
branch bugfix/ARSN-441 nor the development branch
development/8.2.

It is likely due to a rebase of the branch bugfix/ARSN-441 and the
merge is not possible until all related w/* branches are deleted or updated.

Please use the reset command to have me reinitialize these branches.

The following options are set: create_integration_branches

@williamlardier
Copy link
Contributor Author

/reset

@bert-e
Copy link
Contributor

bert-e commented Nov 26, 2024

Reset complete

I have successfully deleted this pull request's integration branches.

The following options are set: create_integration_branches

@bert-e
Copy link
Contributor

bert-e commented Nov 26, 2024

Integration data created

I have created the integration data for the additional destination branches.

  • this pull request will merge bugfix/ARSN-441 into
    development/8.1
  • w/8.2/bugfix/ARSN-441 will be merged into development/8.2

The following branches will NOT be impacted:

  • development/6.4
  • development/7.10
  • development/7.4
  • development/7.70

You can set option create_pull_requests if you need me to create
integration pull requests in addition to integration branches, with:

@bert-e create_pull_requests

The following options are set: create_integration_branches

@bert-e
Copy link
Contributor

bert-e commented Nov 26, 2024

Waiting for approval

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

  • the author

  • 2 peers

The following options are set: create_integration_branches

@@ -30,7 +30,7 @@ export default function routerWebsite(
// request being redirected
if (redirectInfo) {
if (err && redirectInfo.withError) {
return routesUtils.redirectRequestOnError(err,
return routesUtils.redirectRequestOnError(err as ArsenalError,
Copy link
Contributor

Choose a reason for hiding this comment

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

do you know why we need type coercion here?
callApiMethod already defines that the callback receives an ArsenalError error...

Copy link
Contributor Author

Choose a reason for hiding this comment

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

It's because the error we can currently get from APIs is defined in

export type CallApiMethod = (
    methodName: string,
    request: http.IncomingMessage,
    response: http.ServerResponse,
    log: RequestLogger,
    callback: (err: ArsenalError | Error | null, ...data: any[]) => void,
) => void;

So it can be a non-arsenal error, this change was made on purpose so we benefit from ts checks everywhere and cover all paths that could lead to errors. The case of website is special, we already know it can only be arsenal errors. All of this will be removed once we have the "long term" solution in place

Copy link
Contributor

@francoisferrand francoisferrand Nov 26, 2024

Choose a reason for hiding this comment

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

indeed, I missed the alternate types 🤦‍♂️

but it seems a bit dangerous to just "expect" these will be arsenal errors and blindly trust this is the case : if we want to rely on typescript to detect errors, best do it all the way and add an early check that it is indeed an ArsenalError (or just don't cast, and allow redirectRequestOnError to handle any Error)

Copy link
Contributor Author

Choose a reason for hiding this comment

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

I updated the function so that it accepts non-arsenal errors - i kept the logic to dynamically recreate an arsenal error in this case, so we minimize the changes (we still need to return an Arsenal error today to the client).

Copy link
Contributor

Choose a reason for hiding this comment

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

👍, but then we should remove the type-coercion altogether

Copy link
Contributor Author

Choose a reason for hiding this comment

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

yes... thanks

@bert-e
Copy link
Contributor

bert-e commented Nov 26, 2024

History mismatch

Merge commit #6a61a1ef32940fb171ede13e0bce18dc581c3728 on the integration branch
w/8.2/bugfix/ARSN-441 is merging a branch which is neither the current
branch bugfix/ARSN-441 nor the development branch
development/8.2.

It is likely due to a rebase of the branch bugfix/ARSN-441 and the
merge is not possible until all related w/* branches are deleted or updated.

Please use the reset command to have me reinitialize these branches.

The following options are set: create_integration_branches

@williamlardier
Copy link
Contributor Author

/reset

@bert-e
Copy link
Contributor

bert-e commented Nov 26, 2024

Reset complete

I have successfully deleted this pull request's integration branches.

The following options are set: create_integration_branches

@bert-e
Copy link
Contributor

bert-e commented Nov 26, 2024

Integration data created

I have created the integration data for the additional destination branches.

  • this pull request will merge bugfix/ARSN-441 into
    development/8.1
  • w/8.2/bugfix/ARSN-441 will be merged into development/8.2

The following branches will NOT be impacted:

  • development/6.4
  • development/7.10
  • development/7.4
  • development/7.70

You can set option create_pull_requests if you need me to create
integration pull requests in addition to integration branches, with:

@bert-e create_pull_requests

The following options are set: create_integration_branches

@bert-e
Copy link
Contributor

bert-e commented Nov 26, 2024

Waiting for approval

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

  • the author

  • 2 peers

The following options are set: create_integration_branches

@williamlardier
Copy link
Contributor Author

/approve

@bert-e
Copy link
Contributor

bert-e commented Nov 26, 2024

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

  • ✔️ development/8.1

  • ✔️ development/8.2

The following branches have NOT changed:

  • development/6.4
  • development/7.10
  • development/7.4
  • development/7.70

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

Goodbye williamlardier.

The following options are set: approve, create_integration_branches

@bert-e bert-e merged commit c95d269 into development/8.1 Nov 26, 2024
7 checks passed
@bert-e bert-e deleted the bugfix/ARSN-441 branch November 26, 2024 15:45
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.

5 participants