Skip to content

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
@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