@@ -184,7 +184,7 @@ impl<E: TaskExecutor> StorageHandler for ObjectStoreStorageHandler<E> {
184184 } ) ;
185185
186186 let timer = Timer :: new ( ) ;
187- let reporter = self . reporter . clone ( ) ;
187+ let reporter = Arc :: clone ( & self . reporter ) ;
188188
189189 if !has_ordered_listing {
190190 // This FS doesn't return things in the order we require
@@ -269,7 +269,7 @@ impl<E: TaskExecutor> StorageHandler for ObjectStoreStorageHandler<E> {
269269
270270 Ok ( Box :: new ( ReadMetricsIterator {
271271 inner : receiver. into_iter ( ) ,
272- reporter : self . reporter . clone ( ) ,
272+ reporter : Arc :: clone ( & self . reporter ) ,
273273 timer : Timer :: new ( ) ,
274274 num_files,
275275 bytes_read : 0 ,
@@ -283,7 +283,6 @@ impl<E: TaskExecutor> StorageHandler for ObjectStoreStorageHandler<E> {
283283 let dest_path = Path :: from_url_path ( dest. path ( ) ) ?;
284284 let dest_path_str = dest_path. to_string ( ) ;
285285 let store = self . inner . clone ( ) ;
286- let reporter = self . reporter . clone ( ) ;
287286
288287 // Read source file then write atomically with PutMode::Create. Note that a GET/PUT is not
289288 // necessarily atomic, but since the source file is immutable, we aren't exposed to the
@@ -303,7 +302,7 @@ impl<E: TaskExecutor> StorageHandler for ObjectStoreStorageHandler<E> {
303302 Ok ( ( ) )
304303 } ) ;
305304
306- reporter. report ( MetricEvent :: StorageCopyCompleted {
305+ self . reporter . report ( MetricEvent :: StorageCopyCompleted {
307306 duration : timer. elapsed ( ) ,
308307 } ) ;
309308
0 commit comments