Skip to content
This repository has been archived by the owner on Jun 27, 2024. It is now read-only.

fix: panic if there are no workers #128

Merged
merged 7 commits into from
Jun 26, 2024
Merged

Conversation

rustatian
Copy link
Member

@rustatian rustatian commented Jun 25, 2024

Reason for This PR

  • RR keeps working if there are no workers.

Description of Changes

  • Prevent deleting the last worker.
  • Panic if there are no workers and RR failed to allocate them.

License Acceptance

By submitting this pull request, I confirm that my contribution is made under
the terms of the MIT license.

PR Checklist

[Author TODO: Meet these criteria.]
[Reviewer TODO: Verify that these criteria are met. Request changes if not]

  • All commits in this PR are signed (git commit -s).
  • The reason for this PR is clearly provided (issue no. or explanation).
  • The description of changes is clear and encompassing.
  • Any required documentation changes (code and docs) are included in this PR.
  • Any user-facing changes are mentioned in CHANGELOG.md.
  • All added/changed functionality is tested.

Summary by CodeRabbit

  • Chores

    • Updated linter version in GitHub workflows to v1.59.
    • Updated the PHP version in GitHub Actions workflow for Linux to 8.3.
  • Tests

    • Enhanced Test_StaticPool_RemoveWorker to check for total workers count after removal.
  • Bug Fixes

    • Added error handling and logging in worker management to prevent removal of the last worker and handle scenarios with no available workers.

Signed-off-by: Valery Piashchynski <piashchynski.valery@gmail.com>
Signed-off-by: Valery Piashchynski <piashchynski.valery@gmail.com>
@rustatian rustatian added the C-enhancement Category: enhancement. Meaning improvements of current module, transport, etc.. label Jun 25, 2024
@rustatian rustatian requested a review from wolfy-j June 25, 2024 12:14
@rustatian rustatian self-assigned this Jun 25, 2024
Copy link

coderabbitai bot commented Jun 25, 2024

Warning

Rate limit exceeded

@rustatian has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 8 minutes and 15 seconds before requesting another review.

How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

Commits

Files that changed from the base of the PR and between 8ec5f75 and afb64bd.

Walkthrough

The updates primarily focus on version enhancements and robustness improvements. In the GitHub workflows, the linter and PHP versions have been upgraded. Meanwhile, testing in pool/static_pool/pool_test.go has been refined to assert worker counts post-removal, and worker_watcher.go now includes protections against removing the last worker and enhanced error handling for worker management.

Changes

File Change Summary
.github/workflows/linters.yml Updated linter version from v1.57 to v1.59.
.github/workflows/linux.yml Updated the PHP version from "8.2" to "8.3".
pool/static_pool/pool_test.go Modified Test_StaticPool_RemoveWorker to ensure there are 2 workers left after removal.
worker_watcher/worker_watcher.go Added conditions to prevent removing the last worker and included logging and error handling for no workers.

Poem

In code's quiet dance, updates twirl,
Linters hum and PHP's new world.
Workers now with caution tread,
Logging, guarding, no dread to spread.
Progress made, with every line,
Code refined, just like fine wine. 🍷


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

Share
Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai generate interesting stats about this repository and render them as a table.
    • @coderabbitai show all the console.log statements in this repository.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (invoked as PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Additionally, you can add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.

CodeRabbit Configration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Signed-off-by: Valery Piashchynski <piashchynski.valery@gmail.com>
Signed-off-by: Valery Piashchynski <piashchynski.valery@gmail.com>
Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 1

Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

Commits

Files that changed from the base of the PR and between a39f16c and 8ec5f75.

Files selected for processing (4)
  • .github/workflows/linters.yml (1 hunks)
  • .github/workflows/linux.yml (1 hunks)
  • pool/static_pool/pool_test.go (1 hunks)
  • worker_watcher/worker_watcher.go (2 hunks)
Files skipped from review due to trivial changes (2)
  • .github/workflows/linters.yml
  • .github/workflows/linux.yml
Additional comments not posted (2)
worker_watcher/worker_watcher.go (1)

83-87: Ensure robustness when preventing the removal of the last worker.

The added logic to prevent the removal of the last worker is crucial for system stability. It's important to ensure that this behavior is well-documented and tested to prevent future errors in worker management.

pool/static_pool/pool_test.go (1)

181-182: Ensure test coverage for the new worker removal logic.

The test modification ensuring that two workers remain after attempts to remove all workers is a good addition. It's important to ensure that this test covers various edge cases and concurrency scenarios to fully validate the new behavior.

worker_watcher/worker_watcher.go Show resolved Hide resolved
Signed-off-by: Valery Piashchynski <piashchynski.valery@gmail.com>
Signed-off-by: Valery Piashchynski <piashchynski.valery@gmail.com>
@rustatian rustatian merged commit 9837866 into master Jun 26, 2024
6 checks passed
@rustatian rustatian deleted the fix/fail-on-no-workers branch June 26, 2024 14:47
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
C-enhancement Category: enhancement. Meaning improvements of current module, transport, etc..
Projects
Status: ✅ Done
Development

Successfully merging this pull request may close these issues.

1 participant