Merge pull request #91 from Random-Liu/support-oom-event

Handle OOM event.
This commit is contained in:
Lantao Liu 2017-06-26 00:18:27 -07:00 committed by GitHub
commit 054bcfbf68
3 changed files with 30 additions and 7 deletions

View File

@ -120,6 +120,13 @@ func (c *criContainerdService) handleEvent(e *task.Event) {
return
}
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
}
}
}

View File

@ -100,13 +100,11 @@ func TestHandleEvent(t *testing.T) {
containerdErr: fmt.Errorf("random error"),
expected: &testMetadata,
},
"should not update state for non-exited events": {
"should not update state for irrelevant events": {
event: &task.Event{
ID: testID,
Type: task.Event_OOM,
Type: task.Event_PAUSED,
Pid: testPid,
ExitStatus: 1,
ExitedAt: testExitedAt,
},
metadata: &testMetadata,
containerdContainer: &testContainerdContainer,
@ -123,6 +121,22 @@ func TestHandleEvent(t *testing.T) {
containerdContainer: &testContainerdContainer,
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)
c := newTestCRIContainerdService()

View File

@ -50,6 +50,8 @@ const (
completeExitReason = "Completed"
// errorExitReason is the exit reason when container exits with code non-zero.
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 = 255
)