File tree Expand file tree Collapse file tree 3 files changed +25
-17
lines changed Expand file tree Collapse file tree 3 files changed +25
-17
lines changed Original file line number Diff line number Diff line change 16
16
*
17
17
*/
18
18
19
+ use std:: fs;
20
+
19
21
use actix_web:: http:: StatusCode ;
20
22
use actix_web:: { web, HttpRequest , HttpResponse , Responder } ;
21
23
22
24
use crate :: alerts:: Alerts ;
23
25
use crate :: response;
24
26
use crate :: s3:: S3 ;
25
- use crate :: storage:: ObjectStorage ;
27
+ use crate :: storage:: { ObjectStorage , StorageDir } ;
26
28
use crate :: { metadata, validator} ;
27
29
28
30
pub async fn delete ( req : HttpRequest ) -> HttpResponse {
@@ -57,15 +59,21 @@ pub async fn delete(req: HttpRequest) -> HttpResponse {
57
59
. to_http ( ) ;
58
60
}
59
61
62
+ let stream_dir = StorageDir :: new ( & stream_name) ;
63
+ if fs:: remove_dir_all ( & stream_dir. data_path ) . is_err ( ) {
64
+ log:: warn!(
65
+ "failed to delete local data for stream {}. Clean {} manually" ,
66
+ stream_name,
67
+ stream_dir. data_path. to_string_lossy( )
68
+ )
69
+ }
70
+
60
71
if let Err ( e) = metadata:: STREAM_INFO . delete_stream ( & stream_name) {
61
- return response:: ServerResponse {
62
- msg : format ! (
63
- "failed to delete log stream {} from metadata due to err: {}" ,
64
- stream_name, e
65
- ) ,
66
- code : StatusCode :: INTERNAL_SERVER_ERROR ,
67
- }
68
- . to_http ( ) ;
72
+ log:: warn!(
73
+ "failed to delete log stream {} from metadata due to err: {}" ,
74
+ stream_name,
75
+ e
76
+ )
69
77
}
70
78
71
79
response:: ServerResponse {
Original file line number Diff line number Diff line change @@ -297,7 +297,7 @@ impl S3 {
297
297
. client
298
298
. list_objects_v2 ( )
299
299
. bucket ( & S3_CONFIG . s3_bucket_name )
300
- . delimiter ( '/' )
300
+ . delimiter ( "/.schema" )
301
301
. send ( )
302
302
. await ?;
303
303
@@ -307,7 +307,7 @@ impl S3 {
307
307
let logstreams: Vec < _ > = common_prefixes
308
308
. iter ( )
309
309
. filter_map ( CommonPrefix :: prefix)
310
- . filter_map ( |name| name. strip_suffix ( '/' ) )
310
+ . filter_map ( |name| name. strip_suffix ( "/.schema" ) )
311
311
. map ( String :: from)
312
312
. map ( |name| LogStream { name } )
313
313
. collect ( ) ;
Original file line number Diff line number Diff line change @@ -76,7 +76,7 @@ pub trait ObjectStorage: Sync + 'static {
76
76
77
77
// entries here means all the streams present on local disk
78
78
for stream in streams {
79
- let sync = StorageSync :: new ( stream. clone ( ) ) ;
79
+ let sync = StorageSync :: new ( & stream) ;
80
80
81
81
// if data.parquet file not present, skip this stream
82
82
if !sync. dir . parquet_path_exists ( ) {
@@ -114,7 +114,7 @@ pub trait ObjectStorage: Sync + 'static {
114
114
let streams = STREAM_INFO . list_streams ( ) ;
115
115
116
116
for stream in streams {
117
- let dir = StorageDir :: new ( stream. clone ( ) ) ;
117
+ let dir = StorageDir :: new ( & stream) ;
118
118
119
119
for file in WalkDir :: new ( dir. temp_dir )
120
120
. min_depth ( 1 )
@@ -148,14 +148,14 @@ pub struct LogStream {
148
148
}
149
149
150
150
#[ derive( Debug ) ]
151
- struct StorageDir {
151
+ pub struct StorageDir {
152
152
pub data_path : PathBuf ,
153
153
pub temp_dir : PathBuf ,
154
154
}
155
155
156
156
impl StorageDir {
157
- fn new ( stream_name : String ) -> Self {
158
- let data_path = CONFIG . parseable . local_stream_data_path ( & stream_name) ;
157
+ pub fn new ( stream_name : & str ) -> Self {
158
+ let data_path = CONFIG . parseable . local_stream_data_path ( stream_name) ;
159
159
let temp_dir = data_path. join ( "tmp" ) ;
160
160
161
161
Self {
@@ -186,7 +186,7 @@ struct StorageSync {
186
186
}
187
187
188
188
impl StorageSync {
189
- fn new ( stream_name : String ) -> Self {
189
+ fn new ( stream_name : & str ) -> Self {
190
190
let dir = StorageDir :: new ( stream_name) ;
191
191
let time = Utc :: now ( ) ;
192
192
Self { dir, time }
You can’t perform that action at this time.
0 commit comments