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(backups): backup worker inspect failed: address already in use #8197

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

stephane-m-dev
Copy link
Contributor

Description

When launching a backup worker, if using node inspector it fails since the port is already in use.

Starting inspector on 127.0.0.1:9229 failed: address already in use
2024-12-16T09:22:09.126Z xo:backups:worker INFO starting backup

This fix allows to use another port.

Checklist

  • Commit
    • Title follows commit conventions
    • Reference the relevant issue (Fixes #007, See xoa-support#42, See https://...)
    • If bug fix, add Introduced by
  • Changelog
    • If visible by XOA users, add changelog entry
    • Update "Packages to release" in CHANGELOG.unreleased.md
  • PR
    • If UI changes, add screenshots
    • If not finished or not tested, open as Draft

Review process

This 2-passes review process aims to:

  • develop skills of junior reviewers
  • limit the workload for senior reviewers
  • limit the number of unnecessary changes by the author
  1. The author creates a PR.
  2. Review process:
    1. The author assigns the junior reviewer.
    2. The junior reviewer conducts their review:
      • Resolves their comments if they are addressed.
      • Adds comments if necessary or approves the PR.
    3. The junior reviewer assigns the senior reviewer.
    4. The senior reviewer conducts their review:
      • If there are no unresolved comments on the PR → merge.
      • Otherwise, we continue with 3.
  3. The author responds to comments and/or makes corrections, and we go back to 2.

Notes:

  1. The author can request a review at any time, even if the PR is still a Draft.
  2. In theory, there should not be more than one reviewer at a time.
  3. The author should not make any changes:
    • When a reviewer is assigned.
    • Between the junior and senior reviews.

@stephane-m-dev stephane-m-dev force-pushed the backup-worker-inspect-on-another-port branch from 8c9ffd7 to 9152f6e Compare December 16, 2024 10:22
@stephane-m-dev stephane-m-dev changed the title fix(backups): backup worker inspect on another port fix(backups): backup worker inspect failed: address already in use Dec 16, 2024
CHANGELOG.unreleased.md Outdated Show resolved Hide resolved
@b-Nollet b-Nollet requested a review from fbeauchamp December 16, 2024 13:50
@stephane-m-dev stephane-m-dev force-pushed the backup-worker-inspect-on-another-port branch from 041e9ed to ea511dd Compare December 16, 2024 14:23
Copy link
Member

@julien-f julien-f left a comment

Choose a reason for hiding this comment

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

I don't think that's the correct approach, what if there is multiple backup workers?

Any other solutions?

@stephane-m-dev
Copy link
Contributor Author

I don't think that's the correct approach, what if there is multiple backup workers?

Any other solutions?

We could test which ports are currently used, and increment.

@stephane-m-dev stephane-m-dev requested review from fbeauchamp and removed request for fbeauchamp January 7, 2025 10:01
Comment on lines 10 to 22
const inspectArg = process.execArgv.find(arg => arg.startsWith('--inspect'))
const execArgv = inspectArg
? [inspectArg.replace(/^(--inspect)(=.*)?$/, (_, prefix) => `${prefix}=localhost:9230`)]
: []
const worker = fork(PATH, [], { execArgv })
Copy link
Collaborator

Choose a reason for hiding this comment

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

I am ok with the port being static since this is a debug use but it should be configurable, either by a specific command param like --inspectBackupWorkerPort= or in the config file

also, it could be a good idea to add this in the package.json script to be able to use yarn debug for example

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Since the debug port of the main process is configurable and set by --inspect, I propose that we use this port incremented by 1 for the port of the backup process.
This is what is generally done for apps that use multiple ports (like proxies that use port 8080 and 8081).

Copy link
Collaborator

Choose a reason for hiding this comment

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

ok, if you use the port of the main nodejs process and increment this. It will limit to a singe backup job debuggable at once but it's enough to help the devs

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Done. I also added the ability to use --inspect-brk, which may be necessary if we need to intercept the worker start.

@stephane-m-dev stephane-m-dev force-pushed the backup-worker-inspect-on-another-port branch from ea511dd to 2c92cf6 Compare January 16, 2025 18:08
@stephane-m-dev stephane-m-dev force-pushed the backup-worker-inspect-on-another-port branch from 2c92cf6 to 87506e4 Compare January 20, 2025 13:56
@stephane-m-dev stephane-m-dev force-pushed the backup-worker-inspect-on-another-port branch from 87506e4 to c73670a Compare January 20, 2025 18:41
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