-
Notifications
You must be signed in to change notification settings - Fork 59
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
feat: read_modify_write and check_and_mutate_row #780
feat: read_modify_write and check_and_mutate_row #780
Conversation
google/cloud/bigtable/client.py
Outdated
true_case_mutations: Mutation | list[Mutation] | None = None, | ||
false_case_mutations: Mutation | list[Mutation] | None = None, | ||
operation_timeout: int | float | None = 60, | ||
operation_timeout: int | float | None = 600, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
10 minutes seems too long.. the java default is only 20 seconds. https://cloud.google.com/java/docs/reference/google-cloud-bigtable/latest/com.google.cloud.bigtable.data.v2.stub.EnhancedBigtableStubSettings#com_google_cloud_bigtable_data_v2_stub_EnhancedBigtableStubSettings_checkAndMutateRowSettings__
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Changed, but FYI I will likely be changing the timeout structure after all the rpc PRs are merged: #782
google/cloud/bigtable/client.py
Outdated
*, | ||
operation_timeout: int | float | None = 60, | ||
operation_timeout: int | float | None = 600, |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Same here, I think we can update it to be 20 seconds to be consistent with java
(10, 4, 14), | ||
(MAX_INCREMENT_VALUE, -MAX_INCREMENT_VALUE, 0), | ||
(MAX_INCREMENT_VALUE, 2, -MAX_INCREMENT_VALUE), | ||
(-MAX_INCREMENT_VALUE, -2, MAX_INCREMENT_VALUE), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
is this the expected behavior? 🤔 @igorbernstein2
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
For what it's worth, I believe this is just documenting the overflow behavior from the backend. The client is just sending a large number and then another small increment, and retrieving the result
Is it possible to extend the read_modify_write and check_and_mutate row to enable retry on certain error codes in the future? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM, the retries will be added in the future #787
* feat: add new v3.0.0 API skeleton (#745) * feat: improve rows filters (#751) * feat: read rows query model class (#752) * feat: implement row and cell model classes (#753) * feat: add pooled grpc transport (#748) * feat: implement read_rows (#762) * feat: implement mutate rows (#769) * feat: literal value filter (#767) * feat: row_exists and read_row (#778) * feat: read_modify_write and check_and_mutate_row (#780) * feat: sharded read rows (#766) * feat: ping and warm with metadata (#810) * feat: mutate rows batching (#770) * chore: restructure module paths (#816) * feat: improve timeout structure (#819) * fix: api errors apply to all bulk mutations * chore: reduce public api surface (#820) * feat: improve error group tracebacks on < py11 (#825) * feat: optimize read_rows (#852) * chore: add user agent suffix (#842) * feat: optimize retries (#854) * feat: add test proxy (#836) * chore(tests): add conformance tests to CI for v3 (#870) * chore(tests): turn off fast fail for conformance tets (#882) * feat: add TABLE_DEFAULTS enum for table method arguments (#880) * fix: pass None for retry in gapic calls (#881) * feat: replace internal dictionaries with protos in gapic calls (#875) * chore: optimize gapic calls (#863) * feat: expose retryable error codes to users (#879) * chore: update api_core submodule (#897) * chore: merge main into experimental_v3 (#900) * chore: pin conformance tests to v0.0.2 (#903) * fix: bulk mutation eventual success (#909) --------- Co-authored-by: Owl Bot <gcf-owl-bot[bot]@users.noreply.github.com>
This PR implements
read_modify_write
andcheck_and_mutate_row
rpcs, along with related classes