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

feat: read_modify_write and check_and_mutate_row #780

Merged
merged 62 commits into from
Jun 16, 2023

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

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