11use std:: sync:: Arc ;
2+ use std:: time:: Instant ;
23
34use bytes:: Bytes ;
45use delta_kernel_derive:: internal_api;
@@ -10,14 +11,14 @@ use url::Url;
1011
1112use super :: UrlExt ;
1213use crate :: engine:: default:: executor:: TaskExecutor ;
13- use crate :: metrics:: { MetricEvent , MetricsReporter , Timer } ;
14+ use crate :: metrics:: { MetricEvent , MetricsReporter } ;
1415use crate :: { DeltaResult , Error , FileMeta , FileSlice , StorageHandler } ;
1516
1617/// Iterator wrapper that emits metrics when exhausted
1718struct ListMetricsIterator < I > {
1819 inner : I ,
1920 reporter : Option < Arc < dyn MetricsReporter > > ,
20- timer : Timer ,
21+ start : Instant ,
2122 count : u64 ,
2223 metrics_emitted : bool ,
2324}
@@ -37,7 +38,7 @@ impl<I: Iterator<Item = DeltaResult<FileMeta>>> Iterator for ListMetricsIterator
3738 if !self . metrics_emitted {
3839 self . reporter . as_ref ( ) . inspect ( |r| {
3940 r. report ( MetricEvent :: StorageListCompleted {
40- duration : self . timer . elapsed ( ) ,
41+ duration : self . start . elapsed ( ) ,
4142 num_files : self . count ,
4243 } ) ;
4344 } ) ;
@@ -53,7 +54,7 @@ impl<I: Iterator<Item = DeltaResult<FileMeta>>> Iterator for ListMetricsIterator
5354struct ReadMetricsIterator < I > {
5455 inner : I ,
5556 reporter : Option < Arc < dyn MetricsReporter > > ,
56- timer : Timer ,
57+ start : Instant ,
5758 num_files : u64 ,
5859 bytes_read : u64 ,
5960 metrics_emitted : bool ,
@@ -74,7 +75,7 @@ impl<I: Iterator<Item = DeltaResult<Bytes>>> Iterator for ReadMetricsIterator<I>
7475 if !self . metrics_emitted {
7576 self . reporter . as_ref ( ) . inspect ( |r| {
7677 r. report ( MetricEvent :: StorageReadCompleted {
77- duration : self . timer . elapsed ( ) ,
78+ duration : self . start . elapsed ( ) ,
7879 num_files : self . num_files ,
7980 bytes_read : self . bytes_read ,
8081 } ) ;
@@ -187,7 +188,7 @@ impl<E: TaskExecutor> StorageHandler for ObjectStoreStorageHandler<E> {
187188 }
188189 } ) ;
189190
190- let timer = Timer :: new ( ) ;
191+ let start = Instant :: now ( ) ;
191192 let reporter = self . reporter . clone ( ) ;
192193
193194 if !has_ordered_listing {
@@ -198,7 +199,7 @@ impl<E: TaskExecutor> StorageHandler for ObjectStoreStorageHandler<E> {
198199 let num_files = fms. len ( ) as u64 ;
199200 reporter. as_ref ( ) . inspect ( |r| {
200201 r. report ( MetricEvent :: StorageListCompleted {
201- duration : timer . elapsed ( ) ,
202+ duration : start . elapsed ( ) ,
202203 num_files,
203204 } ) ;
204205 } ) ;
@@ -208,7 +209,7 @@ impl<E: TaskExecutor> StorageHandler for ObjectStoreStorageHandler<E> {
208209 Ok ( Box :: new ( ListMetricsIterator {
209210 inner : receiver. into_iter ( ) ,
210211 reporter,
211- timer ,
212+ start ,
212213 count : 0 ,
213214 metrics_emitted : false ,
214215 } ) )
@@ -276,15 +277,15 @@ impl<E: TaskExecutor> StorageHandler for ObjectStoreStorageHandler<E> {
276277 Ok ( Box :: new ( ReadMetricsIterator {
277278 inner : receiver. into_iter ( ) ,
278279 reporter : self . reporter . clone ( ) ,
279- timer : Timer :: new ( ) ,
280+ start : Instant :: now ( ) ,
280281 num_files,
281282 bytes_read : 0 ,
282283 metrics_emitted : false ,
283284 } ) )
284285 }
285286
286287 fn copy_atomic ( & self , src : & Url , dest : & Url ) -> DeltaResult < ( ) > {
287- let timer = Timer :: new ( ) ;
288+ let start = Instant :: now ( ) ;
288289 let src_path = Path :: from_url_path ( src. path ( ) ) ?;
289290 let dest_path = Path :: from_url_path ( dest. path ( ) ) ?;
290291 let dest_path_str = dest_path. to_string ( ) ;
@@ -310,7 +311,7 @@ impl<E: TaskExecutor> StorageHandler for ObjectStoreStorageHandler<E> {
310311
311312 self . reporter . as_ref ( ) . inspect ( |r| {
312313 r. report ( MetricEvent :: StorageCopyCompleted {
313- duration : timer . elapsed ( ) ,
314+ duration : start . elapsed ( ) ,
314315 } ) ;
315316 } ) ;
316317
0 commit comments