sandbox: fix sandbox logPath when crio restarts
We weren't setting the logPath of the sandbox when restoring sandboxes and containers upon a crio restarts. That means that if you restart CRI-O you get sandboxes with empty logPath. That means that when you're starting a container in a restored sandbox you get a relative logPath for the container: sandboxLogPath: "/var/something" - restore sandboxLogPath: "" - create container foo containerLogPath: "foo_attempt.log" With this patch we actually get an absolute path (which is correct): sandboxLogPath: "/var/something" - restore sandboxLogPath: "/var/something" - create container foo containerLogPath: "/var/something/foo_attempt.log" Signed-off-by: Antonio Murdaca <runcom@redhat.com>
This commit is contained in:
parent
28997fe4cd
commit
a0157078ad
4 changed files with 21 additions and 9 deletions
|
@ -773,7 +773,7 @@ func (s *Server) setupOCIHooks(specgen *generate.Generator, sb *sandbox.Sandbox,
|
|||
}
|
||||
return nil
|
||||
}
|
||||
func (s *Server) createSandboxContainer(ctx context.Context, containerID string, containerName string, sb *sandbox.Sandbox, SandboxConfig *pb.PodSandboxConfig, containerConfig *pb.ContainerConfig) (*oci.Container, error) {
|
||||
func (s *Server) createSandboxContainer(ctx context.Context, containerID string, containerName string, sb *sandbox.Sandbox, sandboxConfig *pb.PodSandboxConfig, containerConfig *pb.ContainerConfig) (*oci.Container, error) {
|
||||
if sb == nil {
|
||||
return nil, errors.New("createSandboxContainer needs a sandbox")
|
||||
}
|
||||
|
@ -871,15 +871,19 @@ func (s *Server) createSandboxContainer(ctx context.Context, containerID string,
|
|||
|
||||
}
|
||||
|
||||
logPath := containerConfig.LogPath
|
||||
logPath := containerConfig.GetLogPath()
|
||||
sboxLogDir := sandboxConfig.GetLogDirectory()
|
||||
if sboxLogDir == "" {
|
||||
sboxLogDir = sb.LogDir()
|
||||
}
|
||||
if logPath == "" {
|
||||
// TODO: Should we use sandboxConfig.GetLogDirectory() here?
|
||||
logPath = filepath.Join(sb.LogDir(), containerID+".log")
|
||||
logPath = filepath.Join(sboxLogDir, containerID+".log")
|
||||
}
|
||||
if !filepath.IsAbs(logPath) {
|
||||
// XXX: It's not really clear what this should be versus the sbox logDirectory.
|
||||
logrus.Warnf("requested logPath for ctr id %s is a relative path: %s", containerID, logPath)
|
||||
logPath = filepath.Join(sb.LogDir(), logPath)
|
||||
logPath = filepath.Join(sboxLogDir, logPath)
|
||||
logrus.Warnf("logPath from relative path is now absolute: %s", logPath)
|
||||
}
|
||||
|
||||
// Handle https://issues.k8s.io/44043
|
||||
|
@ -888,8 +892,8 @@ func (s *Server) createSandboxContainer(ctx context.Context, containerID string,
|
|||
}
|
||||
|
||||
logrus.WithFields(logrus.Fields{
|
||||
"sbox.logdir": sb.LogDir(),
|
||||
"ctr.logfile": containerConfig.LogPath,
|
||||
"sbox.logdir": sboxLogDir,
|
||||
"ctr.logfile": containerConfig.GetLogPath(),
|
||||
"log_path": logPath,
|
||||
}).Debugf("setting container's log_path")
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue