@@ -5,6 +5,7 @@ use http_body::Body as HttpBody;
5
5
use parking_lot:: Mutex ;
6
6
use serde_json_bytes:: ByteString ;
7
7
use serde_json_bytes:: Value ;
8
+ use tracing:: Span ;
8
9
9
10
use crate :: error:: FetchError ;
10
11
use crate :: graphql;
@@ -14,6 +15,9 @@ use crate::plugins::connectors::make_requests::ResponseKey;
14
15
use crate :: plugins:: connectors:: make_requests:: ResponseTypeName ;
15
16
use crate :: plugins:: connectors:: plugin:: ConnectorContext ;
16
17
use crate :: plugins:: connectors:: plugin:: SelectionData ;
18
+ use crate :: plugins:: telemetry:: consts:: OTEL_STATUS_CODE ;
19
+ use crate :: plugins:: telemetry:: consts:: OTEL_STATUS_CODE_ERROR ;
20
+ use crate :: plugins:: telemetry:: consts:: OTEL_STATUS_CODE_OK ;
17
21
use crate :: services:: connect:: Response ;
18
22
use crate :: services:: fetch:: AddSubgraphNameExt ;
19
23
@@ -67,6 +71,7 @@ pub(crate) async fn handle_responses<T: HttpBody>(
67
71
. lock ( )
68
72
. push_invalid_response ( debug_request, & parts, body) ;
69
73
}
74
+ Span :: current ( ) . record ( OTEL_STATUS_CODE , OTEL_STATUS_CODE_ERROR ) ;
70
75
// TODO this stops processing all responses
71
76
return Err ( InvalidResponseBody ( format ! (
72
77
"couldn't deserialize response body: {e}"
@@ -217,6 +222,15 @@ pub(crate) async fn handle_responses<T: HttpBody>(
217
222
Value :: Object ( data)
218
223
} ;
219
224
225
+ Span :: current ( ) . record (
226
+ OTEL_STATUS_CODE ,
227
+ if errors. is_empty ( ) {
228
+ OTEL_STATUS_CODE_OK
229
+ } else {
230
+ OTEL_STATUS_CODE_ERROR
231
+ } ,
232
+ ) ;
233
+
220
234
Ok ( Response {
221
235
response : http:: Response :: builder ( )
222
236
. body (
0 commit comments