diff --git a/app/vmselect/netstorage/netstorage.go b/app/vmselect/netstorage/netstorage.go index ba520f6e1..b00318a27 100644 --- a/app/vmselect/netstorage/netstorage.go +++ b/app/vmselect/netstorage/netstorage.go @@ -2537,7 +2537,7 @@ func sendAccountIDProjectID(bc *handshake.BufferedConn, accountID, projectID uin } func readBytes(buf []byte, bc *handshake.BufferedConn, maxDataSize int) ([]byte, error) { - buf = bytesutil.ResizeNoCopy(buf, 8) + buf = bytesutil.ResizeNoCopyMayOverallocate(buf, 8) if n, err := io.ReadFull(bc, buf); err != nil { return buf, fmt.Errorf("cannot read %d bytes with data size: %w; read only %d bytes", len(buf), err, n) } @@ -2545,7 +2545,7 @@ func readBytes(buf []byte, bc *handshake.BufferedConn, maxDataSize int) ([]byte, if dataSize > uint64(maxDataSize) { return buf, fmt.Errorf("too big data size: %d; it mustn't exceed %d bytes", dataSize, maxDataSize) } - buf = bytesutil.ResizeNoCopy(buf, int(dataSize)) + buf = bytesutil.ResizeNoCopyMayOverallocate(buf, int(dataSize)) if dataSize == 0 { return buf, nil } diff --git a/app/vmstorage/transport/server.go b/app/vmstorage/transport/server.go index ce779bf7c..a47f20cf3 100644 --- a/app/vmstorage/transport/server.go +++ b/app/vmstorage/transport/server.go @@ -321,7 +321,7 @@ func (ctx *vmselectRequestCtx) readTimeRange() (storage.TimeRange, error) { } func (ctx *vmselectRequestCtx) readUint32() (uint32, error) { - ctx.sizeBuf = bytesutil.ResizeNoCopy(ctx.sizeBuf, 4) + ctx.sizeBuf = bytesutil.ResizeNoCopyMayOverallocate(ctx.sizeBuf, 4) if _, err := io.ReadFull(ctx.bc, ctx.sizeBuf); err != nil { if err == io.EOF { return 0, err @@ -333,7 +333,7 @@ func (ctx *vmselectRequestCtx) readUint32() (uint32, error) { } func (ctx *vmselectRequestCtx) readUint64() (uint64, error) { - ctx.sizeBuf = bytesutil.ResizeNoCopy(ctx.sizeBuf, 8) + ctx.sizeBuf = bytesutil.ResizeNoCopyMayOverallocate(ctx.sizeBuf, 8) if _, err := io.ReadFull(ctx.bc, ctx.sizeBuf); err != nil { if err == io.EOF { return 0, err @@ -371,7 +371,7 @@ func (ctx *vmselectRequestCtx) readSearchQuery() error { } func (ctx *vmselectRequestCtx) readDataBufBytes(maxDataSize int) error { - ctx.sizeBuf = bytesutil.ResizeNoCopy(ctx.sizeBuf, 8) + ctx.sizeBuf = bytesutil.ResizeNoCopyMayOverallocate(ctx.sizeBuf, 8) if _, err := io.ReadFull(ctx.bc, ctx.sizeBuf); err != nil { if err == io.EOF { return err @@ -382,7 +382,7 @@ func (ctx *vmselectRequestCtx) readDataBufBytes(maxDataSize int) error { if dataSize > uint64(maxDataSize) { return fmt.Errorf("too big data size: %d; it mustn't exceed %d bytes", dataSize, maxDataSize) } - ctx.dataBuf = bytesutil.ResizeNoCopy(ctx.dataBuf, int(dataSize)) + ctx.dataBuf = bytesutil.ResizeNoCopyMayOverallocate(ctx.dataBuf, int(dataSize)) if dataSize == 0 { return nil } @@ -393,7 +393,7 @@ func (ctx *vmselectRequestCtx) readDataBufBytes(maxDataSize int) error { } func (ctx *vmselectRequestCtx) readBool() (bool, error) { - ctx.dataBuf = bytesutil.ResizeNoCopy(ctx.dataBuf, 1) + ctx.dataBuf = bytesutil.ResizeNoCopyMayOverallocate(ctx.dataBuf, 1) if _, err := io.ReadFull(ctx.bc, ctx.dataBuf); err != nil { if err == io.EOF { return false, err @@ -405,7 +405,7 @@ func (ctx *vmselectRequestCtx) readBool() (bool, error) { } func (ctx *vmselectRequestCtx) readByte() (byte, error) { - ctx.dataBuf = bytesutil.ResizeNoCopy(ctx.dataBuf, 1) + ctx.dataBuf = bytesutil.ResizeNoCopyMayOverallocate(ctx.dataBuf, 1) if _, err := io.ReadFull(ctx.bc, ctx.dataBuf); err != nil { if err == io.EOF { return 0, err diff --git a/lib/protoparser/clusternative/streamparser.go b/lib/protoparser/clusternative/streamparser.go index 613214ed2..623172cd9 100644 --- a/lib/protoparser/clusternative/streamparser.go +++ b/lib/protoparser/clusternative/streamparser.go @@ -65,7 +65,7 @@ func ParseStream(bc *handshake.BufferedConn, callback func(rows []storage.Metric func readBlock(dst []byte, bc *handshake.BufferedConn, isReadOnly func() bool) ([]byte, error) { sizeBuf := auxBufPool.Get() defer auxBufPool.Put(sizeBuf) - sizeBuf.B = bytesutil.ResizeNoCopy(sizeBuf.B, 8) + sizeBuf.B = bytesutil.ResizeNoCopyMayOverallocate(sizeBuf.B, 8) if _, err := io.ReadFull(bc, sizeBuf.B); err != nil { if err != io.EOF { readErrors.Inc() @@ -79,7 +79,7 @@ func readBlock(dst []byte, bc *handshake.BufferedConn, isReadOnly func() bool) ( return dst, fmt.Errorf("too big packet size: %d; shouldn't exceed %d", packetSize, consts.MaxInsertPacketSize) } dstLen := len(dst) - dst = bytesutil.ResizeWithCopy(dst, dstLen+int(packetSize)) + dst = bytesutil.ResizeWithCopyMayOverallocate(dst, dstLen+int(packetSize)) if n, err := io.ReadFull(bc, dst[dstLen:]); err != nil { readErrors.Inc() return dst, fmt.Errorf("cannot read packet with size %d bytes: %w; read only %d bytes", packetSize, err, n) diff --git a/lib/storage/metric_name.go b/lib/storage/metric_name.go index 5b60035fe..5016561e9 100644 --- a/lib/storage/metric_name.go +++ b/lib/storage/metric_name.go @@ -438,7 +438,7 @@ func (mn *MetricName) MarshalNoAccountIDProjectID(dst []byte) []byte { tag := &mn.Tags[i] requiredSize += len(tag.Key) + len(tag.Value) + 2 } - dst = bytesutil.ResizeWithCopy(dst, requiredSize)[:dstLen] + dst = bytesutil.ResizeWithCopyMayOverallocate(dst, requiredSize)[:dstLen] dst = marshalTagValue(dst, mn.MetricGroup) tags := mn.Tags