Skip to content

fix(config): race condition in createWorkRoot()#2338

Merged
coryan merged 1 commit intogoogleapis:mainfrom
coryan:fix-config-race-condition-in-workroot
Sep 24, 2025
Merged

fix(config): race condition in createWorkRoot()#2338
coryan merged 1 commit intogoogleapis:mainfrom
coryan:fix-config-race-condition-in-workroot

Conversation

@coryan
Copy link
Copy Markdown
Contributor

@coryan coryan commented Sep 24, 2025

Creating a temporary directory based on a timestamp is inherently racy.
Use the standard functions to create temporary directories, and relax
the tests to check for what matters.

Creating a temporary directory based on a timestamp is inherently racy.
Use the standard functions to create temporary directories, and relax
the tests to check for what matters.
@coryan coryan requested a review from a team as a code owner September 24, 2025 13:47
@coryan coryan requested a review from vchudnov-g September 24, 2025 13:47
@codecov
Copy link
Copy Markdown

codecov bot commented Sep 24, 2025

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 84.12%. Comparing base (f2d1a10) to head (c4b2244).
⚠️ Report is 1 commits behind head on main.

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #2338      +/-   ##
==========================================
+ Coverage   84.09%   84.12%   +0.03%     
==========================================
  Files          97       97              
  Lines        9789     9777      -12     
==========================================
- Hits         8232     8225       -7     
+ Misses       1210     1206       -4     
+ Partials      347      346       -1     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Copy link
Copy Markdown
Member

@codyoss codyoss left a comment

Choose a reason for hiding this comment

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

Thank you!

@jskeet
Copy link
Copy Markdown
Contributor

jskeet commented Sep 24, 2025

I've personally found it useful to have timestamped work directories - it makes it easier to find which directory was associated with a run (I know it's logged, but that can be tricky to find with lots of logs), and easier to find the most recent one just with tab completion and inspection.

Not a blocker - just thought I'd note that this change will have a negative impact as well as any positive one.

@coryan coryan merged commit 46428ca into googleapis:main Sep 24, 2025
7 of 8 checks passed
@coryan coryan deleted the fix-config-race-condition-in-workroot branch September 24, 2025 14:07
@coryan
Copy link
Copy Markdown
Contributor Author

coryan commented Sep 24, 2025

and easier to find the most recent one just with tab completion and inspection.

ls -ltr

ldetmer pushed a commit that referenced this pull request Sep 26, 2025
Librarian Version: v0.0.0-20250925031739-cb21cf1ae8af
Language Image:
us-central1-docker.pkg.dev/cloud-sdk-librarian-prod/images-prod/librarian-release-container:latest
<details><summary>librarian: 0.3.0</summary>

##
[0.3.0](v0.2.0...v0.3.0)
(2025-09-25)

### Features

* discovery-based APIs and pagination (#2350)
([cb21cf1](cb21cf1))

* Make generated `ProtoMessage` and `ProtoEnum` classes `final` (#2349)
([7d0520b](7d0520b))

* Require that all imports have a version contraints (#2331) Fixes #1989

This should not be landed before
googleapis/google-cloud-rust#3396
([00828d5](00828d5))

* Generate samples for single value setters (#2263)
([f7c0b84](f7c0b84))

* discovery doc arrays (#2337)
([da69195](da69195))

* Inject InstrumentationClientInfo for tracing (#2252) - Add static
INSTRUMENTATION_CLIENT_INFO to lib.rs.mustache.
- Use INSTRUMENTATION_CLIENT_INFO in transport.rs.mustache if tracing is
enabled.

For #2212 see also
googleapis/google-cloud-rust#3347 and
googleapis/google-cloud-rust#3376
([1358226](1358226))

* parse most object fields (#2318) Parse most fields of object in a
discovery doc. Fields with an inline
type definition still need some custom work.
([f2d1a10](f2d1a10))

* Add the ability to insert text after the package title (#2323) The
current use case for this is to advise users of equivalent Firebase
packages. For example:

```toml
readme-after-title-text = &#34;&#34;&#34;&gt; [!TIP]
&gt; Flutter applications should use [Firebase AI Logic](https://firebase.google.com/products/firebase-ai-logic).
&gt;
&gt; The Generate Language API is meant for Dart desktop and cloud applications.
&gt; Firebase AI Logic provides client-side access to both the Gemini Developer
&gt; API and Vertex AI. &#34;&#34;&#34;
```

Which results in a README.md that looks like:

&lt;img width=&#34;1485&#34; height=&#34;909&#34; alt=&#34;image&#34;

src=&#34;https://github.com/user-attachments/assets/a1c9120e-eafd-4394-9562-48c595ab4960&#34;
/&gt;
([756e72f](756e72f))

### Bug Fixes

* read version from version.txt file (#2347) Fixes #2348

Moves version.txt to the `internal/cli` package so it can be read by the
`embed` package as a variable.
When constructing the synthetic version number, use this release version
as the base.
([014b5f4](014b5f4))

* race condition in createWorkRoot() (#2338) Creating a temporary
directory based on a timestamp is inherently racy.
Use the standard functions to create temporary directories, and relax
the tests to check for what matters.
([46428ca](46428ca))

* parse github remote from local directory (#2328) Fixes #2327
([1c71bd9](1c71bd9))

</details>
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.

3 participants