| 
									
										
										
										
											2021-06-09 20:13:24 +08:00
										 |  |  | start_server {tags {"shutdown external:skip"}} { | 
					
						
							| 
									
										
										
										
											2020-09-17 23:20:10 +08:00
										 |  |  |     test {Temp rdb will be deleted if we use bg_unlink when shutdown} { | 
					
						
							|  |  |  |         for {set i 0} {$i < 20} {incr i} { | 
					
						
							|  |  |  |             r set $i $i | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         # It will cost 2s(20 * 100ms) to dump rdb
 | 
					
						
							|  |  |  |         r config set rdb-key-save-delay 100000 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # Child is dumping rdb
 | 
					
						
							|  |  |  |         r bgsave | 
					
						
							|  |  |  |         after 100 | 
					
						
							|  |  |  |         set dir [lindex [r config get dir] 1] | 
					
						
							|  |  |  |         set child_pid [get_child_pid 0] | 
					
						
							|  |  |  |         set temp_rdb [file join [lindex [r config get dir] 1] temp-${child_pid}.rdb] | 
					
						
							|  |  |  |         # Temp rdb must be existed
 | 
					
						
							|  |  |  |         assert {[file exists $temp_rdb]} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         catch {r shutdown nosave} | 
					
						
							|  |  |  |         # Make sure the server was killed
 | 
					
						
							|  |  |  |         catch {set rd [redis_deferring_client]} e | 
					
						
							|  |  |  |         assert_match {*connection refused*} $e | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         # Temp rdb file must be deleted
 | 
					
						
							|  |  |  |         assert {![file exists $temp_rdb]} | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-09 20:13:24 +08:00
										 |  |  | start_server {tags {"shutdown external:skip"}} { | 
					
						
							| 
									
										
										
										
											2020-09-17 23:20:10 +08:00
										 |  |  |     test {Temp rdb will be deleted in signal handle} { | 
					
						
							|  |  |  |         for {set i 0} {$i < 20} {incr i} { | 
					
						
							|  |  |  |             r set $i $i | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2020-09-27 22:13:33 +08:00
										 |  |  |         # It will cost 2s (20 * 100ms) to dump rdb
 | 
					
						
							| 
									
										
										
										
											2020-09-17 23:20:10 +08:00
										 |  |  |         r config set rdb-key-save-delay 100000 | 
					
						
							|  |  |  |          | 
					
						
							|  |  |  |         set pid [s process_id] | 
					
						
							|  |  |  |         set temp_rdb [file join [lindex [r config get dir] 1] temp-${pid}.rdb] | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-27 22:13:33 +08:00
										 |  |  |         # trigger a shutdown which will save an rdb
 | 
					
						
							| 
									
										
										
										
											2020-09-17 23:20:10 +08:00
										 |  |  |         exec kill -SIGINT $pid | 
					
						
							| 
									
										
										
										
											2020-09-27 22:13:33 +08:00
										 |  |  |         # Wait for creation of temp rdb
 | 
					
						
							|  |  |  |         wait_for_condition 50 10 { | 
					
						
							|  |  |  |             [file exists $temp_rdb] | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |             fail "Can't trigger rdb save on shutdown" | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2020-09-17 23:20:10 +08:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-09-27 22:13:33 +08:00
										 |  |  |         # Insist on immediate shutdown, temp rdb file must be deleted
 | 
					
						
							| 
									
										
										
										
											2020-09-17 23:20:10 +08:00
										 |  |  |         exec kill -SIGINT $pid | 
					
						
							| 
									
										
										
										
											2020-09-27 22:13:33 +08:00
										 |  |  |         # wait for the rdb file to be deleted
 | 
					
						
							|  |  |  |         wait_for_condition 50 10 { | 
					
						
							|  |  |  |             ![file exists $temp_rdb] | 
					
						
							|  |  |  |         } else { | 
					
						
							|  |  |  |             fail "Can't trigger rdb save on shutdown" | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2020-09-17 23:20:10 +08:00
										 |  |  |     } | 
					
						
							|  |  |  | } |