Skip to content

Commit d0da3d1

Browse files
committed
sandbox: make event monitor in CRI independent
Signed-off-by: Abel Feng <[email protected]>
1 parent 9a2b855 commit d0da3d1

File tree

12 files changed

+483
-406
lines changed

12 files changed

+483
-406
lines changed

internal/cri/server/container_start.go

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,16 +23,16 @@ import (
2323
"io"
2424
"time"
2525

26-
containerd "github.com/containerd/containerd/v2/client"
27-
containerdio "github.com/containerd/containerd/v2/pkg/cio"
2826
"github.com/containerd/errdefs"
2927
"github.com/containerd/log"
3028
runtime "k8s.io/cri-api/pkg/apis/runtime/v1"
3129

30+
containerd "github.com/containerd/containerd/v2/client"
3231
cio "github.com/containerd/containerd/v2/internal/cri/io"
3332
containerstore "github.com/containerd/containerd/v2/internal/cri/store/container"
3433
sandboxstore "github.com/containerd/containerd/v2/internal/cri/store/sandbox"
3534
ctrdutil "github.com/containerd/containerd/v2/internal/cri/util"
35+
containerdio "github.com/containerd/containerd/v2/pkg/cio"
3636
cioutil "github.com/containerd/containerd/v2/pkg/ioutil"
3737
)
3838

@@ -171,7 +171,7 @@ func (c *criService) StartContainer(ctx context.Context, r *runtime.StartContain
171171
}
172172

173173
// It handles the TaskExit event and update container state after this.
174-
c.eventMonitor.startContainerExitMonitor(context.Background(), id, task.Pid(), exitCh)
174+
c.startContainerExitMonitor(context.Background(), id, task.Pid(), exitCh)
175175

176176
c.generateAndSendContainerEvent(ctx, id, sandboxID, runtime.ContainerEventType_CONTAINER_STARTED_EVENT)
177177

internal/cri/server/container_stop.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ func (c *criService) stopContainer(ctx context.Context, container containerstore
8989
}
9090
// Don't return for unknown state, some cleanup needs to be done.
9191
if state == runtime.ContainerState_CONTAINER_UNKNOWN {
92-
return cleanupUnknownContainer(ctx, id, container, sandboxID, c)
92+
return c.cleanupUnknownContainer(ctx, id, container, sandboxID)
9393
}
9494
return nil
9595
}
@@ -104,11 +104,11 @@ func (c *criService) stopContainer(ctx context.Context, container containerstore
104104
if !errdefs.IsNotFound(err) {
105105
return fmt.Errorf("failed to wait for task for %q: %w", id, err)
106106
}
107-
return cleanupUnknownContainer(ctx, id, container, sandboxID, c)
107+
return c.cleanupUnknownContainer(ctx, id, container, sandboxID)
108108
}
109109

110110
exitCtx, exitCancel := context.WithCancel(context.Background())
111-
stopCh := c.eventMonitor.startContainerExitMonitor(exitCtx, id, task.Pid(), exitCh)
111+
stopCh := c.startContainerExitMonitor(exitCtx, id, task.Pid(), exitCh)
112112
defer func() {
113113
exitCancel()
114114
// This ensures that exit monitor is stopped before
@@ -207,13 +207,13 @@ func (c *criService) waitContainerStop(ctx context.Context, container containers
207207
}
208208

209209
// cleanupUnknownContainer cleanup stopped container in unknown state.
210-
func cleanupUnknownContainer(ctx context.Context, id string, cntr containerstore.Container, sandboxID string, c *criService) error {
210+
func (c *criService) cleanupUnknownContainer(ctx context.Context, id string, cntr containerstore.Container, sandboxID string) error {
211211
// Reuse handleContainerExit to do the cleanup.
212-
return handleContainerExit(ctx, &eventtypes.TaskExit{
212+
return c.handleContainerExit(ctx, &eventtypes.TaskExit{
213213
ContainerID: id,
214214
ID: id,
215215
Pid: 0,
216216
ExitStatus: unknownExitCode,
217217
ExitedAt: protobuf.ToTimestamp(time.Now()),
218-
}, cntr, sandboxID, c)
218+
}, cntr, sandboxID)
219219
}

0 commit comments

Comments
 (0)