Skip to content

Conversation

@daniel-sanche
Copy link
Contributor

@daniel-sanche daniel-sanche commented May 23, 2023

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

@product-auto-label product-auto-label bot 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 v3 May 23, 2023 00:46
@product-auto-label product-auto-label bot added the api: bigtable Issues related to the googleapis/python-bigtable API. label May 23, 2023
@product-auto-label product-auto-label bot added size: l Pull request size is large. and removed size: xl Pull request size is extra large. labels Jun 7, 2023
@daniel-sanche daniel-sanche changed the title [DRAFT] feat: read_modify_write and check_and_mutate_row feat: read_modify_write and check_and_mutate_row Jun 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 team as code owners June 8, 2023 00:02
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
Contributor

Choose a reason for hiding this comment

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

Copy link
Contributor Author

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

rules: ReadModifyWriteRule | list[ReadModifyWriteRule],
*,
operation_timeout: int | float | None = 60,
operation_timeout: int | float | None = 600,
Copy link
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
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
Contributor Author

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
Contributor

mutianf commented Jun 16, 2023

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

Copy link
Contributor

@mutianf mutianf left a 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

@daniel-sanche daniel-sanche merged commit 432d159 into googleapis:v3 Jun 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 free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

api: bigtable Issues related to the googleapis/python-bigtable API. size: l Pull request size is large.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants