@@ -20,8 +20,9 @@ use std::{
20
20
collections:: HashMap ,
21
21
error:: Error ,
22
22
fs,
23
+ path:: PathBuf ,
23
24
sync:: {
24
- atomic:: { AtomicI64 , Ordering } ,
25
+ atomic:: { AtomicBool , AtomicI64 , Ordering } ,
25
26
Arc ,
26
27
} ,
27
28
time:: Instant ,
@@ -57,6 +58,7 @@ use crate::{
57
58
build_consume_queue:: CommitLogDispatcherBuildConsumeQueue ,
58
59
local_file_consume_queue_store:: ConsumeQueueStore , ConsumeQueueStoreTrait ,
59
60
} ,
61
+ store:: running_flags:: RunningFlags ,
60
62
store_path_config_helper:: { get_abort_file, get_store_checkpoint} ,
61
63
} ;
62
64
@@ -77,6 +79,8 @@ pub struct DefaultMessageStore {
77
79
dispatcher : CommitLogDispatcherDefault ,
78
80
broker_init_max_offset : Arc < AtomicI64 > ,
79
81
state_machine_version : Arc < AtomicI64 > ,
82
+ shutdown : Arc < AtomicBool > ,
83
+ running_flags : Arc < RunningFlags > ,
80
84
}
81
85
82
86
impl Clone for DefaultMessageStore {
@@ -96,6 +100,8 @@ impl Clone for DefaultMessageStore {
96
100
dispatcher : self . dispatcher . clone ( ) ,
97
101
broker_init_max_offset : self . broker_init_max_offset . clone ( ) ,
98
102
state_machine_version : self . state_machine_version . clone ( ) ,
103
+ shutdown : self . shutdown . clone ( ) ,
104
+ running_flags : self . running_flags . clone ( ) ,
99
105
}
100
106
}
101
107
}
@@ -141,6 +147,8 @@ impl DefaultMessageStore {
141
147
dispatcher,
142
148
broker_init_max_offset : Arc :: new ( AtomicI64 :: new ( -1 ) ) ,
143
149
state_machine_version : Arc :: new ( AtomicI64 :: new ( 0 ) ) ,
150
+ shutdown : Arc :: new ( AtomicBool :: new ( false ) ) ,
151
+ running_flags : Arc :: new ( RunningFlags :: new ( ) ) ,
144
152
}
145
153
}
146
154
}
@@ -268,6 +276,17 @@ impl DefaultMessageStore {
268
276
pub fn consume_queue_store_mut ( & mut self ) -> & mut ConsumeQueueStore {
269
277
& mut self . consume_queue_store
270
278
}
279
+
280
+ fn delete_file ( & mut self , file_name : String ) {
281
+ match fs:: remove_file ( PathBuf :: from ( file_name. as_str ( ) ) ) {
282
+ Ok ( _) => {
283
+ info ! ( "delete OK, file:{}" , file_name) ;
284
+ }
285
+ Err ( err) => {
286
+ error ! ( "delete error, file:{}, {:?}" , file_name, err) ;
287
+ }
288
+ }
289
+ }
271
290
}
272
291
273
292
impl MessageStore for DefaultMessageStore {
@@ -328,6 +347,20 @@ impl MessageStore for DefaultMessageStore {
328
347
Ok ( ( ) )
329
348
}
330
349
350
+ fn shutdown ( & mut self ) {
351
+ if !self . shutdown . load ( Ordering :: Relaxed ) {
352
+ self . shutdown . store ( true , Ordering :: SeqCst ) ;
353
+ self . commit_log . shutdown ( ) ;
354
+
355
+ if self . running_flags . is_writeable ( ) {
356
+ //delete abort file
357
+ self . delete_file ( get_abort_file (
358
+ self . message_store_config . store_path_root_dir . as_str ( ) ,
359
+ ) )
360
+ }
361
+ }
362
+ }
363
+
331
364
fn set_confirm_offset ( & mut self , phy_offset : i64 ) {
332
365
333
366
// self.commit_log.set_confirm_offset(phy_offset);
0 commit comments