Skip to content

Commit 4e2d6d6

Browse files
committed
draft
1 parent eacca21 commit 4e2d6d6

File tree

3 files changed

+27
-14
lines changed

3 files changed

+27
-14
lines changed

instrumentation/redisson/redisson-common/javaagent/src/main/java/io/opentelemetry/javaagent/instrumentation/redisson/RedissonRequest.java

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@
55

66
package io.opentelemetry.javaagent.instrumentation.redisson;
77

8+
import static java.util.Collections.emptyList;
9+
import static java.util.Collections.singletonList;
10+
811
import com.google.auto.value.AutoValue;
912
import io.netty.buffer.ByteBuf;
1013
import io.opentelemetry.instrumentation.api.incubator.semconv.db.RedisCommandSanitizer;
@@ -17,6 +20,7 @@
1720
import java.util.List;
1821
import java.util.concurrent.CompletableFuture;
1922
import java.util.concurrent.CompletionStage;
23+
import java.util.stream.Collectors;
2024
import javax.annotation.Nullable;
2125
import org.redisson.client.protocol.CommandData;
2226
import org.redisson.client.protocol.CommandsData;
@@ -46,29 +50,38 @@ public String getOperation() {
4650
if (commandsData.getCommands().size() == 1) {
4751
return commandsData.getCommands().get(0).getCommand().getName();
4852
} else {
49-
return "BATCH EXECUTE";
53+
return "BATCH";
5054
}
5155
}
5256
return null;
5357
}
5458

5559
@Nullable
5660
public String getStatement() {
57-
return sanitizeStatement();
61+
List<String> sanitizedStatements = sanitizeStatement();
62+
switch (sanitizedStatements.size()) {
63+
case 0:
64+
return null;
65+
// optimize for the most common case
66+
case 1:
67+
return sanitizedStatements.get(0);
68+
default:
69+
return String.join(";", sanitizedStatements);
70+
}
5871
}
5972

60-
private String sanitizeStatement() {
73+
private List<String> sanitizeStatement() {
6174
Object command = getCommand();
6275
// get command
6376
if (command instanceof CommandsData) {
6477
List<CommandData<?, ?>> commands = ((CommandsData) command).getCommands();
65-
if (commands.size() == 1) {
66-
return normalizeSingleCommand(commands.get(0));
67-
}
78+
return commands.stream()
79+
.map(RedissonRequest::normalizeSingleCommand)
80+
.collect(Collectors.toList());
6881
} else if (command instanceof CommandData) {
69-
return normalizeSingleCommand((CommandData<?, ?>) command);
82+
return singletonList(normalizeSingleCommand((CommandData<?, ?>) command));
7083
}
71-
return null;
84+
return emptyList();
7285
}
7386

7487
private static String normalizeSingleCommand(CommandData<?, ?> command) {

instrumentation/redisson/redisson-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/redisson/AbstractRedissonAsyncClientTest.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -225,14 +225,14 @@ void atomicBatchCommand() throws ExecutionException, InterruptedException, Timeo
225225
trace.hasSpansSatisfyingExactly(
226226
span -> span.hasName("parent").hasKind(INTERNAL).hasNoParent(),
227227
span ->
228-
span.hasName("BATCH EXECUTE")
228+
span.hasName("BATCH")
229229
.hasKind(CLIENT)
230230
.hasAttributesSatisfyingExactly(
231231
equalTo(NETWORK_TYPE, "ipv4"),
232232
equalTo(NETWORK_PEER_ADDRESS, ip),
233233
equalTo(NETWORK_PEER_PORT, (long) port),
234234
equalTo(maybeStable(DB_SYSTEM), "redis"),
235-
equalTo(maybeStable(DB_STATEMENT), "BATCH EXECUTE"))
235+
equalTo(maybeStable(DB_STATEMENT), "MULTI;SET batch1 ?"))
236236
.hasParent(trace.getSpan(0)),
237237
span ->
238238
span.hasName("SET")

instrumentation/redisson/redisson-common/testing/src/main/java/io/opentelemetry/javaagent/instrumentation/redisson/AbstractRedissonClientTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -166,14 +166,14 @@ void batchCommand()
166166
trace ->
167167
trace.hasSpansSatisfyingExactly(
168168
span ->
169-
span.hasName("BATCH EXECUTE")
169+
span.hasName("BATCH")
170170
.hasKind(CLIENT)
171171
.hasAttributesSatisfyingExactly(
172172
equalTo(NETWORK_TYPE, "ipv4"),
173173
equalTo(NETWORK_PEER_ADDRESS, ip),
174174
equalTo(NETWORK_PEER_PORT, (long) port),
175175
equalTo(maybeStable(DB_SYSTEM), "redis"),
176-
equalTo(maybeStable(DB_STATEMENT), "BATCH EXECUTE"))));
176+
equalTo(maybeStable(DB_STATEMENT), "SET batch1 ?;SET batch2 ?"))));
177177
}
178178

179179
private static void invokeExecute(RBatch batch)
@@ -206,14 +206,14 @@ void atomicBatchCommand() {
206206
trace.hasSpansSatisfyingExactly(
207207
span -> span.hasName("parent").hasNoParent().hasKind(INTERNAL),
208208
span ->
209-
span.hasName("BATCH EXECUTE")
209+
span.hasName("BATCH")
210210
.hasKind(CLIENT)
211211
.hasAttributesSatisfyingExactly(
212212
equalTo(NETWORK_TYPE, "ipv4"),
213213
equalTo(NETWORK_PEER_ADDRESS, ip),
214214
equalTo(NETWORK_PEER_PORT, (long) port),
215215
equalTo(maybeStable(DB_SYSTEM), "redis"),
216-
equalTo(maybeStable(DB_STATEMENT), "BATCH EXECUTE"))
216+
equalTo(maybeStable(DB_STATEMENT), "MULTI;SET batch1 ?"))
217217
.hasParent(trace.getSpan(0)),
218218
span ->
219219
span.hasName("SET")

0 commit comments

Comments
 (0)