[tor-commits] [stem/master] Cache get_hidden_service_conf() responses
atagar at torproject.org
atagar at torproject.org
Mon Feb 1 04:21:04 UTC 2016
commit 8e2ca2b42ccf4ac3e9db805926e7d259b6eaf9a5
Author: Damian Johnson <atagar at torproject.org>
Date: Sun Jan 31 12:06:09 2016 -0800
Cache get_hidden_service_conf() responses
Nyx calls this quite a bit which is fine, but it bypasses our GETCONF cache.
Adding a cache for this similar to our exit policy cache. Even after just a few
seconds this caused thousands of calls so pretty important to nyx...
% grep 'GETCONF HiddenServiceOptions (runtime' /tmp/dump | wc -l
6943
---
stem/control.py | 9 +++++++++
1 file changed, 9 insertions(+)
diff --git a/stem/control.py b/stem/control.py
index 8c30b28..cecc48b 100644
--- a/stem/control.py
+++ b/stem/control.py
@@ -2339,6 +2339,8 @@ class Controller(BaseController):
if param == 'exitpolicy':
self._set_cache({'exitpolicy': None})
+ elif 'hidden' in param:
+ self._set_cache({'hidden_service_conf': None})
# reset any getinfo parameters that can be changed by a SETCONF
@@ -2395,6 +2397,12 @@ class Controller(BaseController):
provided a default response
"""
+ service_dir_map = self._get_cache('hidden_service_conf')
+
+ if service_dir_map is not None:
+ log.trace('GETCONF HiddenServiceOptions (cache fetch)')
+ return service_dir_map
+
start_time = time.time()
try:
@@ -2444,6 +2452,7 @@ class Controller(BaseController):
else:
service_dir_map[directory][k] = v
+ self._set_cache({'hidden_service_conf': service_dir_map})
return service_dir_map
def set_hidden_service_conf(self, conf):
More information about the tor-commits
mailing list