Merge pull request #91 from Random-Liu/support-oom-event
Handle OOM event.
This commit is contained in:
commit
054bcfbf68
@ -120,6 +120,13 @@ func (c *criContainerdService) handleEvent(e *task.Event) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
case task.Event_OOM:
|
case task.Event_OOM:
|
||||||
// TODO(random-liu): [P1] Handle OOM event.
|
err := c.containerStore.Update(e.ID, func(meta metadata.ContainerMetadata) (metadata.ContainerMetadata, error) {
|
||||||
|
meta.Reason = oomExitReason
|
||||||
|
return meta, nil
|
||||||
|
})
|
||||||
|
if err != nil && !metadata.IsNotExistError(err) {
|
||||||
|
glog.Errorf("Failed to update container %q oom: %v", e.ID, err)
|
||||||
|
return
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -100,13 +100,11 @@ func TestHandleEvent(t *testing.T) {
|
|||||||
containerdErr: fmt.Errorf("random error"),
|
containerdErr: fmt.Errorf("random error"),
|
||||||
expected: &testMetadata,
|
expected: &testMetadata,
|
||||||
},
|
},
|
||||||
"should not update state for non-exited events": {
|
"should not update state for irrelevant events": {
|
||||||
event: &task.Event{
|
event: &task.Event{
|
||||||
ID: testID,
|
ID: testID,
|
||||||
Type: task.Event_OOM,
|
Type: task.Event_PAUSED,
|
||||||
Pid: testPid,
|
Pid: testPid,
|
||||||
ExitStatus: 1,
|
|
||||||
ExitedAt: testExitedAt,
|
|
||||||
},
|
},
|
||||||
metadata: &testMetadata,
|
metadata: &testMetadata,
|
||||||
containerdContainer: &testContainerdContainer,
|
containerdContainer: &testContainerdContainer,
|
||||||
@ -123,6 +121,22 @@ func TestHandleEvent(t *testing.T) {
|
|||||||
containerdContainer: &testContainerdContainer,
|
containerdContainer: &testContainerdContainer,
|
||||||
expected: &testFinishedMetadata,
|
expected: &testFinishedMetadata,
|
||||||
},
|
},
|
||||||
|
"should update exit reason when container is oom killed": {
|
||||||
|
event: &task.Event{
|
||||||
|
ID: testID,
|
||||||
|
Type: task.Event_OOM,
|
||||||
|
},
|
||||||
|
metadata: &testMetadata,
|
||||||
|
expected: &metadata.ContainerMetadata{
|
||||||
|
ID: testID,
|
||||||
|
Name: "test-name",
|
||||||
|
SandboxID: "test-sandbox-id",
|
||||||
|
Pid: testPid,
|
||||||
|
CreatedAt: testCreatedAt,
|
||||||
|
StartedAt: testStartedAt,
|
||||||
|
Reason: oomExitReason,
|
||||||
|
},
|
||||||
|
},
|
||||||
} {
|
} {
|
||||||
t.Logf("TestCase %q", desc)
|
t.Logf("TestCase %q", desc)
|
||||||
c := newTestCRIContainerdService()
|
c := newTestCRIContainerdService()
|
||||||
|
@ -50,6 +50,8 @@ const (
|
|||||||
completeExitReason = "Completed"
|
completeExitReason = "Completed"
|
||||||
// errorExitReason is the exit reason when container exits with code non-zero.
|
// errorExitReason is the exit reason when container exits with code non-zero.
|
||||||
errorExitReason = "Error"
|
errorExitReason = "Error"
|
||||||
|
// oomExitReason is the exit reason when process in container is oom killed.
|
||||||
|
oomExitReason = "OOMKilled"
|
||||||
// unknownExitCode is the exit code when exit reason is unknown.
|
// unknownExitCode is the exit code when exit reason is unknown.
|
||||||
unknownExitCode = 255
|
unknownExitCode = 255
|
||||||
)
|
)
|
||||||
|
Loading…
Reference in New Issue
Block a user