diff --git a/pkg/kubelet/logs/container_log_manager.go b/pkg/kubelet/logs/container_log_manager.go index 29dffdf3c54..a3e5f46d9c6 100644 --- a/pkg/kubelet/logs/container_log_manager.go +++ b/pkg/kubelet/logs/container_log_manager.go @@ -53,7 +53,6 @@ const ( // // Implementation is thread-safe. type ContainerLogManager interface { - // TODO(random-liu): Add RotateLogs function and call it under disk pressure. // Start container log manager. Start() // Clean removes all logs of specified container. @@ -73,7 +72,6 @@ type LogRotatePolicy struct { // GetAllLogs gets all inuse (rotated/compressed) logs for a specific container log. // Returned logs are sorted in oldest to newest order. -// TODO(#59902): Leverage this function to support log rotation in `kubectl logs`. func GetAllLogs(log string) ([]string, error) { // pattern is used to match all rotated files. pattern := fmt.Sprintf("%s.*", log) @@ -86,47 +84,6 @@ func GetAllLogs(log string) ([]string, error) { return append(inuse, log), nil } -// compressReadCloser wraps gzip.Reader with a function to close file handler. -type compressReadCloser struct { - f *os.File - *gzip.Reader -} - -func (rc *compressReadCloser) Close() error { - ferr := rc.f.Close() - rerr := rc.Reader.Close() - if ferr != nil { - return ferr - } - if rerr != nil { - return rerr - } - return nil -} - -// UncompressLog compresses a compressed log and return a readcloser for the -// stream of the uncompressed content. -// TODO(#59902): Leverage this function to support log rotation in `kubectl logs`. -func UncompressLog(log string) (_ io.ReadCloser, retErr error) { - if !strings.HasSuffix(log, compressSuffix) { - return nil, fmt.Errorf("log is not compressed") - } - f, err := os.Open(log) - if err != nil { - return nil, fmt.Errorf("failed to open log: %w", err) - } - defer func() { - if retErr != nil { - f.Close() - } - }() - r, err := gzip.NewReader(f) - if err != nil { - return nil, fmt.Errorf("failed to create gzip reader: %w", err) - } - return &compressReadCloser{f: f, Reader: r}, nil -} - // parseMaxSize parses quantity string to int64 max size in bytes. func parseMaxSize(size string) (int64, error) { quantity, err := resource.ParseQuantity(size) @@ -236,7 +193,6 @@ func (c *containerLogManager) rotateLogs(ctx context.Context) error { c.mutex.Lock() defer c.mutex.Unlock() klog.V(4).InfoS("Starting container log rotation sequence") - // TODO(#59998): Use kubelet pod cache. containers, err := c.runtimeService.ListContainers(ctx, &runtimeapi.ContainerFilter{}) if err != nil { return fmt.Errorf("failed to list containers: %w", err) diff --git a/pkg/kubelet/logs/container_log_manager_test.go b/pkg/kubelet/logs/container_log_manager_test.go index c88ad15f463..3760d1c727f 100644 --- a/pkg/kubelet/logs/container_log_manager_test.go +++ b/pkg/kubelet/logs/container_log_manager_test.go @@ -17,10 +17,8 @@ limitations under the License. package logs import ( - "bytes" "context" "fmt" - "io" "os" "path/filepath" "sync" @@ -386,14 +384,6 @@ func TestCompressLog(t *testing.T) { assert.Error(t, err, "temporary log should be renamed") _, err = os.Stat(testLog) assert.Error(t, err, "original log should be removed") - - rc, err := UncompressLog(testLog + compressSuffix) - require.NoError(t, err) - defer rc.Close() - var buf bytes.Buffer - _, err = io.Copy(&buf, rc) - require.NoError(t, err) - assert.Equal(t, testContent, buf.String()) } func TestRotateLatestLog(t *testing.T) {