mirror of
https://github.com/seaweedfs/seaweedfs.git
synced 2025-11-24 08:46:54 +08:00
refactor
Some checks failed
go: build dev binaries / cleanup (push) Has been cancelled
docker: build dev containers / build-dev-containers (push) Has been cancelled
End to End / FUSE Mount (push) Has been cancelled
go: build binary / Build (push) Has been cancelled
Ceph S3 tests / Ceph S3 tests (push) Has been cancelled
test s3 over https using aws-cli / awscli-tests (push) Has been cancelled
go: build dev binaries / build_dev_linux_windows (amd64, linux) (push) Has been cancelled
go: build dev binaries / build_dev_linux_windows (amd64, windows) (push) Has been cancelled
go: build dev binaries / build_dev_darwin (amd64, darwin) (push) Has been cancelled
go: build dev binaries / build_dev_darwin (arm64, darwin) (push) Has been cancelled
Some checks failed
go: build dev binaries / cleanup (push) Has been cancelled
docker: build dev containers / build-dev-containers (push) Has been cancelled
End to End / FUSE Mount (push) Has been cancelled
go: build binary / Build (push) Has been cancelled
Ceph S3 tests / Ceph S3 tests (push) Has been cancelled
test s3 over https using aws-cli / awscli-tests (push) Has been cancelled
go: build dev binaries / build_dev_linux_windows (amd64, linux) (push) Has been cancelled
go: build dev binaries / build_dev_linux_windows (amd64, windows) (push) Has been cancelled
go: build dev binaries / build_dev_darwin (amd64, darwin) (push) Has been cancelled
go: build dev binaries / build_dev_darwin (arm64, darwin) (push) Has been cancelled
This commit is contained in:
@@ -34,15 +34,24 @@ func (n *Needle) Append(w backend.BackendStorageFile, version Version) (offset u
|
||||
|
||||
switch version {
|
||||
case Version1:
|
||||
return writeNeedleV1(w, n, offset, bytesBuffer)
|
||||
size, actualSize, err = writeNeedleV1(n, offset, bytesBuffer)
|
||||
case Version2:
|
||||
return writeNeedleV2(w, n, offset, bytesBuffer)
|
||||
size, actualSize, err = writeNeedleV2(n, offset, bytesBuffer)
|
||||
case Version3:
|
||||
return writeNeedleV3(w, n, offset, bytesBuffer)
|
||||
size, actualSize, err = writeNeedleV3(n, offset, bytesBuffer)
|
||||
default:
|
||||
err = fmt.Errorf("unsupported version: %d", version)
|
||||
return
|
||||
}
|
||||
|
||||
if err == nil {
|
||||
_, err = w.WriteAt(bytesBuffer.Bytes(), int64(offset))
|
||||
if err != nil {
|
||||
err = fmt.Errorf("failed to write %d bytes to %s at offset %d: %w", actualSize, w.Name(), offset, err)
|
||||
}
|
||||
}
|
||||
|
||||
return offset, size, actualSize, err
|
||||
}
|
||||
|
||||
func WriteNeedleBlob(w backend.BackendStorageFile, dataSlice []byte, size Size, appendAtNs uint64, version Version) (offset uint64, err error) {
|
||||
|
||||
@@ -107,14 +107,13 @@ func TestWriteNeedle_CompatibilityWithLegacy(t *testing.T) {
|
||||
// New
|
||||
newBuf := &bytes.Buffer{}
|
||||
offset := uint64(0)
|
||||
dummyWriter := &mockBackendWriter{buf: &bytes.Buffer{}} // not used for actual output
|
||||
switch version {
|
||||
case Version1:
|
||||
_, _, _, err = writeNeedleV1(dummyWriter, n, offset, newBuf)
|
||||
_, _, err = writeNeedleV1(n, offset, newBuf)
|
||||
case Version2:
|
||||
_, _, _, err = writeNeedleV2(dummyWriter, n, offset, newBuf)
|
||||
_, _, err = writeNeedleV2(n, offset, newBuf)
|
||||
case Version3:
|
||||
_, _, _, err = writeNeedleV3(dummyWriter, n, offset, newBuf)
|
||||
_, _, err = writeNeedleV3(n, offset, newBuf)
|
||||
}
|
||||
if err != nil {
|
||||
t.Fatalf("writeNeedleV%d failed: %v", version, err)
|
||||
|
||||
@@ -2,14 +2,12 @@ package needle
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
|
||||
"github.com/seaweedfs/seaweedfs/weed/storage/backend"
|
||||
. "github.com/seaweedfs/seaweedfs/weed/storage/types"
|
||||
"github.com/seaweedfs/seaweedfs/weed/util"
|
||||
)
|
||||
|
||||
func writeNeedleV1(w backend.BackendStorageFile, n *Needle, offset uint64, bytesBuffer *bytes.Buffer) (offsetOut uint64, size Size, actualSize int64, err error) {
|
||||
func writeNeedleV1(n *Needle, offset uint64, bytesBuffer *bytes.Buffer) (size Size, actualSize int64, err error) {
|
||||
bytesBuffer.Reset()
|
||||
header := make([]byte, NeedleHeaderSize)
|
||||
CookieToBytes(header[0:CookieSize], n.Cookie)
|
||||
@@ -24,10 +22,5 @@ func writeNeedleV1(w backend.BackendStorageFile, n *Needle, offset uint64, bytes
|
||||
util.Uint32toBytes(header[0:NeedleChecksumSize], uint32(n.Checksum))
|
||||
bytesBuffer.Write(header[0 : NeedleChecksumSize+padding])
|
||||
|
||||
_, err = w.WriteAt(bytesBuffer.Bytes(), int64(offset))
|
||||
if err != nil {
|
||||
err = fmt.Errorf("failed to write %d bytes to %s at offset %d: %w", actualSize, w.Name(), offset, err)
|
||||
}
|
||||
|
||||
return offset, size, actualSize, err
|
||||
return size, actualSize, nil
|
||||
}
|
||||
|
||||
@@ -2,15 +2,13 @@ package needle
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"math"
|
||||
|
||||
"github.com/seaweedfs/seaweedfs/weed/storage/backend"
|
||||
. "github.com/seaweedfs/seaweedfs/weed/storage/types"
|
||||
"github.com/seaweedfs/seaweedfs/weed/util"
|
||||
)
|
||||
|
||||
func writeNeedleV2(w backend.BackendStorageFile, n *Needle, offset uint64, bytesBuffer *bytes.Buffer) (offsetOut uint64, size Size, actualSize int64, err error) {
|
||||
func writeNeedleV2(n *Needle, offset uint64, bytesBuffer *bytes.Buffer) (size Size, actualSize int64, err error) {
|
||||
bytesBuffer.Reset()
|
||||
header := make([]byte, NeedleHeaderSize+TimestampSize)
|
||||
CookieToBytes(header[0:CookieSize], n.Cookie)
|
||||
@@ -79,10 +77,5 @@ func writeNeedleV2(w backend.BackendStorageFile, n *Needle, offset uint64, bytes
|
||||
|
||||
size = Size(n.DataSize)
|
||||
actualSize = GetActualSize(n.Size, Version2)
|
||||
_, err = w.WriteAt(bytesBuffer.Bytes(), int64(offset))
|
||||
if err != nil {
|
||||
err = fmt.Errorf("failed to write %d bytes to %s at offset %d: %w", actualSize, w.Name(), offset, err)
|
||||
}
|
||||
|
||||
return offset, size, actualSize, err
|
||||
return size, actualSize, nil
|
||||
}
|
||||
|
||||
@@ -2,15 +2,13 @@ package needle
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"fmt"
|
||||
"math"
|
||||
|
||||
"github.com/seaweedfs/seaweedfs/weed/storage/backend"
|
||||
. "github.com/seaweedfs/seaweedfs/weed/storage/types"
|
||||
"github.com/seaweedfs/seaweedfs/weed/util"
|
||||
)
|
||||
|
||||
func writeNeedleV3(w backend.BackendStorageFile, n *Needle, offset uint64, bytesBuffer *bytes.Buffer) (offsetOut uint64, size Size, actualSize int64, err error) {
|
||||
func writeNeedleV3(n *Needle, offset uint64, bytesBuffer *bytes.Buffer) (size Size, actualSize int64, err error) {
|
||||
bytesBuffer.Reset()
|
||||
header := make([]byte, NeedleHeaderSize+TimestampSize)
|
||||
CookieToBytes(header[0:CookieSize], n.Cookie)
|
||||
@@ -80,10 +78,5 @@ func writeNeedleV3(w backend.BackendStorageFile, n *Needle, offset uint64, bytes
|
||||
|
||||
size = Size(n.DataSize)
|
||||
actualSize = GetActualSize(n.Size, Version3)
|
||||
_, err = w.WriteAt(bytesBuffer.Bytes(), int64(offset))
|
||||
if err != nil {
|
||||
err = fmt.Errorf("failed to write %d bytes to %s at offset %d: %w", actualSize, w.Name(), offset, err)
|
||||
}
|
||||
|
||||
return offset, size, actualSize, err
|
||||
return size, actualSize, nil
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user