Skip to content

Commit

Permalink
Replace io.ReadAll with safeio.ReadAllLimit
Browse files Browse the repository at this point in the history
Replace io.ReadAll with safeio.ReadAllLimit so that custom-vet-check.sh
[^1] doesn't complain when cilium-cli gets merged with cilium repo [^2].

For Cilium pod logs, set the limit to 1GB. 1GB of Cilium pod logs ought
to be enough for anybody.

[^1]: https://github.com/cilium/cilium/blob/main/contrib/scripts/custom-vet-check.sh
[^2]: cilium/design-cfps#9

Signed-off-by: Michi Mutsuzaki <[email protected]>
  • Loading branch information
michi-covalent committed Jul 15, 2024
1 parent 49e3a19 commit b5061e4
Show file tree
Hide file tree
Showing 5 changed files with 91 additions and 12 deletions.
4 changes: 2 additions & 2 deletions cli/version.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,11 @@ package cli

import (
"fmt"
"io"
"net/http"
"runtime"
"strings"

"github.com/cilium/cilium/pkg/safeio"
"github.com/spf13/cobra"

"github.com/cilium/cilium-cli/defaults"
Expand All @@ -22,7 +22,7 @@ func getLatestStableVersion() string {
}
defer resp.Body.Close()

b, err := io.ReadAll(resp.Body)
b, err := safeio.ReadAllLimit(resp.Body, safeio.KB)
if err != nil {
return "unknown"
}
Expand Down
18 changes: 9 additions & 9 deletions k8s/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,12 @@ import (
"time"

"github.com/blang/semver/v4"
"github.com/cilium/cilium/api/v1/models"
ciliumv2 "github.com/cilium/cilium/pkg/k8s/apis/cilium.io/v2"
ciliumv2alpha1 "github.com/cilium/cilium/pkg/k8s/apis/cilium.io/v2alpha1"
ciliumClientset "github.com/cilium/cilium/pkg/k8s/client/clientset/versioned"
"github.com/cilium/cilium/pkg/safeio"
"github.com/cilium/cilium/pkg/versioncheck"
"helm.sh/helm/v3/pkg/action"
"helm.sh/helm/v3/pkg/cli/output"
appsv1 "k8s.io/api/apps/v1"
Expand All @@ -44,12 +50,6 @@ import (
clientcmdapi "k8s.io/client-go/tools/clientcmd/api"
"k8s.io/client-go/transport/spdy"

"github.com/cilium/cilium/api/v1/models"
ciliumv2 "github.com/cilium/cilium/pkg/k8s/apis/cilium.io/v2"
ciliumv2alpha1 "github.com/cilium/cilium/pkg/k8s/apis/cilium.io/v2alpha1"
ciliumClientset "github.com/cilium/cilium/pkg/k8s/client/clientset/versioned"
"github.com/cilium/cilium/pkg/versioncheck"

"github.com/cilium/cilium-cli/defaults"
)

Expand Down Expand Up @@ -320,8 +320,8 @@ func (c *Client) CiliumLogs(ctx context.Context, namespace, pod string, since ti
}
defer podLogs.Close()

log, err := io.ReadAll(podLogs)
if err != nil {
log, err := safeio.ReadAllLimit(podLogs, safeio.GB)
if err != nil && !errors.Is(err, safeio.ErrLimitReached) {
return "", fmt.Errorf("error reading log: %w", err)
}

Expand Down Expand Up @@ -827,7 +827,7 @@ func stream(conn httpstream.Connection, port uint16, handler func(io.ReadWriteCl
errorDone := make(chan error)
go func() {
defer close(errorDone)
message, err := io.ReadAll(errorStream)
message, err := safeio.ReadAllLimit(errorStream, safeio.KB)
switch {
case err != nil:
errorDone <- fmt.Errorf("reading from error stream: %w", err)
Expand Down
3 changes: 2 additions & 1 deletion sysdump/sysdump_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ import (
"github.com/cilium/cilium/api/v1/models"
ciliumv2 "github.com/cilium/cilium/pkg/k8s/apis/cilium.io/v2"
ciliumv2alpha1 "github.com/cilium/cilium/pkg/k8s/apis/cilium.io/v2alpha1"
"github.com/cilium/cilium/pkg/safeio"
"github.com/stretchr/testify/assert"
appsv1 "k8s.io/api/apps/v1"
batchv1 "k8s.io/api/batch/v1"
Expand Down Expand Up @@ -184,7 +185,7 @@ func TestKVStoreTask(t *testing.T) {
})
fd, err := os.Open(path.Join(collector.sysdumpDir, "kvstore-heartbeat.json"))
assert.NoError(err)
data, err := io.ReadAll(fd)
data, err := safeio.ReadAllLimit(fd, safeio.KB)
assert.NoError(err)
assert.Equal([]byte("{}"), data)
}
Expand Down
77 changes: 77 additions & 0 deletions vendor/github.com/cilium/cilium/pkg/safeio/safeio.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions vendor/modules.txt
Original file line number Diff line number Diff line change
Expand Up @@ -211,6 +211,7 @@ github.com/cilium/cilium/pkg/policy/types
github.com/cilium/cilium/pkg/promise
github.com/cilium/cilium/pkg/rate
github.com/cilium/cilium/pkg/rate/metrics
github.com/cilium/cilium/pkg/safeio
github.com/cilium/cilium/pkg/safetime
github.com/cilium/cilium/pkg/service/store
github.com/cilium/cilium/pkg/slices
Expand Down

0 comments on commit b5061e4

Please sign in to comment.