@@ -2,7 +2,7 @@ use super::{Cas, SwapError};
2
2
use anyhow:: { Context , Result } ;
3
3
use spin_core:: { async_trait, wasmtime:: component:: Resource } ;
4
4
use spin_resource_table:: Table ;
5
- use spin_telemetry:: OpenTelemetrySpanExt as _ ;
5
+ use spin_telemetry:: traces :: { self , Fault } ;
6
6
use spin_world:: v2:: key_value;
7
7
use spin_world:: wasi:: keyvalue as wasi_keyvalue;
8
8
use std:: { collections:: HashSet , sync:: Arc } ;
@@ -72,10 +72,7 @@ impl KeyValueDispatch {
72
72
pub fn get_store < T : ' static > ( & self , store : Resource < T > ) -> anyhow:: Result < & Arc < dyn Store > > {
73
73
let res = self . stores . get ( store. rep ( ) ) . context ( "invalid store" ) ;
74
74
if let Err ( err) = & res {
75
- let current_span = tracing:: Span :: current ( ) ;
76
- current_span. set_status ( spin_telemetry:: opentelemetry:: trace:: Status :: error (
77
- err. to_string ( ) ,
78
- ) ) ;
75
+ traces:: mark_as_error ( err, Some ( Fault :: Host ) ) ;
79
76
}
80
77
res
81
78
}
@@ -190,12 +187,11 @@ impl key_value::HostStore for KeyValueDispatch {
190
187
191
188
/// Make sure that infrastructure related errors are tracked in the current span.
192
189
fn track_error_on_span ( err : Error ) -> Error {
193
- if let Error :: Other ( _) | Error :: StoreTableFull = & err {
194
- let current_span = tracing:: Span :: current ( ) ;
195
- current_span. set_status ( spin_telemetry:: opentelemetry:: trace:: Status :: error (
196
- err. to_string ( ) ,
197
- ) ) ;
198
- }
190
+ let fault = match err {
191
+ Error :: NoSuchStore | Error :: AccessDenied => Fault :: Guest ,
192
+ Error :: StoreTableFull | Error :: Other ( _) => Fault :: Host ,
193
+ } ;
194
+ traces:: mark_as_error ( & err, Some ( fault) ) ;
199
195
err
200
196
}
201
197
0 commit comments