From c509a2a4229f864edef8681677d73f3c7be1101f Mon Sep 17 00:00:00 2001 From: BenWhitehead Date: Tue, 2 Jun 2020 19:00:07 -0400 Subject: [PATCH 01/19] fix: fix version number in changelog to correctly reflect what was released to maven central (#145) --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 29d5835f1..0542833ec 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ # Changelog -## [1.102.0](https://www.github.com/googleapis/java-datastore/compare/v1.101.4...v1.102.0) (2020-06-02) +## [1.103.0](https://www.github.com/googleapis/java-datastore/compare/v1.102.4...v1.103.0) (2020-06-02) ### Features From 33809368e7536836bf38861e833b76d1eef12251 Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Wed, 3 Jun 2020 21:49:54 +0200 Subject: [PATCH 02/19] chore(deps): update dependency com.google.cloud:google-cloud-datastore to v1.103.0 (#147) --- samples/install-without-bom/pom.xml | 2 +- samples/snapshot/pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml index 15ed06e92..19e09b4a5 100644 --- a/samples/install-without-bom/pom.xml +++ b/samples/install-without-bom/pom.xml @@ -29,7 +29,7 @@ com.google.cloud google-cloud-datastore - 1.102.4 + 1.103.0 diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index 4802d9eac..fa30ad648 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -28,7 +28,7 @@ com.google.cloud google-cloud-datastore - 1.102.4 + 1.103.0 From d572efb1d8367086d2062c3a2f2c0ae61b85abf8 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 3 Jun 2020 19:54:13 +0000 Subject: [PATCH 03/19] chore: release 1.103.1-SNAPSHOT (#146) :robot: I have created a release \*beep\* \*boop\* --- ### Updating meta-information for bleeding-edge SNAPSHOT release. --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). --- google-cloud-datastore-bom/pom.xml | 6 +++--- google-cloud-datastore/pom.xml | 4 ++-- pom.xml | 4 ++-- proto-google-cloud-datastore-v1/pom.xml | 4 ++-- versions.txt | 8 ++++---- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/google-cloud-datastore-bom/pom.xml b/google-cloud-datastore-bom/pom.xml index 290ecc62b..c99c4dc2d 100644 --- a/google-cloud-datastore-bom/pom.xml +++ b/google-cloud-datastore-bom/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-datastore-bom - 1.103.0 + 1.103.1-SNAPSHOT pom com.google.cloud @@ -63,12 +63,12 @@ com.google.api.grpc proto-google-cloud-datastore-v1 - 0.86.0 + 0.86.1-SNAPSHOT com.google.cloud google-cloud-datastore - 1.103.0 + 1.103.1-SNAPSHOT diff --git a/google-cloud-datastore/pom.xml b/google-cloud-datastore/pom.xml index 375b94f36..6de85518f 100644 --- a/google-cloud-datastore/pom.xml +++ b/google-cloud-datastore/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-datastore - 1.103.0 + 1.103.1-SNAPSHOT jar Google Cloud Datastore https://github.com/googleapis/java-datastore @@ -12,7 +12,7 @@ com.google.cloud google-cloud-datastore-parent - 1.103.0 + 1.103.1-SNAPSHOT google-cloud-datastore diff --git a/pom.xml b/pom.xml index d1a5f3d56..e35aab729 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-datastore-parent pom - 1.103.0 + 1.103.1-SNAPSHOT Google Cloud Datastore Parent https://github.com/googleapis/java-datastore @@ -168,7 +168,7 @@ com.google.api.grpc proto-google-cloud-datastore-v1 - 0.86.0 + 0.86.1-SNAPSHOT com.google.cloud.datastore diff --git a/proto-google-cloud-datastore-v1/pom.xml b/proto-google-cloud-datastore-v1/pom.xml index 58e3d6cbb..9ca61e773 100644 --- a/proto-google-cloud-datastore-v1/pom.xml +++ b/proto-google-cloud-datastore-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-datastore-v1 - 0.86.0 + 0.86.1-SNAPSHOT proto-google-cloud-datastore-v1 PROTO library for proto-google-cloud-datastore-v1 com.google.cloud google-cloud-datastore-parent - 1.103.0 + 1.103.1-SNAPSHOT diff --git a/versions.txt b/versions.txt index d45e277c9..e4c2b72eb 100644 --- a/versions.txt +++ b/versions.txt @@ -1,8 +1,8 @@ # Format: # module:released-version:current-version -google-cloud-datastore:1.103.0:1.103.0 -google-cloud-datastore-bom:1.103.0:1.103.0 -google-cloud-datastore-parent:1.103.0:1.103.0 -proto-google-cloud-datastore-v1:0.86.0:0.86.0 +google-cloud-datastore:1.103.0:1.103.1-SNAPSHOT +google-cloud-datastore-bom:1.103.0:1.103.1-SNAPSHOT +google-cloud-datastore-parent:1.103.0:1.103.1-SNAPSHOT +proto-google-cloud-datastore-v1:0.86.0:0.86.1-SNAPSHOT From 976d9791572117dc703d8d7d6963bdd6603ecd63 Mon Sep 17 00:00:00 2001 From: Ajit Thakor <49403056+athakor@users.noreply.github.com> Date: Fri, 5 Jun 2020 00:54:28 +0530 Subject: [PATCH 04/19] feat: add support to customize gcloud command of LocalDatastoreHelper (#137) Refactor creation of LocalDatastoreHelper to provide a builder (in addition to the existing factory methods) which allow finer grained configuration including the ability to set a storage directory to be passed when starting the emulator. --- .../testing/LocalDatastoreHelper.java | 105 ++++++++++++++---- .../testing/ITLocalDatastoreHelperTest.java | 93 ++++++++++++++++ 2 files changed, 176 insertions(+), 22 deletions(-) diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/testing/LocalDatastoreHelper.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/testing/LocalDatastoreHelper.java index 51bcb6d32..2867d7e30 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/testing/LocalDatastoreHelper.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/testing/LocalDatastoreHelper.java @@ -35,7 +35,6 @@ import java.util.List; import java.util.UUID; import java.util.concurrent.TimeoutException; -import java.util.logging.Level; import java.util.logging.Logger; import org.threeten.bp.Duration; @@ -50,6 +49,7 @@ public class LocalDatastoreHelper extends BaseEmulatorHelper { private final List emulatorRunners; private final double consistency; private final Path gcdPath; + private boolean storeOnDisk; // Gcloud emulator settings private static final String GCLOUD_CMD_TEXT = "gcloud beta emulators datastore start"; @@ -78,39 +78,87 @@ public class LocalDatastoreHelper extends BaseEmulatorHelper { } } - private LocalDatastoreHelper(double consistency, int port) { + /** A builder for {@code LocalDatastoreHelper} objects. */ + public static class Builder { + private double consistency; + private int port; + private Path dataDir; + private boolean storeOnDisk = true; + + private Builder() {} + + private Builder(LocalDatastoreHelper helper) { + this.consistency = helper.consistency; + this.dataDir = helper.gcdPath; + this.storeOnDisk = helper.storeOnDisk; + } + + public Builder setConsistency(double consistency) { + this.consistency = consistency; + return this; + } + + public Builder setPort(int port) { + this.port = port; + return this; + } + + public Builder setDataDir(Path dataDir) { + this.dataDir = dataDir; + return this; + } + + public Builder setStoreOnDisk(boolean storeOnDisk) { + this.storeOnDisk = storeOnDisk; + return this; + } + + /** Creates a {@code LocalDatastoreHelper} object. */ + public LocalDatastoreHelper build() { + return new LocalDatastoreHelper(this); + } + } + + private LocalDatastoreHelper(Builder builder) { super( "datastore", - port > 0 ? port : BaseEmulatorHelper.findAvailablePort(DEFAULT_PORT), + builder.port > 0 ? builder.port : BaseEmulatorHelper.findAvailablePort(DEFAULT_PORT), PROJECT_ID_PREFIX + UUID.randomUUID().toString()); - Path tmpDirectory = null; - try { - tmpDirectory = Files.createTempDirectory("gcd"); - } catch (IOException ex) { - getLogger().log(Level.WARNING, "Failed to create temporary directory"); - } - this.gcdPath = tmpDirectory; - this.consistency = consistency; + this.consistency = builder.consistency > 0 ? builder.consistency : DEFAULT_CONSISTENCY; + this.gcdPath = builder.dataDir; + this.storeOnDisk = builder.storeOnDisk; String binName = BIN_NAME; if (isWindows()) { binName = BIN_NAME.replace("/", "\\"); } List gcloudCommand = new ArrayList<>(Arrays.asList(GCLOUD_CMD_TEXT.split(" "))); gcloudCommand.add(GCLOUD_CMD_PORT_FLAG + "localhost:" + getPort()); - gcloudCommand.add(CONSISTENCY_FLAG + consistency); - gcloudCommand.add("--no-store-on-disk"); + gcloudCommand.add(CONSISTENCY_FLAG + builder.consistency); + if (!builder.storeOnDisk) { + gcloudCommand.add("--no-store-on-disk"); + } GcloudEmulatorRunner gcloudRunner = new GcloudEmulatorRunner(gcloudCommand, VERSION_PREFIX, MIN_VERSION); List binCommand = new ArrayList<>(Arrays.asList(binName, "start")); binCommand.add("--testing"); binCommand.add(BIN_CMD_PORT_FLAG + getPort()); - binCommand.add(CONSISTENCY_FLAG + consistency); - if (gcdPath != null) { - gcloudCommand.add("--data-dir=" + gcdPath.toString()); + binCommand.add(CONSISTENCY_FLAG + getConsistency()); + if (builder.dataDir != null) { + gcloudCommand.add("--data-dir=" + getGcdPath()); } DownloadableEmulatorRunner downloadRunner = new DownloadableEmulatorRunner(binCommand, EMULATOR_URL, MD5_CHECKSUM); - emulatorRunners = ImmutableList.of(gcloudRunner, downloadRunner); + this.emulatorRunners = ImmutableList.of(gcloudRunner, downloadRunner); + } + + /** Returns a builder for {@code LocalDatastoreHelper} object. */ + public LocalDatastoreHelper.Builder toBuilder() { + return new Builder(this); + } + + /** Returns a builder for {@code LocalDatastoreHelper} object. */ + public static LocalDatastoreHelper.Builder newBuilder() { + return new LocalDatastoreHelper.Builder(); } @Override @@ -153,6 +201,16 @@ public double getConsistency() { return consistency; } + /** Returns the data directory path of the local Datastore emulator. */ + public Path getGcdPath() { + return gcdPath; + } + + /** Returns {@code true} data persist on disk, otherwise {@code false} data not store on disk. */ + public boolean isStoreOnDisk() { + return storeOnDisk; + } + /** * Creates a local Datastore helper with the specified settings for project ID and consistency. * @@ -162,7 +220,7 @@ public double getConsistency() { * consistency of non-ancestor queries; non-ancestor queries are eventually consistent. */ public static LocalDatastoreHelper create(double consistency) { - return create(consistency, 0); + return LocalDatastoreHelper.newBuilder().setConsistency(consistency).setPort(0).build(); } /** @@ -176,7 +234,7 @@ public static LocalDatastoreHelper create(double consistency) { * emulator will search for a free random port. */ public static LocalDatastoreHelper create(double consistency, int port) { - return new LocalDatastoreHelper(consistency, port); + return LocalDatastoreHelper.newBuilder().setConsistency(consistency).setPort(port).build(); } /** @@ -187,7 +245,10 @@ public static LocalDatastoreHelper create(double consistency, int port) { * emulator will search for a free random port. */ public static LocalDatastoreHelper create(int port) { - return new LocalDatastoreHelper(DEFAULT_CONSISTENCY, port); + return LocalDatastoreHelper.newBuilder() + .setConsistency(DEFAULT_CONSISTENCY) + .setPort(port) + .build(); } /** @@ -197,7 +258,7 @@ public static LocalDatastoreHelper create(int port) { * all writes are immediately visible. */ public static LocalDatastoreHelper create() { - return create(DEFAULT_CONSISTENCY); + return LocalDatastoreHelper.newBuilder().setConsistency(DEFAULT_CONSISTENCY).build(); } /** @@ -254,7 +315,7 @@ public void stop() throws IOException, InterruptedException, TimeoutException { stop(Duration.ofSeconds(20)); } - private static void deleteRecursively(Path path) throws IOException { + static void deleteRecursively(Path path) throws IOException { if (path == null || !Files.exists(path)) { return; } diff --git a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/testing/ITLocalDatastoreHelperTest.java b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/testing/ITLocalDatastoreHelperTest.java index 9da207a4a..6cc236a8b 100644 --- a/google-cloud-datastore/src/test/java/com/google/cloud/datastore/testing/ITLocalDatastoreHelperTest.java +++ b/google-cloud-datastore/src/test/java/com/google/cloud/datastore/testing/ITLocalDatastoreHelperTest.java @@ -30,8 +30,12 @@ import com.google.cloud.datastore.Entity; import com.google.cloud.datastore.Key; import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; import java.util.concurrent.TimeoutException; +import org.junit.After; import org.junit.Assert; +import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.JUnit4; @@ -43,6 +47,17 @@ public class ITLocalDatastoreHelperTest { private static final double TOLERANCE = 0.00001; private static final String PROJECT_ID_PREFIX = "test-project-"; private static final String NAMESPACE = "namespace"; + private Path dataDir; + + @Before + public void setUp() throws IOException { + dataDir = Files.createTempDirectory("gcd"); + } + + @After + public void tearDown() throws IOException { + LocalDatastoreHelper.deleteRecursively(dataDir); + } @Test public void testCreate() { @@ -54,6 +69,57 @@ public void testCreate() { assertTrue(helper.getProjectId().startsWith(PROJECT_ID_PREFIX)); } + @Test + public void testCreateWithBuilder() { + LocalDatastoreHelper helper = + LocalDatastoreHelper.newBuilder() + .setConsistency(0.75) + .setPort(8081) + .setStoreOnDisk(false) + .setDataDir(dataDir) + .build(); + assertTrue(Math.abs(0.75 - helper.getConsistency()) < TOLERANCE); + assertTrue(helper.getProjectId().startsWith(PROJECT_ID_PREFIX)); + assertFalse(helper.isStoreOnDisk()); + assertEquals(8081, helper.getPort()); + assertEquals(dataDir, helper.getGcdPath()); + LocalDatastoreHelper incompleteHelper = LocalDatastoreHelper.newBuilder().build(); + assertTrue(Math.abs(0.9 - incompleteHelper.getConsistency()) < TOLERANCE); + assertTrue(incompleteHelper.getProjectId().startsWith(PROJECT_ID_PREFIX)); + } + + @Test + public void testCreateWithToBuilder() throws IOException { + LocalDatastoreHelper helper = + LocalDatastoreHelper.newBuilder() + .setConsistency(0.75) + .setPort(8081) + .setStoreOnDisk(false) + .setDataDir(dataDir) + .build(); + assertTrue(Math.abs(0.75 - helper.getConsistency()) < TOLERANCE); + assertTrue(helper.getProjectId().startsWith(PROJECT_ID_PREFIX)); + assertFalse(helper.isStoreOnDisk()); + assertEquals(8081, helper.getPort()); + assertEquals(dataDir, helper.getGcdPath()); + LocalDatastoreHelper actualHelper = helper.toBuilder().build(); + assertLocalDatastoreHelpersEquivelent(helper, actualHelper); + Path dataDir = Files.createTempDirectory("gcd_data_dir"); + actualHelper = + helper + .toBuilder() + .setConsistency(0.85) + .setPort(9091) + .setStoreOnDisk(true) + .setDataDir(dataDir) + .build(); + assertTrue(Math.abs(0.85 - actualHelper.getConsistency()) < TOLERANCE); + assertTrue(actualHelper.isStoreOnDisk()); + assertEquals(9091, actualHelper.getPort()); + assertEquals(dataDir, actualHelper.getGcdPath()); + LocalDatastoreHelper.deleteRecursively(dataDir); + } + @Test public void testCreatePort() { LocalDatastoreHelper helper = LocalDatastoreHelper.create(0.75, 8888); @@ -103,4 +169,31 @@ public void testStartStopReset() throws IOException, InterruptedException, Timeo assertNotNull(ex.getMessage()); } } + + @Test + public void testStartStopResetWithBuilder() + throws IOException, InterruptedException, TimeoutException { + try { + LocalDatastoreHelper helper = LocalDatastoreHelper.newBuilder().build(); + helper.start(); + Datastore datastore = helper.getOptions().getService(); + Key key = datastore.newKeyFactory().setKind("kind").newKey("name"); + datastore.put(Entity.newBuilder(key).build()); + assertNotNull(datastore.get(key)); + helper.reset(); + assertNull(datastore.get(key)); + helper.stop(Duration.ofMinutes(1)); + datastore.get(key); + Assert.fail(); + } catch (DatastoreException ex) { + assertNotNull(ex.getMessage()); + } + } + + public void assertLocalDatastoreHelpersEquivelent( + LocalDatastoreHelper expected, LocalDatastoreHelper actual) { + assertEquals(expected.getConsistency(), actual.getConsistency(), 0); + assertEquals(expected.isStoreOnDisk(), actual.isStoreOnDisk()); + assertEquals(expected.getGcdPath(), actual.getGcdPath()); + } } From 425f6db057cbd78a1e91ed71684183ab7fd59c48 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Fri, 5 Jun 2020 11:26:32 -0700 Subject: [PATCH 05/19] chore(java_templates): add default CODEOWNERS files for samples reviews (#152) This should automatically request reviews from the googleapis/java-samples-reviewers team for changes to samples Java code. If you provide a `codeowner_team` in the `.repo-metadata.json` configuration file, it also adds an entry for any Java code. Note that later entries in the file take precedence over earlier ones so samples Java code will only require reviews by the samples team. Source-Author: Jeff Ching Source-Date: Wed Jun 3 15:32:11 2020 -0700 Source-Repo: googleapis/synthtool Source-Sha: 8b65daa222d193b689279162781baf0aa1f0ffd2 Source-Link: https://github.com/googleapis/synthtool/commit/8b65daa222d193b689279162781baf0aa1f0ffd2 --- .github/CODEOWNERS | 8 +++----- synth.metadata | 4 ++-- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 39a8fc72b..6137bef2a 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1,10 +1,8 @@ # Code owners file. # This file controls who is tagged for review for any given pull request. -# + # For syntax help see: # https://help.github.com/en/github/creating-cloning-and-archiving-repositories/about-code-owners#codeowners-syntax - -# The firestore-dpe team is the default owner for anything not -# explicitly taken by someone else. -* @googleapis/firestore-dpe +# The java-samples-reviewers team is the default owner for samples changes +samples/**/*.java @googleapis/java-samples-reviewers diff --git a/synth.metadata b/synth.metadata index d33ca02ed..fa5495de6 100644 --- a/synth.metadata +++ b/synth.metadata @@ -4,7 +4,7 @@ "git": { "name": ".", "remote": "https://github.com/googleapis/java-datastore.git", - "sha": "660f216302fedaf2f5fe0f4c76cdab8fca65cbd1" + "sha": "d572efb1d8367086d2062c3a2f2c0ae61b85abf8" } }, { @@ -19,7 +19,7 @@ "git": { "name": "synthtool", "remote": "https://github.com/googleapis/synthtool.git", - "sha": "5b48b0716a36ca069db3038da7e205c87a22ed19" + "sha": "8b65daa222d193b689279162781baf0aa1f0ffd2" } } ], From 5aee52f5013d6780e523e0c6d7d00a1826b83b9b Mon Sep 17 00:00:00 2001 From: Suraj Dhamecha <48670070+suraj-qlogic@users.noreply.github.com> Date: Tue, 9 Jun 2020 01:27:32 +0530 Subject: [PATCH 06/19] feat: add opencensus tracing/stats support for Datastore RPC operations (#130) --- google-cloud-datastore/pom.xml | 4 + .../google/cloud/datastore/DatastoreImpl.java | 64 ++++++++++++---- .../com/google/cloud/datastore/TraceUtil.java | 74 +++++++++++++++++++ .../datastore/spi/v1/HttpDatastoreRpc.java | 12 ++- pom.xml | 1 - 5 files changed, 139 insertions(+), 16 deletions(-) create mode 100644 google-cloud-datastore/src/main/java/com/google/cloud/datastore/TraceUtil.java diff --git a/google-cloud-datastore/pom.xml b/google-cloud-datastore/pom.xml index 6de85518f..703612e6f 100644 --- a/google-cloud-datastore/pom.xml +++ b/google-cloud-datastore/pom.xml @@ -78,6 +78,10 @@ com.google.auth google-auth-library-oauth2-http + + io.opencensus + opencensus-api + diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreImpl.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreImpl.java index 25e434227..f4bd6b0be 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreImpl.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/DatastoreImpl.java @@ -34,6 +34,9 @@ import com.google.datastore.v1.ReserveIdsRequest; import com.google.datastore.v1.TransactionOptions; import com.google.protobuf.ByteString; +import io.opencensus.common.Scope; +import io.opencensus.trace.Span; +import io.opencensus.trace.Status; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; @@ -53,6 +56,7 @@ final class DatastoreImpl extends BaseService implements Datas TransactionExceptionHandler.build(); private static final ExceptionHandler TRANSACTION_OPERATION_EXCEPTION_HANDLER = TransactionOperationExceptionHandler.build(); + private final TraceUtil traceUtil = TraceUtil.getInstance();; DatastoreImpl(DatastoreOptions options) { super(options); @@ -132,30 +136,36 @@ public T call() throws DatastoreException { @Override public T runInTransaction(final TransactionCallable callable) { - final DatastoreImpl self = this; - try { + Span span = traceUtil.startSpan(TraceUtil.SPAN_NAME_TRANSACTION); + try (Scope scope = traceUtil.getTracer().withSpan(span)) { return RetryHelper.runWithRetries( - new ReadWriteTransactionCallable(self, callable, null), + new ReadWriteTransactionCallable(this, callable, null), retrySettings, TRANSACTION_EXCEPTION_HANDLER, getOptions().getClock()); } catch (RetryHelperException e) { + span.setStatus(Status.UNKNOWN.withDescription(e.getMessage())); throw DatastoreException.translateAndThrow(e); + } finally { + span.end(TraceUtil.END_SPAN_OPTIONS); } } @Override public T runInTransaction( final TransactionCallable callable, TransactionOptions transactionOptions) { - final DatastoreImpl self = this; - try { + Span span = traceUtil.startSpan(TraceUtil.SPAN_NAME_TRANSACTION); + try (Scope scope = traceUtil.getTracer().withSpan(span)) { return RetryHelper.runWithRetries( - new ReadWriteTransactionCallable(self, callable, transactionOptions), + new ReadWriteTransactionCallable(this, callable, transactionOptions), retrySettings, TRANSACTION_EXCEPTION_HANDLER, getOptions().getClock()); } catch (RetryHelperException e) { + span.setStatus(Status.UNKNOWN.withDescription(e.getMessage())); throw DatastoreException.translateAndThrow(e); + } finally { + span.end(TraceUtil.END_SPAN_OPTIONS); } } @@ -175,7 +185,8 @@ QueryResults run(com.google.datastore.v1.ReadOptions readOptionsPb, Query com.google.datastore.v1.RunQueryResponse runQuery( final com.google.datastore.v1.RunQueryRequest requestPb) { - try { + Span span = traceUtil.startSpan(TraceUtil.SPAN_NAME_RUNQUERY); + try (Scope scope = traceUtil.getTracer().withSpan(span)) { return RetryHelper.runWithRetries( new Callable() { @Override @@ -189,7 +200,10 @@ public com.google.datastore.v1.RunQueryResponse call() throws DatastoreException : TRANSACTION_OPERATION_EXCEPTION_HANDLER, getOptions().getClock()); } catch (RetryHelperException e) { + span.setStatus(Status.UNKNOWN.withDescription(e.getMessage())); throw DatastoreException.translateAndThrow(e); + } finally { + span.end(TraceUtil.END_SPAN_OPTIONS); } } @@ -229,7 +243,8 @@ public List allocateId(IncompleteKey... keys) { private com.google.datastore.v1.AllocateIdsResponse allocateIds( final com.google.datastore.v1.AllocateIdsRequest requestPb) { - try { + Span span = traceUtil.startSpan(TraceUtil.SPAN_NAME_ALLOCATEIDS); + try (Scope scope = traceUtil.getTracer().withSpan(span)) { return RetryHelper.runWithRetries( new Callable() { @Override @@ -241,7 +256,10 @@ public com.google.datastore.v1.AllocateIdsResponse call() throws DatastoreExcept EXCEPTION_HANDLER, getOptions().getClock()); } catch (RetryHelperException e) { + span.setStatus(Status.UNKNOWN.withDescription(e.getMessage())); throw DatastoreException.translateAndThrow(e); + } finally { + span.end(TraceUtil.END_SPAN_OPTIONS); } } @@ -389,7 +407,8 @@ protected Entity computeNext() { com.google.datastore.v1.LookupResponse lookup( final com.google.datastore.v1.LookupRequest requestPb) { - try { + Span span = traceUtil.startSpan(TraceUtil.SPAN_NAME_LOOKUP); + try (Scope scope = traceUtil.getTracer().withSpan(span)) { return RetryHelper.runWithRetries( new Callable() { @Override @@ -403,7 +422,10 @@ public com.google.datastore.v1.LookupResponse call() throws DatastoreException { : TRANSACTION_OPERATION_EXCEPTION_HANDLER, getOptions().getClock()); } catch (RetryHelperException e) { + span.setStatus(Status.UNKNOWN.withDescription(e.getMessage())); throw DatastoreException.translateAndThrow(e); + } finally { + span.end(TraceUtil.END_SPAN_OPTIONS); } } @@ -425,7 +447,8 @@ public List reserveIds(Key... keys) { com.google.datastore.v1.ReserveIdsResponse reserveIds( final com.google.datastore.v1.ReserveIdsRequest requestPb) { - try { + Span span = traceUtil.startSpan(TraceUtil.SPAN_NAME_RESERVEIDS); + try (Scope scope = traceUtil.getTracer().withSpan(span)) { return RetryHelper.runWithRetries( new Callable() { @Override @@ -437,7 +460,10 @@ public com.google.datastore.v1.ReserveIdsResponse call() throws DatastoreExcepti EXCEPTION_HANDLER, getOptions().getClock()); } catch (RetryHelperException e) { + span.setStatus(Status.UNKNOWN.withDescription(e.getMessage())); throw DatastoreException.translateAndThrow(e); + } finally { + span.end(TraceUtil.END_SPAN_OPTIONS); } } @@ -529,7 +555,8 @@ private com.google.datastore.v1.CommitResponse commitMutation( com.google.datastore.v1.CommitResponse commit( final com.google.datastore.v1.CommitRequest requestPb) { - try { + Span span = traceUtil.startSpan(TraceUtil.SPAN_NAME_COMMIT); + try (Scope scope = traceUtil.getTracer().withSpan(span)) { return RetryHelper.runWithRetries( new Callable() { @Override @@ -543,7 +570,10 @@ public com.google.datastore.v1.CommitResponse call() throws DatastoreException { : TRANSACTION_OPERATION_EXCEPTION_HANDLER, getOptions().getClock()); } catch (RetryHelperException e) { + span.setStatus(Status.UNKNOWN.withDescription(e.getMessage())); throw DatastoreException.translateAndThrow(e); + } finally { + span.end(TraceUtil.END_SPAN_OPTIONS); } } @@ -554,7 +584,8 @@ ByteString requestTransactionId( com.google.datastore.v1.BeginTransactionResponse beginTransaction( final com.google.datastore.v1.BeginTransactionRequest requestPb) { - try { + Span span = traceUtil.startSpan(TraceUtil.SPAN_NAME_BEGINTRANSACTION); + try (Scope scope = traceUtil.getTracer().withSpan(span)) { return RetryHelper.runWithRetries( new Callable() { @Override @@ -567,7 +598,10 @@ public com.google.datastore.v1.BeginTransactionResponse call() EXCEPTION_HANDLER, getOptions().getClock()); } catch (RetryHelperException e) { + span.setStatus(Status.UNKNOWN.withDescription(e.getMessage())); throw DatastoreException.translateAndThrow(e); + } finally { + span.end(TraceUtil.END_SPAN_OPTIONS); } } @@ -579,7 +613,8 @@ void rollbackTransaction(ByteString transaction) { } void rollback(final com.google.datastore.v1.RollbackRequest requestPb) { - try { + Span span = traceUtil.startSpan(TraceUtil.SPAN_NAME_ROLLBACK); + try (Scope scope = traceUtil.getTracer().withSpan(span)) { RetryHelper.runWithRetries( new Callable() { @Override @@ -592,7 +627,10 @@ public Void call() throws DatastoreException { EXCEPTION_HANDLER, getOptions().getClock()); } catch (RetryHelperException e) { + span.setStatus(Status.UNKNOWN.withDescription(e.getMessage())); throw DatastoreException.translateAndThrow(e); + } finally { + span.end(TraceUtil.END_SPAN_OPTIONS); } } } diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/TraceUtil.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/TraceUtil.java new file mode 100644 index 000000000..1f28b2e80 --- /dev/null +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/TraceUtil.java @@ -0,0 +1,74 @@ +/* + * Copyright 2020 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. + */ + +package com.google.cloud.datastore; + +import com.google.cloud.datastore.spi.v1.HttpDatastoreRpc; +import io.opencensus.trace.EndSpanOptions; +import io.opencensus.trace.Span; +import io.opencensus.trace.Tracer; +import io.opencensus.trace.Tracing; + +/** + * Helper class for tracing utility. It is used for instrumenting {@link HttpDatastoreRpc} with + * OpenCensus APIs. + * + *

TraceUtil instances are created by the {@link TraceUtil#getInstance()} method. + */ +public class TraceUtil { + private final Tracer tracer = Tracing.getTracer(); + private static final TraceUtil traceUtil = new TraceUtil(); + static final String SPAN_NAME_ALLOCATEIDS = "CloudDatastoreOperation.allocateIds"; + static final String SPAN_NAME_TRANSACTION = "CloudDatastoreOperation.readWriteTransaction"; + static final String SPAN_NAME_BEGINTRANSACTION = "CloudDatastoreOperation.beginTransaction"; + static final String SPAN_NAME_COMMIT = "CloudDatastoreOperation.commit"; + static final String SPAN_NAME_LOOKUP = "CloudDatastoreOperation.lookup"; + static final String SPAN_NAME_RESERVEIDS = "CloudDatastoreOperation.reserveIds"; + static final String SPAN_NAME_ROLLBACK = "CloudDatastoreOperation.rollback"; + static final String SPAN_NAME_RUNQUERY = "CloudDatastoreOperation.runQuery"; + static final EndSpanOptions END_SPAN_OPTIONS = + EndSpanOptions.builder().setSampleToLocalSpanStore(true).build(); + + /** + * Starts a new span. + * + * @param spanName The name of the returned Span. + * @return The newly created {@link Span}. + */ + protected Span startSpan(String spanName) { + return tracer.spanBuilder(spanName).startSpan(); + } + + /** + * Return the global {@link Tracer}. + * + * @return The global {@link Tracer}. + */ + public Tracer getTracer() { + return tracer; + } + + /** + * Return TraceUtil Object. + * + * @return An instance of {@link TraceUtil} + */ + public static TraceUtil getInstance() { + return traceUtil; + } + + private TraceUtil() {} +} diff --git a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/HttpDatastoreRpc.java b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/HttpDatastoreRpc.java index 7d3434108..4f13b4600 100644 --- a/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/HttpDatastoreRpc.java +++ b/google-cloud-datastore/src/main/java/com/google/cloud/datastore/spi/v1/HttpDatastoreRpc.java @@ -21,6 +21,8 @@ import com.google.api.client.http.HttpTransport; import com.google.cloud.datastore.DatastoreException; import com.google.cloud.datastore.DatastoreOptions; +import com.google.cloud.datastore.TraceUtil; +import com.google.cloud.http.CensusHttpModule; import com.google.cloud.http.HttpTransportOptions; import com.google.datastore.v1.AllocateIdsRequest; import com.google.datastore.v1.AllocateIdsResponse; @@ -75,12 +77,18 @@ public HttpDatastoreRpc(DatastoreOptions options) { private HttpRequestInitializer getHttpRequestInitializer( final DatastoreOptions options, HttpTransportOptions httpTransportOptions) { - final HttpRequestInitializer delegate = httpTransportOptions.getHttpRequestInitializer(options); + // Open Census initialization + CensusHttpModule censusHttpModule = + new CensusHttpModule(TraceUtil.getInstance().getTracer(), true); + final HttpRequestInitializer censusHttpModuleHttpRequestInitializer = + censusHttpModule.getHttpRequestInitializer( + httpTransportOptions.getHttpRequestInitializer(options)); + final String applicationName = options.getApplicationName(); return new HttpRequestInitializer() { @Override public void initialize(HttpRequest httpRequest) throws IOException { - delegate.initialize(httpRequest); + censusHttpModuleHttpRequestInitializer.initialize(httpRequest); httpRequest.getHeaders().setUserAgent(applicationName); } }; diff --git a/pom.xml b/pom.xml index e35aab729..5a493fe29 100644 --- a/pom.xml +++ b/pom.xml @@ -191,7 +191,6 @@ google-oauth-client 1.30.6 - junit From be4aaec6e75ccbd1548ec15918536465a6eddf7f Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Mon, 8 Jun 2020 15:49:34 -0700 Subject: [PATCH 07/19] chore(java_templates): re-generate common files (#155) * chore: turn on renovate-bot master issue for java repos Source-Author: Stephanie Wang Source-Date: Thu Jun 4 18:23:16 2020 -0400 Source-Repo: googleapis/synthtool Source-Sha: cac9eef310652bf138dd76b716e4986e757d62ac Source-Link: https://github.com/googleapis/synthtool/commit/cac9eef310652bf138dd76b716e4986e757d62ac * build(java): skip lint on samples directory Let the samples test decide how to enforce linting Source-Author: Jeff Ching Source-Date: Fri Jun 5 13:40:10 2020 -0700 Source-Repo: googleapis/synthtool Source-Sha: 987270824bd26f6a8c716d5e2022057b8ae7b26e Source-Link: https://github.com/googleapis/synthtool/commit/987270824bd26f6a8c716d5e2022057b8ae7b26e --- .kokoro/build.sh | 4 +--- renovate.json | 3 ++- synth.metadata | 4 ++-- 3 files changed, 5 insertions(+), 6 deletions(-) diff --git a/.kokoro/build.sh b/.kokoro/build.sh index cc3cd547d..feda37d3d 100755 --- a/.kokoro/build.sh +++ b/.kokoro/build.sh @@ -51,9 +51,7 @@ test) RETURN_CODE=$? ;; lint) - mvn \ - -Penable-samples \ - com.coveo:fmt-maven-plugin:check + mvn com.coveo:fmt-maven-plugin:check RETURN_CODE=$? ;; javadoc) diff --git a/renovate.json b/renovate.json index 83457deb1..538ff9137 100644 --- a/renovate.json +++ b/renovate.json @@ -76,5 +76,6 @@ "groupName": "jackson dependencies" } ], - "semanticCommits": true + "semanticCommits": true, + "masterIssue": true } \ No newline at end of file diff --git a/synth.metadata b/synth.metadata index fa5495de6..bd3e25bcc 100644 --- a/synth.metadata +++ b/synth.metadata @@ -4,7 +4,7 @@ "git": { "name": ".", "remote": "https://github.com/googleapis/java-datastore.git", - "sha": "d572efb1d8367086d2062c3a2f2c0ae61b85abf8" + "sha": "425f6db057cbd78a1e91ed71684183ab7fd59c48" } }, { @@ -19,7 +19,7 @@ "git": { "name": "synthtool", "remote": "https://github.com/googleapis/synthtool.git", - "sha": "8b65daa222d193b689279162781baf0aa1f0ffd2" + "sha": "987270824bd26f6a8c716d5e2022057b8ae7b26e" } } ], From 9b82b4219da00b64e2e76ad0f6b34c599261c419 Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Tue, 9 Jun 2020 22:23:56 +0200 Subject: [PATCH 08/19] chore(deps): update dependency com.google.cloud:libraries-bom to v5.6.0 (#157) --- samples/snippets/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml index 056cf90b2..1a38dce4c 100644 --- a/samples/snippets/pom.xml +++ b/samples/snippets/pom.xml @@ -30,7 +30,7 @@ com.google.cloud libraries-bom - 5.5.0 + 5.6.0 pom import From 4025bb7050952586d62fbde9b82aedff754acd9a Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Thu, 11 Jun 2020 00:44:28 +0200 Subject: [PATCH 09/19] chore(deps): update dependency com.google.cloud.samples:shared-configuration to v1.0.18 (#158) This PR contains the following updates: | Package | Update | Change | |---|---|---| | com.google.cloud.samples:shared-configuration | patch | `1.0.17` -> `1.0.18` | --- ### Renovate configuration :date: **Schedule**: At any time (no schedule defined). :vertical_traffic_light: **Automerge**: Disabled by config. Please merge this manually once you are satisfied. :recycle: **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. :no_bell: **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [WhiteSource Renovate](https://renovate.whitesourcesoftware.com). View repository job log [here](https://app.renovatebot.com/dashboard#googleapis/java-datastore). --- samples/install-without-bom/pom.xml | 2 +- samples/pom.xml | 2 +- samples/snapshot/pom.xml | 2 +- samples/snippets/pom.xml | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/samples/install-without-bom/pom.xml b/samples/install-without-bom/pom.xml index 19e09b4a5..749f5d3f5 100644 --- a/samples/install-without-bom/pom.xml +++ b/samples/install-without-bom/pom.xml @@ -14,7 +14,7 @@ com.google.cloud.samples shared-configuration - 1.0.17 + 1.0.18 diff --git a/samples/pom.xml b/samples/pom.xml index dda0f27c3..d75c74949 100644 --- a/samples/pom.xml +++ b/samples/pom.xml @@ -18,7 +18,7 @@ com.google.cloud.samples shared-configuration - 1.0.17 + 1.0.18 diff --git a/samples/snapshot/pom.xml b/samples/snapshot/pom.xml index fa30ad648..2e5e1d8d2 100644 --- a/samples/snapshot/pom.xml +++ b/samples/snapshot/pom.xml @@ -14,7 +14,7 @@ com.google.cloud.samples shared-configuration - 1.0.17 + 1.0.18 diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml index 1a38dce4c..fffff3db0 100644 --- a/samples/snippets/pom.xml +++ b/samples/snippets/pom.xml @@ -14,7 +14,7 @@ com.google.cloud.samples shared-configuration - 1.0.17 + 1.0.18 From c4079786354b6f1220af1af2f0ee821aea13e1f4 Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Thu, 11 Jun 2020 00:51:00 +0200 Subject: [PATCH 10/19] chore(deps): update dependency com.google.cloud:libraries-bom to v5.7.0 (#160) This PR contains the following updates: | Package | Update | Change | |---|---|---| | [com.google.cloud:libraries-bom](https://togithub.com/GoogleCloudPlatform/cloud-opensource-java) | minor | `5.6.0` -> `5.7.0` | --- ### Renovate configuration :date: **Schedule**: At any time (no schedule defined). :vertical_traffic_light: **Automerge**: Disabled by config. Please merge this manually once you are satisfied. :recycle: **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. :no_bell: **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [WhiteSource Renovate](https://renovate.whitesourcesoftware.com). View repository job log [here](https://app.renovatebot.com/dashboard#googleapis/java-datastore). --- samples/snippets/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml index fffff3db0..34f30a354 100644 --- a/samples/snippets/pom.xml +++ b/samples/snippets/pom.xml @@ -30,7 +30,7 @@ com.google.cloud libraries-bom - 5.6.0 + 5.7.0 pom import From 5434c7d7f00a96f8dd7091996b032d856b68e73f Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Thu, 11 Jun 2020 02:01:10 +0200 Subject: [PATCH 11/19] build(deps): update dependency com.google.cloud:google-cloud-shared-config to v0.8.0 (#159) This PR contains the following updates: | Package | Update | Change | |---|---|---| | [com.google.cloud:google-cloud-shared-config](https://togithub.com/googleapis/java-shared-config) | minor | `0.6.0` -> `0.8.0` | --- ### Release Notes

googleapis/java-shared-config ### [`v0.8.0`](https://togithub.com/googleapis/java-shared-config/blob/master/CHANGELOG.md#​080-httpswwwgithubcomgoogleapisjava-shared-configcomparev070v080-2020-06-10) [Compare Source](https://togithub.com/googleapis/java-shared-config/compare/v0.7.0...v0.8.0) ##### Features - revert "feat: mark auto-value-annotations scope as provided" ([#​154](https://www.github.com/googleapis/java-shared-config/issues/154)) ([88afb4e](https://www.github.com/googleapis/java-shared-config/commit/88afb4e7c57cb6e00929c098135314a926d9da30)) ### [`v0.7.0`](https://togithub.com/googleapis/java-shared-config/blob/master/CHANGELOG.md#​070-httpswwwgithubcomgoogleapisjava-shared-configcomparev060v070-2020-06-10) [Compare Source](https://togithub.com/googleapis/java-shared-config/compare/v0.6.0...v0.7.0) ##### Features - mark auto-value-annotations scope as provided ([#​151](https://www.github.com/googleapis/java-shared-config/issues/151)) ([44ea4cb](https://www.github.com/googleapis/java-shared-config/commit/44ea4cbbf92b4ad35ffaffb7a01a1bce05063daf)) ##### Bug Fixes - lock the google-java-format version used by formatter plugin ([#​149](https://www.github.com/googleapis/java-shared-config/issues/149)) ([d58c054](https://www.github.com/googleapis/java-shared-config/commit/d58c05437a4ea8767db2bebfcc405ec77aeb9705))
--- ### Renovate configuration :date: **Schedule**: At any time (no schedule defined). :vertical_traffic_light: **Automerge**: Disabled by config. Please merge this manually once you are satisfied. :recycle: **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. :no_bell: **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [WhiteSource Renovate](https://renovate.whitesourcesoftware.com). View repository job log [here](https://app.renovatebot.com/dashboard#googleapis/java-datastore). --- google-cloud-datastore-bom/pom.xml | 2 +- pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/google-cloud-datastore-bom/pom.xml b/google-cloud-datastore-bom/pom.xml index c99c4dc2d..0c0ad522c 100644 --- a/google-cloud-datastore-bom/pom.xml +++ b/google-cloud-datastore-bom/pom.xml @@ -8,7 +8,7 @@ com.google.cloud google-cloud-shared-config - 0.6.0 + 0.8.0 Google Cloud datastore BOM diff --git a/pom.xml b/pom.xml index 5a493fe29..4ad719190 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ com.google.cloud google-cloud-shared-config - 0.6.0 + 0.8.0 From 39c8d723b318d08ca494b71167eaa80b1df6423d Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Fri, 12 Jun 2020 22:29:51 +0200 Subject: [PATCH 12/19] deps: update dependency com.google.cloud:google-cloud-shared-dependencies to v0.8.0 (#161) --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 4ad719190..29d091c7e 100644 --- a/pom.xml +++ b/pom.xml @@ -160,7 +160,7 @@ com.google.cloud google-cloud-shared-dependencies - 0.7.0 + 0.8.0 pom import From ef8e715fc990de03e6ef393367f24fffd2efbd29 Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Mon, 15 Jun 2020 12:55:49 -0700 Subject: [PATCH 13/19] chore: set Ruby namespace in proto options (#162) PiperOrigin-RevId: 316124477 Source-Author: Google APIs Source-Date: Fri Jun 12 10:06:09 2020 -0700 Source-Repo: googleapis/googleapis Source-Sha: c829fa0bfa725adaf20d82e86cbc1220e3ffd784 Source-Link: https://github.com/googleapis/googleapis/commit/c829fa0bfa725adaf20d82e86cbc1220e3ffd784 --- .../main/java/com/google/datastore/v1/DatastoreProto.java | 5 +++-- .../src/main/java/com/google/datastore/v1/EntityProto.java | 5 +++-- .../src/main/java/com/google/datastore/v1/QueryProto.java | 5 +++-- .../src/main/proto/google/datastore/v1/datastore.proto | 1 + .../src/main/proto/google/datastore/v1/entity.proto | 1 + .../src/main/proto/google/datastore/v1/query.proto | 1 + synth.metadata | 6 +++--- 7 files changed, 15 insertions(+), 9 deletions(-) diff --git a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/DatastoreProto.java b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/DatastoreProto.java index dc4d63dcc..fd59f03e9 100644 --- a/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/DatastoreProto.java +++ b/proto-google-cloud-datastore-v1/src/main/java/com/google/datastore/v1/DatastoreProto.java @@ -214,11 +214,12 @@ public static com.google.protobuf.Descriptors.FileDescriptor getDescriptor() { + "ds:\001*\332A\017project_id,keys\032v\312A\030datastore.go" + "ogleapis.com\322AXhttps://www.googleapis.co" + "m/auth/cloud-platform,https://www.google" - + "apis.com/auth/datastoreB\241\001\n\027com.google.d" + + "apis.com/auth/datastoreB\300\001\n\027com.google.d" + "atastore.v1B\016DatastoreProtoP\001Z Date: Mon, 15 Jun 2020 22:02:35 +0200 Subject: [PATCH 14/19] deps: update dependency com.google.cloud:google-cloud-shared-dependencies to v0.8.1 (#163) --- pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pom.xml b/pom.xml index 29d091c7e..5914bbb99 100644 --- a/pom.xml +++ b/pom.xml @@ -160,7 +160,7 @@ com.google.cloud google-cloud-shared-dependencies - 0.8.0 + 0.8.1 pom import From f1874f1b2745724ccc2345f35b65fb577f53683e Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Mon, 15 Jun 2020 22:06:04 +0200 Subject: [PATCH 15/19] build(deps): update dependency com.google.cloud:google-cloud-shared-config to v0.8.1 (#164) --- google-cloud-datastore-bom/pom.xml | 2 +- pom.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/google-cloud-datastore-bom/pom.xml b/google-cloud-datastore-bom/pom.xml index 0c0ad522c..393f6b5cc 100644 --- a/google-cloud-datastore-bom/pom.xml +++ b/google-cloud-datastore-bom/pom.xml @@ -8,7 +8,7 @@ com.google.cloud google-cloud-shared-config - 0.8.0 + 0.8.1 Google Cloud datastore BOM diff --git a/pom.xml b/pom.xml index 5914bbb99..30af217e1 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ com.google.cloud google-cloud-shared-config - 0.8.0 + 0.8.1 From 12cacad03680338cda0f74fd595734deb87168be Mon Sep 17 00:00:00 2001 From: Yoshi Automation Bot Date: Tue, 16 Jun 2020 12:41:50 -0700 Subject: [PATCH 16/19] ci: update CI config to use secret manager integration for credentials (#166) * ci(java): switch to secret manager from keystore * ci(java): switch to secret manager from keystore, use java-docs-samples user for samples tests * fix: we don't need to supply a service account Source-Author: Jeff Ching Source-Date: Mon Jun 15 11:45:21 2020 -0700 Source-Repo: googleapis/synthtool Source-Sha: d1addcdf80aa9ddef8c932c89c919024bbad7af3 Source-Link: https://github.com/googleapis/synthtool/commit/d1addcdf80aa9ddef8c932c89c919024bbad7af3 * samples(java): fix bad character in samples.cfg from copy/paste Somehow an invisible character was copy/pasted into the file and Kokoro cannot parse the file. Source-Author: Jeff Ching Source-Date: Mon Jun 15 15:42:10 2020 -0700 Source-Repo: googleapis/synthtool Source-Sha: 6d3eed67a45fd58f9c7bfa173c32e4fd4fed058f Source-Link: https://github.com/googleapis/synthtool/commit/6d3eed67a45fd58f9c7bfa173c32e4fd4fed058f * ci(java): switch integration test secrets to secret manager Source-Author: Jeff Ching Source-Date: Tue Jun 16 09:26:06 2020 -0700 Source-Repo: googleapis/synthtool Source-Sha: 6eb80fa9f96433af8dbeb1c8323aa80cda49b374 Source-Link: https://github.com/googleapis/synthtool/commit/6eb80fa9f96433af8dbeb1c8323aa80cda49b374 * ci(java): fix typo in java integration test secret name Source-Author: BenWhitehead Source-Date: Tue Jun 16 13:32:19 2020 -0400 Source-Repo: googleapis/synthtool Source-Sha: c4f3059c27591eb24d6942a0e357ec94c80459f2 Source-Link: https://github.com/googleapis/synthtool/commit/c4f3059c27591eb24d6942a0e357ec94c80459f2 --- .kokoro/build.sh | 2 +- .kokoro/nightly/integration.cfg | 12 +++------ .kokoro/nightly/samples.cfg | 16 +++++------- .kokoro/populate-secrets.sh | 43 +++++++++++++++++++++++++++++++ .kokoro/presubmit/integration.cfg | 12 +++------ .kokoro/presubmit/samples.cfg | 14 ++++------ .kokoro/trampoline.sh | 2 ++ synth.metadata | 4 +-- 8 files changed, 67 insertions(+), 38 deletions(-) create mode 100755 .kokoro/populate-secrets.sh diff --git a/.kokoro/build.sh b/.kokoro/build.sh index feda37d3d..7535c0aac 100755 --- a/.kokoro/build.sh +++ b/.kokoro/build.sh @@ -39,7 +39,7 @@ retry_with_backoff 3 10 \ # if GOOGLE_APPLICATION_CREDIENTIALS is specified as a relative path prepend Kokoro root directory onto it if [[ ! -z "${GOOGLE_APPLICATION_CREDENTIALS}" && "${GOOGLE_APPLICATION_CREDENTIALS}" != /* ]]; then - export GOOGLE_APPLICATION_CREDENTIALS=$(realpath ${KOKORO_ROOT}/src/${GOOGLE_APPLICATION_CREDENTIALS}) + export GOOGLE_APPLICATION_CREDENTIALS=$(realpath ${KOKORO_GFILE_DIR}/${GOOGLE_APPLICATION_CREDENTIALS}) fi RETURN_CODE=0 diff --git a/.kokoro/nightly/integration.cfg b/.kokoro/nightly/integration.cfg index 40c4abb7b..0048c8ece 100644 --- a/.kokoro/nightly/integration.cfg +++ b/.kokoro/nightly/integration.cfg @@ -28,14 +28,10 @@ env_vars: { env_vars: { key: "GOOGLE_APPLICATION_CREDENTIALS" - value: "keystore/73713_java_it_service_account" + value: "secret_manager/java-it-service-account" } -before_action { - fetch_keystore { - keystore_resource { - keystore_config_id: 73713 - keyname: "java_it_service_account" - } - } +env_vars: { + key: "SECRET_MANAGER_KEYS" + value: "java-it-service-account" } diff --git a/.kokoro/nightly/samples.cfg b/.kokoro/nightly/samples.cfg index 20aabd55d..f25429314 100644 --- a/.kokoro/nightly/samples.cfg +++ b/.kokoro/nightly/samples.cfg @@ -24,19 +24,15 @@ env_vars: { env_vars: { key: "GOOGLE_APPLICATION_CREDENTIALS" - value: "keystore/73713_java_it_service_account" + value: "secret_manager/java-docs-samples-service-account" } env_vars: { - key: "ENABLE_BUILD_COP" - value: "true" + key: "SECRET_MANAGER_KEYS" + value: "java-docs-samples-service-account" } -before_action { - fetch_keystore { - keystore_resource { - keystore_config_id: 73713 - keyname: "java_it_service_account" - } - } +env_vars: { + key: "ENABLE_BUILD_COP" + value: "true" } diff --git a/.kokoro/populate-secrets.sh b/.kokoro/populate-secrets.sh new file mode 100755 index 000000000..f52514257 --- /dev/null +++ b/.kokoro/populate-secrets.sh @@ -0,0 +1,43 @@ +#!/bin/bash +# Copyright 2020 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. + +set -eo pipefail + +function now { date +"%Y-%m-%d %H:%M:%S" | tr -d '\n' ;} +function msg { println "$*" >&2 ;} +function println { printf '%s\n' "$(now) $*" ;} + + +# Populates requested secrets set in SECRET_MANAGER_KEYS from service account: +# kokoro-trampoline@cloud-devrel-kokoro-resources.iam.gserviceaccount.com +SECRET_LOCATION="${KOKORO_GFILE_DIR}/secret_manager" +msg "Creating folder on disk for secrets: ${SECRET_LOCATION}" +mkdir -p ${SECRET_LOCATION} +for key in $(echo ${SECRET_MANAGER_KEYS} | sed "s/,/ /g") +do + msg "Retrieving secret ${key}" + docker run --entrypoint=gcloud \ + --volume=${KOKORO_GFILE_DIR}:${KOKORO_GFILE_DIR} \ + gcr.io/google.com/cloudsdktool/cloud-sdk \ + secrets versions access latest \ + --project cloud-devrel-kokoro-resources \ + --secret ${key} > \ + "${SECRET_LOCATION}/${key}" + if [[ $? == 0 ]]; then + msg "Secret written to ${SECRET_LOCATION}/${key}" + else + msg "Error retrieving secret ${key}" + fi +done diff --git a/.kokoro/presubmit/integration.cfg b/.kokoro/presubmit/integration.cfg index 522e5b101..dded67a9d 100644 --- a/.kokoro/presubmit/integration.cfg +++ b/.kokoro/presubmit/integration.cfg @@ -24,14 +24,10 @@ env_vars: { env_vars: { key: "GOOGLE_APPLICATION_CREDENTIALS" - value: "keystore/73713_java_it_service_account" + value: "secret_manager/java-it-service-account" } -before_action { - fetch_keystore { - keystore_resource { - keystore_config_id: 73713 - keyname: "java_it_service_account" - } - } +env_vars: { + key: "SECRET_MANAGER_KEYS" + value: "java-it-service-account" } diff --git a/.kokoro/presubmit/samples.cfg b/.kokoro/presubmit/samples.cfg index 1171aead0..01e096004 100644 --- a/.kokoro/presubmit/samples.cfg +++ b/.kokoro/presubmit/samples.cfg @@ -24,14 +24,10 @@ env_vars: { env_vars: { key: "GOOGLE_APPLICATION_CREDENTIALS" - value: "keystore/73713_java_it_service_account" + value: "secret_manager/java-docs-samples-service-account" } -before_action { - fetch_keystore { - keystore_resource { - keystore_config_id: 73713 - keyname: "java_it_service_account" - } - } -} +env_vars: { + key: "SECRET_MANAGER_KEYS" + value: "java-docs-samples-service-account" +} \ No newline at end of file diff --git a/.kokoro/trampoline.sh b/.kokoro/trampoline.sh index ba17ce014..9da0f8398 100644 --- a/.kokoro/trampoline.sh +++ b/.kokoro/trampoline.sh @@ -21,4 +21,6 @@ function cleanup() { echo "cleanup"; } trap cleanup EXIT + +$(dirname $0)/populate-secrets.sh # Secret Manager secrets. python3 "${KOKORO_GFILE_DIR}/trampoline_v1.py" diff --git a/synth.metadata b/synth.metadata index e5335f663..c6089f985 100644 --- a/synth.metadata +++ b/synth.metadata @@ -4,7 +4,7 @@ "git": { "name": ".", "remote": "https://github.com/googleapis/java-datastore.git", - "sha": "39c8d723b318d08ca494b71167eaa80b1df6423d" + "sha": "f1874f1b2745724ccc2345f35b65fb577f53683e" } }, { @@ -19,7 +19,7 @@ "git": { "name": "synthtool", "remote": "https://github.com/googleapis/synthtool.git", - "sha": "987270824bd26f6a8c716d5e2022057b8ae7b26e" + "sha": "c4f3059c27591eb24d6942a0e357ec94c80459f2" } } ], From 74f138f0949a8d82c5d31b53d3faf3f3f428613c Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Wed, 17 Jun 2020 01:30:41 +0200 Subject: [PATCH 17/19] chore(deps): update dependency com.google.cloud:libraries-bom to v6 (#167) This PR contains the following updates: | Package | Update | Change | |---|---|---| | [com.google.cloud:libraries-bom](https://togithub.com/GoogleCloudPlatform/cloud-opensource-java) | major | `5.7.0` -> `6.0.0` | --- ### Renovate configuration :date: **Schedule**: At any time (no schedule defined). :vertical_traffic_light: **Automerge**: Disabled by config. Please merge this manually once you are satisfied. :recycle: **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. :no_bell: **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [WhiteSource Renovate](https://renovate.whitesourcesoftware.com). View repository job log [here](https://app.renovatebot.com/dashboard#googleapis/java-datastore). --- samples/snippets/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml index 34f30a354..738cd7efb 100644 --- a/samples/snippets/pom.xml +++ b/samples/snippets/pom.xml @@ -30,7 +30,7 @@ com.google.cloud libraries-bom - 5.7.0 + 6.0.0 pom import From a1e570c212398355f9684644c8edb94d179f47df Mon Sep 17 00:00:00 2001 From: WhiteSource Renovate Date: Wed, 17 Jun 2020 19:40:39 +0200 Subject: [PATCH 18/19] chore(deps): update dependency com.google.cloud:libraries-bom to v7 (#171) This PR contains the following updates: | Package | Update | Change | |---|---|---| | [com.google.cloud:libraries-bom](https://togithub.com/GoogleCloudPlatform/cloud-opensource-java) | major | `6.0.0` -> `7.0.0` | --- ### Renovate configuration :date: **Schedule**: At any time (no schedule defined). :vertical_traffic_light: **Automerge**: Disabled by config. Please merge this manually once you are satisfied. :recycle: **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. :no_bell: **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] If you want to rebase/retry this PR, check this box --- This PR has been generated by [WhiteSource Renovate](https://renovate.whitesourcesoftware.com). View repository job log [here](https://app.renovatebot.com/dashboard#googleapis/java-datastore). --- samples/snippets/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/samples/snippets/pom.xml b/samples/snippets/pom.xml index 738cd7efb..f4cc04008 100644 --- a/samples/snippets/pom.xml +++ b/samples/snippets/pom.xml @@ -30,7 +30,7 @@ com.google.cloud libraries-bom - 6.0.0 + 7.0.0 pom import From e72ee3c2b67e301c61d13c00aa4863c29c211915 Mon Sep 17 00:00:00 2001 From: "release-please[bot]" <55107282+release-please[bot]@users.noreply.github.com> Date: Wed, 17 Jun 2020 19:06:07 +0000 Subject: [PATCH 19/19] chore: release 1.104.0 (#154) :robot: I have created a release \*beep\* \*boop\* --- ## [1.104.0](https://www.github.com/googleapis/java-datastore/compare/v1.103.0...v1.104.0) (2020-06-17) ### Features * add opencensus tracing/stats support for Datastore RPC operations ([#130](https://www.github.com/googleapis/java-datastore/issues/130)) ([5aee52f](https://www.github.com/googleapis/java-datastore/commit/5aee52f5013d6780e523e0c6d7d00a1826b83b9b)) * add support to customize gcloud command of LocalDatastoreHelper ([#137](https://www.github.com/googleapis/java-datastore/issues/137)) ([976d979](https://www.github.com/googleapis/java-datastore/commit/976d9791572117dc703d8d7d6963bdd6603ecd63)) ### Bug Fixes * fix version number in changelog to correctly reflect what was released to maven central ([#145](https://www.github.com/googleapis/java-datastore/issues/145)) ([c509a2a](https://www.github.com/googleapis/java-datastore/commit/c509a2a4229f864edef8681677d73f3c7be1101f)) ### Dependencies * update dependency com.google.cloud:google-cloud-shared-dependencies to v0.8.0 ([#161](https://www.github.com/googleapis/java-datastore/issues/161)) ([39c8d72](https://www.github.com/googleapis/java-datastore/commit/39c8d723b318d08ca494b71167eaa80b1df6423d)) * update dependency com.google.cloud:google-cloud-shared-dependencies to v0.8.1 ([#163](https://www.github.com/googleapis/java-datastore/issues/163)) ([7bfa07e](https://www.github.com/googleapis/java-datastore/commit/7bfa07eb3a7cf84fcf3e19f6a33914162fa28499)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). --- CHANGELOG.md | 19 +++++++++++++++++++ README.md | 6 +++--- google-cloud-datastore-bom/pom.xml | 6 +++--- google-cloud-datastore/pom.xml | 4 ++-- pom.xml | 4 ++-- proto-google-cloud-datastore-v1/pom.xml | 4 ++-- versions.txt | 8 ++++---- 7 files changed, 35 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0542833ec..925c17a3b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,24 @@ # Changelog +## [1.104.0](https://www.github.com/googleapis/java-datastore/compare/v1.103.0...v1.104.0) (2020-06-17) + + +### Features + +* add opencensus tracing/stats support for Datastore RPC operations ([#130](https://www.github.com/googleapis/java-datastore/issues/130)) ([5aee52f](https://www.github.com/googleapis/java-datastore/commit/5aee52f5013d6780e523e0c6d7d00a1826b83b9b)) +* add support to customize gcloud command of LocalDatastoreHelper ([#137](https://www.github.com/googleapis/java-datastore/issues/137)) ([976d979](https://www.github.com/googleapis/java-datastore/commit/976d9791572117dc703d8d7d6963bdd6603ecd63)) + + +### Bug Fixes + +* fix version number in changelog to correctly reflect what was released to maven central ([#145](https://www.github.com/googleapis/java-datastore/issues/145)) ([c509a2a](https://www.github.com/googleapis/java-datastore/commit/c509a2a4229f864edef8681677d73f3c7be1101f)) + + +### Dependencies + +* update dependency com.google.cloud:google-cloud-shared-dependencies to v0.8.0 ([#161](https://www.github.com/googleapis/java-datastore/issues/161)) ([39c8d72](https://www.github.com/googleapis/java-datastore/commit/39c8d723b318d08ca494b71167eaa80b1df6423d)) +* update dependency com.google.cloud:google-cloud-shared-dependencies to v0.8.1 ([#163](https://www.github.com/googleapis/java-datastore/issues/163)) ([7bfa07e](https://www.github.com/googleapis/java-datastore/commit/7bfa07eb3a7cf84fcf3e19f6a33914162fa28499)) + ## [1.103.0](https://www.github.com/googleapis/java-datastore/compare/v1.102.4...v1.103.0) (2020-06-02) diff --git a/README.md b/README.md index 60d08e86e..213eb9f9b 100644 --- a/README.md +++ b/README.md @@ -37,16 +37,16 @@ If you are using Maven without a BOM, add this to your dependencies. com.google.cloud google-cloud-datastore - 1.103.0 + 1.104.0 ``` If you are using Gradle, add this to your dependencies ```Groovy -compile 'com.google.cloud:google-cloud-datastore:1.103.0' +compile 'com.google.cloud:google-cloud-datastore:1.104.0' ``` If you are using SBT, add this to your dependencies ```Scala -libraryDependencies += "com.google.cloud" % "google-cloud-datastore" % "1.103.0" +libraryDependencies += "com.google.cloud" % "google-cloud-datastore" % "1.104.0" ``` [//]: # ({x-version-update-end}) diff --git a/google-cloud-datastore-bom/pom.xml b/google-cloud-datastore-bom/pom.xml index 393f6b5cc..1a3b53317 100644 --- a/google-cloud-datastore-bom/pom.xml +++ b/google-cloud-datastore-bom/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.google.cloud google-cloud-datastore-bom - 1.103.1-SNAPSHOT + 1.104.0 pom com.google.cloud @@ -63,12 +63,12 @@ com.google.api.grpc proto-google-cloud-datastore-v1 - 0.86.1-SNAPSHOT + 0.87.0 com.google.cloud google-cloud-datastore - 1.103.1-SNAPSHOT + 1.104.0
diff --git a/google-cloud-datastore/pom.xml b/google-cloud-datastore/pom.xml index 703612e6f..518648f69 100644 --- a/google-cloud-datastore/pom.xml +++ b/google-cloud-datastore/pom.xml @@ -2,7 +2,7 @@ 4.0.0 google-cloud-datastore - 1.103.1-SNAPSHOT + 1.104.0 jar Google Cloud Datastore https://github.com/googleapis/java-datastore @@ -12,7 +12,7 @@ com.google.cloud google-cloud-datastore-parent - 1.103.1-SNAPSHOT + 1.104.0 google-cloud-datastore diff --git a/pom.xml b/pom.xml index 30af217e1..72bbbc0ee 100644 --- a/pom.xml +++ b/pom.xml @@ -4,7 +4,7 @@ com.google.cloud google-cloud-datastore-parent pom - 1.103.1-SNAPSHOT + 1.104.0 Google Cloud Datastore Parent https://github.com/googleapis/java-datastore @@ -168,7 +168,7 @@ com.google.api.grpc proto-google-cloud-datastore-v1 - 0.86.1-SNAPSHOT + 0.87.0 com.google.cloud.datastore diff --git a/proto-google-cloud-datastore-v1/pom.xml b/proto-google-cloud-datastore-v1/pom.xml index 9ca61e773..de0b88bc0 100644 --- a/proto-google-cloud-datastore-v1/pom.xml +++ b/proto-google-cloud-datastore-v1/pom.xml @@ -4,13 +4,13 @@ 4.0.0 com.google.api.grpc proto-google-cloud-datastore-v1 - 0.86.1-SNAPSHOT + 0.87.0 proto-google-cloud-datastore-v1 PROTO library for proto-google-cloud-datastore-v1 com.google.cloud google-cloud-datastore-parent - 1.103.1-SNAPSHOT + 1.104.0 diff --git a/versions.txt b/versions.txt index e4c2b72eb..492e61c8b 100644 --- a/versions.txt +++ b/versions.txt @@ -1,8 +1,8 @@ # Format: # module:released-version:current-version -google-cloud-datastore:1.103.0:1.103.1-SNAPSHOT -google-cloud-datastore-bom:1.103.0:1.103.1-SNAPSHOT -google-cloud-datastore-parent:1.103.0:1.103.1-SNAPSHOT -proto-google-cloud-datastore-v1:0.86.0:0.86.1-SNAPSHOT +google-cloud-datastore:1.104.0:1.104.0 +google-cloud-datastore-bom:1.104.0:1.104.0 +google-cloud-datastore-parent:1.104.0:1.104.0 +proto-google-cloud-datastore-v1:0.87.0:0.87.0