@@ -114,38 +114,59 @@ impl StorageService {
114114 }
115115 }
116116
117- let stored_size = Arc :: new ( AtomicU64 :: new ( 0 ) ) ;
118- let stream = futures_util:: stream:: once ( async { Ok ( first_chunk. into ( ) ) } )
119- . chain ( stream)
120- . inspect ( {
121- let stored_size = Arc :: clone ( & stored_size) ;
122- move |res| {
123- if let Ok ( chunk) = res {
124- stored_size. fetch_add ( chunk. len ( ) as u64 , Ordering :: Relaxed ) ;
125- }
126- }
127- } )
128- . boxed ( ) ;
129-
130- let backend_tag = match backend {
117+ let ( backend_choice, backend_ty, stored_size) = match backend {
131118 BackendChoice :: HighVolume => {
119+ let stored_size = first_chunk. len ( ) as u64 ;
120+ let stream = futures_util:: stream:: once ( async { Ok ( first_chunk. into ( ) ) } ) . boxed ( ) ;
121+
132122 self . 0
133123 . high_volume_backend
134124 . put_object ( & path, metadata, stream)
135125 . await ?;
136- "high-volume"
126+ (
127+ "high-volume" ,
128+ self . 0 . high_volume_backend . name ( ) ,
129+ stored_size,
130+ )
137131 }
138132 BackendChoice :: LongTerm => {
133+ let stored_size = Arc :: new ( AtomicU64 :: new ( 0 ) ) ;
134+ let stream = futures_util:: stream:: once ( async { Ok ( first_chunk. into ( ) ) } )
135+ . chain ( stream)
136+ . inspect ( {
137+ let stored_size = Arc :: clone ( & stored_size) ;
138+ move |res| {
139+ if let Ok ( chunk) = res {
140+ stored_size. fetch_add ( chunk. len ( ) as u64 , Ordering :: Relaxed ) ;
141+ }
142+ }
143+ } )
144+ . boxed ( ) ;
145+
139146 self . 0
140147 . long_term_backend
141148 . put_object ( & path, metadata, stream)
142149 . await ?;
143- "long-term"
150+ (
151+ "long-term" ,
152+ self . 0 . long_term_backend . name ( ) ,
153+ stored_size. load ( Ordering :: Acquire ) ,
154+ )
144155 }
145156 } ;
146157
147- merni:: distribution!( "put.latency" @s: start. elapsed( ) , "usecase" => path. usecase, "backend" => backend_tag) ;
148- merni:: distribution!( "put.size" @b: stored_size. load( Ordering :: Acquire ) , "usecase" => path. usecase, "backend" => backend_tag) ;
158+ merni:: distribution!(
159+ "put.latency" @s: start. elapsed( ) ,
160+ "usecase" => path. usecase,
161+ "backend_choice" => backend_choice,
162+ "backend_type" => backend_ty
163+ ) ;
164+ merni:: distribution!(
165+ "put.size" @b: stored_size,
166+ "usecase" => path. usecase,
167+ "backend_choice" => backend_choice,
168+ "backend_type" => backend_ty
169+ ) ;
149170
150171 Ok ( path)
151172 }
0 commit comments