mirror of
				https://github.com/caddyserver/caddy.git
				synced 2025-10-31 02:27:19 -04:00 
			
		
		
		
	revert to old Caddyfile on failed in-process restart
This commit is contained in:
		
							parent
							
								
									28e0bfbbbe
								
							
						
					
					
						commit
						b952fd8f8f
					
				| @ -182,8 +182,18 @@ func restartInProc(newCaddyfile Input) error { | |||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | 	caddyfileMu.Lock() | ||||||
|  | 	oldCaddyfile := caddyfile | ||||||
|  | 	caddyfileMu.Unlock() | ||||||
|  | 
 | ||||||
| 	err = Start(newCaddyfile) | 	err = Start(newCaddyfile) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
|  | 		// revert to old Caddyfile | ||||||
|  | 		if oldErr := Start(oldCaddyfile); oldErr != nil { | ||||||
|  | 			log.Printf("[ERROR] Restart: in-process restart failed and cannot revert to old Caddyfile: %v", oldErr) | ||||||
|  | 		} else { | ||||||
|  | 			wg.Done() // take down our barrier | ||||||
|  | 		} | ||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -7,11 +7,12 @@ import "log" | |||||||
| func Restart(newCaddyfile Input) error { | func Restart(newCaddyfile Input) error { | ||||||
| 	log.Println("[INFO] Restarting") | 	log.Println("[INFO] Restarting") | ||||||
| 
 | 
 | ||||||
| 	if newCaddyfile == nil { |  | ||||||
| 	caddyfileMu.Lock() | 	caddyfileMu.Lock() | ||||||
|  | 	oldCaddyfile := caddyfile | ||||||
|  | 	if newCaddyfile == nil { | ||||||
| 		newCaddyfile = caddyfile | 		newCaddyfile = caddyfile | ||||||
| 		caddyfileMu.Unlock() |  | ||||||
| 	} | 	} | ||||||
|  | 	caddyfileMu.Unlock() | ||||||
| 
 | 
 | ||||||
| 	wg.Add(1) // barrier so Wait() doesn't unblock | 	wg.Add(1) // barrier so Wait() doesn't unblock | ||||||
| 
 | 
 | ||||||
| @ -22,6 +23,12 @@ func Restart(newCaddyfile Input) error { | |||||||
| 
 | 
 | ||||||
| 	err = Start(newCaddyfile) | 	err = Start(newCaddyfile) | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
|  | 		// revert to old Caddyfile | ||||||
|  | 		if oldErr := Start(oldCaddyfile); oldErr != nil { | ||||||
|  | 			log.Printf("[ERROR] Restart: in-process restart failed and cannot revert to old Caddyfile: %v", oldErr) | ||||||
|  | 		} else { | ||||||
|  | 			wg.Done() // take down our barrier | ||||||
|  | 		} | ||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user