From 463bdab463884ac97c1cab8f4df3d121ee310ee3 Mon Sep 17 00:00:00 2001 From: Tonis Tiigi Date: Mon, 9 Oct 2023 15:11:22 -0700 Subject: [PATCH] uploadprovider: avoid too big grpc messages on tar upload Signed-off-by: Tonis Tiigi --- session/upload/uploadprovider/provider.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/session/upload/uploadprovider/provider.go b/session/upload/uploadprovider/provider.go index fe7b26a20..010959f43 100644 --- a/session/upload/uploadprovider/provider.go +++ b/session/upload/uploadprovider/provider.go @@ -59,6 +59,20 @@ type writer struct { } func (w *writer) Write(dt []byte) (int, error) { + // avoid sending too big messages on grpc stream + const maxChunkSize = 3 * 1024 * 1024 + if len(dt) > maxChunkSize { + n1, err := w.Write(dt[:maxChunkSize]) + if err != nil { + return n1, err + } + dt = dt[maxChunkSize:] + var n2 int + if n2, err := w.Write(dt); err != nil { + return n1 + n2, err + } + return n1 + n2, nil + } if err := w.SendMsg(&upload.BytesMessage{Data: dt}); err != nil { return 0, err }