open telemetry upgrade to 0.10.0 (#386)

* open telemetry upgrade to 0.10.0

* open telemetry upgrade to 0.10.0

* open telemetry upgrade to 0.10.0

* open telemetry upgrade to 0.10.0

* open telemetry upgrade to 0.10.0

Co-authored-by: haidao <wlf190783@alibaba-inc.com>
This commit is contained in:
haidao 2020-11-14 05:00:21 +08:00 committed by GitHub
parent 43107c3492
commit 9dcff43ef0
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
31 changed files with 95 additions and 94 deletions

View File

@ -24,6 +24,7 @@
<maven.compiler.target>${java.version}</maven.compiler.target> <maven.compiler.target>${java.version}</maven.compiler.target>
<maven.deploy.skip>true</maven.deploy.skip> <maven.deploy.skip>true</maven.deploy.skip>
<spotbugs.fail>false</spotbugs.fail> <spotbugs.fail>false</spotbugs.fail>
<opentelemetry.version>0.10.0</opentelemetry.version>
</properties> </properties>
<dependencies> <dependencies>
@ -76,17 +77,17 @@
<dependency> <dependency>
<groupId>io.opentelemetry</groupId> <groupId>io.opentelemetry</groupId>
<artifactId>opentelemetry-sdk</artifactId> <artifactId>opentelemetry-sdk</artifactId>
<version>0.7.1</version> <version>${opentelemetry.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>io.opentelemetry</groupId> <groupId>io.opentelemetry</groupId>
<artifactId>opentelemetry-exporters-logging</artifactId> <artifactId>opentelemetry-exporter-logging</artifactId>
<version>0.7.1</version> <version>${opentelemetry.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>io.opentelemetry</groupId> <groupId>io.opentelemetry</groupId>
<artifactId>opentelemetry-exporters-zipkin</artifactId> <artifactId>opentelemetry-exporter-zipkin</artifactId>
<version>0.7.1</version> <version>${opentelemetry.version}</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>io.dapr</groupId> <groupId>io.dapr</groupId>

View File

@ -12,11 +12,11 @@ import io.dapr.client.domain.InvokeServiceRequest;
import io.dapr.client.domain.InvokeServiceRequestBuilder; import io.dapr.client.domain.InvokeServiceRequestBuilder;
import io.dapr.springboot.OpenTelemetryConfig; import io.dapr.springboot.OpenTelemetryConfig;
import io.dapr.utils.TypeRef; import io.dapr.utils.TypeRef;
import io.grpc.Context; import io.opentelemetry.api.trace.Span;
import io.opentelemetry.api.trace.Tracer;
import io.opentelemetry.context.Context;
import io.opentelemetry.context.Scope; import io.opentelemetry.context.Scope;
import io.opentelemetry.sdk.OpenTelemetrySdk; import io.opentelemetry.sdk.OpenTelemetrySdk;
import io.opentelemetry.trace.Span;
import io.opentelemetry.trace.Tracer;
import java.io.IOException; import java.io.IOException;
@ -46,7 +46,7 @@ public class InvokeClient {
Span span = tracer.spanBuilder("Example's Main").setSpanKind(Span.Kind.CLIENT).startSpan(); Span span = tracer.spanBuilder("Example's Main").setSpanKind(Span.Kind.CLIENT).startSpan();
try (DaprClient client = (new DaprClientBuilder()).build()) { try (DaprClient client = (new DaprClientBuilder()).build()) {
for (String message : args) { for (String message : args) {
try (Scope scope = tracer.withSpan(span)) { try (Scope scope = span.makeCurrent()) {
InvokeServiceRequestBuilder builder = new InvokeServiceRequestBuilder(SERVICE_APP_ID, "echo"); InvokeServiceRequestBuilder builder = new InvokeServiceRequestBuilder(SERVICE_APP_ID, "echo");
InvokeServiceRequest request InvokeServiceRequest request
= builder.withBody(message).withHttpExtension(HttpExtension.POST).withContext(Context.current()).build(); = builder.withBody(message).withHttpExtension(HttpExtension.POST).withContext(Context.current()).build();
@ -73,7 +73,7 @@ public class InvokeClient {
} }
private static void shutdown() { private static void shutdown() {
OpenTelemetrySdk.getTracerProvider().shutdown(); OpenTelemetrySdk.getGlobalTracerManagement().shutdown();
} }
} }

View File

@ -175,7 +175,7 @@ private static final String SERVICE_APP_ID = "invokedemo";
} }
``` ```
The class knows the app id for the remote application. It uses `invokeService` method to invoke API calls on the service endpoint. The request object includes an instance of `io.grpc.Context` for the proper tracing headers to be propagated. The class knows the app id for the remote application. It uses `invokeService` method to invoke API calls on the service endpoint. The request object includes an instance of `io.opentelemetry.context.Context` for the proper tracing headers to be propagated.
Execute the follow script in order to run the InvokeClient example, passing two messages for the remote method: Execute the follow script in order to run the InvokeClient example, passing two messages for the remote method:
```sh ```sh

View File

@ -6,7 +6,7 @@
package io.dapr.examples.tracing; package io.dapr.examples.tracing;
import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.ObjectMapper;
import io.opentelemetry.trace.Tracer; import io.opentelemetry.api.trace.Tracer;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestBody;

View File

@ -6,12 +6,14 @@
package io.dapr.springboot; package io.dapr.springboot;
import io.dapr.examples.invoke.http.InvokeClient; import io.dapr.examples.invoke.http.InvokeClient;
import io.opentelemetry.OpenTelemetry; import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.exporters.logging.LoggingSpanExporter; import io.opentelemetry.api.trace.Tracer;
import io.opentelemetry.exporters.zipkin.ZipkinSpanExporter; import io.opentelemetry.api.trace.propagation.HttpTraceContext;
import io.opentelemetry.context.propagation.DefaultContextPropagators;
import io.opentelemetry.exporter.logging.LoggingSpanExporter;
import io.opentelemetry.exporter.zipkin.ZipkinSpanExporter;
import io.opentelemetry.sdk.OpenTelemetrySdk; import io.opentelemetry.sdk.OpenTelemetrySdk;
import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor; import io.opentelemetry.sdk.trace.export.SimpleSpanProcessor;
import io.opentelemetry.trace.Tracer;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration; import org.springframework.boot.autoconfigure.orm.jpa.HibernateJpaAutoConfiguration;
@ -40,27 +42,31 @@ public class OpenTelemetryConfig {
* @return New tracer's instance. * @return New tracer's instance.
*/ */
public static Tracer createTracer(String instrumentationName) { public static Tracer createTracer(String instrumentationName) {
final Tracer tracer = OpenTelemetry.getTracer(instrumentationName); OpenTelemetry.setGlobalPropagators(
DefaultContextPropagators.builder()
.addTextMapPropagator(HttpTraceContext.getInstance())
.build());
final Tracer tracer = OpenTelemetry.getGlobalTracer(instrumentationName);
// Only exports to Zipkin if it is up. Otherwise, ignore it. // Only exports to Zipkin if it is up. Otherwise, ignore it.
// This is helpful to avoid exceptions for examples that do not require Zipkin. // This is helpful to avoid exceptions for examples that do not require Zipkin.
if (isZipkinUp()) { if (isZipkinUp()) {
String httpUrl = String.format("http://localhost:%d", ZIPKIN_PORT); String httpUrl = String.format("http://localhost:%d", ZIPKIN_PORT);
ZipkinSpanExporter zipkinExporter = ZipkinSpanExporter zipkinExporter =
ZipkinSpanExporter.newBuilder() ZipkinSpanExporter.builder()
.setEndpoint(httpUrl + ENDPOINT_V2_SPANS) .setEndpoint(httpUrl + ENDPOINT_V2_SPANS)
.setServiceName(InvokeClient.class.getName()) .setServiceName(InvokeClient.class.getName())
.build(); .build();
OpenTelemetrySdk.getTracerProvider() OpenTelemetrySdk.getGlobalTracerManagement()
.addSpanProcessor(SimpleSpanProcessor.newBuilder(zipkinExporter).build()); .addSpanProcessor(SimpleSpanProcessor.builder(zipkinExporter).build());
} else { } else {
System.out.println("WARNING: Zipkin is not available."); System.out.println("WARNING: Zipkin is not available.");
} }
final LoggingSpanExporter loggingExporter = new LoggingSpanExporter(); final LoggingSpanExporter loggingExporter = new LoggingSpanExporter();
OpenTelemetrySdk.getTracerProvider() OpenTelemetrySdk.getGlobalTracerManagement()
.addSpanProcessor(SimpleSpanProcessor.newBuilder(loggingExporter).build()); .addSpanProcessor(SimpleSpanProcessor.builder(loggingExporter).build());
return tracer; return tracer;
} }

View File

@ -5,11 +5,12 @@
package io.dapr.springboot; package io.dapr.springboot;
import io.grpc.Context; import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.OpenTelemetry; import io.opentelemetry.api.trace.Span;
import io.opentelemetry.context.propagation.HttpTextFormat; import io.opentelemetry.api.trace.Tracer;
import io.opentelemetry.trace.Span; import io.opentelemetry.context.Context;
import io.opentelemetry.trace.Tracer; import io.opentelemetry.context.propagation.TextMapPropagator;
import org.jetbrains.annotations.Nullable;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component; import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor; import org.springframework.web.servlet.HandlerInterceptor;
@ -18,17 +19,30 @@ import org.springframework.web.servlet.ModelAndView;
import javax.servlet.DispatcherType; import javax.servlet.DispatcherType;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.util.Collections;
@Component @Component
public class OpenTelemetryInterceptor implements HandlerInterceptor { public class OpenTelemetryInterceptor implements HandlerInterceptor {
private static final TextMapPropagator.Getter<HttpServletRequest> HTTP_SERVLET_REQUEST_GETTER =
new TextMapPropagator.Getter<>() {
@Override
public Iterable<String> keys(HttpServletRequest carrier) {
return Collections.list(carrier.getHeaderNames());
}
@Nullable
@Override
public String get(@Nullable HttpServletRequest carrier, String key) {
return carrier.getHeader(key);
}
};
@Autowired @Autowired
Tracer tracer; Tracer tracer;
@Override @Override
public boolean preHandle( public boolean preHandle(
HttpServletRequest request, HttpServletResponse response, Object handler) { HttpServletRequest request, HttpServletResponse response, Object handler) {
final HttpTextFormat textFormat = OpenTelemetry.getPropagators().getHttpTextFormat(); final TextMapPropagator textFormat = OpenTelemetry.getGlobalPropagators().getTextMapPropagator();
// preHandle is called twice for asynchronous request. For more information, read: // preHandle is called twice for asynchronous request. For more information, read:
// https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/servlet/AsyncHandlerInterceptor.html // https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/web/servlet/AsyncHandlerInterceptor.html
if (request.getDispatcherType() == DispatcherType.ASYNC) { if (request.getDispatcherType() == DispatcherType.ASYNC) {
@ -37,15 +51,7 @@ public class OpenTelemetryInterceptor implements HandlerInterceptor {
Span span; Span span;
try { try {
Context context = textFormat.extract( Context context = textFormat.extract(Context.current(), request, HTTP_SERVLET_REQUEST_GETTER);
Context.current(),
request,
new HttpTextFormat.Getter<HttpServletRequest>() {
@Override
public String get(HttpServletRequest req, String key) {
return req.getHeader(key);
}
});
request.setAttribute("opentelemetry-context", context); request.setAttribute("opentelemetry-context", context);
span = tracer.spanBuilder(request.getRequestURI()).setParent(context).startSpan(); span = tracer.spanBuilder(request.getRequestURI()).setParent(context).startSpan();
span.setAttribute("handler", "pre"); span.setAttribute("handler", "pre");
@ -77,14 +83,8 @@ public class OpenTelemetryInterceptor implements HandlerInterceptor {
Context context = (Context) contextObject; Context context = (Context) contextObject;
Span span = (Span) spanObject; Span span = (Span) spanObject;
span.setAttribute("handler", "afterCompletion"); span.setAttribute("handler", "afterCompletion");
final HttpTextFormat textFormat = OpenTelemetry.getPropagators().getHttpTextFormat(); final TextMapPropagator textFormat = OpenTelemetry.getGlobalPropagators().getTextMapPropagator();
textFormat.inject(context, response, textFormat.inject(context, response, HttpServletResponse::addHeader);
new HttpTextFormat.Setter<HttpServletResponse>() {
@Override
public void set(HttpServletResponse response, String key, String value) {
response.addHeader(key, value);
}
});
span.end(); span.end();
} }

View File

@ -55,7 +55,7 @@
<dependency> <dependency>
<groupId>io.opentelemetry</groupId> <groupId>io.opentelemetry</groupId>
<artifactId>opentelemetry-api</artifactId> <artifactId>opentelemetry-api</artifactId>
<version>0.7.1</version> <version>0.10.0</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>io.opencensus</groupId> <groupId>io.opencensus</groupId>

View File

@ -34,7 +34,6 @@ import io.grpc.CallOptions;
import io.grpc.Channel; import io.grpc.Channel;
import io.grpc.ClientCall; import io.grpc.ClientCall;
import io.grpc.ClientInterceptor; import io.grpc.ClientInterceptor;
import io.grpc.Context;
import io.grpc.ForwardingClientCall; import io.grpc.ForwardingClientCall;
import io.grpc.Metadata; import io.grpc.Metadata;
import io.grpc.Metadata.Key; import io.grpc.Metadata.Key;
@ -45,8 +44,9 @@ import io.opencensus.trace.SpanContext;
import io.opencensus.trace.propagation.BinaryFormat; import io.opencensus.trace.propagation.BinaryFormat;
import io.opencensus.trace.propagation.SpanContextParseException; import io.opencensus.trace.propagation.SpanContextParseException;
import io.opencensus.trace.propagation.TextFormat; import io.opencensus.trace.propagation.TextFormat;
import io.opentelemetry.OpenTelemetry; import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.context.propagation.HttpTextFormat; import io.opentelemetry.context.Context;
import io.opentelemetry.context.propagation.TextMapPropagator;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
@ -66,6 +66,13 @@ import java.util.stream.Collectors;
*/ */
public class DaprClientGrpc extends AbstractDaprClient { public class DaprClientGrpc extends AbstractDaprClient {
private static final TextMapPropagator.Setter<Map<String, String>> MAP_SETTER =
(mapper, key, value) -> {
if (mapper != null) {
mapper.put(key, value);
}
};
/** /**
* Binary formatter to generate grpc-trace-bin. * Binary formatter to generate grpc-trace-bin.
*/ */
@ -154,6 +161,7 @@ public class DaprClientGrpc extends AbstractDaprClient {
/** /**
* {@inheritDoc} * {@inheritDoc}
*/ */
@Override
public <T> Mono<Response<T>> invokeService(InvokeServiceRequest invokeServiceRequest, TypeRef<T> type) { public <T> Mono<Response<T>> invokeService(InvokeServiceRequest invokeServiceRequest, TypeRef<T> type) {
try { try {
String appId = invokeServiceRequest.getAppId(); String appId = invokeServiceRequest.getAppId();
@ -629,18 +637,8 @@ public class DaprClientGrpc extends AbstractDaprClient {
*/ */
private static SpanContext extractOpenCensusSpanContext(Context openTelemetryContext) { private static SpanContext extractOpenCensusSpanContext(Context openTelemetryContext) {
Map<String, String> map = new HashMap<>(); Map<String, String> map = new HashMap<>();
OpenTelemetry.getGlobalPropagators().getTextMapPropagator().inject(
OpenTelemetry.getPropagators().getHttpTextFormat().inject( openTelemetryContext, map, MAP_SETTER);
openTelemetryContext,
map,
new HttpTextFormat.Setter<Map<String, String>>() {
@Override
public void set(Map<String, String> map, String key, String value) {
if (map != null) {
map.put(key, value);
}
}
});
if (!map.containsKey("traceparent")) { if (!map.containsKey("traceparent")) {
// Trying to extract context without this key will throw an "expected" exception, so we avoid it here. // Trying to extract context without this key will throw an "expected" exception, so we avoid it here.

View File

@ -26,7 +26,7 @@ import io.dapr.config.Properties;
import io.dapr.serializer.DaprObjectSerializer; import io.dapr.serializer.DaprObjectSerializer;
import io.dapr.serializer.DefaultObjectSerializer; import io.dapr.serializer.DefaultObjectSerializer;
import io.dapr.utils.TypeRef; import io.dapr.utils.TypeRef;
import io.grpc.Context; import io.opentelemetry.context.Context;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
import java.io.IOException; import java.io.IOException;

View File

@ -9,9 +9,10 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import io.dapr.config.Properties; import io.dapr.config.Properties;
import io.dapr.exceptions.DaprError; import io.dapr.exceptions.DaprError;
import io.dapr.exceptions.DaprException; import io.dapr.exceptions.DaprException;
import io.grpc.Context; import io.opentelemetry.api.OpenTelemetry;
import io.opentelemetry.OpenTelemetry; import io.opentelemetry.api.trace.propagation.HttpTraceContext;
import io.opentelemetry.context.propagation.HttpTextFormat; import io.opentelemetry.context.Context;
import io.opentelemetry.context.propagation.TextMapPropagator;
import okhttp3.HttpUrl; import okhttp3.HttpUrl;
import okhttp3.MediaType; import okhttp3.MediaType;
import okhttp3.OkHttpClient; import okhttp3.OkHttpClient;
@ -51,13 +52,8 @@ public class DaprHttp implements Closeable {
/** /**
* Sets the headers for OpenTelemetry SDK. * Sets the headers for OpenTelemetry SDK.
*/ */
private static final HttpTextFormat.Setter<Request.Builder> OPENTELEMETRY_SETTER = private static final HttpTraceContext.Setter<Request.Builder> OPENTELEMETRY_SETTER =
new HttpTextFormat.Setter<Request.Builder>() { (requestBuilder, key, value) -> requestBuilder.addHeader(key, value);
@Override
public void set(Request.Builder requestBuilder, String key, String value) {
requestBuilder.addHeader(key, value);
}
};
/** /**
* HTTP Methods supported. * HTTP Methods supported.
@ -270,7 +266,7 @@ public class DaprHttp implements Closeable {
.url(urlBuilder.build()) .url(urlBuilder.build())
.addHeader(HEADER_DAPR_REQUEST_ID, requestId); .addHeader(HEADER_DAPR_REQUEST_ID, requestId);
if (context != null) { if (context != null) {
OpenTelemetry.getPropagators().getHttpTextFormat().inject(context, requestBuilder, OPENTELEMETRY_SETTER); OpenTelemetry.getGlobalPropagators().getTextMapPropagator().inject(context, requestBuilder, OPENTELEMETRY_SETTER);
} }
if (HttpMethods.GET.name().equals(method)) { if (HttpMethods.GET.name().equals(method)) {
requestBuilder.get(); requestBuilder.get();

View File

@ -5,7 +5,7 @@
package io.dapr.client.domain; package io.dapr.client.domain;
import io.grpc.Context; import io.opentelemetry.context.Context;
import java.util.Collections; import java.util.Collections;
import java.util.Map; import java.util.Map;

View File

@ -5,7 +5,7 @@
package io.dapr.client.domain; package io.dapr.client.domain;
import io.grpc.Context; import io.opentelemetry.context.Context;
import java.util.Collections; import java.util.Collections;
import java.util.Map; import java.util.Map;

View File

@ -5,7 +5,7 @@
package io.dapr.client.domain; package io.dapr.client.domain;
import io.grpc.Context; import io.opentelemetry.context.Context;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;

View File

@ -5,7 +5,7 @@
package io.dapr.client.domain; package io.dapr.client.domain;
import io.grpc.Context; import io.opentelemetry.context.Context;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;

View File

@ -5,7 +5,7 @@
package io.dapr.client.domain; package io.dapr.client.domain;
import io.grpc.Context; import io.opentelemetry.context.Context;
import java.util.Map; import java.util.Map;

View File

@ -5,7 +5,7 @@
package io.dapr.client.domain; package io.dapr.client.domain;
import io.grpc.Context; import io.opentelemetry.context.Context;
import java.util.Collections; import java.util.Collections;
import java.util.Map; import java.util.Map;

View File

@ -5,7 +5,7 @@
package io.dapr.client.domain; package io.dapr.client.domain;
import io.grpc.Context; import io.opentelemetry.context.Context;
import java.util.Collections; import java.util.Collections;
import java.util.Map; import java.util.Map;

View File

@ -5,7 +5,7 @@
package io.dapr.client.domain; package io.dapr.client.domain;
import io.grpc.Context; import io.opentelemetry.context.Context;
import java.util.Collections; import java.util.Collections;
import java.util.Map; import java.util.Map;

View File

@ -5,7 +5,7 @@
package io.dapr.client.domain; package io.dapr.client.domain;
import io.grpc.Context; import io.opentelemetry.context.Context;
import java.util.List; import java.util.List;

View File

@ -5,7 +5,7 @@
package io.dapr.client.domain; package io.dapr.client.domain;
import io.grpc.Context; import io.opentelemetry.context.Context;
import java.util.Arrays; import java.util.Arrays;
import java.util.Collections; import java.util.Collections;

View File

@ -5,7 +5,7 @@
package io.dapr.client.domain; package io.dapr.client.domain;
import io.grpc.Context; import io.opentelemetry.context.Context;
import java.util.Map; import java.util.Map;

View File

@ -5,7 +5,7 @@
package io.dapr.client.domain; package io.dapr.client.domain;
import io.grpc.Context; import io.opentelemetry.context.Context;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;

View File

@ -5,7 +5,7 @@
package io.dapr.client.domain; package io.dapr.client.domain;
import io.grpc.Context; import io.opentelemetry.context.Context;
import java.util.Map; import java.util.Map;

View File

@ -5,7 +5,7 @@
package io.dapr.client.domain; package io.dapr.client.domain;
import io.grpc.Context; import io.opentelemetry.context.Context;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;

View File

@ -5,7 +5,7 @@
package io.dapr.client.domain; package io.dapr.client.domain;
import io.grpc.Context; import io.opentelemetry.context.Context;
import java.util.Map; import java.util.Map;

View File

@ -5,7 +5,7 @@
package io.dapr.client.domain; package io.dapr.client.domain;
import io.grpc.Context; import io.opentelemetry.context.Context;
import java.util.Collections; import java.util.Collections;
import java.util.HashMap; import java.util.HashMap;

View File

@ -5,7 +5,7 @@
package io.dapr.client.domain; package io.dapr.client.domain;
import io.grpc.Context; import io.opentelemetry.context.Context;
/** /**
* A Dapr Response. * A Dapr Response.

View File

@ -5,7 +5,7 @@
package io.dapr.client.domain; package io.dapr.client.domain;
import io.grpc.Context; import io.opentelemetry.context.Context;
import java.util.List; import java.util.List;

View File

@ -5,7 +5,7 @@
package io.dapr.client.domain; package io.dapr.client.domain;
import io.grpc.Context; import io.opentelemetry.context.Context;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;

View File

@ -5,7 +5,7 @@
package io.dapr.client; package io.dapr.client;
import io.grpc.Context; import io.opentelemetry.context.Context;
import reactor.core.publisher.Mono; import reactor.core.publisher.Mono;
import java.io.IOException; import java.io.IOException;

View File

@ -6,7 +6,7 @@ package io.dapr.client;
import io.dapr.config.Properties; import io.dapr.config.Properties;
import io.dapr.exceptions.DaprException; import io.dapr.exceptions.DaprException;
import io.grpc.Context; import io.opentelemetry.context.Context;
import okhttp3.MediaType; import okhttp3.MediaType;
import okhttp3.OkHttpClient; import okhttp3.OkHttpClient;
import okhttp3.ResponseBody; import okhttp3.ResponseBody;