fix nil pointer panic for monitor
Signed-off-by: Ye Sijun <junnplus@gmail.com>
This commit is contained in:
		| @@ -214,22 +214,31 @@ func (m *monitor) monitor(ctx context.Context) ([]change, error) { | |||||||
| 	} | 	} | ||||||
| 	var changes []change | 	var changes []change | ||||||
| 	for _, c := range containers { | 	for _, c := range containers { | ||||||
|  | 		var ( | ||||||
|  | 			task   containerd.Task | ||||||
|  | 			status containerd.Status | ||||||
|  | 			err    error | ||||||
|  | 		) | ||||||
| 		labels, err := c.Labels(ctx) | 		labels, err := c.Labels(ctx) | ||||||
| 		if err != nil { | 		if err != nil { | ||||||
| 			return nil, err | 			return nil, err | ||||||
| 		} | 		} | ||||||
| 		desiredStatus := containerd.ProcessStatus(labels[restart.StatusLabel]) | 		desiredStatus := containerd.ProcessStatus(labels[restart.StatusLabel]) | ||||||
| 		task, err := c.Task(ctx, nil) | 		if task, err = c.Task(ctx, nil); err == nil { | ||||||
| 		if err != nil && desiredStatus == containerd.Stopped { | 			if status, err = task.Status(ctx); err == nil { | ||||||
| 			continue |  | ||||||
| 		} |  | ||||||
| 		status, err := task.Status(ctx) |  | ||||||
| 		if err != nil && desiredStatus == containerd.Stopped { |  | ||||||
| 			continue |  | ||||||
| 		} |  | ||||||
| 				if desiredStatus == status.Status { | 				if desiredStatus == status.Status { | ||||||
| 					continue | 					continue | ||||||
| 				} | 				} | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  |  | ||||||
|  | 		// Task or Status return error, only desired to stop | ||||||
|  | 		if err != nil { | ||||||
|  | 			logrus.WithError(err).Error("monitor") | ||||||
|  | 			if desiredStatus != containerd.Stopped { | ||||||
|  | 				continue | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  |  | ||||||
| 		switch desiredStatus { | 		switch desiredStatus { | ||||||
| 		case containerd.Running: | 		case containerd.Running: | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Ye Sijun
					Ye Sijun