From 52f26187ca5afb323f3690610432eee54b4e8056 Mon Sep 17 00:00:00 2001 From: chrislu Date: Wed, 13 Aug 2025 01:52:03 -0700 Subject: [PATCH] find master address earlier --- weed/worker/tasks/ec_vacuum/ec_vacuum_task.go | 19 +++++++++++++++++++ weed/worker/tasks/ec_vacuum/safety_checks.go | 6 ++---- 2 files changed, 21 insertions(+), 4 deletions(-) diff --git a/weed/worker/tasks/ec_vacuum/ec_vacuum_task.go b/weed/worker/tasks/ec_vacuum/ec_vacuum_task.go index 6691b3990..717bbc2bc 100644 --- a/weed/worker/tasks/ec_vacuum/ec_vacuum_task.go +++ b/weed/worker/tasks/ec_vacuum/ec_vacuum_task.go @@ -135,6 +135,25 @@ func (t *EcVacuumTask) Execute(ctx context.Context, params *worker_pb.TaskParams t.LogInfo("Starting EC vacuum task with runtime generation detection", logFields) + // Step 0.5: Get master address early for generation activation + if t.masterAddress == "" { + if err := t.fetchMasterAddressFromAdmin(); err != nil { + t.LogWarning("Failed to get master address - generation activation will be manual", map[string]interface{}{ + "error": err.Error(), + "volume_id": t.volumeID, + "target_generation": t.targetGeneration, + "note": "Task will continue but activation must be done manually", + }) + // Continue execution - this is not fatal, just means manual activation required + } else { + t.LogInfo("Master address obtained for automatic generation activation", map[string]interface{}{ + "master_address": t.masterAddress, + "volume_id": t.volumeID, + "target_generation": t.targetGeneration, + }) + } + } + // Step 1: Create temporary working directory if err := t.createTempDir(); err != nil { return fmt.Errorf("failed to create temp directory: %w", err) diff --git a/weed/worker/tasks/ec_vacuum/safety_checks.go b/weed/worker/tasks/ec_vacuum/safety_checks.go index 56764372c..5cf18ddee 100644 --- a/weed/worker/tasks/ec_vacuum/safety_checks.go +++ b/weed/worker/tasks/ec_vacuum/safety_checks.go @@ -11,11 +11,9 @@ import ( // performSafetyChecks performs comprehensive safety verification before cleanup func (t *EcVacuumTask) performSafetyChecks() error { - // Get master address from admin server if not already set + // Master address should have been fetched early in execution if t.masterAddress == "" { - if err := t.fetchMasterAddressFromAdmin(); err != nil { - return fmt.Errorf("CRITICAL: cannot perform safety checks - failed to get master address: %w", err) - } + return fmt.Errorf("CRITICAL: cannot perform safety checks - master address not available (should have been fetched during task initialization)") } // Safety Check 1: Verify master connectivity and volume existence