From d2be5822a106cc871c10581e96462a438556586e Mon Sep 17 00:00:00 2001 From: chrislu Date: Mon, 16 Jun 2025 22:25:22 -0700 Subject: [PATCH] refactoring --- weed/operation/tail_volume.go | 5 +++-- weed/server/master_grpc_server_assign.go | 2 +- weed/server/master_grpc_server_volume.go | 2 +- weed/server/master_server_handlers_admin.go | 2 +- weed/storage/erasure_coding/ec_volume_test.go | 2 +- weed/storage/needle/needle_write_test.go | 2 +- weed/storage/needle/volume_version.go | 11 +++++++---- weed/storage/super_block/super_block_test.go | 2 +- weed/storage/volume_super_block.go | 2 +- weed/storage/volume_tier.go | 5 +++-- weed/topology/topology_test.go | 10 +++++----- weed/topology/volume_growth.go | 2 +- weed/topology/volume_growth_test.go | 5 +++-- weed/topology/volume_layout.go | 2 +- 14 files changed, 30 insertions(+), 24 deletions(-) diff --git a/weed/operation/tail_volume.go b/weed/operation/tail_volume.go index a7d9425a8..67ee3e825 100644 --- a/weed/operation/tail_volume.go +++ b/weed/operation/tail_volume.go @@ -3,9 +3,10 @@ package operation import ( "context" "fmt" - "github.com/seaweedfs/seaweedfs/weed/pb" "io" + "github.com/seaweedfs/seaweedfs/weed/pb" + "google.golang.org/grpc" "github.com/seaweedfs/seaweedfs/weed/pb/volume_server_pb" @@ -72,7 +73,7 @@ func TailVolumeFromSource(volumeServer pb.ServerAddress, grpcDialOption grpc.Dia n := new(needle.Needle) n.ParseNeedleHeader(needleHeader) - err = n.ReadNeedleBodyBytes(needleBody, needle.CurrentVersion) + err = n.ReadNeedleBodyBytes(needleBody, needle.GetCurrentVersion()) if err != nil { return err } diff --git a/weed/server/master_grpc_server_assign.go b/weed/server/master_grpc_server_assign.go index 9a5199291..10908e5c6 100644 --- a/weed/server/master_grpc_server_assign.go +++ b/weed/server/master_grpc_server_assign.go @@ -70,7 +70,7 @@ func (ms *MasterServer) Assign(ctx context.Context, req *master_pb.AssignRequest Rack: req.Rack, DataNode: req.DataNode, MemoryMapMaxSizeMb: req.MemoryMapMaxSizeMb, - Version: uint32(needle.CurrentVersion), + Version: uint32(needle.GetCurrentVersion()), } if !ms.Topo.DataCenterExists(option.DataCenter) { diff --git a/weed/server/master_grpc_server_volume.go b/weed/server/master_grpc_server_volume.go index a1a52ccb3..0250856b1 100644 --- a/weed/server/master_grpc_server_volume.go +++ b/weed/server/master_grpc_server_volume.go @@ -343,7 +343,7 @@ func (ms *MasterServer) VolumeGrow(ctx context.Context, req *master_pb.VolumeGro Rack: req.Rack, DataNode: req.DataNode, MemoryMapMaxSizeMb: req.MemoryMapMaxSizeMb, - Version: uint32(needle.CurrentVersion), + Version: uint32(needle.GetCurrentVersion()), } volumeGrowRequest := topology.VolumeGrowRequest{ Option: &volumeGrowOption, diff --git a/weed/server/master_server_handlers_admin.go b/weed/server/master_server_handlers_admin.go index 4cca5277e..0b1624a4d 100644 --- a/weed/server/master_server_handlers_admin.go +++ b/weed/server/master_server_handlers_admin.go @@ -177,7 +177,7 @@ func (ms *MasterServer) getVolumeGrowOption(r *http.Request) (*topology.VolumeGr Rack: r.FormValue("rack"), DataNode: r.FormValue("dataNode"), MemoryMapMaxSizeMb: memoryMapMaxSizeMb, - Version: uint32(needle.CurrentVersion), + Version: uint32(needle.GetCurrentVersion()), } return volumeGrowOption, nil } diff --git a/weed/storage/erasure_coding/ec_volume_test.go b/weed/storage/erasure_coding/ec_volume_test.go index 47faf0b62..82df0b8b1 100644 --- a/weed/storage/erasure_coding/ec_volume_test.go +++ b/weed/storage/erasure_coding/ec_volume_test.go @@ -44,7 +44,7 @@ func TestPositioning(t *testing.T) { fmt.Printf("offset: %d size: %d\n", offset.ToActualOffset(), size) var shardEcdFileSize int64 = 1118830592 // 1024*1024*1024*3 - intervals := LocateData(ErasureCodingLargeBlockSize, ErasureCodingSmallBlockSize, shardEcdFileSize, offset.ToActualOffset(), types.Size(needle.GetActualSize(size, needle.CurrentVersion))) + intervals := LocateData(ErasureCodingLargeBlockSize, ErasureCodingSmallBlockSize, shardEcdFileSize, offset.ToActualOffset(), types.Size(needle.GetActualSize(size, needle.GetCurrentVersion()))) for _, interval := range intervals { shardId, shardOffset := interval.ToShardIdAndOffset(ErasureCodingLargeBlockSize, ErasureCodingSmallBlockSize) diff --git a/weed/storage/needle/needle_write_test.go b/weed/storage/needle/needle_write_test.go index 5ddc040fb..f91991171 100644 --- a/weed/storage/needle/needle_write_test.go +++ b/weed/storage/needle/needle_write_test.go @@ -59,7 +59,7 @@ func TestAppend(t *testing.T) { datBackend := backend.NewDiskFile(tempFile) defer datBackend.Close() - offset, _, _, _ := n.Append(datBackend, CurrentVersion) + offset, _, _, _ := n.Append(datBackend, GetCurrentVersion()) if offset != uint64(fileSize) { t.Errorf("Fail to Append Needle.") } diff --git a/weed/storage/needle/volume_version.go b/weed/storage/needle/volume_version.go index 54daac77f..15d2aa2a7 100644 --- a/weed/storage/needle/volume_version.go +++ b/weed/storage/needle/volume_version.go @@ -3,8 +3,11 @@ package needle type Version uint8 const ( - Version1 = Version(1) - Version2 = Version(2) - Version3 = Version(3) - CurrentVersion = Version3 + Version1 = Version(1) + Version2 = Version(2) + Version3 = Version(3) ) + +func GetCurrentVersion() Version { + return Version3 +} diff --git a/weed/storage/super_block/super_block_test.go b/weed/storage/super_block/super_block_test.go index 5a9c8e1a9..b952240ae 100644 --- a/weed/storage/super_block/super_block_test.go +++ b/weed/storage/super_block/super_block_test.go @@ -10,7 +10,7 @@ func TestSuperBlockReadWrite(t *testing.T) { rp, _ := NewReplicaPlacementFromByte(byte(001)) ttl, _ := needle.ReadTTL("15d") s := &SuperBlock{ - Version: needle.CurrentVersion, + Version: needle.GetCurrentVersion(), ReplicaPlacement: rp, Ttl: ttl, } diff --git a/weed/storage/volume_super_block.go b/weed/storage/volume_super_block.go index 096d46906..1d411471f 100644 --- a/weed/storage/volume_super_block.go +++ b/weed/storage/volume_super_block.go @@ -18,7 +18,7 @@ func (v *Volume) maybeWriteSuperBlock() error { return e } if datSize == 0 { - v.SuperBlock.Version = needle.CurrentVersion + v.SuperBlock.Version = needle.GetCurrentVersion() _, e = v.DataBackend.WriteAt(v.SuperBlock.Bytes(), 0) if e != nil && os.IsPermission(e) { //read-only, but zero length - recreate it! diff --git a/weed/storage/volume_tier.go b/weed/storage/volume_tier.go index 5d9b67192..d398503a3 100644 --- a/weed/storage/volume_tier.go +++ b/weed/storage/volume_tier.go @@ -2,6 +2,8 @@ package storage import ( "fmt" + "time" + "github.com/seaweedfs/seaweedfs/weed/glog" "github.com/seaweedfs/seaweedfs/weed/pb/volume_server_pb" "github.com/seaweedfs/seaweedfs/weed/storage/backend" @@ -10,7 +12,6 @@ import ( "github.com/seaweedfs/seaweedfs/weed/storage/needle" "github.com/seaweedfs/seaweedfs/weed/storage/types" "github.com/seaweedfs/seaweedfs/weed/storage/volume_info" - "time" ) func (v *Volume) GetVolumeInfo() *volume_server_pb.VolumeInfo { @@ -23,7 +24,7 @@ func (v *Volume) maybeLoadVolumeInfo() (found bool) { v.volumeInfo, v.hasRemoteFile, found, err = volume_info.MaybeLoadVolumeInfo(v.FileName(".vif")) if v.volumeInfo.Version == 0 { - v.volumeInfo.Version = uint32(needle.CurrentVersion) + v.volumeInfo.Version = uint32(needle.GetCurrentVersion()) } if v.hasRemoteFile { diff --git a/weed/topology/topology_test.go b/weed/topology/topology_test.go index 7ac994d0e..667e941df 100644 --- a/weed/topology/topology_test.go +++ b/weed/topology/topology_test.go @@ -49,7 +49,7 @@ func TestHandlingVolumeServerHeartbeat(t *testing.T) { DeletedByteCount: 34524, ReadOnly: false, ReplicaPlacement: uint32(0), - Version: uint32(needle.CurrentVersion), + Version: uint32(needle.GetCurrentVersion()), Ttl: 0, } volumeMessages = append(volumeMessages, volumeMessage) @@ -65,7 +65,7 @@ func TestHandlingVolumeServerHeartbeat(t *testing.T) { DeletedByteCount: 34524, ReadOnly: false, ReplicaPlacement: uint32(0), - Version: uint32(needle.CurrentVersion), + Version: uint32(needle.GetCurrentVersion()), Ttl: 0, DiskType: "ssd", } @@ -94,7 +94,7 @@ func TestHandlingVolumeServerHeartbeat(t *testing.T) { DeletedByteCount: 345240, ReadOnly: false, ReplicaPlacement: uint32(0), - Version: uint32(needle.CurrentVersion), + Version: uint32(needle.GetCurrentVersion()), Ttl: 0, } volumeMessages = append(volumeMessages, volumeMessage) @@ -117,7 +117,7 @@ func TestHandlingVolumeServerHeartbeat(t *testing.T) { Id: uint32(3), Collection: "", ReplicaPlacement: uint32(0), - Version: uint32(needle.CurrentVersion), + Version: uint32(needle.GetCurrentVersion()), Ttl: 0, } topo.IncrementalSyncDataNodeRegistration( @@ -191,7 +191,7 @@ func TestAddRemoveVolume(t *testing.T) { DeleteCount: 23, DeletedByteCount: 45, ReadOnly: false, - Version: needle.CurrentVersion, + Version: needle.GetCurrentVersion(), ReplicaPlacement: &super_block.ReplicaPlacement{}, Ttl: needle.EMPTY_TTL, } diff --git a/weed/topology/volume_growth.go b/weed/topology/volume_growth.go index 8bbcd2c27..8423ed5ca 100644 --- a/weed/topology/volume_growth.go +++ b/weed/topology/volume_growth.go @@ -264,7 +264,7 @@ func (vg *VolumeGrowth) grow(grpcDialOption grpc.DialOption, topo *Topology, vid Collection: option.Collection, ReplicaPlacement: option.ReplicaPlacement, Ttl: option.Ttl, - Version: needle.CurrentVersion, + Version: needle.GetCurrentVersion(), DiskType: option.DiskType.String(), ModifiedAtSecond: time.Now().Unix(), }) diff --git a/weed/topology/volume_growth_test.go b/weed/topology/volume_growth_test.go index 49dd0957c..286289148 100644 --- a/weed/topology/volume_growth_test.go +++ b/weed/topology/volume_growth_test.go @@ -3,9 +3,10 @@ package topology import ( "encoding/json" "fmt" - "github.com/seaweedfs/seaweedfs/weed/storage/types" "testing" + "github.com/seaweedfs/seaweedfs/weed/storage/types" + "github.com/seaweedfs/seaweedfs/weed/sequence" "github.com/seaweedfs/seaweedfs/weed/storage" "github.com/seaweedfs/seaweedfs/weed/storage/needle" @@ -104,7 +105,7 @@ func setup(topologyLayout string) *Topology { vi := storage.VolumeInfo{ Id: needle.VolumeId(int64(m["id"].(float64))), Size: uint64(m["size"].(float64)), - Version: needle.CurrentVersion, + Version: needle.GetCurrentVersion(), } if mVal, ok := m["collection"]; ok { vi.Collection = mVal.(string) diff --git a/weed/topology/volume_layout.go b/weed/topology/volume_layout.go index 852798c19..7c6fd71f3 100644 --- a/weed/topology/volume_layout.go +++ b/weed/topology/volume_layout.go @@ -265,7 +265,7 @@ func (vl *VolumeLayout) isCrowdedVolume(v *storage.VolumeInfo) bool { func (vl *VolumeLayout) isWritable(v *storage.VolumeInfo) bool { return !vl.isOversized(v) && - v.Version == needle.CurrentVersion && + v.Version == needle.GetCurrentVersion() && !v.ReadOnly }