Skip to content

Commit 7a726e9

Browse files
authored
Enable Micronaut OpenTelemetry spans (#179)
1 parent d33895d commit 7a726e9

File tree

4 files changed

+15
-3
lines changed

4 files changed

+15
-3
lines changed

pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,11 @@
132132
<artifactId>micronaut-tracing-annotation</artifactId>
133133
<version>${micronaut.tracing.version}</version>
134134
</dependency>
135+
<dependency>
136+
<groupId>io.micronaut.tracing</groupId>
137+
<artifactId>micronaut-tracing-opentelemetry</artifactId>
138+
<version>${micronaut.tracing.version}</version>
139+
</dependency>
135140
<dependency>
136141
<groupId>io.micronaut.cache</groupId>
137142
<artifactId>micronaut-cache-core</artifactId>

src/main/java/no/ssb/dlp/pseudo/service/pseudo/PseudoController.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import io.micronaut.tracing.annotation.NewSpan;
1313
import io.micronaut.tracing.annotation.SpanTag;
1414
import io.reactivex.Flowable;
15+
import io.opentelemetry.api.trace.Span;
1516
import io.swagger.v3.oas.annotations.Operation;
1617
import io.swagger.v3.oas.annotations.media.Schema;
1718
import io.swagger.v3.oas.annotations.tags.Tag;
@@ -73,6 +74,12 @@ public HttpResponse<Flowable<byte[]>> pseudonymizeField(
7374
@SpanTag("pseudonymize column request") @Schema(implementation = PseudoFieldRequest.class) String request
7475
) {
7576
PseudoFieldRequest req = Json.toObject(PseudoFieldRequest.class, request);
77+
Span currentSpan = Span.current();
78+
if (currentSpan.getSpanContext().isValid() && req != null) {
79+
currentSpan.setAttribute("pseudo.field", req.getName());
80+
currentSpan.setAttribute("pseudo.pattern", req.getPattern());
81+
currentSpan.setAttribute("pseudo.values.count", req.getValues() == null ? 0 : req.getValues().size());
82+
}
7683
log.info(Strings.padEnd(String.format("*** Pseudonymize field: %s ", req.getName()), 80, '*'));
7784
PseudoField pseudoField = new PseudoField(req.getName(), req.getPattern(), req.getPseudoFunc(), req.getKeyset());
7885
try {

src/main/java/no/ssb/dlp/pseudo/service/pseudo/PseudoField.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package no.ssb.dlp.pseudo.service.pseudo;
22

33
import com.google.common.base.Stopwatch;
4-
import io.micronaut.tracing.annotation.ContinueSpan;
54
import io.reactivex.Completable;
65
import io.reactivex.Flowable;
76
import lombok.AccessLevel;
@@ -81,7 +80,6 @@ public PseudoField(String name, String pattern, String pseudoFunc, EncryptedKeys
8180
* @param values The values to be processed.
8281
* @return A Flowable stream that processes the field values by applying the configured pseudo rules, and returns them as a lists of strings.
8382
*/
84-
@ContinueSpan
8583
public Flowable<String> process(PseudoConfigSplitter pseudoConfigSplitter,
8684
RecordMapProcessorFactory recordProcessorFactory,
8785
List<String> values,
@@ -182,4 +180,4 @@ protected Completable getPreprocessor(List<String> values, RecordMapProcessor<Ps
182180
return Completable.complete();
183181
}
184182
}
185-
}
183+
}

src/main/java/no/ssb/dlp/pseudo/service/pseudo/RecordMapProcessorFactory.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ public RecordMapProcessor<PseudoMetadataProcessor> newPseudonymizeRecordProcesso
6666
return new RecordMapProcessor<>(chain, metadataProcessor);
6767
}
6868

69+
@ContinueSpan
6970
public RecordMapProcessor<PseudoMetadataProcessor> newDepseudonymizeRecordProcessor(List<PseudoConfig> pseudoConfigs, String correlationId) {
7071
ValueInterceptorChain chain = new ValueInterceptorChain();
7172
PseudoMetadataProcessor metadataProcessor = new PseudoMetadataProcessor(correlationId);
@@ -80,6 +81,7 @@ public RecordMapProcessor<PseudoMetadataProcessor> newDepseudonymizeRecordProces
8081
return new RecordMapProcessor<>(chain, metadataProcessor);
8182
}
8283

84+
@ContinueSpan
8385
public RecordMapProcessor<PseudoMetadataProcessor> newRepseudonymizeRecordProcessor(PseudoConfig sourcePseudoConfig,
8486
PseudoConfig targetPseudoConfig, String correlationId) {
8587
final PseudoFuncs fieldDepseudonymizer = newPseudoFuncs(sourcePseudoConfig.getRules(),

0 commit comments

Comments
 (0)