Skip to content

Commit 2b3318d

Browse files
committed
GH-1198 Fix tracibility wrapper
Fix tracibility wrapper to ensure traceid/spanid are captured on subsequent invocations Resolves #1198
1 parent 3968e37 commit 2b3318d

File tree

2 files changed

+5
-6
lines changed

2 files changed

+5
-6
lines changed

spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/FunctionAroundWrapper.java

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,6 @@
1616

1717
package org.springframework.cloud.function.context.catalog;
1818

19-
import org.apache.commons.logging.Log;
20-
import org.apache.commons.logging.LogFactory;
2119
import org.reactivestreams.Publisher;
2220

2321
import org.springframework.cloud.function.context.catalog.SimpleFunctionRegistry.FunctionInvocationWrapper;
@@ -37,14 +35,15 @@
3735
*/
3836
public abstract class FunctionAroundWrapper {
3937

40-
private static final Log log = LogFactory.getLog(FunctionAroundWrapper.class);
41-
4238
public final Object apply(Object input, FunctionInvocationWrapper targetFunction) {
39+
4340
String functionalTracingEnabledStr = System.getProperty("spring.cloud.function.observability.enabled");
4441
boolean functionalTracingEnabled = !StringUtils.hasText(functionalTracingEnabledStr)
4542
|| Boolean.parseBoolean(functionalTracingEnabledStr);
4643
if (functionalTracingEnabled && !(input instanceof Publisher) && input instanceof Message && !FunctionTypeUtils.isCollectionOfMessage(targetFunction.getOutputType())) {
47-
return this.doApply(input, targetFunction);
44+
Object result = this.doApply(input, targetFunction);
45+
targetFunction.wrapped = false;
46+
return result;
4847
}
4948
else {
5049
return targetFunction.apply(input);

spring-cloud-function-context/src/main/java/org/springframework/cloud/function/context/catalog/SimpleFunctionRegistry.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -417,7 +417,7 @@ public class FunctionInvocationWrapper implements Function<Object, Object>, Cons
417417

418418
private boolean propagateInputHeaders;
419419

420-
private boolean wrapped;
420+
protected boolean wrapped;
421421

422422
private final ThreadLocal<Message<Object>> unconvertedResult = new ThreadLocal<>();
423423

0 commit comments

Comments
 (0)