Skip to content

Commit bc9de9f

Browse files
authored
report sdk version in user-agent (#810)
* report sdk version in user-agent Signed-off-by: addjuarez <[email protected]> * make private Signed-off-by: addjuarez <[email protected]> * close input Signed-off-by: addjuarez <[email protected]> * style Signed-off-by: addjuarez <[email protected]> * debug Signed-off-by: addjuarez <[email protected]> * typo Signed-off-by: addjuarez <[email protected]> * use try resource block Signed-off-by: addjuarez <[email protected]> * fix exception Signed-off-by: addjuarez <[email protected]> * newline Signed-off-by: addjuarez <[email protected]> * use defaults Signed-off-by: addjuarez <[email protected]> * Use getSdkVersion() Signed-off-by: addjuarez <[email protected]> Signed-off-by: addjuarez <[email protected]>
1 parent 622844b commit bc9de9f

File tree

9 files changed

+91
-3
lines changed

9 files changed

+91
-3
lines changed

sdk-actors/src/main/java/io/dapr/actors/ActorUtils.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,4 +49,5 @@ public static String findActorTypeName(Class<?> actorClass) {
4949
ActorType actorTypeAnnotation = node.getAnnotation(ActorType.class);
5050
return actorTypeAnnotation != null ? actorTypeAnnotation.name() : actorClass.getSimpleName();
5151
}
52+
5253
}

sdk-actors/src/main/java/io/dapr/actors/client/ActorClient.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import io.dapr.client.DaprApiProtocol;
1717
import io.dapr.client.DaprHttpBuilder;
1818
import io.dapr.config.Properties;
19+
import io.dapr.utils.Version;
1920
import io.dapr.v1.DaprGrpc;
2021
import io.grpc.Channel;
2122
import io.grpc.ManagedChannel;
@@ -102,7 +103,10 @@ private static ManagedChannel buildManagedChannel(DaprApiProtocol apiProtocol) {
102103
throw new IllegalArgumentException("Invalid port.");
103104
}
104105

105-
return ManagedChannelBuilder.forAddress(Properties.SIDECAR_IP.get(), port).usePlaintext().build();
106+
return ManagedChannelBuilder.forAddress(Properties.SIDECAR_IP.get(), port)
107+
.usePlaintext()
108+
.userAgent(Version.getSdkVersion())
109+
.build();
106110
}
107111

108112
/**

sdk-actors/src/main/java/io/dapr/actors/runtime/ActorRuntime.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import io.dapr.config.Properties;
2121
import io.dapr.serializer.DaprObjectSerializer;
2222
import io.dapr.serializer.DefaultObjectSerializer;
23+
import io.dapr.utils.Version;
2324
import io.grpc.ManagedChannel;
2425
import io.grpc.ManagedChannelBuilder;
2526
import reactor.core.publisher.Mono;
@@ -338,7 +339,10 @@ private static ManagedChannel buildManagedChannel() {
338339
throw new IllegalStateException("Invalid port.");
339340
}
340341

341-
return ManagedChannelBuilder.forAddress(Properties.SIDECAR_IP.get(), port).usePlaintext().build();
342+
return ManagedChannelBuilder.forAddress(Properties.SIDECAR_IP.get(), port)
343+
.usePlaintext()
344+
.userAgent(Version.getSdkVersion())
345+
.build();
342346
}
343347

344348
/**

sdk/pom.xml

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,12 @@
2525
</properties>
2626

2727
<dependencies>
28+
<dependency>
29+
<groupId>org.apache.maven.plugins</groupId>
30+
<artifactId>maven-resources-plugin</artifactId>
31+
<version>3.3.0</version>
32+
<type>maven-plugin</type>
33+
</dependency>
2834
<dependency>
2935
<groupId>io.dapr</groupId>
3036
<artifactId>dapr-sdk-autogen</artifactId>
@@ -106,6 +112,22 @@
106112
</dependencies>
107113

108114
<build>
115+
<resources>
116+
<resource>
117+
<directory>src/main/resources</directory>
118+
<filtering>true</filtering>
119+
<includes>
120+
<include>**/sdk_version.properties</include>
121+
</includes>
122+
</resource>
123+
<resource>
124+
<directory>src/main/resources</directory>
125+
<filtering>false</filtering>
126+
<excludes>
127+
<exclude>**/sdk_version.properties</exclude>
128+
</excludes>
129+
</resource>
130+
</resources>
109131
<plugins>
110132
<plugin>
111133
<groupId>org.apache.maven.plugins</groupId>

sdk/src/main/java/io/dapr/client/DaprClientBuilder.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
import io.dapr.config.Properties;
1717
import io.dapr.serializer.DaprObjectSerializer;
1818
import io.dapr.serializer.DefaultObjectSerializer;
19+
import io.dapr.utils.Version;
1920
import io.dapr.v1.DaprGrpc;
2021
import io.grpc.ManagedChannel;
2122
import io.grpc.ManagedChannelBuilder;
@@ -158,7 +159,7 @@ private DaprClient buildDaprClientGrpc() {
158159
throw new IllegalArgumentException("Invalid port.");
159160
}
160161
ManagedChannel channel = ManagedChannelBuilder.forAddress(
161-
Properties.SIDECAR_IP.get(), port).usePlaintext().build();
162+
Properties.SIDECAR_IP.get(), port).usePlaintext().userAgent(Version.getSdkVersion()).build();
162163
Closeable closeableChannel = () -> {
163164
if (channel != null && !channel.isShutdown()) {
164165
channel.shutdown();
@@ -176,4 +177,5 @@ private DaprClient buildDaprClientGrpc() {
176177
private DaprClient buildDaprClientHttp() {
177178
return new DaprClientHttp(this.daprHttpBuilder.build(), this.objectSerializer, this.stateSerializer);
178179
}
180+
179181
}

sdk/src/main/java/io/dapr/client/DaprHttp.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
import io.dapr.config.Properties;
1919
import io.dapr.exceptions.DaprError;
2020
import io.dapr.exceptions.DaprException;
21+
import io.dapr.utils.Version;
2122
import okhttp3.Call;
2223
import okhttp3.Callback;
2324
import okhttp3.HttpUrl;
@@ -304,6 +305,8 @@ private CompletableFuture<Response> doInvokeApi(String method,
304305
if (daprApiToken != null) {
305306
requestBuilder.addHeader(Headers.DAPR_API_TOKEN, daprApiToken);
306307
}
308+
309+
requestBuilder.addHeader(Headers.DAPR_USER_AGENT, Version.getSdkVersion());
307310

308311
if (headers != null) {
309312
Optional.ofNullable(headers.entrySet()).orElse(Collections.emptySet()).stream()

sdk/src/main/java/io/dapr/client/Headers.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,4 +27,9 @@ class Headers {
2727
* Token for authentication from Application to Dapr runtime.
2828
*/
2929
static final String DAPR_API_TOKEN = "dapr-api-token";
30+
31+
/**
32+
* Header for Api Logging User-Agent.
33+
*/
34+
static final String DAPR_USER_AGENT = "User-Agent";
3035
}
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
/*
2+
* Copyright 2022 The Dapr Authors
3+
* Licensed under the Apache License, Version 2.0 (the "License");
4+
* you may not use this file except in compliance with the License.
5+
* You may obtain a copy of the License at
6+
* http://www.apache.org/licenses/LICENSE-2.0
7+
* Unless required by applicable law or agreed to in writing, software
8+
* distributed under the License is distributed on an "AS IS" BASIS,
9+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
10+
* See the License for the specific language governing permissions and
11+
limitations under the License.
12+
*/
13+
14+
package io.dapr.utils;
15+
16+
import java.io.IOException;
17+
import java.io.InputStream;
18+
import java.util.Properties;
19+
20+
public final class Version {
21+
22+
private static String sdkVersion = null;
23+
24+
/**
25+
* Retrieves sdk version from resources.
26+
*
27+
* @return String version of sdk.
28+
*/
29+
public static String getSdkVersion() {
30+
31+
if (sdkVersion != null) {
32+
return sdkVersion;
33+
}
34+
35+
try (InputStream input = Version.class.getResourceAsStream("/sdk_version.properties");) {
36+
Properties properties = new Properties();
37+
properties.load(input);
38+
sdkVersion = "dapr-sdk-java/v" + properties.getProperty("sdk_version", "unknown");
39+
} catch (IOException e) {
40+
sdkVersion = "unknown";
41+
}
42+
43+
return sdkVersion;
44+
}
45+
46+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
sdk_version=${project.version}

0 commit comments

Comments
 (0)