mirror of
https://github.com/samba-team/samba.git
synced 2025-01-10 01:18:15 +03:00
ctdb-recoverd: Add fail callback to assign banning credits
Also drop error handling in main_loop() that is replaced by this change. BUG: https://bugzilla.samba.org/show_bug.cgi?id=14466 Signed-off-by: Martin Schwenke <martin@meltin.net> Reviewed-by: Amitay Isaacs <amitay@gmail.com>
This commit is contained in:
parent
a079ee3169
commit
10ce0dbf1c
@ -2225,6 +2225,7 @@ done:
|
||||
|
||||
struct remote_nodemaps_state {
|
||||
struct ctdb_node_map_old **remote_nodemaps;
|
||||
struct ctdb_recoverd *rec;
|
||||
};
|
||||
|
||||
static void async_getnodemap_callback(struct ctdb_context *ctdb,
|
||||
@ -2247,6 +2248,20 @@ static void async_getnodemap_callback(struct ctdb_context *ctdb,
|
||||
|
||||
}
|
||||
|
||||
static void async_getnodemap_error(struct ctdb_context *ctdb,
|
||||
uint32_t node_pnn,
|
||||
int32_t res,
|
||||
TDB_DATA outdata,
|
||||
void *callback_data)
|
||||
{
|
||||
struct remote_nodemaps_state *state =
|
||||
(struct remote_nodemaps_state *)callback_data;
|
||||
struct ctdb_recoverd *rec = state->rec;
|
||||
|
||||
DBG_ERR("Failed to retrieve nodemap from node %u\n", node_pnn);
|
||||
ctdb_set_culprit(rec, node_pnn);
|
||||
}
|
||||
|
||||
static int get_remote_nodemaps(struct ctdb_recoverd *rec,
|
||||
TALLOC_CTX *mem_ctx,
|
||||
struct ctdb_node_map_old ***remote_nodemaps)
|
||||
@ -2268,6 +2283,7 @@ static int get_remote_nodemaps(struct ctdb_recoverd *rec,
|
||||
nodes = list_of_active_nodes(ctdb, rec->nodemap, mem_ctx, true);
|
||||
|
||||
state.remote_nodemaps = t;
|
||||
state.rec = rec;
|
||||
|
||||
ret = ctdb_client_async_control(ctdb,
|
||||
CTDB_CONTROL_GET_NODEMAP,
|
||||
@ -2277,7 +2293,7 @@ static int get_remote_nodemaps(struct ctdb_recoverd *rec,
|
||||
false,
|
||||
tdb_null,
|
||||
async_getnodemap_callback,
|
||||
NULL,
|
||||
async_getnodemap_error,
|
||||
&state);
|
||||
talloc_free(nodes);
|
||||
|
||||
@ -2622,13 +2638,6 @@ static void main_loop(struct ctdb_context *ctdb, struct ctdb_recoverd *rec,
|
||||
continue;
|
||||
}
|
||||
|
||||
if (remote_nodemaps[j] == NULL) {
|
||||
DEBUG(DEBUG_ERR,(__location__ " Did not get a remote nodemap for node %d, restarting monitoring\n", j));
|
||||
ctdb_set_culprit(rec, j);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
/* if the nodes disagree on how many nodes there are
|
||||
then this is a good reason to try recovery
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user