This patch fixes a bug where the Engine does not update its lists of membership names when it receives a full membership from the cluster manager. The result is that when other plug-ins or user interfaces ask for a list of names of the nodes in the cluster they get an empty list. They then cannot present to the user a list of nodes from which to choose. --- evms-2.3.3/engine/cluster.c 2004-03-12 18:16:37.000000000 -0600 +++ evms-2.3.3-fix/engine/cluster.c 2004-05-12 18:31:51.000000000 -0500 @@ -289,6 +289,31 @@ } +static void new_membership_names(ece_event_t * membership) { + + int i; + + LOG_PROC_ENTRY(); + + /* Clear out the current membership names. */ + for (i = 0; i < num_config_nodes; i++) { + membership_names->node_info[i].flags &= ~NODE_ACTIVE; + membership_names->node_info[i].node_name = NULL; + } + + membership_names->count = 0; + + for (i = 0; i < membership->num_entries; i++) { + membership_names->node_info[i].flags |= NODE_ACTIVE; + membership_names->node_info[i].node_name = nodeid_to_string(&membership->node[i]); + } + + membership_names->count = membership->num_entries; + + LOG_PROC_EXIT_VOID(); +} + + static void * close_engine(void * node) { char * node_name = (char *) node; @@ -370,6 +395,8 @@ if (membership != NULL) { memcpy(membership, event, size); + + new_membership_names(membership); } break;