aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchrislu <chris.lu@gmail.com>2025-06-10 20:39:05 -0700
committerchrislu <chris.lu@gmail.com>2025-06-11 20:13:06 -0700
commitf27e195354af65e9364261fd0918d8e7ee2db349 (patch)
treeee33e9a63439866424e9a3a47f17ee8789e89b41
parentfa730abec7581ea00e0ff9d78bf4bdbe3a039d84 (diff)
downloadseaweedfs-f27e195354af65e9364261fd0918d8e7ee2db349.tar.xz
seaweedfs-f27e195354af65e9364261fd0918d8e7ee2db349.zip
refactoring
-rw-r--r--weed/storage/needle/needle_write.go19
-rw-r--r--weed/storage/needle/needle_write_version.go23
2 files changed, 28 insertions, 14 deletions
diff --git a/weed/storage/needle/needle_write.go b/weed/storage/needle/needle_write.go
index 0ed2d292a..dd8296b7a 100644
--- a/weed/storage/needle/needle_write.go
+++ b/weed/storage/needle/needle_write.go
@@ -32,23 +32,14 @@ func (n *Needle) Append(w backend.BackendStorageFile, version Version) (offset u
buffer_pool.SyncPoolPutBuffer(bytesBuffer)
}()
- switch version {
- case Version1:
- size, actualSize, err = writeNeedleV1(n, offset, bytesBuffer)
- case Version2:
- size, actualSize, err = writeNeedleV2(n, offset, bytesBuffer)
- case Version3:
- size, actualSize, err = writeNeedleV3(n, offset, bytesBuffer)
- default:
- err = fmt.Errorf("unsupported version: %d", version)
+ size, actualSize, err = writeNeedleByVersion(version, n, offset, bytesBuffer)
+ if err != nil {
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)
- }
+ _, 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
diff --git a/weed/storage/needle/needle_write_version.go b/weed/storage/needle/needle_write_version.go
new file mode 100644
index 000000000..1a6c0bf78
--- /dev/null
+++ b/weed/storage/needle/needle_write_version.go
@@ -0,0 +1,23 @@
+package needle
+
+import (
+ "bytes"
+ "fmt"
+
+ . "github.com/seaweedfs/seaweedfs/weed/storage/types"
+)
+
+func writeNeedleByVersion(version Version, n *Needle, offset uint64, bytesBuffer *bytes.Buffer) (size Size, actualSize int64, err error) {
+ // Switch logic moved from needle_write.go
+ switch version {
+ case Version1:
+ size, actualSize, err = writeNeedleV1(n, offset, bytesBuffer)
+ case Version2:
+ size, actualSize, err = writeNeedleV2(n, offset, bytesBuffer)
+ case Version3:
+ size, actualSize, err = writeNeedleV3(n, offset, bytesBuffer)
+ default:
+ err = fmt.Errorf("unsupported version: %d", version)
+ }
+ return
+}