Compare commits

..
Author SHA1 Message Date
Vitaliy Filippov 0f964d62db Add debug 2023-01-06 12:46:44 +03:00
4 changed files with 25 additions and 53 deletions
+9 -5
View File
@@ -34,22 +34,26 @@ struct alloc_osd_t
json11::Json::object {
{ "target", "VERSION" },
{ "version", 0 },
{ "key", "/osd/stats/"+std::to_string(new_id) }
{ "key", base64_encode(
parent->cli->st_cli.etcd_prefix+"/osd/stats/"+std::to_string(new_id)
) },
},
} },
{ "success", json11::Json::array {
json11::Json::object {
{ "request_put", json11::Json::object {
{ "key", "/osd/stats/"+std::to_string(new_id) }
{ "value", "{}" },
{ "key", base64_encode(
parent->cli->st_cli.etcd_prefix+"/osd/stats/"+std::to_string(new_id)
) },
{ "value", base64_encode("{}") },
} },
},
} },
{ "failure", json11::Json::array {
json11::Json::object {
{ "request_range", json11::Json::object {
{ "key", "/osd/stats/" },
{ "range_end", "/osd/stats0" },
{ "key", base64_encode(parent->cli->st_cli.etcd_prefix+"/osd/stats/") },
{ "range_end", base64_encode(parent->cli->st_cli.etcd_prefix+"/osd/stats0") },
{ "keys_only", true },
} },
},
+1 -47
View File
@@ -54,55 +54,8 @@ etcd_kv_t etcd_state_client_t::parse_etcd_kv(const json11::Json & kv_json)
return kv;
}
json11::Json etcd_state_client_t::etcd_encode_actions(const json11::Json & items)
{
json11::Json::array encoded;
for (auto & v: items.array_items())
{
json11::Json::object act;
for (auto & kv: v.object_items())
{
if (kv.first == "key" || kv.first == "range_end")
act[kv.first] = base64_encode(etcd_prefix+kv.second.string_value());
else if (kv.first == "value")
act[kv.first] = base64_encode(kv.second.is_string() ? kv.second.string_value() : kv.second.dump());
else
act[kv.first] = kv.second;
}
encoded.push_back(act);
}
return encoded;
}
void etcd_state_client_t::etcd_txn(json11::Json txn, int timeout, int retries, int interval, std::function<void(std::string, json11::Json)> callback)
{
// FIXME: json11 is immutable which is very inconvenient for such cases
json11::Json::object encoded;
if (txn["compare"].is_array())
{
json11::Json::array compare;
for (auto & v: txn["compare"].array_items())
{
json11::Json::object cmp;
for (auto & kv: v.object_items())
{
if (kv.first == "key")
cmp[kv.first] = base64_encode(etcd_prefix+kv.second.string_value());
else
cmp[kv.first] = kv.second;
}
compare.push_back(cmp);
}
encoded["compare"] = compare;
}
if (txn["failure"].is_array())
{
encoded["failure"] = etcd_encode_actions(txn["failure"]);
}
if (txn["success"].is_array())
{
encoded["success"] = etcd_encode_actions(txn["success"]);
}
etcd_call("/kv/txn", txn, timeout, retries, interval, callback);
}
@@ -914,6 +867,7 @@ void etcd_state_client_t::parse_state(const etcd_kv_t & kv)
}
else
{
fprintf(stderr, "RECEIVED PG %u/%u HISTORY: %s\n", pool_id, pg_num, value.dump().c_str());
auto & pg_cfg = this->pool_config[pool_id].pg_config[pg_num];
pg_cfg.target_history.clear();
pg_cfg.all_peers.clear();
-1
View File
@@ -93,7 +93,6 @@ protected:
bool rand_initialized = false;
void add_etcd_url(std::string);
void pick_next_etcd();
json11::Json etcd_encode_actions(const json11::Json & items);
public:
int etcd_keepalive_timeout = 30;
int etcd_ws_keepalive_interval = 30;
+15
View File
@@ -694,6 +694,20 @@ void osd_t::apply_pg_config()
}
else
{
printf(
"Repeer %u/%u because of history: %s vs %s\n",
pool_id, pg_num,
json11::Json(json11::Json::object {
{ "target_set", pg_cfg.target_set },
{ "osd_sets", pg_cfg.target_history },
{ "all_peers", vec_all_peers },
}).dump().c_str(),
json11::Json(json11::Json::object {
{ "target_set", pg_it->second.target_set },
{ "osd_sets", pg_it->second.target_history },
{ "all_peers", pg_it->second.all_peers },
}).dump().c_str()
);
// Stop PG, reapply change after stopping
stop_pg(pg_it->second);
all_applied = false;
@@ -871,6 +885,7 @@ void osd_t::report_pg_states()
{ "all_peers", pg.all_peers },
{ "osd_sets", pg.target_history },
};
printf("PG %u/%u HISTORY -> %s\n", pg.pool_id, pg.pg_num, json11::Json(history_value).dump().c_str());
checks.push_back(json11::Json::object {
{ "target", "MOD" },
{ "key", history_key },