From 65b9ae770400a23b998baba56236212d93fd5444 Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Mon, 10 Aug 2026 00:40:29 -0700 Subject: [PATCH] master: keep disk_id when registering volumes from incremental heartbeats (#10686) The volume server names the directory index in every VolumeShortInformationMessage, but NewVolumeInfoFromShort dropped it, so volumes registered through the incremental new-volume path showed disk_id 0 at the master until a full report -- misreporting multi-dir servers in volume.list and the per-physical-disk topology views. Claude-Session: https://claude.ai/code/session_01QdTEEPbg4MtcoEGwqbgtZC --- weed/storage/volume_info.go | 1 + weed/storage/volume_info_test.go | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/weed/storage/volume_info.go b/weed/storage/volume_info.go index 40e7f173a..e83aa9d93 100644 --- a/weed/storage/volume_info.go +++ b/weed/storage/volume_info.go @@ -67,6 +67,7 @@ func NewVolumeInfoFromShort(m *master_pb.VolumeShortInformationMessage) (vi Volu Id: needle.VolumeId(m.Id), Collection: internVolumeString(m.Collection), Version: needle.Version(m.Version), + DiskId: m.DiskId, } rp, e := super_block.NewReplicaPlacementFromByte(byte(m.ReplicaPlacement)) if e != nil { diff --git a/weed/storage/volume_info_test.go b/weed/storage/volume_info_test.go index a01e1fc9d..6e155705c 100644 --- a/weed/storage/volume_info_test.go +++ b/weed/storage/volume_info_test.go @@ -3,6 +3,7 @@ package storage import ( "testing" + "github.com/seaweedfs/seaweedfs/weed/pb/master_pb" "github.com/seaweedfs/seaweedfs/weed/storage/needle" ) @@ -25,3 +26,17 @@ func TestSortVolumeInfos(t *testing.T) { } } } + +func TestNewVolumeInfoFromShortKeepsDiskId(t *testing.T) { + vi, err := NewVolumeInfoFromShort(&master_pb.VolumeShortInformationMessage{ + Id: 7, + Version: 3, + DiskId: 3, + }) + if err != nil { + t.Fatal(err) + } + if vi.DiskId != 3 { + t.Fatalf("DiskId = %d, want 3", vi.DiskId) + } +}