Improve listener restart wait logic with active polling

- Increase wait time from 10s to max 60s after listener restart
- Add active polling every 5s to check if service is registered
- Log progress while waiting for service registration
- Fixes race condition where script proceeds before service is ready

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Marius
2026-01-28 18:33:16 +02:00
parent d00d4d94c2
commit 75a5daab6f

View File

@@ -278,9 +278,25 @@ NAMES.DIRECTORY_PATH = (TNSNAMES, EZCONNECT)
$lsnrOutput = & $lsnrctl start 2>&1 $lsnrOutput = & $lsnrctl start 2>&1
Write-LogSuccess "Listener restarted successfully" Write-LogSuccess "Listener restarted successfully"
# Wait for services to register # Wait for services to register (can take 30-60 seconds)
Write-Log "Waiting for database services to register with listener..." Write-Log "Waiting for database services to register with listener..."
Start-Sleep -Seconds 10 $maxWait = 60
$waited = 0
$interval = 5
while ($waited -lt $maxWait) {
Start-Sleep -Seconds $interval
$waited += $interval
# Check if our service is registered
$lsnrStatus = & $lsnrctl status 2>&1 | Out-String
if ($lsnrStatus -match $ServiceName) {
Write-Log "Service $ServiceName registered after ${waited}s"
break
}
Write-Log "Waiting... (${waited}s/${maxWait}s)"
}
if ($waited -ge $maxWait) {
Write-LogWarning "Service may not be fully registered yet. Continuing anyway..."
}
} }
catch { catch {
Write-LogWarning "Could not restart listener: $_" Write-LogWarning "Could not restart listener: $_"