-
Notifications
You must be signed in to change notification settings - Fork 58
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: client side metrics data model #923
Open
daniel-sanche
wants to merge
60
commits into
main
Choose a base branch
from
client_side_metrics_data_model
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Changes from 51 commits
Commits
Show all changes
60 commits
Select commit
Hold shift + click to select a range
b5b62c8
feat!: add new v3.0.0 API skeleton (#745)
daniel-sanche 7d51eeb
chore: merge branch 'main' into v3
daniel-sanche 507da99
feat: improve rows filters (#751)
daniel-sanche 71b0312
feat: read rows query model class (#752)
daniel-sanche c55099f
feat: implement row and cell model classes (#753)
daniel-sanche f9a1907
feat: add pooled grpc transport (#748)
daniel-sanche 3de7a68
feat: implement read_rows (#762)
daniel-sanche 9b81289
feat: implement mutate rows (#769)
daniel-sanche ec3fd01
feat: literal value filter (#767)
daniel-sanche 5d65703
feat: row_exists and read_row (#778)
daniel-sanche 432d159
feat: read_modify_write and check_and_mutate_row (#780)
daniel-sanche ec2b983
feat: sharded read rows (#766)
daniel-sanche ceaf598
feat: ping and warm with metadata (#810)
daniel-sanche 1ecf65f
feat: mutate rows batching (#770)
daniel-sanche eedde1e
chore: restructure module paths (#816)
daniel-sanche 07438ca
feat: improve timeout structure (#819)
daniel-sanche 0d92a84
fix: api errors apply to all bulk mutations
daniel-sanche a8cdf7c
chore: reduce public api surface (#820)
daniel-sanche aa760b2
feat: improve error group tracebacks on < py11 (#825)
daniel-sanche 0323dde
feat: optimize read_rows (#852)
daniel-sanche 0b3606f
chore: add user agent suffix (#842)
daniel-sanche b6d232a
feat: optimize retries (#854)
daniel-sanche 8708a25
feat: add test proxy (#836)
daniel-sanche 1d3a7c1
chore(tests): add conformance tests to CI for v3 (#870)
daniel-sanche 50531e5
chore(tests): turn off fast fail for conformance tets (#882)
daniel-sanche 8ff1216
feat: add TABLE_DEFAULTS enum for table method arguments (#880)
daniel-sanche 94bfe66
fix: pass None for retry in gapic calls (#881)
daniel-sanche 3ac80a9
feat: replace internal dictionaries with protos in gapic calls (#875)
daniel-sanche b191451
chore: optimize gapic calls (#863)
daniel-sanche 285cdd3
feat: expose retryable error codes to users (#879)
daniel-sanche 9342e27
chore: update api_core submodule (#897)
daniel-sanche 858b93a
chore: merge main into experimental_v3 (#900)
daniel-sanche cc79d8c
chore: pin conformance tests to v0.0.2 (#903)
daniel-sanche f0d75de
fix: bulk mutation eventual success (#909)
daniel-sanche 11532ef
feat: pulled in data model for client side metrics
daniel-sanche 874a9a8
stripped out handlers for future PR
daniel-sanche d905462
added metric controls to table
daniel-sanche 5f42046
removed api_core from mypy install
daniel-sanche 4369d57
improved comments
daniel-sanche cc79cde
always log metric errors
daniel-sanche f6831bb
ran blacken
daniel-sanche 3ffc7c0
use ResponseParams proto to parse blob
daniel-sanche 2ef2c3c
convert all time variables to explicitly use ms
daniel-sanche 00d70db
pulled backoff generator into PR
daniel-sanche 24432c8
fixed checks
daniel-sanche 619d982
Merge branch 'main' into client_side_metrics_data_model
daniel-sanche 2c8506d
removed exception flag
daniel-sanche 7408722
added comments
daniel-sanche e1fe3ab
improved server timing regex
daniel-sanche 6d2e9f4
change float ms to int ns for timestamps
daniel-sanche 6bf526e
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] 600ef0b
renamed variable
daniel-sanche 10ef5d1
lint
daniel-sanche f9dab5d
turned backoff_generator into a class
daniel-sanche 1986b06
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] 035dab1
added backoff generator test
daniel-sanche 5a63965
🦉 Updates from OwlBot post-processor
gcf-owl-bot[bot] a5aceef
removed unused import
daniel-sanche 24fe643
Merge branch 'main' into client_side_metrics_data_model
daniel-sanche b1d08c9
fixed test
daniel-sanche File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
# Copyright 2023 Google LLC | ||
# | ||
# Licensed under the Apache License, Version 2.0 (the "License"); | ||
# you may not use this file except in compliance with the License. | ||
# You may obtain a copy of the License at | ||
# | ||
# http://www.apache.org/licenses/LICENSE-2.0 | ||
# | ||
# Unless required by applicable law or agreed to in writing, software | ||
# distributed under the License is distributed on an "AS IS" BASIS, | ||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
# See the License for the specific language governing permissions and | ||
# limitations under the License. | ||
from google.cloud.bigtable.data._metrics.metrics_controller import ( | ||
BigtableClientSideMetricsController, | ||
) | ||
|
||
from google.cloud.bigtable.data._metrics.data_model import OperationType | ||
from google.cloud.bigtable.data._metrics.data_model import ActiveOperationMetric | ||
|
||
__all__ = ( | ||
"BigtableClientSideMetricsController", | ||
"OperationType", | ||
"ActiveOperationMetric", | ||
) |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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.
dumb question: when will it break out of the loop?
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.
This is a python generator function. It gives up control on each yield line
The idea is that you get an instance like
generator = backoff_generator(...)
, and then you can callnext(generator)
orgenerator.send(idx)
on it every time you want to retrieve a value. This will run the internal code until it reaches the next yield, and then pause execution again until next time a value is requestedThere 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.
This seems a bit too surprising of an api. I think it would be a lot cleaner and easier to read if Attempt.start() took a delay parameter