GH-1198 Fix tracibility wrapper
Fix tracibility wrapper to ensure traceid/spanid are captured on subsequent invocations Resolves #1198
This commit is contained in:
@@ -16,8 +16,6 @@
|
||||
|
||||
package org.springframework.cloud.function.context.catalog;
|
||||
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
import org.reactivestreams.Publisher;
|
||||
|
||||
import org.springframework.cloud.function.context.catalog.SimpleFunctionRegistry.FunctionInvocationWrapper;
|
||||
@@ -37,14 +35,15 @@ import org.springframework.util.StringUtils;
|
||||
*/
|
||||
public abstract class FunctionAroundWrapper {
|
||||
|
||||
private static final Log log = LogFactory.getLog(FunctionAroundWrapper.class);
|
||||
|
||||
public final Object apply(Object input, FunctionInvocationWrapper targetFunction) {
|
||||
|
||||
String functionalTracingEnabledStr = System.getProperty("spring.cloud.function.observability.enabled");
|
||||
boolean functionalTracingEnabled = !StringUtils.hasText(functionalTracingEnabledStr)
|
||||
|| Boolean.parseBoolean(functionalTracingEnabledStr);
|
||||
if (functionalTracingEnabled && !(input instanceof Publisher) && input instanceof Message && !FunctionTypeUtils.isCollectionOfMessage(targetFunction.getOutputType())) {
|
||||
return this.doApply(input, targetFunction);
|
||||
Object result = this.doApply(input, targetFunction);
|
||||
targetFunction.wrapped = false;
|
||||
return result;
|
||||
}
|
||||
else {
|
||||
return targetFunction.apply(input);
|
||||
|
||||
@@ -417,7 +417,7 @@ public class SimpleFunctionRegistry implements FunctionRegistry {
|
||||
|
||||
private boolean propagateInputHeaders;
|
||||
|
||||
private boolean wrapped;
|
||||
protected boolean wrapped;
|
||||
|
||||
private final ThreadLocal<Message<Object>> unconvertedResult = new ThreadLocal<>();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user