diff --git a/functions-framework-api/pom.xml b/functions-framework-api/pom.xml
index 26b466a8..eafad2d1 100644
--- a/functions-framework-api/pom.xml
+++ b/functions-framework-api/pom.xml
@@ -38,7 +38,7 @@
dev.openfunction.functions
functions-framework-api
- 1.2.0-SNAPSHOT
+ 1.3.0-SNAPSHOT
UTF-8
diff --git a/functions-framework-api/src/main/java/dev/openfunction/functions/Context.java b/functions-framework-api/src/main/java/dev/openfunction/functions/Context.java
index d3863eb9..72adf9d9 100644
--- a/functions-framework-api/src/main/java/dev/openfunction/functions/Context.java
+++ b/functions-framework-api/src/main/java/dev/openfunction/functions/Context.java
@@ -121,5 +121,5 @@ public interface Context {
*/
DaprClient getDaprClient();
- CloudEvent packageAsCloudevent(String payload);
+ byte[] packageAsCloudevent(String payload);
}
diff --git a/functions-framework-invoker/pom.xml b/functions-framework-invoker/pom.xml
index 35a70084..a2d9bdd0 100644
--- a/functions-framework-invoker/pom.xml
+++ b/functions-framework-invoker/pom.xml
@@ -10,7 +10,7 @@
dev.openfunction.functions
functions-framework-invoker
- 1.2.0-SNAPSHOT
+ 1.3.0-SNAPSHOT
3.8.0
@@ -20,6 +20,7 @@
11
11
2.4.2
+ 8.16.0
@@ -60,7 +61,7 @@
dev.openfunction.functions
functions-framework-api
- 1.2.0-SNAPSHOT
+ 1.3.0-SNAPSHOT
io.cloudevents
@@ -179,6 +180,12 @@
jackson-databind
2.14.2
+
+
+ org.apache.skywalking
+ apm-toolkit-trace
+ ${skywalking.version}
+
diff --git a/functions-framework-invoker/src/main/java/dev/openfunction/invoker/context/FunctionContext.java b/functions-framework-invoker/src/main/java/dev/openfunction/invoker/context/FunctionContext.java
index 8ef77d22..ebe53868 100644
--- a/functions-framework-invoker/src/main/java/dev/openfunction/invoker/context/FunctionContext.java
+++ b/functions-framework-invoker/src/main/java/dev/openfunction/invoker/context/FunctionContext.java
@@ -128,16 +128,6 @@ public void setPluginsTracing(TracingConfig pluginsTracing) {
this.pluginsTracing = pluginsTracing;
}
- public boolean isTracingEnabled() {
- if (tracing != null ) {
- return tracing.isEnabled();
- } else if (pluginsTracing != null) {
- return pluginsTracing.isEnabled();
- } else {
- return false;
- }
- }
-
public Map getStates() {
return states;
}
diff --git a/functions-framework-invoker/src/main/java/dev/openfunction/invoker/context/RuntimeContext.java b/functions-framework-invoker/src/main/java/dev/openfunction/invoker/context/RuntimeContext.java
index d116426c..692ebe11 100644
--- a/functions-framework-invoker/src/main/java/dev/openfunction/invoker/context/RuntimeContext.java
+++ b/functions-framework-invoker/src/main/java/dev/openfunction/invoker/context/RuntimeContext.java
@@ -66,26 +66,41 @@ public RuntimeContext(String context, ClassLoader classLoader) throws Exception
loadHooks(classLoader);
- if (functionContext.isTracingEnabled() && functionContext.getPluginsTracing().getProvider() != null) {
- String provider = functionContext.getPluginsTracing().getProvider().getName();
+ TracingConfig tracingConfig = getTracingConfig();
+ if (tracingConfig != null && tracingConfig.isEnabled() && tracingConfig.getProvider() != null) {
+ String provider = tracingConfig.getProvider().getName();
if (!Objects.equals(provider, TracingSkywalking) && !Objects.equals(provider, TracingOpentelemetry)) {
throw new IllegalArgumentException("unsupported tracing provider " + provider);
}
switch (provider) {
case TracingSkywalking:
- tracingProvider = new SkywalkingProvider();
+ tracingProvider = new SkywalkingProvider(tracingConfig,
+ functionContext.getName(),
+ System.getenv(RuntimeContext.PodNameEnvName),
+ System.getenv(RuntimeContext.PodNamespaceEnvName));
+ break;
case TracingOpentelemetry:
- tracingProvider = new OpenTelemetryProvider(functionContext.getPluginsTracing(),
+ tracingProvider = new OpenTelemetryProvider(tracingConfig,
functionContext.getName(),
System.getenv(RuntimeContext.PodNameEnvName),
System.getenv(RuntimeContext.PodNamespaceEnvName));
+ break;
}
}
EventFormatProvider.getInstance().registerFormat(new JsonEventFormat());
}
+ private TracingConfig getTracingConfig() {
+ TracingConfig tracingConfig = functionContext.getTracing();
+ if (tracingConfig != null) {
+ return tracingConfig;
+ }
+
+ return functionContext.getPluginsTracing();
+ }
+
private void loadHooks(ClassLoader classLoader) {
String[] preHookNames = functionContext.getPreHooks();
if (ArrayUtils.isEmpty(preHookNames)) {
diff --git a/functions-framework-invoker/src/main/java/dev/openfunction/invoker/context/UserContext.java b/functions-framework-invoker/src/main/java/dev/openfunction/invoker/context/UserContext.java
index b8d14f32..e02c60ea 100644
--- a/functions-framework-invoker/src/main/java/dev/openfunction/invoker/context/UserContext.java
+++ b/functions-framework-invoker/src/main/java/dev/openfunction/invoker/context/UserContext.java
@@ -101,8 +101,7 @@ public Error send(String outputName, String data) {
// binding must be in CloudEvent format, otherwise pubsub cannot parse the data.
byte[] payload = data.getBytes();
if (MiddlewaresCloudEventFormatRequired.contains(output.getComponentType())) {
- CloudEvent event = packageAsCloudevent(data);
- payload = new JsonEventFormat().serialize(event);
+ payload = packageAsCloudevent(data);
}
daprClient.invokeBinding(output.getComponentName(), output.getOperation(), payload).block();
@@ -169,14 +168,15 @@ public DaprClient getDaprClient() {
}
@Override
- public CloudEvent packageAsCloudevent(String payload) {
- return new CloudEventBuilder()
+ public byte[] packageAsCloudevent(String payload) {
+ CloudEvent event = new CloudEventBuilder()
.withId(UUID.randomUUID().toString())
.withType("dapr.invoke")
.withSource(URI.create("openfunction/invokeBinding"))
.withData(payload.getBytes())
.withDataContentType(JsonEventFormat.CONTENT_TYPE)
.build();
+ return new JsonEventFormat().serialize(event);
}
@Override
diff --git a/functions-framework-invoker/src/main/java/dev/openfunction/invoker/tracing/OpenTelemetryProvider.java b/functions-framework-invoker/src/main/java/dev/openfunction/invoker/tracing/OpenTelemetryProvider.java
index 50d7a107..781bd398 100644
--- a/functions-framework-invoker/src/main/java/dev/openfunction/invoker/tracing/OpenTelemetryProvider.java
+++ b/functions-framework-invoker/src/main/java/dev/openfunction/invoker/tracing/OpenTelemetryProvider.java
@@ -48,7 +48,7 @@ public class OpenTelemetryProvider implements TracingProvider {
private static final String Protocol_HTTP = "http";
private final String functionName;
- private final Map tags;
+ private Map tags;
private final Map baggage;
private final TextMapGetter