@@ -27,6 +27,7 @@ import {
2727import { logger } from "~/services/logger.server" ;
2828import { trace , Tracer } from "@opentelemetry/api" ;
2929import { startSpan } from "./tracing.server" ;
30+ import { enrichCreatableEvents } from "./utils/enrichCreatableEvents.server" ;
3031
3132export type OTLPExporterConfig = {
3233 batchSize : number ;
@@ -54,14 +55,16 @@ class OTLPExporter {
5455 return convertSpansToCreateableEvents ( resourceSpan ) ;
5556 } ) ;
5657
57- this . #logEventsVerbose ( events ) ;
58+ const enrichedEvents = enrichCreatableEvents ( events ) ;
5859
59- span . setAttribute ( "event_count" , events . length ) ;
60+ this . #logEventsVerbose( enrichedEvents ) ;
61+
62+ span . setAttribute ( "event_count" , enrichedEvents . length ) ;
6063
6164 if ( immediate ) {
62- await this . _eventRepository . insertManyImmediate ( events ) ;
65+ await this . _eventRepository . insertManyImmediate ( enrichedEvents ) ;
6366 } else {
64- await this . _eventRepository . insertMany ( events ) ;
67+ await this . _eventRepository . insertMany ( enrichedEvents ) ;
6568 }
6669
6770 return ExportTraceServiceResponse . create ( ) ;
@@ -79,14 +82,16 @@ class OTLPExporter {
7982 return convertLogsToCreateableEvents ( resourceLog ) ;
8083 } ) ;
8184
82- this . #logEventsVerbose( events ) ;
85+ const enrichedEvents = enrichCreatableEvents ( events ) ;
86+
87+ this . #logEventsVerbose( enrichedEvents ) ;
8388
84- span . setAttribute ( "event_count" , events . length ) ;
89+ span . setAttribute ( "event_count" , enrichedEvents . length ) ;
8590
8691 if ( immediate ) {
87- await this . _eventRepository . insertManyImmediate ( events ) ;
92+ await this . _eventRepository . insertManyImmediate ( enrichedEvents ) ;
8893 } else {
89- await this . _eventRepository . insertMany ( events ) ;
94+ await this . _eventRepository . insertMany ( enrichedEvents ) ;
9095 }
9196
9297 return ExportLogsServiceResponse . create ( ) ;
@@ -135,16 +140,28 @@ class OTLPExporter {
135140 ( attribute ) => attribute . key === SemanticInternalAttributes . TRIGGER
136141 ) ;
137142
138- if ( ! triggerAttribute ) {
143+ const executionEnvironmentAttribute = resourceSpan . resource ?. attributes . find (
144+ ( attribute ) => attribute . key === SemanticInternalAttributes . EXECUTION_ENVIRONMENT
145+ ) ;
146+
147+ if ( ! triggerAttribute && ! executionEnvironmentAttribute ) {
139148 logger . debug ( "Skipping resource span without trigger attribute" , {
140149 attributes : resourceSpan . resource ?. attributes ,
141150 spans : resourceSpan . scopeSpans . flatMap ( ( scopeSpan ) => scopeSpan . spans ) ,
142151 } ) ;
143152
144- return ;
153+ return true ; // go ahead and let this resource span through
154+ }
155+
156+ const executionEnvironment = isStringValue ( executionEnvironmentAttribute ?. value )
157+ ? executionEnvironmentAttribute . value . stringValue
158+ : undefined ;
159+
160+ if ( executionEnvironment === "trigger" ) {
161+ return true ; // go ahead and let this resource span through
145162 }
146163
147- return isBoolValue ( triggerAttribute . value ) ? triggerAttribute . value . boolValue : false ;
164+ return isBoolValue ( triggerAttribute ? .value ) ? triggerAttribute . value . boolValue : false ;
148165 } ) ;
149166 }
150167
0 commit comments