diff --git a/src/box/applier.cc b/src/box/applier.cc index 8e219c0ac37edd45bbcf432d7c4c581aa60d624d..89dda45d17f6ba2d56def68955c05bf634cc5fa2 100644 --- a/src/box/applier.cc +++ b/src/box/applier.cc @@ -387,10 +387,10 @@ applier_check_join(const struct applier *applier) } static void -applier_run_ballot_triggers(struct applier *applier, bool success) +applier_run_ballot_triggers(struct applier *applier) { applier_check_join(applier); - trigger_run(&applier->on_ballot_update, &success); + trigger_run(&applier->on_ballot_update, NULL); } /** @@ -485,7 +485,8 @@ applier_watch_ballot(struct applier *applier) */ if (is_empty) continue; - applier_run_ballot_triggers(applier, true); + diag_clear(diag_get()); + applier_run_ballot_triggers(applier); } } catch (ClientError *e) { if (e->errcode() != ER_NO_SUCH_EVENT) @@ -494,7 +495,8 @@ applier_watch_ballot(struct applier *applier) try_vote: applier_get_ballot_from_vote(&io, &row, &ibuf, &applier->ballot); - applier_run_ballot_triggers(applier, true); + diag_clear(diag_get()); + applier_run_ballot_triggers(applier); } static int @@ -514,7 +516,7 @@ applier_ballot_watcher_f(va_list ap) return 0; } catch (Exception *) { diag_log(); - applier_run_ballot_triggers(applier, false); + applier_run_ballot_triggers(applier); diag_clear(diag_get()); break; } @@ -548,11 +550,11 @@ applier_ballot_data_create(struct applier_ballot_data *data, static int applier_on_first_ballot_update_f(struct trigger *trigger, void *event) { + (void)event; struct applier_ballot_data *data = (struct applier_ballot_data *)trigger->data; - bool success = *(bool *)event; data->done = true; - if (!success) + if (!diag_is_empty(diag_get())) diag_move(diag_get(), &data->diag); fiber_wakeup(data->fiber); return 0; @@ -584,11 +586,11 @@ applier_wait_first_ballot(struct applier *applier) static int applier_on_bootstrap_leader_uuid_set_f(struct trigger *trigger, void *event) { + (void)event; struct applier_ballot_data *data = (struct applier_ballot_data *)trigger->data; const struct applier *applier = data->applier; - bool success = *(bool *)event; - if (!success) + if (!diag_is_empty(diag_get())) diag_move(diag_get(), &data->diag); else if (tt_uuid_is_nil(&applier->ballot.bootstrap_leader_uuid)) return 0;