Skip to content

fix: kill SyncProcessSupervisor before killing SyncProcess to avoid an unnecessary log.error #274

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

Merged
merged 1 commit into from
Jun 18, 2025

Conversation

michalsosn
Copy link
Contributor

@michalsosn michalsosn commented Jun 18, 2025

Summary by Sourcery

Bug Fixes:

  • Interrupt and join the SyncProcessSupervisor before killing the SyncProcess to prevent redundant log.error messages

Copy link

sourcery-ai bot commented Jun 18, 2025

Reviewer's Guide

Reorders the shutdown sequence to interrupt and join the SyncProcessSupervisor before terminating the SyncProcess, preventing redundant error logs.

Sequence diagram for updated shutdown order in _close method

sequenceDiagram
    participant Run
    participant SyncProcessSupervisor
    participant SyncProcess
    participant LagTracker
    participant Timer

    Run->>Timer: remaining_time()
    alt SyncProcessSupervisor exists
        Run->>SyncProcessSupervisor: interrupt()
        Run->>SyncProcessSupervisor: join(timeout)
    end
    alt SyncProcess is alive
        Run->>Timer: remaining_time()
        Run->>SyncProcess: wait_for_processing(timeout)
        Run->>Timer: remaining_time()
        Run->>SyncProcess: terminate()
        Run->>SyncProcess: join(timeout)
    end
    alt LagTracker exists
        Run->>Timer: remaining_time()
        Run->>LagTracker: interrupt()
        Run->>LagTracker: join(timeout)
    end
Loading

File-Level Changes

Change Details Files
Reorder process shutdown to handle supervisor first
  • Add interrupt() and join() for SyncProcessSupervisor before SyncProcess termination
  • Remove redundant interrupt()/join() block after SyncProcess termination
  • Use timer.remaining_time() for the join timeout consistently
src/neptune_scale/api/run.py

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

Copy link

@sourcery-ai sourcery-ai bot left a comment

Choose a reason for hiding this comment

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

Hey @michalsosn - I've reviewed your changes - here's some feedback:

  • Capture timer.remaining_time() once before the interrupt/join sequence to avoid inconsistent timeout values across calls.
  • Add a brief comment explaining why the supervisor shutdown must occur before terminating the process to clarify this reordering for future maintainers.
Prompt for AI Agents
Please address the comments from this code review:
## Overall Comments
- Capture `timer.remaining_time()` once before the interrupt/join sequence to avoid inconsistent timeout values across calls.
- Add a brief comment explaining why the supervisor shutdown must occur before terminating the process to clarify this reordering for future maintainers.

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

@michalsosn michalsosn added this pull request to the merge queue Jun 18, 2025
Merged via the queue into main with commit 601b48b Jun 18, 2025
21 checks passed
@michalsosn michalsosn deleted the ms/kill-supervisor-before-sync-process branch June 18, 2025 12:58
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.

2 participants