@@ -46,6 +46,9 @@ pub async fn delete(req: HttpRequest) -> Result<impl Responder, StreamError> {
46
46
objectstore. delete_stream ( & stream_name) . await ?;
47
47
metadata:: STREAM_INFO . delete_stream ( & stream_name) ;
48
48
event:: STREAM_WRITERS . delete_stream ( & stream_name) ;
49
+ stats:: delete_stats ( & stream_name, "json" ) . unwrap_or_else ( |e| {
50
+ log:: warn!( "failed to delete stats for stream {}: {:?}" , stream_name, e)
51
+ } ) ;
49
52
50
53
let stream_dir = StorageDir :: new ( & stream_name) ;
51
54
if fs:: remove_dir_all ( & stream_dir. data_path ) . is_err ( ) {
@@ -229,6 +232,10 @@ pub async fn put_retention(
229
232
pub async fn get_stats ( req : HttpRequest ) -> Result < impl Responder , StreamError > {
230
233
let stream_name: String = req. match_info ( ) . get ( "logstream" ) . unwrap ( ) . parse ( ) . unwrap ( ) ;
231
234
235
+ if !metadata:: STREAM_INFO . stream_exists ( & stream_name) {
236
+ return Err ( StreamError :: StreamNotFound ( stream_name) ) ;
237
+ }
238
+
232
239
let stats = stats:: get_current_stats ( & stream_name, "json" )
233
240
. ok_or ( StreamError :: StreamNotFound ( stream_name. clone ( ) ) ) ?;
234
241
@@ -363,3 +370,30 @@ pub mod error {
363
370
}
364
371
}
365
372
}
373
+
374
+ #[ cfg( test) ]
375
+ mod tests {
376
+ use crate :: handlers:: http:: logstream:: error:: StreamError ;
377
+ use crate :: handlers:: http:: logstream:: get_stats;
378
+ use actix_web:: test:: TestRequest ;
379
+ use anyhow:: bail;
380
+
381
+ #[ actix_web:: test]
382
+ #[ should_panic]
383
+ async fn get_stats_panics_without_logstream ( ) {
384
+ let req = TestRequest :: default ( ) . to_http_request ( ) ;
385
+ let _ = get_stats ( req) . await ;
386
+ }
387
+
388
+ #[ actix_web:: test]
389
+ async fn get_stats_stream_not_found_error_for_unknown_logstream ( ) -> anyhow:: Result < ( ) > {
390
+ let req = TestRequest :: default ( )
391
+ . param ( "logstream" , "test" )
392
+ . to_http_request ( ) ;
393
+
394
+ match get_stats ( req) . await {
395
+ Err ( StreamError :: StreamNotFound ( _) ) => Ok ( ( ) ) ,
396
+ _ => bail ! ( "expected StreamNotFound error" ) ,
397
+ }
398
+ }
399
+ }
0 commit comments