diff options
| author | Chris Lu <chris.lu@gmail.com> | 2020-04-01 22:10:09 -0700 |
|---|---|---|
| committer | Chris Lu <chris.lu@gmail.com> | 2020-04-01 22:10:13 -0700 |
| commit | ae3d08883f38de30f4a223c056f74d71486d9309 (patch) | |
| tree | 53e7a1f1def444b43fe1c52b20cbbe083bf6a41e /weed/shell/command_volume_fsck.go | |
| parent | c446438ca5360b8e479e77dd0da32a80bd5644d6 (diff) | |
| download | seaweedfs-ae3d08883f38de30f4a223c056f74d71486d9309.tar.xz seaweedfs-ae3d08883f38de30f4a223c056f74d71486d9309.zip | |
volume.fsck: fix for erasure encoded volumes
fix https://github.com/chrislusf/seaweedfs/issues/1254
Diffstat (limited to 'weed/shell/command_volume_fsck.go')
| -rw-r--r-- | weed/shell/command_volume_fsck.go | 15 |
1 files changed, 10 insertions, 5 deletions
diff --git a/weed/shell/command_volume_fsck.go b/weed/shell/command_volume_fsck.go index 41fc95653..07e2bee5b 100644 --- a/weed/shell/command_volume_fsck.go +++ b/weed/shell/command_volume_fsck.go @@ -68,13 +68,13 @@ func (c *commandVolumeFsck) Do(args []string, commandEnv *CommandEnv, writer io. defer os.RemoveAll(tempFolder) // collect all volume id locations - volumeIdToServer, err := c.collectVolumeIds(*verbose, writer) + volumeIdToVInfo, err := c.collectVolumeIds(*verbose, writer) if err != nil { return fmt.Errorf("failed to collect all volume locations: %v", err) } // collect each volume file ids - for volumeId, vinfo := range volumeIdToServer { + for volumeId, vinfo := range volumeIdToVInfo { err = c.collectOneVolumeFileIds(tempFolder, volumeId, vinfo, *verbose, writer) if err != nil { return fmt.Errorf("failed to collect file ids from volume %d on %s: %v", volumeId, vinfo.server, err) @@ -82,13 +82,13 @@ func (c *commandVolumeFsck) Do(args []string, commandEnv *CommandEnv, writer io. } // collect all filer file ids - if err = c.collectFilerFileIds(tempFolder, volumeIdToServer, *verbose, writer); err != nil { + if err = c.collectFilerFileIds(tempFolder, volumeIdToVInfo, *verbose, writer); err != nil { return fmt.Errorf("failed to collect file ids from filer: %v", err) } // volume file ids substract filer file ids var totalInUseCount, totalOrphanChunkCount, totalOrphanDataSize uint64 - for volumeId, vinfo := range volumeIdToServer { + for volumeId, vinfo := range volumeIdToVInfo { inUseCount, orphanFileIds, orphanDataSize, checkErr := c.oneVolumeFileIdsSubtractFilerFileIds(tempFolder, volumeId, writer, *verbose) if checkErr != nil { return fmt.Errorf("failed to collect file ids from volume %d on %s: %v", volumeId, vinfo.server, checkErr) @@ -131,9 +131,14 @@ func (c *commandVolumeFsck) collectOneVolumeFileIds(tempFolder string, volumeId return operation.WithVolumeServerClient(vinfo.server, c.env.option.GrpcDialOption, func(volumeServerClient volume_server_pb.VolumeServerClient) error { + ext := ".idx" + if vinfo.isEcVolume { + ext = ".ecx" + } + copyFileClient, err := volumeServerClient.CopyFile(context.Background(), &volume_server_pb.CopyFileRequest{ VolumeId: volumeId, - Ext: ".idx", + Ext: ext, CompactionRevision: math.MaxUint32, StopOffset: math.MaxInt64, Collection: vinfo.collection, |
