@@ -25,6 +25,7 @@ use bytes::Bytes;
25
25
use futures:: FutureExt ;
26
26
use minitrace:: prelude:: * ;
27
27
28
+ use crate :: raw:: oio:: AppendOperation ;
28
29
use crate :: raw:: oio:: PageOperation ;
29
30
use crate :: raw:: oio:: ReadOperation ;
30
31
use crate :: raw:: oio:: WriteOperation ;
@@ -134,15 +135,15 @@ impl<A: Accessor> LayeredAccessor for MinitraceAccessor<A> {
134
135
type BlockingReader = MinitraceWrapper < A :: BlockingReader > ;
135
136
type Writer = MinitraceWrapper < A :: Writer > ;
136
137
type BlockingWriter = MinitraceWrapper < A :: BlockingWriter > ;
137
- type Appender = A :: Appender ;
138
+ type Appender = MinitraceWrapper < A :: Appender > ;
138
139
type Pager = MinitraceWrapper < A :: Pager > ;
139
140
type BlockingPager = MinitraceWrapper < A :: BlockingPager > ;
140
141
141
142
fn inner ( & self ) -> & Self :: Inner {
142
143
& self . inner
143
144
}
144
145
145
- #[ trace( "metadata" ) ]
146
+ #[ trace]
146
147
fn metadata ( & self ) -> AccessorInfo {
147
148
self . inner . info ( )
148
149
}
@@ -152,24 +153,49 @@ impl<A: Accessor> LayeredAccessor for MinitraceAccessor<A> {
152
153
self . inner . create_dir ( path, args) . await
153
154
}
154
155
156
+ #[ trace( enter_on_poll = true ) ]
155
157
async fn read ( & self , path : & str , args : OpRead ) -> Result < ( RpRead , Self :: Reader ) > {
156
- let span = Span :: enter_with_local_parent ( "read" ) ;
157
158
self . inner
158
159
. read ( path, args)
159
- . map ( |v| v. map ( |( rp, r) | ( rp, MinitraceWrapper :: new ( span, r) ) ) )
160
+ . map ( |v| {
161
+ v. map ( |( rp, r) | {
162
+ (
163
+ rp,
164
+ MinitraceWrapper :: new ( Span :: enter_with_local_parent ( "ReadOperation" ) , r) ,
165
+ )
166
+ } )
167
+ } )
160
168
. await
161
169
}
162
170
171
+ #[ trace( enter_on_poll = true ) ]
163
172
async fn write ( & self , path : & str , args : OpWrite ) -> Result < ( RpWrite , Self :: Writer ) > {
164
- let span = Span :: enter_with_local_parent ( "write" ) ;
165
173
self . inner
166
174
. write ( path, args)
167
- . map ( |v| v. map ( |( rp, r) | ( rp, MinitraceWrapper :: new ( span, r) ) ) )
175
+ . map ( |v| {
176
+ v. map ( |( rp, r) | {
177
+ (
178
+ rp,
179
+ MinitraceWrapper :: new ( Span :: enter_with_local_parent ( "WriteOperation" ) , r) ,
180
+ )
181
+ } )
182
+ } )
168
183
. await
169
184
}
170
185
186
+ #[ trace( enter_on_poll = true ) ]
171
187
async fn append ( & self , path : & str , args : OpAppend ) -> Result < ( RpAppend , Self :: Appender ) > {
172
- self . inner . append ( path, args) . await
188
+ self . inner
189
+ . append ( path, args)
190
+ . map ( |v| {
191
+ v. map ( |( rp, r) | {
192
+ (
193
+ rp,
194
+ MinitraceWrapper :: new ( Span :: enter_with_local_parent ( "AppendOperation" ) , r) ,
195
+ )
196
+ } )
197
+ } )
198
+ . await
173
199
}
174
200
175
201
#[ trace( enter_on_poll = true ) ]
@@ -192,11 +218,18 @@ impl<A: Accessor> LayeredAccessor for MinitraceAccessor<A> {
192
218
self . inner . delete ( path, args) . await
193
219
}
194
220
221
+ #[ trace( enter_on_poll = true ) ]
195
222
async fn list ( & self , path : & str , args : OpList ) -> Result < ( RpList , Self :: Pager ) > {
196
- let span = Span :: enter_with_local_parent ( "list" ) ;
197
223
self . inner
198
224
. list ( path, args)
199
- . map ( |v| v. map ( |( rp, s) | ( rp, MinitraceWrapper :: new ( span, s) ) ) )
225
+ . map ( |v| {
226
+ v. map ( |( rp, s) | {
227
+ (
228
+ rp,
229
+ MinitraceWrapper :: new ( Span :: enter_with_local_parent ( "ListOperation" ) , s) ,
230
+ )
231
+ } )
232
+ } )
200
233
. await
201
234
}
202
235
@@ -215,22 +248,22 @@ impl<A: Accessor> LayeredAccessor for MinitraceAccessor<A> {
215
248
self . inner . blocking_create_dir ( path, args)
216
249
}
217
250
251
+ #[ trace]
218
252
fn blocking_read ( & self , path : & str , args : OpRead ) -> Result < ( RpRead , Self :: BlockingReader ) > {
219
- let span = Span :: enter_with_local_parent ( "blocking_read" ) ;
220
253
self . inner . blocking_read ( path, args) . map ( |( rp, r) | {
221
254
(
222
255
rp,
223
- MinitraceWrapper :: new ( Span :: enter_with_parent ( "ReadOperation" , & span ) , r) ,
256
+ MinitraceWrapper :: new ( Span :: enter_with_local_parent ( "ReadOperation" ) , r) ,
224
257
)
225
258
} )
226
259
}
227
260
261
+ #[ trace]
228
262
fn blocking_write ( & self , path : & str , args : OpWrite ) -> Result < ( RpWrite , Self :: BlockingWriter ) > {
229
- let span = Span :: enter_with_local_parent ( "blocking_write" ) ;
230
263
self . inner . blocking_write ( path, args) . map ( |( rp, r) | {
231
264
(
232
265
rp,
233
- MinitraceWrapper :: new ( Span :: enter_with_parent ( "WriteOperation" , & span ) , r) ,
266
+ MinitraceWrapper :: new ( Span :: enter_with_local_parent ( "WriteOperation" ) , r) ,
234
267
)
235
268
} )
236
269
}
@@ -255,12 +288,12 @@ impl<A: Accessor> LayeredAccessor for MinitraceAccessor<A> {
255
288
self . inner . blocking_delete ( path, args)
256
289
}
257
290
291
+ #[ trace]
258
292
fn blocking_list ( & self , path : & str , args : OpList ) -> Result < ( RpList , Self :: BlockingPager ) > {
259
- let span = Span :: enter_with_local_parent ( "blocking_list" ) ;
260
293
self . inner . blocking_list ( path, args) . map ( |( rp, it) | {
261
294
(
262
295
rp,
263
- MinitraceWrapper :: new ( Span :: enter_with_parent ( "PageOperation" , & span ) , it) ,
296
+ MinitraceWrapper :: new ( Span :: enter_with_local_parent ( "PageOperation" ) , it) ,
264
297
)
265
298
} )
266
299
}
@@ -279,34 +312,40 @@ impl<R> MinitraceWrapper<R> {
279
312
280
313
impl < R : oio:: Read > oio:: Read for MinitraceWrapper < R > {
281
314
fn poll_read ( & mut self , cx : & mut Context < ' _ > , buf : & mut [ u8 ] ) -> Poll < Result < usize > > {
282
- let _span = Span :: enter_with_parent ( ReadOperation :: Read . into_static ( ) , & self . span ) ;
315
+ let _g = self . span . set_local_parent ( ) ;
316
+ let _span = LocalSpan :: enter_with_local_parent ( ReadOperation :: Read . into_static ( ) ) ;
283
317
self . inner . poll_read ( cx, buf)
284
318
}
285
319
286
320
fn poll_seek ( & mut self , cx : & mut Context < ' _ > , pos : io:: SeekFrom ) -> Poll < Result < u64 > > {
287
- let _span = Span :: enter_with_parent ( ReadOperation :: Seek . into_static ( ) , & self . span ) ;
321
+ let _g = self . span . set_local_parent ( ) ;
322
+ let _span = LocalSpan :: enter_with_local_parent ( ReadOperation :: Seek . into_static ( ) ) ;
288
323
self . inner . poll_seek ( cx, pos)
289
324
}
290
325
291
326
fn poll_next ( & mut self , cx : & mut Context < ' _ > ) -> Poll < Option < Result < Bytes > > > {
292
- let _span = Span :: enter_with_parent ( ReadOperation :: Next . into_static ( ) , & self . span ) ;
327
+ let _g = self . span . set_local_parent ( ) ;
328
+ let _span = LocalSpan :: enter_with_local_parent ( ReadOperation :: Next . into_static ( ) ) ;
293
329
self . inner . poll_next ( cx)
294
330
}
295
331
}
296
332
297
333
impl < R : oio:: BlockingRead > oio:: BlockingRead for MinitraceWrapper < R > {
298
334
fn read ( & mut self , buf : & mut [ u8 ] ) -> Result < usize > {
299
- let _span = Span :: enter_with_parent ( ReadOperation :: BlockingRead . into_static ( ) , & self . span ) ;
335
+ let _g = self . span . set_local_parent ( ) ;
336
+ let _span = LocalSpan :: enter_with_local_parent ( ReadOperation :: BlockingRead . into_static ( ) ) ;
300
337
self . inner . read ( buf)
301
338
}
302
339
303
340
fn seek ( & mut self , pos : io:: SeekFrom ) -> Result < u64 > {
304
- let _span = Span :: enter_with_parent ( ReadOperation :: BlockingSeek . into_static ( ) , & self . span ) ;
341
+ let _g = self . span . set_local_parent ( ) ;
342
+ let _span = LocalSpan :: enter_with_local_parent ( ReadOperation :: BlockingSeek . into_static ( ) ) ;
305
343
self . inner . seek ( pos)
306
344
}
307
345
308
346
fn next ( & mut self ) -> Option < Result < Bytes > > {
309
- let _span = Span :: enter_with_parent ( ReadOperation :: BlockingNext . into_static ( ) , & self . span ) ;
347
+ let _g = self . span . set_local_parent ( ) ;
348
+ let _span = LocalSpan :: enter_with_local_parent ( ReadOperation :: BlockingNext . into_static ( ) ) ;
310
349
self . inner . next ( )
311
350
}
312
351
}
@@ -356,18 +395,41 @@ impl<R: oio::Write> oio::Write for MinitraceWrapper<R> {
356
395
357
396
impl < R : oio:: BlockingWrite > oio:: BlockingWrite for MinitraceWrapper < R > {
358
397
fn write ( & mut self , bs : Bytes ) -> Result < ( ) > {
359
- let _span =
360
- Span :: enter_with_parent ( WriteOperation :: BlockingWrite . into_static ( ) , & self . span ) ;
398
+ let _g = self . span . set_local_parent ( ) ;
399
+ let _span = LocalSpan :: enter_with_local_parent ( WriteOperation :: BlockingWrite . into_static ( ) ) ;
361
400
self . inner . write ( bs)
362
401
}
363
402
364
403
fn close ( & mut self ) -> Result < ( ) > {
365
- let _span =
366
- Span :: enter_with_parent ( WriteOperation :: BlockingClose . into_static ( ) , & self . span ) ;
404
+ let _g = self . span . set_local_parent ( ) ;
405
+ let _span = LocalSpan :: enter_with_local_parent ( WriteOperation :: BlockingClose . into_static ( ) ) ;
367
406
self . inner . close ( )
368
407
}
369
408
}
370
409
410
+ #[ async_trait]
411
+ impl < R : oio:: Append > oio:: Append for MinitraceWrapper < R > {
412
+ async fn append ( & mut self , bs : Bytes ) -> Result < ( ) > {
413
+ self . inner
414
+ . append ( bs)
415
+ . in_span ( Span :: enter_with_parent (
416
+ AppendOperation :: Append . into_static ( ) ,
417
+ & self . span ,
418
+ ) )
419
+ . await
420
+ }
421
+
422
+ async fn close ( & mut self ) -> Result < ( ) > {
423
+ self . inner
424
+ . close ( )
425
+ . in_span ( Span :: enter_with_parent (
426
+ AppendOperation :: Close . into_static ( ) ,
427
+ & self . span ,
428
+ ) )
429
+ . await
430
+ }
431
+ }
432
+
371
433
#[ async_trait]
372
434
impl < R : oio:: Page > oio:: Page for MinitraceWrapper < R > {
373
435
async fn next ( & mut self ) -> Result < Option < Vec < oio:: Entry > > > {
@@ -383,7 +445,8 @@ impl<R: oio::Page> oio::Page for MinitraceWrapper<R> {
383
445
384
446
impl < R : oio:: BlockingPage > oio:: BlockingPage for MinitraceWrapper < R > {
385
447
fn next ( & mut self ) -> Result < Option < Vec < oio:: Entry > > > {
386
- let _span = Span :: enter_with_parent ( PageOperation :: BlockingNext . into_static ( ) , & self . span ) ;
448
+ let _g = self . span . set_local_parent ( ) ;
449
+ let _span = LocalSpan :: enter_with_local_parent ( PageOperation :: BlockingNext . into_static ( ) ) ;
387
450
self . inner . next ( )
388
451
}
389
452
}
0 commit comments