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

bf: S3UTILS-180 unbounded number of sproxyd keys in Map #325

Merged

Conversation

jonathan-gramain
Copy link
Contributor

  • Fix missing transmission of the environment variable that limits the number of keys kept in the in-memory maps
    (OBJECT_REPAIR_DUPLICATE_KEYS_WINDOW_SIZE)

  • Add Number.parseInt() calls to environment variables where needed

  • Sanitize a little bit the env.js:

    • reorder lexicographically

    • set default value of OBJECT_REPAIR_RAFT_LOG_BEGIN_CSEQ to null to make ObjectRepair use the computed default when fetched (instead of having it declared separately from env.js)

Manually tested with a mocked oplog server returning entries with sproxyd keys:

  • without the fix: memory usage grows quickly (multiple GB after a few minutes)

  • with the fix: memory stabilizes at a level proportional to the value of OBJECT_REPAIR_DUPLICATE_KEYS_WINDOW_SIZE

  • not specifying OBJECT_REPAIR_DUPLICATE_KEYS_WINDOW_SIZE in the environment: stabilizes memory usage around the default value of 100000 entries.

@bert-e
Copy link
Contributor

bert-e commented Sep 19, 2024

Hello jonathan-gramain,

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
Copy link
Contributor

bert-e commented Sep 19, 2024

Incorrect fix version

The Fix Version/s in issue S3UTILS-180 contains:

  • 1.15.2

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

  • 1.15.3

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

@jonathan-gramain
Copy link
Contributor Author

ping

@bert-e
Copy link
Contributor

bert-e commented Sep 19, 2024

Waiting for approval

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

  • the author

  • 2 peers

- Fix missing transmission of the environment variable that limits the
  number of keys kept in the in-memory maps
  (`OBJECT_REPAIR_DUPLICATE_KEYS_WINDOW_SIZE`)

- Add `Number.parseInt()` calls to environment variables where needed

- Sanitize a little bit the `env.js`:

  - reorder lexicographically

  - set default value of `OBJECT_REPAIR_RAFT_LOG_BEGIN_CSEQ` to `null`
    to make ObjectRepair use the computed default when fetched
    (instead of having it declared separately from `env.js`)

Manually tested with a mocked oplog server returning entries with
sproxyd keys:

- without the fix: memory usage grows quickly (multiple GB after a few
  minutes)

- with the fix: memory stabilizes at a level proportional to the value
  of `OBJECT_REPAIR_DUPLICATE_KEYS_WINDOW_SIZE`

- not specifying `OBJECT_REPAIR_DUPLICATE_KEYS_WINDOW_SIZE` in the
  environment: stabilizes memory usage around the default value of
  100000 entries.
@jonathan-gramain jonathan-gramain force-pushed the bugfix/S3UTILS-180-sproxydKeysMapGrowsUnbounded branch from 497d185 to 15c504c Compare September 23, 2024 17:35
@bert-e
Copy link
Contributor

bert-e commented Sep 23, 2024

Conflict

There is a conflict between your branch bugfix/S3UTILS-180-sproxydKeysMapGrowsUnbounded and the
destination branch development/1.15.

Please resolve the conflict on the feature branch (bugfix/S3UTILS-180-sproxydKeysMapGrowsUnbounded).

git fetch && \
git checkout origin/bugfix/S3UTILS-180-sproxydKeysMapGrowsUnbounded && \
git merge origin/development/1.15

Resolve merge conflicts and commit

git push origin HEAD:bugfix/S3UTILS-180-sproxydKeysMapGrowsUnbounded

@jonathan-gramain jonathan-gramain changed the base branch from development/1.15 to development/1.14 September 23, 2024 17:35
@bert-e
Copy link
Contributor

bert-e commented Sep 23, 2024

Incorrect fix version

The Fix Version/s in issue S3UTILS-180 contains:

  • 1.15.3

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

  • 1.14.14

  • 1.15.3

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

@jonathan-gramain
Copy link
Contributor Author

/create_integration_branches

@bert-e
Copy link
Contributor

bert-e commented Sep 23, 2024

Conflict

A conflict has been raised during the creation of
integration branch w/1.15/bugfix/S3UTILS-180-sproxydKeysMapGrowsUnbounded with contents from bugfix/S3UTILS-180-sproxydKeysMapGrowsUnbounded
and development/1.15.

I have not created the integration branch.

Here are the steps to resolve this conflict:

 $ git fetch
 $ git checkout -B w/1.15/bugfix/S3UTILS-180-sproxydKeysMapGrowsUnbounded origin/development/1.15
 $ git merge origin/bugfix/S3UTILS-180-sproxydKeysMapGrowsUnbounded
 $ # <intense conflict resolution>
 $ git commit
 $ git push -u origin w/1.15/bugfix/S3UTILS-180-sproxydKeysMapGrowsUnbounded

The following options are set: create_integration_branches

@jonathan-gramain
Copy link
Contributor Author

/approve

@bert-e
Copy link
Contributor

bert-e commented Sep 23, 2024

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

  • ✔️ development/1.14

  • ✔️ development/1.15

The following branches have NOT changed:

  • development/1.13
  • development/1.4

Please check the status of the associated issue S3UTILS-180.

Goodbye jonathan-gramain.

The following options are set: approve, create_integration_branches

@bert-e bert-e merged commit 15c504c into development/1.14 Sep 23, 2024
4 checks passed
@bert-e bert-e deleted the bugfix/S3UTILS-180-sproxydKeysMapGrowsUnbounded branch September 23, 2024 17:48
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