aboutsummaryrefslogtreecommitdiff
path: root/changes
diff options
context:
space:
mode:
authorNick Mathewson <nickm@torproject.org>2014-06-01 16:48:43 -0400
committerNick Mathewson <nickm@torproject.org>2014-06-02 00:45:15 -0400
commitad8977e39461807dd04e34dc7fa3c12ccef0b62d (patch)
tree146b48d8abadabb94d1272017910f016d6e6c48b /changes
parent8d9602c21ccc0d93c82c651d94791df88cf4c9ad (diff)
downloadtor-ad8977e39461807dd04e34dc7fa3c12ccef0b62d.tar
tor-ad8977e39461807dd04e34dc7fa3c12ccef0b62d.tar.gz
Avoid needless router_dir_info_has_changed from router_set_status
On some profiles of Andrea's from #11332, I found that a great deal of time can still be attributed to functions called from update_router_have_minimum_dir_info(). This is making our digestmap, tor_memeq, and siphash functions take a much bigger portion of runtime than they really should. If we're calling update_router_have_minimum_dir_info() too often, that's because we're calling router_dir_info_changed() too often. And it looks like most of the callers of router_dir_info_changed() are coming as tail-calls from router_set_status() as invoked by channel_do_open_actions(). But we don't need to call router_dir_info_changed() so much! (I'm not quite sure we need to call it from here at all, but...) Surely we don't need to call it from router_set_status when the router's status has not actually changed. This patch makes us call router_dir_info_changed() from router_set_status only when we are changing the router's status. Fix for bug 12170. This is leftover from our fix back in 273ee3e81 in 0.1.2.1-alpha, where we started caching the value of update_router_have_minimum_dir_info().
Diffstat (limited to 'changes')
-rw-r--r--changes/bug1217011
1 files changed, 11 insertions, 0 deletions
diff --git a/changes/bug12170 b/changes/bug12170
new file mode 100644
index 000000000..e462e4fa7
--- /dev/null
+++ b/changes/bug12170
@@ -0,0 +1,11 @@
+ o Major bugfixes (performance):
+ - Do not recompute whether we have sufficient information to build
+ circuits every time we make a successful connection. Previously,
+ we would forget our cached value for this flag every time we
+ successfully opened a channel (or marked a router as running or not
+ running for any
+ other reason), regardless of whether we had
+ previously believed the router to be running. This forced us to
+ run a fairly expensive update operation with relatively
+ high frequency.
+ Fixes bug 12170; bugfix on 0.1.2.1-alpha.