Skip to content

Commit

Permalink
AER-5958 - fixed 'racks' info command for SC, when not all roster nod…
Browse files Browse the repository at this point in the history
…es are present.
  • Loading branch information
gooding470 committed Oct 29, 2018
1 parent b5a7b67 commit fe7bb47
Showing 1 changed file with 19 additions and 14 deletions.
33 changes: 19 additions & 14 deletions as/src/base/thr_info.c
Original file line number Diff line number Diff line change
Expand Up @@ -1268,17 +1268,17 @@ compare_rack_nodes(const void* pa, const void* pb)

void
namespace_rack_info(as_namespace *ns, cf_dyn_buf *db, uint32_t *rack_ids,
uint32_t n_nodes, const char *tag)
uint32_t n_nodes, cf_node node_seq[], const char *tag)
{
if (n_nodes == 0) {
return;
}

rack_node rack_nodes[n_nodes];

for (uint32_t i = 0; i < n_nodes; i++) {
rack_nodes[i].rack_id = rack_ids[i];
rack_nodes[i].node = ns->succession[i];
for (uint32_t n = 0; n < n_nodes; n++) {
rack_nodes[n].rack_id = rack_ids[n];
rack_nodes[n].node = node_seq[n];
}

qsort(rack_nodes, n_nodes, sizeof(rack_node), compare_rack_nodes);
Expand All @@ -1290,20 +1290,20 @@ namespace_rack_info(as_namespace *ns, cf_dyn_buf *db, uint32_t *rack_ids,
cf_dyn_buf_append_char(db, '=');
cf_dyn_buf_append_uint64_x(db, rack_nodes[0].node);

for (uint32_t i = 1; i < n_nodes; i++) {
if (rack_nodes[i].rack_id == cur_id) {
for (uint32_t n = 1; n < n_nodes; n++) {
if (rack_nodes[n].rack_id == cur_id) {
cf_dyn_buf_append_char(db, ',');
cf_dyn_buf_append_uint64_x(db, rack_nodes[i].node);
cf_dyn_buf_append_uint64_x(db, rack_nodes[n].node);
continue;
}

cur_id = rack_nodes[i].rack_id;
cur_id = rack_nodes[n].rack_id;

cf_dyn_buf_append_char(db, ':');
cf_dyn_buf_append_string(db, tag);
cf_dyn_buf_append_uint32(db, cur_id);
cf_dyn_buf_append_char(db, '=');
cf_dyn_buf_append_uint64_x(db, rack_nodes[i].node);
cf_dyn_buf_append_uint64_x(db, rack_nodes[n].node);
}
}

Expand All @@ -1319,7 +1319,8 @@ info_command_racks(char *name, char *params, cf_dyn_buf *db)

char param_str[AS_ID_NAMESPACE_SZ] = { 0 };
int param_str_len = (int)sizeof(param_str);
int rv = as_info_parameter_get(params, "namespace", param_str, &param_str_len);
int rv = as_info_parameter_get(params, "namespace", param_str,
&param_str_len);

if (rv == -2) {
cf_warning(AS_INFO, "namespace parameter value too long");
Expand All @@ -1338,11 +1339,13 @@ info_command_racks(char *name, char *params, cf_dyn_buf *db)

as_exchange_info_lock();

namespace_rack_info(ns, db, ns->rack_ids, ns->cluster_size, "rack_");
namespace_rack_info(ns, db, ns->rack_ids, ns->cluster_size,
ns->succession, "rack_");

if (ns->roster_count != 0) {
cf_dyn_buf_append_char(db, ':');
namespace_rack_info(ns, db, ns->roster_rack_ids, ns->roster_count, "roster_rack_");
namespace_rack_info(ns, db, ns->roster_rack_ids, ns->roster_count,
ns->roster, "roster_rack_");
}

as_exchange_info_unlock();
Expand All @@ -1359,11 +1362,13 @@ info_command_racks(char *name, char *params, cf_dyn_buf *db)

as_exchange_info_lock();

namespace_rack_info(ns, db, ns->rack_ids, ns->cluster_size, "rack_");
namespace_rack_info(ns, db, ns->rack_ids, ns->cluster_size,
ns->succession, "rack_");

if (ns->roster_count != 0) {
cf_dyn_buf_append_char(db, ':');
namespace_rack_info(ns, db, ns->roster_rack_ids, ns->roster_count, "roster_rack_");
namespace_rack_info(ns, db, ns->roster_rack_ids, ns->roster_count,
ns->roster, "roster_rack_");
}

as_exchange_info_unlock();
Expand Down

0 comments on commit fe7bb47

Please sign in to comment.