From 42ccfc076333819103fb4bb062685096c0e64501 Mon Sep 17 00:00:00 2001 From: aCuteBegCinner <34465063+aCuteBegCinner@users.noreply.github.com> Date: Tue, 23 Jun 2026 12:31:45 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E5=B0=86fmt.Errorf=E4=B8=AD?= =?UTF-8?q?=E7=9A=84%v=E6=9B=BF=E6=8D=A2=E4=B8=BA%w=E4=BB=A5=E4=BF=9D?= =?UTF-8?q?=E7=95=99=E9=94=99=E8=AF=AF=E9=93=BE=20(#10050)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 替换了多个文件中的错误格式化方式,使用%w包裹原始错误, 保留完整的错误调用链以提升调试时的错误追踪能力。 Co-authored-by: guant --- weed/wdclient/vidmap_client.go | 2 +- weed/worker/tasks/balance/balance_task.go | 8 ++++---- weed/worker/tasks/ec_balance/ec_balance_task.go | 10 +++++----- weed/worker/tasks/erasure_coding/ec_task.go | 2 +- weed/worker/tasks/vacuum/vacuum_task.go | 4 ++-- 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/weed/wdclient/vidmap_client.go b/weed/wdclient/vidmap_client.go index 9636f8991..c66beeb98 100644 --- a/weed/wdclient/vidmap_client.go +++ b/weed/wdclient/vidmap_client.go @@ -199,7 +199,7 @@ func (vc *vidMapClient) LookupVolumeIdsWithFallback(ctx context.Context, volumeI providerResults, err := vc.provider.LookupVolumeIds(ctx, stillNeedLookup) if err != nil { - return batchResult, fmt.Errorf("provider lookup failed: %v", err) + return batchResult, fmt.Errorf("provider lookup failed: %w", err) } // Update cache with results diff --git a/weed/worker/tasks/balance/balance_task.go b/weed/worker/tasks/balance/balance_task.go index 5425036f9..9f0c6b531 100644 --- a/weed/worker/tasks/balance/balance_task.go +++ b/weed/worker/tasks/balance/balance_task.go @@ -83,7 +83,7 @@ func (t *BalanceTask) Execute(ctx context.Context, params *worker_pb.TaskParams) t.ReportProgress(10.0) t.GetLogger().Info("Marking volume readonly for move") if err := t.markVolumeReadonly(ctx, sourceServer, volumeId); err != nil { - return fmt.Errorf("failed to mark volume readonly: %v", err) + return fmt.Errorf("failed to mark volume readonly: %w", err) } // Restore source writability if any subsequent step fails, so the // source volume is not left permanently readonly on abort. @@ -102,7 +102,7 @@ func (t *BalanceTask) Execute(ctx context.Context, params *worker_pb.TaskParams) t.ReportProgress(15.0) sourceStatus, err := t.readVolumeFileStatus(ctx, sourceServer, volumeId) if err != nil { - return fmt.Errorf("failed to read source volume status: %v", err) + return fmt.Errorf("failed to read source volume status: %w", err) } // Step 3: Copy volume to destination (VolumeCopy also mounts the volume) @@ -110,7 +110,7 @@ func (t *BalanceTask) Execute(ctx context.Context, params *worker_pb.TaskParams) t.GetLogger().Info("Copying volume to destination") lastAppendAtNs, err := t.copyVolume(ctx, sourceServer, targetServer, volumeId) if err != nil { - return fmt.Errorf("failed to copy volume: %v", err) + return fmt.Errorf("failed to copy volume: %w", err) } // Step 4: Tail for updates @@ -147,7 +147,7 @@ func (t *BalanceTask) Execute(ctx context.Context, params *worker_pb.TaskParams) t.ReportProgress(90.0) t.GetLogger().Info("Deleting volume from source server") if err := t.deleteVolume(ctx, sourceServer, volumeId); err != nil { - return fmt.Errorf("failed to delete volume from source: %v", err) + return fmt.Errorf("failed to delete volume from source: %w", err) } sourceMarkedReadonly = false diff --git a/weed/worker/tasks/ec_balance/ec_balance_task.go b/weed/worker/tasks/ec_balance/ec_balance_task.go index cf7190f82..5fbb404c0 100644 --- a/weed/worker/tasks/ec_balance/ec_balance_task.go +++ b/weed/worker/tasks/ec_balance/ec_balance_task.go @@ -96,7 +96,7 @@ func (t *ECBalanceTask) Execute(ctx context.Context, params *worker_pb.TaskParam // Step 1: Copy shard to destination and mount t.reportProgress(10.0, "Copying EC shard to destination") if err := t.copyAndMountShard(ctx, params.VolumeId, sourceAddr, targetAddr, source.ShardIds, target.DiskId); err != nil { - return fmt.Errorf("copy and mount shard: %v", err) + return fmt.Errorf("copy and mount shard: %w", err) } // Step 1.5: confirm the destination actually registered the shard(s) @@ -112,13 +112,13 @@ func (t *ECBalanceTask) Execute(ctx context.Context, params *worker_pb.TaskParam // Step 2: Unmount shard on source t.reportProgress(50.0, "Unmounting EC shard from source") if err := t.unmountShard(ctx, params.VolumeId, sourceAddr, source.ShardIds); err != nil { - return fmt.Errorf("unmount shard on source: %v", err) + return fmt.Errorf("unmount shard on source: %w", err) } // Step 3: Delete shard from source t.reportProgress(75.0, "Deleting EC shard from source") if err := t.deleteShard(ctx, params.VolumeId, params.Collection, sourceAddr, source.ShardIds); err != nil { - return fmt.Errorf("delete shard on source: %v", err) + return fmt.Errorf("delete shard on source: %w", err) } t.reportProgress(100.0, "EC shard move complete") @@ -131,12 +131,12 @@ func (t *ECBalanceTask) Execute(ctx context.Context, params *worker_pb.TaskParam func (t *ECBalanceTask) executeDedupDelete(ctx context.Context, volumeID uint32, sourceAddr pb.ServerAddress, shardIDs []uint32) error { t.reportProgress(25.0, "Unmounting duplicate EC shard") if err := t.unmountShard(ctx, volumeID, sourceAddr, shardIDs); err != nil { - return fmt.Errorf("unmount duplicate shard: %v", err) + return fmt.Errorf("unmount duplicate shard: %w", err) } t.reportProgress(75.0, "Deleting duplicate EC shard") if err := t.deleteShard(ctx, volumeID, t.collection, sourceAddr, shardIDs); err != nil { - return fmt.Errorf("delete duplicate shard: %v", err) + return fmt.Errorf("delete duplicate shard: %w", err) } t.reportProgress(100.0, "Duplicate shard removed") diff --git a/weed/worker/tasks/erasure_coding/ec_task.go b/weed/worker/tasks/erasure_coding/ec_task.go index d91743fea..f37cd0228 100644 --- a/weed/worker/tasks/erasure_coding/ec_task.go +++ b/weed/worker/tasks/erasure_coding/ec_task.go @@ -521,7 +521,7 @@ func (t *ErasureCodingTask) copyFileFromSource(ctx context.Context, ext, localPa if len(resp.FileContent) > 0 { written, writeErr := localFile.Write(resp.FileContent) if writeErr != nil { - return fmt.Errorf("failed to write to local file: %v", writeErr) + return fmt.Errorf("failed to write to local file: %w", writeErr) } totalBytes += int64(written) } diff --git a/weed/worker/tasks/vacuum/vacuum_task.go b/weed/worker/tasks/vacuum/vacuum_task.go index e37c98c92..af3190cb5 100644 --- a/weed/worker/tasks/vacuum/vacuum_task.go +++ b/weed/worker/tasks/vacuum/vacuum_task.go @@ -82,7 +82,7 @@ func (t *VacuumTask) Execute(ctx context.Context, params *worker_pb.TaskParams) t.GetLogger().Info("Checking volume status") targets, currentGarbageRatios, err := t.checkVacuumEligibility(ctx) if err != nil { - return fmt.Errorf("failed to check vacuum eligibility: %v", err) + return fmt.Errorf("failed to check vacuum eligibility: %w", err) } if len(targets) == 0 { @@ -105,7 +105,7 @@ func (t *VacuumTask) Execute(ctx context.Context, params *worker_pb.TaskParams) }).Info("Performing vacuum operation") if err := t.performVacuum(ctx); err != nil { - return fmt.Errorf("failed to perform vacuum: %v", err) + return fmt.Errorf("failed to perform vacuum: %w", err) } // Step 3: Verify vacuum results on each target replica.