@ -1,6 +1,7 @@
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					package  actions 
 
					 
					 
					 
					package  actions 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					import  ( 
 
					 
					 
					 
					import  ( 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
						"errors" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						"github.com/containrrr/watchtower/internal/util" 
 
					 
					 
					 
						"github.com/containrrr/watchtower/internal/util" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						"github.com/containrrr/watchtower/pkg/container" 
 
					 
					 
					 
						"github.com/containrrr/watchtower/pkg/container" 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						"github.com/containrrr/watchtower/pkg/lifecycle" 
 
					 
					 
					 
						"github.com/containrrr/watchtower/pkg/lifecycle" 
 
				
			 
			
		
	
	
		
		
			
				
					
						
						
						
							
								 
							 
						
					 
					 
					@ -25,11 +26,13 @@ func Update(client container.Client, params types.UpdateParams) error {
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							return  err 
 
					 
					 
					 
							return  err 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						} 
 
					 
					 
					 
						} 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						for  i ,  container  :=  range  containers  { 
 
					 
					 
					 
						for  i ,  targetContainer  :=  range  containers  { 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
							stale ,  err  :=  client . IsContainerStale ( container ) 
 
					 
					 
					 
							stale ,  err  :=  client . IsContainerStale ( targetContainer ) 
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							if  stale  &&  ! params . NoRestart  &&  ! params . MonitorOnly  &&  ! targetContainer . HasImageInfo ( )  { 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
								err  =  errors . New ( "no available image info" ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					 
					 
					 
					 
							} 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							if  err  !=  nil  { 
 
					 
					 
					 
							if  err  !=  nil  { 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
								log . Infof ( "Unable to update container %s. Proceeding to next." ,  containers [ i ] . Name ( ) ) 
 
					 
					 
					 
								log . Infof ( "Unable to update container %q: %v. Proceeding to next." ,  containers [ i ] . Name ( ) ,  err ) 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
								log . Debug ( err ) 
 
					 
					 
					 
					 
				
			 
			
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
								stale  =  false 
 
					 
					 
					 
								stale  =  false 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							} 
 
					 
					 
					 
							} 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							containers [ i ] . Stale  =  stale 
 
					 
					 
					 
							containers [ i ] . Stale  =  stale 
 
				
			 
			
		
	
	
		
		
			
				
					
						
							
								 
							 
						
						
							
								 
							 
						
						
					 
					 
					@ -89,12 +92,12 @@ func stopStaleContainer(container container.Container, client container.Client,
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					func  restartContainersInSortedOrder ( containers  [ ] container . Container ,  client  container . Client ,  params  types . UpdateParams )  { 
 
					 
					 
					 
					func  restartContainersInSortedOrder ( containers  [ ] container . Container ,  client  container . Client ,  params  types . UpdateParams )  { 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						imageIDs  :=  make ( map [ string ] bool ) 
 
					 
					 
					 
						imageIDs  :=  make ( map [ string ] bool ) 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
					
 
					 
					 
					 
					
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						for  _ ,  c ontainer :=  range  containers  { 
 
					 
					 
					 
						for  _ ,  staleC ontainer :=  range  containers  { 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
							if  ! c ontainer. Stale  { 
 
					 
					 
					 
							if  ! staleC ontainer. Stale  { 
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
								continue 
 
					 
					 
					 
								continue 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							} 
 
					 
					 
					 
							} 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							restartStaleContainer ( c ontainer,  client ,  params ) 
 
					 
					 
					 
							restartStaleContainer ( staleC ontainer,  client ,  params ) 
 
				
			 
			
				
				
			
		
	
		
		
			
				
					
					 
					 
					 
							imageIDs [ c ontainer. ImageID ( ) ]  =  true 
 
					 
					 
					 
							imageIDs [ staleC ontainer. ImageID ( ) ]  =  true 
 
				
			 
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 
					 
					 
						} 
 
					 
					 
					 
						} 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
						if  params . Cleanup  { 
 
					 
					 
					 
						if  params . Cleanup  { 
 
				
			 
			
		
	
		
		
			
				
					
					 
					 
					 
							for  imageID  :=  range  imageIDs  { 
 
					 
					 
					 
							for  imageID  :=  range  imageIDs  {