Skip to content

Protect external jobs with lock file#213

Merged
vmdocua merged 3 commits into
masterfrom
enh-ext-lock
Dec 22, 2025
Merged

Protect external jobs with lock file#213
vmdocua merged 3 commits into
masterfrom
enh-ext-lock

Conversation

@vmdocua
Copy link
Copy Markdown
Collaborator

@vmdocua vmdocua commented Dec 22, 2025

Protect external jobs (like qr and nosignal) with lock file, to provide access only to one thread in system execute long running tasks in concurrent mode. Other processes will fail if file is not accessible and in progress (allow 5 sec grace period to acquire lock).

@vmdocua vmdocua self-assigned this Dec 22, 2025
@vmdocua vmdocua added enhancement New feature or request patch Increment the patch version when merged performance Improve performance of an existing feature labels Dec 22, 2025
@gemini-code-assist
Copy link
Copy Markdown
Contributor

Summary of Changes

Hello @vmdocua, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed!

This pull request enhances the stability of external job execution by introducing a file-based locking mechanism. This ensures that critical long-running tasks, such as the nosignal process, are executed sequentially, preventing potential conflicts arising from concurrent access. Any attempt to run a locked job will now wait for a brief period before gracefully failing, improving system reliability under heavy load.

Highlights

  • Concurrency Control: Implemented file-based locking to prevent concurrent execution of external jobs like nosignal.
  • Timeout Handling: Added a 5-second timeout for acquiring the lock, with appropriate error logging if the lock is already held.
  • filelock Integration: Utilized the filelock library, specifically importing Timeout for robust error handling.

🧠 New Feature in Public Preview: You can now enable Memory to help Gemini Code Assist learn from your team's feedback. This makes future code reviews more consistent and personalized to your project's style. Click here to enable Memory in your admin console.

Using Gemini Code Assist

The full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips.

Invoking Gemini

You can request assistance from Gemini at any point by creating a comment using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

Customization

To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a .gemini/ folder in the base of the repository. Detailed instructions can be found here.

Limitations & Feedback

Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for Github and other Google products, sign up here.

You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension.

Footnotes

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist Bot left a comment

Choose a reason for hiding this comment

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

Code Review

This pull request adds a file lock to the run_ext_nosignal function to prevent concurrent execution, which is a good step towards making the external job handling more robust. The implementation using filelock with a timeout is correct. However, the PR description states that both qr and nosignal jobs should be protected, but the lock is missing from the run_ext_qr function. Since run_ext_qr is also a long-running process that writes to files derived from a shared path, it should also be protected by a lock to prevent race conditions. I've also left a comment on a minor bug in a debug log statement.

Comment thread src/reprostim/qr/video_audit.py Outdated
# run the command and capture output
# use lock file
path_lock: str = f"{vr.path}.nosignal.lock"
logger.debug("use lock file : {path_lock}")
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

medium

The log message here is not an f-string, so it will print the literal string {path_lock} instead of the value of the path_lock variable. To fix this, you should add an f prefix to the string.

Suggested change
logger.debug("use lock file : {path_lock}")
logger.debug(f"use lock file : {path_lock}")

@vmdocua vmdocua added the release Create a release when this pr is merged label Dec 22, 2025
@vmdocua vmdocua marked this pull request as ready for review December 22, 2025 12:51
@vmdocua vmdocua merged commit 678c1a0 into master Dec 22, 2025
10 checks passed
@vmdocua vmdocua deleted the enh-ext-lock branch December 22, 2025 12:51
@github-actions
Copy link
Copy Markdown

🚀 PR was released in 0.7.22 🚀

@github-actions github-actions Bot added the released This issue/pull request has been released. label Dec 22, 2025
vmdocua added a commit that referenced this pull request Dec 26, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request patch Increment the patch version when merged performance Improve performance of an existing feature release Create a release when this pr is merged released This issue/pull request has been released.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant