internal/task/task_temporary_directory_reclaimer.go
Rama main · réplica de lectura del repositorio original.
package task
import (
"context"
"log/slog"
"github.com/yeomyeonggeori/blueclaw/internal/security"
)
type TaskTemporaryDirectoryReclaimer struct {
cleaner security.TaskTemporaryDirectoryCleaner
logger *slog.Logger
}
func NewTaskTemporaryDirectoryReclaimer(workspaceRootPath string, actors security.WorkspaceActorFactory, logger *slog.Logger) TaskTemporaryDirectoryReclaimer {
return TaskTemporaryDirectoryReclaimer{
cleaner: security.TaskTemporaryDirectoryCleaner{WorkspaceRootPath: workspaceRootPath, Actors: actors},
logger: logger,
}
}
func (reclaimer TaskTemporaryDirectoryReclaimer) Observe(taskRun TaskRun) {
if !taskRunHasEnded(taskRun.Status) {
return
}
errorValue := reclaimer.cleaner.RemoveTaskTemporaryDirectory(context.Background(), taskRun.RequesterPersonID, taskRun.TaskRunID)
if errorValue == nil {
return
}
reclaimer.activeLogger().Warn("task_temporary_directory.remove_failed",
"taskRunID", taskRun.TaskRunID,
"status", string(taskRun.Status),
"error", errorValue)
}
func taskRunHasEnded(status TaskStatus) bool {
return status == TaskStatusCompleted || status == TaskStatusFailed || status == TaskStatusCancelled
}
func (reclaimer TaskTemporaryDirectoryReclaimer) activeLogger() *slog.Logger {
if reclaimer.logger != nil {
return reclaimer.logger
}
return slog.Default()
}