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 @@