Merge pull request #13320 from yujuhong/fix_restarts

Auto commit by PR queue bot
This commit is contained in:
k8s-merge-robot 2015-08-28 23:00:11 -07:00
commit 093614ec32

View File

@ -372,12 +372,16 @@ func (dm *DockerManager) GetPodStatus(pod *api.Pod) (*api.PodStatus, error) {
oldStatuses := make(map[string]api.ContainerStatus, len(pod.Spec.Containers)) oldStatuses := make(map[string]api.ContainerStatus, len(pod.Spec.Containers))
lastObservedTime := make(map[string]util.Time, len(pod.Spec.Containers)) lastObservedTime := make(map[string]util.Time, len(pod.Spec.Containers))
// Record the last time we observed a container termination.
for _, status := range pod.Status.ContainerStatuses { for _, status := range pod.Status.ContainerStatuses {
oldStatuses[status.Name] = status oldStatuses[status.Name] = status
if status.LastTerminationState.Terminated != nil { if status.LastTerminationState.Terminated != nil {
timestamp, ok := lastObservedTime[status.Name]
if !ok || timestamp.Before(status.LastTerminationState.Terminated.FinishedAt) {
lastObservedTime[status.Name] = status.LastTerminationState.Terminated.FinishedAt lastObservedTime[status.Name] = status.LastTerminationState.Terminated.FinishedAt
} }
} }
}
var podStatus api.PodStatus var podStatus api.PodStatus
statuses := make(map[string]*api.ContainerStatus, len(pod.Spec.Containers)) statuses := make(map[string]*api.ContainerStatus, len(pod.Spec.Containers))
@ -435,21 +439,20 @@ func (dm *DockerManager) GetPodStatus(pod *api.Pod) (*api.PodStatus, error) {
// Populate the last termination state. // Populate the last termination state.
containerStatus.LastTerminationState = *terminationState containerStatus.LastTerminationState = *terminationState
} }
count := true if terminationState == nil {
// Not a dead container.
continue
}
// Only count dead containers terminated after last time we observed, // Only count dead containers terminated after last time we observed,
if lastObservedTime, ok := lastObservedTime[dockerContainerName]; ok { lastObservedTime, ok := lastObservedTime[dockerContainerName]
if terminationState != nil && terminationState.Terminated.FinishedAt.After(lastObservedTime.Time) { if !ok || terminationState.Terminated.FinishedAt.After(lastObservedTime.Time) {
count = false containerStatus.RestartCount += 1
} else { } else {
// The container finished before the last observation. No // The container finished before the last observation. No
// need to examine/count the older containers. Mark the // need to examine/count the older containers. Mark the
// container name as done. // container name as done.
containerDone.Insert(dockerContainerName) containerDone.Insert(dockerContainerName)
} }
}
if count {
containerStatus.RestartCount += 1
}
continue continue
} }