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;
|
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.reactivestreams.Publisher;
|
||||||
|
|
||||||
import org.springframework.cloud.function.context.catalog.SimpleFunctionRegistry.FunctionInvocationWrapper;
|
import org.springframework.cloud.function.context.catalog.SimpleFunctionRegistry.FunctionInvocationWrapper;
|
||||||
@@ -37,14 +35,15 @@ import org.springframework.util.StringUtils;
|
|||||||
*/
|
*/
|
||||||
public abstract class FunctionAroundWrapper {
|
public abstract class FunctionAroundWrapper {
|
||||||
|
|
||||||
private static final Log log = LogFactory.getLog(FunctionAroundWrapper.class);
|
|
||||||
|
|
||||||
public final Object apply(Object input, FunctionInvocationWrapper targetFunction) {
|
public final Object apply(Object input, FunctionInvocationWrapper targetFunction) {
|
||||||
|
|
||||||
String functionalTracingEnabledStr = System.getProperty("spring.cloud.function.observability.enabled");
|
String functionalTracingEnabledStr = System.getProperty("spring.cloud.function.observability.enabled");
|
||||||
boolean functionalTracingEnabled = !StringUtils.hasText(functionalTracingEnabledStr)
|
boolean functionalTracingEnabled = !StringUtils.hasText(functionalTracingEnabledStr)
|
||||||
|| Boolean.parseBoolean(functionalTracingEnabledStr);
|
|| Boolean.parseBoolean(functionalTracingEnabledStr);
|
||||||
if (functionalTracingEnabled && !(input instanceof Publisher) && input instanceof Message && !FunctionTypeUtils.isCollectionOfMessage(targetFunction.getOutputType())) {
|
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 {
|
else {
|
||||||
return targetFunction.apply(input);
|
return targetFunction.apply(input);
|
||||||
|
|||||||
@@ -417,7 +417,7 @@ public class SimpleFunctionRegistry implements FunctionRegistry {
|
|||||||
|
|
||||||
private boolean propagateInputHeaders;
|
private boolean propagateInputHeaders;
|
||||||
|
|
||||||
private boolean wrapped;
|
protected boolean wrapped;
|
||||||
|
|
||||||
private final ThreadLocal<Message<Object>> unconvertedResult = new ThreadLocal<>();
|
private final ThreadLocal<Message<Object>> unconvertedResult = new ThreadLocal<>();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user