hub v0.137.0 source + burn-down round 2 in felhom.eu: R-277 R-581 R-600 R-544 R-855 R-134 R-92 R-292 R-599 R-725 R-728 (hub), R-819 R-857 R-555 R-364 R-587 (gates/tools), R-571 R-129 R-124-runbook (docs); 28 rows closed incl. catalog + agent v0.147.0 rows, R-350 merged into R-132, R-888 opened, R-887 mechanism (249 -> 222)
gates / gates (push) Successful in 2m3s
gates / gates (push) Successful in 2m3s
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_0159rPz1ZhFKsS53msqPYxtS
This commit is contained in:
@@ -229,7 +229,7 @@ func (s *Server) handleCustomerDelete(w http.ResponseWriter, r *http.Request, cu
|
||||
for i := range hosts {
|
||||
if s.hostStatus(hosts[i].LastReportAt) == "ok" {
|
||||
s.logger.Printf("[WARN] delete %s REFUSED: host %s is ONLINE", customerID, hosts[i].HostID)
|
||||
http.Error(w, "Delete refused: host "+hosts[i].HostID+" is ONLINE. Decommission the box first — the cascade never deletes a live host.", http.StatusConflict)
|
||||
http.Error(w, "Delete refused: host "+hosts[i].HostID+" is ONLINE. Decommission the box first — the cascade never deletes a live host."+s.deletionOpensAt(hosts[i].LastReportAt, time.Now()), http.StatusConflict)
|
||||
return
|
||||
}
|
||||
}
|
||||
@@ -307,7 +307,11 @@ func (s *Server) handleCustomerDelete(w http.ResponseWriter, r *http.Request, cu
|
||||
s.logger.Printf("[WARN] delete %s: save audit event: %v", customerID, eerr)
|
||||
}
|
||||
|
||||
s.logger.Printf("[INFO] customer DELETE cascade COMPLETE for %s (journal #%d) — full teardown", customerID, journalID)
|
||||
// R-600: the WG peer was removed from the hub DB with the host rows (leg 1), but the endpoint only
|
||||
// drops it on the next peer-sync push. Ask for that push now, and say in the line that it is pending
|
||||
// — "full teardown" was logged while ep0 still held the peer for ~6 minutes.
|
||||
wgState := s.requestWGPeerPush()
|
||||
s.logger.Printf("[INFO] customer DELETE cascade COMPLETE for %s (journal #%d) — hub-side teardown done; %s", customerID, journalID, wgState)
|
||||
s.bumpIntent(customerID) // Direction-2: wake any still-holding wait so it completes promptly
|
||||
http.Redirect(w, r, "/configs?flash=deleted", http.StatusSeeOther)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user