summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Goulet <dgoulet@torproject.org>2021-03-10 09:51:30 -0500
committerDavid Goulet <dgoulet@torproject.org>2021-03-10 09:51:30 -0500
commit9f9fed3fd167d564ec669ee46d2da923fb887803 (patch)
tree13e2523ae1145cad8cbcce150b44a62527476687
parent05564a852110c0c908b03acba57d3b7b8dc222b4 (diff)
downloadtor-9f9fed3fd167d564ec669ee46d2da923fb887803.tar.gz
tor-9f9fed3fd167d564ec669ee46d2da923fb887803.zip
vote: Add "stats" line
Closes #40314 Signed-off-by: David Goulet <dgoulet@torproject.org>
-rw-r--r--changes/ticket403144
-rw-r--r--src/feature/nodelist/fmt_routerstatus.c13
2 files changed, 15 insertions, 2 deletions
diff --git a/changes/ticket40314 b/changes/ticket40314
new file mode 100644
index 0000000000..328687c265
--- /dev/null
+++ b/changes/ticket40314
@@ -0,0 +1,4 @@
+ o Minor feature (Vote document):
+ - Add the "stats" line in a directory authority vote in order to report
+ various statistics that the authority has computed for the relays. This
+ will help us diagnose better the network. Close ticket 40314.
diff --git a/src/feature/nodelist/fmt_routerstatus.c b/src/feature/nodelist/fmt_routerstatus.c
index 5c1e9309b9..51f7ee7d95 100644
--- a/src/feature/nodelist/fmt_routerstatus.c
+++ b/src/feature/nodelist/fmt_routerstatus.c
@@ -15,11 +15,11 @@
#include "feature/nodelist/fmt_routerstatus.h"
#include "core/or/policies.h"
-#include "feature/nodelist/routerlist.h"
#include "feature/dirauth/dirvote.h"
-
#include "feature/nodelist/routerinfo_st.h"
+#include "feature/nodelist/routerlist.h"
#include "feature/nodelist/vote_routerstatus_st.h"
+#include "feature/stats/rephist.h"
#include "lib/crypt_ops/crypto_format.h"
@@ -195,6 +195,15 @@ routerstatus_format_entry(const routerstatus_t *rs, const char *version,
digest256_to_base64(ed_b64, (const char*)vrs->ed25519_id);
smartlist_add_asprintf(chunks, "id ed25519 %s\n", ed_b64);
}
+
+ /* We'll add a series of statistics to the vote per relays so we are
+ * able to assess what each authorities sees and help our health and
+ * performance work. */
+ time_t now = time(NULL);
+ smartlist_add_asprintf(chunks, "stats wfu=%.6f tk=%lu mtbf=%.0f\n",
+ rep_hist_get_weighted_fractional_uptime(rs->identity_digest, now),
+ rep_hist_get_weighted_time_known(rs->identity_digest, now),
+ rep_hist_get_stability(rs->identity_digest, now));
}
}