Skip to content
This repository was archived by the owner on Apr 1, 2026. It is now read-only.

feat: read_modify_write and check_and_mutate_row - #780

Merged
daniel-sanche merged 62 commits into
googleapis:v3from
daniel-sanche:mutate_rows_other_rpcs
Jun 16, 2023
Merged

feat: read_modify_write and check_and_mutate_row#780
daniel-sanche merged 62 commits into
googleapis:v3from
daniel-sanche:mutate_rows_other_rpcs

Conversation

@daniel-sanche

@daniel-sanchedaniel-sanche commented May 23, 2023

Copy link
Copy Markdown
Contributor

This PR implements read_modify_write and check_and_mutate_row rpcs, along with related classes

@product-auto-labelproduct-auto-labelBot added the size: xl Pull request size is extra large. label May 23, 2023
@daniel-sanche
daniel-sanche changed the base branch from main to v3May 23, 2023 00:46
@product-auto-labelproduct-auto-labelBot added the api: bigtable Issues related to the googleapis/python-bigtable API. label May 23, 2023
@product-auto-labelproduct-auto-labelBot added size: l Pull request size is large. and removed size: xl Pull request size is extra large. labels Jun 7, 2023
@daniel-sanchedaniel-sanche changed the title [DRAFT] feat: read_modify_write and check_and_mutate_rowfeat: read_modify_write and check_and_mutate_rowJun 8, 2023
@daniel-sanche
daniel-sanche marked this pull request as ready for review June 8, 2023 00:02
@daniel-sanche
daniel-sanche requested review from a teamJune 8, 2023 00:02
Comment threadgoogle/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,

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.

Copy link
Copy Markdown
ContributorAuthor

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

Comment threadgoogle/cloud/bigtable/client.py Outdated
rules: ReadModifyWriteRule | list[ReadModifyWriteRule],
*,
operation_timeout: int | float | None = 60,
operation_timeout: int | float | None = 600,

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.

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),

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.

is this the expected behavior? 🤔 @igorbernstein2

Copy link
Copy Markdown
ContributorAuthor

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

@mutianf

Copy link
Copy Markdown
Contributor

Is it possible to extend the read_modify_write and check_and_mutate row to enable retry on certain error codes in the future?

@mutianfmutianf left a comment

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.

LGTM, the retries will be added in the future #787

@daniel-sanche
daniel-sanche merged commit 432d159 into googleapis:v3Jun 16, 2023
daniel-sanche added a commit that referenced this pull request Feb 5, 2024
* 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>
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

api: bigtableIssues related to the googleapis/python-bigtable API.size: lPull request size is large.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@daniel-sanche@mutianf