MCPcopy Create free account
hub / github.com/ClusterLabs/pacemaker / cib_ccm_msg_callback

Function cib_ccm_msg_callback

cib/callbacks.c:1247–1305  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1245
1246int current_instance = 0;
1247void
1248cib_ccm_msg_callback(oc_ed_t event, void *cookie, size_t size, const void *data)
1249{
1250 gboolean update_id = FALSE;
1251 const oc_ev_membership_t *membership = data;
1252
1253 CRM_ASSERT(membership != NULL);
1254
1255 crm_info("Processing CCM event=%s (id=%d)", ccm_event_name(event), membership->m_instance);
1256
1257 if (current_instance > membership->m_instance) {
1258 crm_err("Membership instance ID went backwards! %d->%d",
1259 current_instance, membership->m_instance);
1260 CRM_ASSERT(current_instance <= membership->m_instance);
1261 }
1262
1263 switch (event) {
1264 case OC_EV_MS_NEW_MEMBERSHIP:
1265 case OC_EV_MS_INVALID:
1266 update_id = TRUE;
1267 break;
1268 case OC_EV_MS_PRIMARY_RESTORED:
1269 update_id = TRUE;
1270 break;
1271 case OC_EV_MS_NOT_PRIMARY:
1272 crm_trace("Ignoring transitional CCM event: %s", ccm_event_name(event));
1273 break;
1274 case OC_EV_MS_EVICTED:
1275 crm_err("Evicted from CCM: %s", ccm_event_name(event));
1276 break;
1277 default:
1278 crm_err("Unknown CCM event: %d", event);
1279 }
1280
1281 if (update_id) {
1282 unsigned int lpc = 0;
1283
1284 CRM_CHECK(membership != NULL, return);
1285
1286 current_instance = membership->m_instance;
1287
1288 for (lpc = 0; lpc < membership->m_n_out; lpc++) {
1289 crm_update_ccm_node(membership, lpc + membership->m_out_idx, CRM_NODE_LOST,
1290 current_instance);
1291 }
1292
1293 for (lpc = 0; lpc < membership->m_n_member; lpc++) {
1294 crm_update_ccm_node(membership, lpc + membership->m_memb_idx, CRM_NODE_ACTIVE,
1295 current_instance);
1296 }
1297 }
1298
1299 if (ccm_api_callback_done == NULL) {
1300 ccm_api_callback_done =
1301 find_library_function(&ccm_library, CCM_LIBRARY, "oc_ev_callback_done", 1);
1302 }
1303 (*ccm_api_callback_done) (cookie);
1304 return;

Callers

nothing calls this directly

Calls 3

ccm_event_nameFunction · 0.85
crm_update_ccm_nodeFunction · 0.85
find_library_functionFunction · 0.85

Tested by

no test coverage detected