Cloud Bigtable: tableAdmin sample by elisheva-qlogic · Pull Request #4313 · googleapis/google-cloud-java (original) (raw)

@elisheva-qlogic requested a review from a team

January 9, 2019 14:29

@googlebot googlebot added the cla: yes

This human has signed the Contributor License Agreement.

label

Jan 9, 2019

igorbernstein2

igorbernstein2

@elisheva-qlogic

igorbernstein2

@elisheva-qlogic

igorbernstein2

snehashah16 added a commit that referenced this pull request

Feb 3, 2019

@snehashah16

ApiFutures.addCallback() now requires a third argument (a non-direct executor).

Ref: https://github.com/googleapis/api-common-java/blob/master/src/main/java/com/google/api/core/ApiFutures.java

Unsets empty list of retry status codes

Unsets empty list of no-retry status codes

Migrate longrunning methods to GAPIC including: createDatabase, updateDatabaseDdl, createInstance, and updateInstance.

Adds interconnect features

Add excluded_fields to BigQueryOptions

Also, update the README to reflect recent update to pseudoDirs.

The version of checkstyle we currently use uses tools.jar which is removed from Java 9 and above as part of Project Jigsaw. This commit uses a newer version of checkstyle that does not use tools.jar.

Running mvn checkstyle:checkstyle succeeded.�

fallback match should be last

This integration test now deletes all the buckets it creates.

The issue was that requester-pays buckets couldn't be deleted by the existing code. This PR updates RemoteStorageHelper so it can be given a userProject for requester-pays buckets.

RemoteStorageHelper now doesn't set the userProject option if it's empty. Also, added testForceDeleteRetriesWithUserProject unit test.

The new field was added to the Stackdriver LogEntry protocol buffer message in googleapis/googleapis@7b34e5a#diff-a51916a680df6453b6d86586cd7d63f9R149.

This allows customers to easily interact with the bigtable emulator. Currently the Bigtable emulator is implemented in go. It is a fairly complex bit of code that would be very difficult to replicate in java. This makes it very difficult for users to interact with it in a java project. This PR attempts to make things easier for the user by wrapping the golang emulator in a jar and providing a JUnit rule to simplify lifecycle management of the emulator.

It's implemented as 2 artifacts:

@garrettjonesgoogle

Updates the release setup guide.

Adds documentation strings

The following vulnerabilities are fixed with an upgrade:

Adds result_end_time to StreamingRecognitionResult

Updated Cloud Asset links to point to the Cloud Asset API page.

The following vulnerabilities are fixed with an upgrade:

Previously, the kr.motd.maven:os-maven-plugin brought in a dependency that brought in guava. This artifact explicitly uses guava collections so we need to add the dependency here.

The following vulnerabilities are fixed with an upgrade:

This change adds a simple shim layer to the BigQuery Storage API client. It is modeled after the shim layer in the Cloud Bigtable client, but unlike that implementation, it does not create chained instances of unary and server-streaming callables to perform translation; instead, its parameters are simple pass-throughs to the underlying gRPC client stub.

The shim currently does nothing but read default values from the base client layer and pass them back through.

This change sets the default value for the maximum inbound message size in the BigQuery Storage API client. A ReadRowsResponse object can contain serialized row block of up to 10 MB in size if the underlying row(s) are sufficiently large.

This change modifies the default client-side timeout value for the ReadRows API. ReadRows calls can last for long periods in the case of large tables. The default timeout value is set to a full day, which is the duration for which a read session is valid.

This change modifies the configuration for the ReadRows API to add a resumption strategy, allowing the connection to be resumed transparently in the case of transient errors.

Add retriableHttpCodes and reopenableExceptions so the user can, if they choose, customize the conditions under which we retry an access or reopen a channel after an exception closed it.

This can be handy if a cloud provider starts transiently throwing exceptions that would normally indicate a fatal condition, but which in practice will pass if retried.

The backoff logic in retries / reopens in unmodified.

Also add a few basic tests to make sure the retryable options do what we expect.

In the built-in UNIX filesystem, the newDirectoryStream method will return absolute paths if given absolute paths as input, and relative paths if given relative paths as input.

We're now seeing this too for the NIO Cloud Storage provider (this is a good thing), so I updated this test to reflect this new reality.

Adds new API endpoints for:

3.0.0 introduced a setting to disable doclint via config instead of a necessitating a conditional profile based on the java version.

Any of these clients in question would be using versions older than a year and should upgrade.

We've updated the apiary clients to versions that no longer need these exclusions.

The current TransactionRunner code checks for aborted transactions by using the isAborted() function. This function returns the value of "aborted" that is only set when processing resultSets. This does not work for DML which only uses the resultSet stats and does not actually call ResultSet.next().

This patch adds an additional check for the aborted exception type and retries such transactions.

Co-Authored-By: nithinsujir 118742+nithinsujir@users.noreply.github.com

Currently the emulator can't be used because it's parent pom is not published. THis PR removes the parent and copies the relevant bits into the emulator's pom Fixes #4187

This PR was generated using Autosynth. 🌈 Adding new resource types and methods from updated Discovery doc.

Generation of Compute client with latest gapic-generator changes. This also contains one set of manual changes in ITComputeTest, where we remove the hack needed to parse a ResourceName string.

The configuration for aggregate changed from an attribute to a report

Unfortunately typesafe names create more issues for bigtable than they solve. A lot of the time users need to use both bigtable data & admin apis. Unfortunately, those apis define the same names in different namespaces. This forces users to use fully qualified names which is ugly. Also, absolute names don't benefit the bigtable client because the client is anchored at the instance and all names end up being relative

This is a followup on #4257: Unfortunately typesafe names create more issues for bigtable than they solve. A lot of the time users need to use both bigtable data & admin apis. Unfortunately, those apis define the same names in different namespaces. This forces users to use fully qualified names which is ugly. Also, absolute names don't benefit the bigtable client because the client is anchored at the instance and all names end up being relative

This reverts commit 6e2c2dd.

When the rpc timeout is zero, then it should be treated as disabled not actual 0

Ref: https://github.com/googleapis/gax-java/blob/master/gax/src/main/java/com/google/api/gax/batching/BatchingSettings.java

BREAKING CHANGE: The areTimestampsInSnapshotsEnabled() setting is now enabled by default so timestamp fields read from a DocumentSnapshot will be returned as Timestamp objects instead of Date. Any code expecting to receive a Date object must be updated.

This is required for v1 and accepted in v1beta1.

Port of googleapis/nodejs-firestore@52c7381

sduskis pushed a commit that referenced this pull request

Feb 8, 2019

@kamalaboulhosn @sduskis

When the rpc timeout is zero, then it should be treated as disabled not actual 0

Ref: https://github.com/googleapis/gax-java/blob/master/gax/src/main/java/com/google/api/gax/batching/BatchingSettings.java

BREAKING CHANGE: The areTimestampsInSnapshotsEnabled() setting is now enabled by default so timestamp fields read from a DocumentSnapshot will be returned as Timestamp objects instead of Date. Any code expecting to receive a Date object must be updated.

This is required for v1 and accepted in v1beta1.

Port of googleapis/nodejs-firestore@52c7381

In Mockito 2, if a method expects a primitive type, but an any(.class) matcher is used in its place, it will throw an error. To prepare for this upcoming breakage, change all existing any(.class) matchers to use the correct any() matcher.

Ref: https://github.com/googleapis/google-cloud-java/blob/ed7bc857a05b34eed6be182d4798a62bf09cd394/google-cloud-clients/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/Publisher.java#L497

This is needed for hbase adapter transition

kamalaboulhosn added a commit that referenced this pull request

Jul 9, 2019

@kamalaboulhosn

When the rpc timeout is zero, then it should be treated as disabled not actual 0

Ref: https://github.com/googleapis/gax-java/blob/master/gax/src/main/java/com/google/api/gax/batching/BatchingSettings.java

BREAKING CHANGE: The areTimestampsInSnapshotsEnabled() setting is now enabled by default so timestamp fields read from a DocumentSnapshot will be returned as Timestamp objects instead of Date. Any code expecting to receive a Date object must be updated.

This is required for v1 and accepted in v1beta1.

Port of googleapis/nodejs-firestore@52c7381

In Mockito 2, if a method expects a primitive type, but an any(.class) matcher is used in its place, it will throw an error. To prepare for this upcoming breakage, change all existing any(.class) matchers to use the correct any() matcher.

Ref: https://github.com/googleapis/google-cloud-java/blob/ed7bc857a05b34eed6be182d4798a62bf09cd394/google-cloud-clients/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/Publisher.java#L497

This is needed for hbase adapter transition

Make the SubscriberStubSettings refer to the user provided executor provider instead of a fixed instantiation of it. If the user provides an InstantiatingExecutorProvider instead of a FixedExecutorProvider, this will actually instantiate more than one as the user would expect. It will still only instantiate one for all connections to share, and will do so until the next PR which will make them have different stub instantiations.

Set the isDirectory flag appropriately when using the currentDirectory() option

Now that this uses a LinkedBlockingDeque for batches, this is no longer necessary.

Also regenerate the Compute client to match the newest version of gax.

SSLHandshakeExceptions are not retryable, as it is most probably an indication that the client does not accept the server certificate.

This increases throughput by reducing contention on the executor queue mutex and makes the Subscriber implementation more accurately reflect the users intent when an InstantiatingExecutorProvider is passed.

pendingWrites.add() was not guaranteed to be called before pendingWrites.remove()

Reduce contention on pendingWrites by using a ConcurrentHashMap instead.

This pull request updates the documentation and adds an example.

mvn com.coveo:fmt-maven-plugin:format

Fixing a copy&paste typo

@sduskis

(cherry picked from commit 8255a9b)

This change modifies the enhanced stub for the BigQuery storage client to pass through the user-specified header provider to the storage settings base class at creationt ime. This addresses an issue where user-specified headers were being ignored when creating a client object.

google-cloud-logging-logback: #3215 allow user to specify custom LoggingOptions

Transactions can always be aborted by Cloud Spanner, and all transaction code should therefore be surrounded by with abort safeguarding.

Refactor SpannerImpl: Move AbstractResultSet to separate file

Spanner: Refactor SpannerImpl - Move AbstractReadContext to separate file

refactor SpannerImpl: move InstanceAdminClient to separate file

Date parsing using a regular expression is slower than a specific implementation for the only format that is supported.

refactor SpannerImpl: move TransactionRunnerImpl to separate file

add support for newFileChannel(...)

This removes the failure mode described in #2452 that can occur when MaxOutstandingElementCount is low and there is more than one connection. In this case, it is possible for an individual MessageDispatcher to have no outstanding in-flight messages, but also be blocked by flow control with a whole new batch outstanding. In this case, it will never make progress on that batch since it will never receive another batch and the queue was made to not be shared in #4590, so the batch will never be pulled off by another MessageDispatcher.

By changing this to use a blocking flow controller, this will never happen, as each batch will synchronously wait until it is allowed by flow control before being processed.

Step 1:

  1. Removing the Deque parameter from SequentialExecutorService.callNextTaskAsync() and looking it up the Deque in the method
  2. Simplify AutoExecutor and CallbackExecutor after the refactoring in 1).

chingor13 pushed a commit that referenced this pull request

Mar 24, 2026

@renovate-bot @JoeWang1127

…v3.56.0 (#4313)


Co-authored-by: Joe Wang joewa@google.com

meltsufin pushed a commit that referenced this pull request

Apr 29, 2026

@kamalaboulhosn

When the rpc timeout is zero, then it should be treated as disabled not actual 0

Ref: https://github.com/googleapis/gax-java/blob/master/gax/src/main/java/com/google/api/gax/batching/BatchingSettings.java

BREAKING CHANGE: The areTimestampsInSnapshotsEnabled() setting is now enabled by default so timestamp fields read from a DocumentSnapshot will be returned as Timestamp objects instead of Date. Any code expecting to receive a Date object must be updated.

This is required for v1 and accepted in v1beta1.

Port of googleapis/nodejs-firestore@52c7381

In Mockito 2, if a method expects a primitive type, but an any(.class) matcher is used in its place, it will throw an error. To prepare for this upcoming breakage, change all existing any(.class) matchers to use the correct any() matcher.

Ref: https://github.com/googleapis/google-cloud-java/blob/ed7bc857a05b34eed6be182d4798a62bf09cd394/google-cloud-clients/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/Publisher.java#L497

This is needed for hbase adapter transition

Make the SubscriberStubSettings refer to the user provided executor provider instead of a fixed instantiation of it. If the user provides an InstantiatingExecutorProvider instead of a FixedExecutorProvider, this will actually instantiate more than one as the user would expect. It will still only instantiate one for all connections to share, and will do so until the next PR which will make them have different stub instantiations.

Set the isDirectory flag appropriately when using the currentDirectory() option

Now that this uses a LinkedBlockingDeque for batches, this is no longer necessary.

Also regenerate the Compute client to match the newest version of gax.

SSLHandshakeExceptions are not retryable, as it is most probably an indication that the client does not accept the server certificate.

This increases throughput by reducing contention on the executor queue mutex and makes the Subscriber implementation more accurately reflect the users intent when an InstantiatingExecutorProvider is passed.

pendingWrites.add() was not guaranteed to be called before pendingWrites.remove()

Reduce contention on pendingWrites by using a ConcurrentHashMap instead.

This pull request updates the documentation and adds an example.

mvn com.coveo:fmt-maven-plugin:format

Fixing a copy&paste typo

@sduskis

(cherry picked from commit 8255a9b)

This change modifies the enhanced stub for the BigQuery storage client to pass through the user-specified header provider to the storage settings base class at creationt ime. This addresses an issue where user-specified headers were being ignored when creating a client object.

google-cloud-logging-logback: #3215 allow user to specify custom LoggingOptions

Transactions can always be aborted by Cloud Spanner, and all transaction code should therefore be surrounded by with abort safeguarding.

Refactor SpannerImpl: Move AbstractResultSet to separate file

Spanner: Refactor SpannerImpl - Move AbstractReadContext to separate file

refactor SpannerImpl: move InstanceAdminClient to separate file

Date parsing using a regular expression is slower than a specific implementation for the only format that is supported.

refactor SpannerImpl: move TransactionRunnerImpl to separate file

add support for newFileChannel(...)

This removes the failure mode described in #2452 that can occur when MaxOutstandingElementCount is low and there is more than one connection. In this case, it is possible for an individual MessageDispatcher to have no outstanding in-flight messages, but also be blocked by flow control with a whole new batch outstanding. In this case, it will never make progress on that batch since it will never receive another batch and the queue was made to not be shared in #4590, so the batch will never be pulled off by another MessageDispatcher.

By changing this to use a blocking flow controller, this will never happen, as each batch will synchronously wait until it is allowed by flow control before being processed.

Step 1:

  1. Removing the Deque parameter from SequentialExecutorService.callNextTaskAsync() and looking it up the Deque in the method
  2. Simplify AutoExecutor and CallbackExecutor after the refactoring in 1).

meltsufin pushed a commit that referenced this pull request

May 1, 2026

@kamalaboulhosn

When the rpc timeout is zero, then it should be treated as disabled not actual 0

Ref: https://github.com/googleapis/gax-java/blob/master/gax/src/main/java/com/google/api/gax/batching/BatchingSettings.java

BREAKING CHANGE: The areTimestampsInSnapshotsEnabled() setting is now enabled by default so timestamp fields read from a DocumentSnapshot will be returned as Timestamp objects instead of Date. Any code expecting to receive a Date object must be updated.

This is required for v1 and accepted in v1beta1.

Port of googleapis/nodejs-firestore@52c7381

In Mockito 2, if a method expects a primitive type, but an any(.class) matcher is used in its place, it will throw an error. To prepare for this upcoming breakage, change all existing any(.class) matchers to use the correct any() matcher.

Ref: https://github.com/googleapis/google-cloud-java/blob/ed7bc857a05b34eed6be182d4798a62bf09cd394/google-cloud-clients/google-cloud-pubsub/src/main/java/com/google/cloud/pubsub/v1/Publisher.java#L497

This is needed for hbase adapter transition

Make the SubscriberStubSettings refer to the user provided executor provider instead of a fixed instantiation of it. If the user provides an InstantiatingExecutorProvider instead of a FixedExecutorProvider, this will actually instantiate more than one as the user would expect. It will still only instantiate one for all connections to share, and will do so until the next PR which will make them have different stub instantiations.

Set the isDirectory flag appropriately when using the currentDirectory() option

Now that this uses a LinkedBlockingDeque for batches, this is no longer necessary.

Also regenerate the Compute client to match the newest version of gax.

SSLHandshakeExceptions are not retryable, as it is most probably an indication that the client does not accept the server certificate.

This increases throughput by reducing contention on the executor queue mutex and makes the Subscriber implementation more accurately reflect the users intent when an InstantiatingExecutorProvider is passed.

pendingWrites.add() was not guaranteed to be called before pendingWrites.remove()

Reduce contention on pendingWrites by using a ConcurrentHashMap instead.

This pull request updates the documentation and adds an example.

mvn com.coveo:fmt-maven-plugin:format

Fixing a copy&paste typo

@sduskis

(cherry picked from commit 8255a9b)

This change modifies the enhanced stub for the BigQuery storage client to pass through the user-specified header provider to the storage settings base class at creationt ime. This addresses an issue where user-specified headers were being ignored when creating a client object.

google-cloud-logging-logback: #3215 allow user to specify custom LoggingOptions

Transactions can always be aborted by Cloud Spanner, and all transaction code should therefore be surrounded by with abort safeguarding.

Refactor SpannerImpl: Move AbstractResultSet to separate file

Spanner: Refactor SpannerImpl - Move AbstractReadContext to separate file

refactor SpannerImpl: move InstanceAdminClient to separate file

Date parsing using a regular expression is slower than a specific implementation for the only format that is supported.

refactor SpannerImpl: move TransactionRunnerImpl to separate file

add support for newFileChannel(...)

This removes the failure mode described in #2452 that can occur when MaxOutstandingElementCount is low and there is more than one connection. In this case, it is possible for an individual MessageDispatcher to have no outstanding in-flight messages, but also be blocked by flow control with a whole new batch outstanding. In this case, it will never make progress on that batch since it will never receive another batch and the queue was made to not be shared in #4590, so the batch will never be pulled off by another MessageDispatcher.

By changing this to use a blocking flow controller, this will never happen, as each batch will synchronously wait until it is allowed by flow control before being processed.

Step 1:

  1. Removing the Deque parameter from SequentialExecutorService.callNextTaskAsync() and looking it up the Deque in the method
  2. Simplify AutoExecutor and CallbackExecutor after the refactoring in 1).

This file contains hidden or 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

[ Show hidden characters]({{ revealButtonHref }})