Skip to content

Commit 5737b9d

Browse files
committed
incusd: Remove cluster member on join failure
Signed-off-by: Piotr Resztak <[email protected]>
1 parent 78604ae commit 5737b9d

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

cmd/incusd/api_cluster.go

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -622,6 +622,13 @@ func clusterPutJoin(d *Daemon, r *http.Request, req api.ClusterPut) response.Res
622622
return err
623623
}
624624

625+
reverter.Add(func() {
626+
err = client.DeleteClusterMember(req.ServerName, true)
627+
if err != nil {
628+
logger.Errorf("Failed request to delete cluster member: %v", err)
629+
}
630+
})
631+
625632
// Now request for this node to be added to the list of cluster nodes.
626633
info, err := clusterAcceptMember(client, req.ServerName, localHTTPSAddress, cluster.SchemaVersion, version.APIExtensionsCount(), pools, networks)
627634
if err != nil {
@@ -2034,7 +2041,7 @@ func clusterNodeDelete(d *Daemon, r *http.Request) response.Response {
20342041

20352042
// First check that the node is clear from containers and images and
20362043
// make it leave the database cluster, if it's part of it.
2037-
address, err := cluster.Leave(s, d.gateway, name, force == 1)
2044+
address, err := cluster.Leave(s, d.gateway, name, force == 1, true)
20382045
if err != nil {
20392046
return response.SmartError(err)
20402047
}
@@ -2099,7 +2106,7 @@ func clusterNodeDelete(d *Daemon, r *http.Request) response.Response {
20992106
}
21002107

21012108
// Remove node from the database
2102-
err = cluster.Purge(s.DB.Cluster, name)
2109+
err = cluster.Purge(s.DB.Cluster, name, true)
21032110
if err != nil {
21042111
return response.SmartError(fmt.Errorf("Failed to remove member from database: %w", err))
21052112
}

0 commit comments

Comments
 (0)