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

fix(bigquery/storage/managedwriter): resolve data races #9360

Merged
merged 2 commits into from
Feb 5, 2024

Conversation

shollyman
Copy link
Contributor

This PR adds a non-assertive test which helps expose data races by doing a lot of concurrent write operations on a single ManagedStream instance.

As a byproduct, this cleans up two possible races: In the first, a deferred function may incorrectly access a retained context. We change this to grab a reference to the context in the defer where we still retain the lock.

In the second, the retry mechanism leverages math/rand and retry processing can yield concurrent usage of the random number source. PR adds a mutex guard to the source.

Fixes: #9301

This PR adds a non-assertive test which helps expose data
races by doing a lot of concurrent write operations on a single
ManagedStream instance.

As a byproduct, this cleans up two possible races:  In the first,
a deferred function may incorrectly access a retained context.
We change this to grab a reference to the context in the defer
where we still retain the lock.

In the second, the retry mechanism leverages math/rand and retry
processing can yield concurrent usage of the random number source.
PR adds a mutex guard to the source.

Fixes: googleapis#9301
@shollyman shollyman requested a review from alvarowolfx February 3, 2024 00:38
@shollyman shollyman requested review from a team as code owners February 3, 2024 00:38
@product-auto-label product-auto-label bot added size: m Pull request size is medium. api: bigquery Issues related to the BigQuery API. labels Feb 3, 2024
@shollyman shollyman added the automerge Merge the pull request once unit tests and other checks pass. label Feb 5, 2024
@gcf-merge-on-green gcf-merge-on-green bot merged commit fa31ec0 into googleapis:main Feb 5, 2024
9 checks passed
@gcf-merge-on-green gcf-merge-on-green bot removed the automerge Merge the pull request once unit tests and other checks pass. label Feb 5, 2024
gcf-merge-on-green bot pushed a commit that referenced this pull request Feb 6, 2024
🤖 I have created a release *beep* *boop*
---


## [1.59.0](https://togithub.com/googleapis/google-cloud-go/compare/bigquery/v1.58.0...bigquery/v1.59.0) (2024-02-06)


### Features

* **bigquery:** Add ExportDataStatstics to QueryStatistics ([#9371](https://togithub.com/googleapis/google-cloud-go/issues/9371)) ([261c8d9](https://togithub.com/googleapis/google-cloud-go/commit/261c8d944b53ac8953ea7d771c4bb50e4078d508))
* **bigquery:** Switch all timestamp representations to int64 usec ([#9368](https://togithub.com/googleapis/google-cloud-go/issues/9368)) ([8c1fb7d](https://togithub.com/googleapis/google-cloud-go/commit/8c1fb7d4728ebc3b21cb0d601952966dca9cd1e8))


### Bug Fixes

* **bigquery/storage/managedwriter:** Resolve data races ([#9360](https://togithub.com/googleapis/google-cloud-go/issues/9360)) ([fa31ec0](https://togithub.com/googleapis/google-cloud-go/commit/fa31ec0c0f04302a9713a9b1d3228bda2ba135c6))
* **bigquery:** Enable universe domain resolution options ([fd1d569](https://togithub.com/googleapis/google-cloud-go/commit/fd1d56930fa8a747be35a224611f4797b8aeb698))
* **bigquery:** Support more timestamp formats for query param ([#9236](https://togithub.com/googleapis/google-cloud-go/issues/9236)) ([cc98509](https://togithub.com/googleapis/google-cloud-go/commit/cc98509fc7961e3d3619b837d13e69f9621386e8)), refs [#9221](https://togithub.com/googleapis/google-cloud-go/issues/9221)

---
This PR was generated with [Release Please](https://togithub.com/googleapis/release-please). See [documentation](https://togithub.com/googleapis/release-please#release-please).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
api: bigquery Issues related to the BigQuery API. size: m Pull request size is medium.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Data race in managedwriter.(*connection).lockingAppend()
2 participants