Merge pull request #8777 from yankay/fix-restart-with-tty

Fix the automatically restart issue when using LogURI and Terminal together
This commit is contained in:
Phil Estes 2023-07-06 10:51:11 -04:00 committed by GitHub
commit 466d884518
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 24 additions and 2 deletions

View File

@ -241,6 +241,20 @@ func LogURI(uri *url.URL) Creator {
} }
} }
// TerminalLogURI provides the raw logging URI
// as well as sets the terminal option to true.
func TerminalLogURI(uri *url.URL) Creator {
return func(_ string) (IO, error) {
return &logURI{
config: Config{
Stdout: uri.String(),
Stderr: uri.String(),
Terminal: true,
},
}, nil
}
}
// BinaryIO forwards container STDOUT|STDERR directly to a logging binary // BinaryIO forwards container STDOUT|STDERR directly to a logging binary
func BinaryIO(binary string, args map[string]string) Creator { func BinaryIO(binary string, args map[string]string) Creator {
return func(_ string) (IO, error) { return func(_ string) (IO, error) {

View File

@ -44,13 +44,21 @@ type startChange struct {
func (s *startChange) apply(ctx context.Context, client *containerd.Client) error { func (s *startChange) apply(ctx context.Context, client *containerd.Client) error {
log := cio.NullIO log := cio.NullIO
spec, err := s.container.Spec(ctx)
if err != nil {
return err
}
useTTY := spec.Process.Terminal
if s.logURI != "" { if s.logURI != "" {
uri, err := url.Parse(s.logURI) uri, err := url.Parse(s.logURI)
if err != nil { if err != nil {
return fmt.Errorf("failed to parse %v into url: %w", s.logURI, err) return fmt.Errorf("failed to parse %v into url: %w", s.logURI, err)
} }
log = cio.LogURI(uri) if useTTY {
log = cio.TerminalLogURI(uri)
} else {
log = cio.LogURI(uri)
}
} }
if s.count > 0 { if s.count > 0 {