[tor-commits] [bridgedb/master] 5482 - Refactor pruning code
aagbsn at torproject.org
aagbsn at torproject.org
Wed Apr 17 00:26:44 UTC 2013
commit 8729f33c7538fdfc844b54f1d35ea65a0bef0040
Author: aagbsn <aagbsn at extc.org>
Date: Mon Nov 12 09:43:23 2012 -0800
5482 - Refactor pruning code
---
lib/bridgedb/Stability.py | 19 ++++++-------------
1 files changed, 6 insertions(+), 13 deletions(-)
diff --git a/lib/bridgedb/Stability.py b/lib/bridgedb/Stability.py
index a8a8479..a86f853 100644
--- a/lib/bridgedb/Stability.py
+++ b/lib/bridgedb/Stability.py
@@ -161,6 +161,7 @@ def addOrUpdateBridgeHistory(bridge, timestamp):
statusPublicationMillis = long(timestamp * 1000)
if (statusPublicationMillis - bhe.lastSeenWithThisAddressAndPort) > 60*60*1000:
secondsSinceLastStatusPublication = long(60*60)
+ logging.debug("Capping secondsSinceLastStatusPublication to 1 hour")
# otherwise, roll with it
else:
secondsSinceLastStatusPublication = \
@@ -181,6 +182,7 @@ def addOrUpdateBridgeHistory(bridge, timestamp):
# compare the stored history against the descriptor and see if the
# bridge has changed its address or port
bhe = db.getBridgeHistory(bridge.fingerprint)
+
if not bridge.running:
log.notice("%s is not running" % bridge.fingerprint)
return bhe
@@ -198,7 +200,6 @@ def addOrUpdateBridgeHistory(bridge, timestamp):
# current address and port, and that we saw it using them.
bhe.weightedUptime += secondsSinceLastStatusPublication
bhe.lastSeenWithThisAddressAndPort = statusPublicationMillis
-
bhe.ip = str(bridge.ip)
bhe.port = bridge.orport
return db.updateIntoBridgeHistory(bhe)
@@ -207,26 +208,18 @@ def discountAndPruneBridgeHistories(discountUntilMillis):
db = bridgedb.Storage.getDB()
bhToRemove = []
bhToUpdate = []
- # Just check the first item to see if we're anywhere close yet
- sample = None
- for y in db.getAllBridgeHistory():
- sample = y
- break
- if not sample: return
-
- if discountUntilMillis - sample.lastDiscountedHistoryValues \
- < discountIntervalMillis: return
+
for bh in db.getAllBridgeHistory():
# discount previous values by factor of 0.95 every 12 hours
bh.discountWeightedFractionalUptimeAndWeightedTime(discountUntilMillis)
-
- if (bh.weightedTime != 0 and bh.weightedUptime != 0 and (bh.weightedUptime * 10000 / bh.weightedTime) < 1):
+ # give the thing at least 24 hours before pruning it
+ if bh.weightedFractionalUptime < 1 and bh.weightedTime > 60*60*24:
logging.debug("Removing bridge from history: %s" % bh.fingerprint)
bhToRemove.append(bh.fingerprint)
else:
bhToUpdate.append(bh)
+
for k in bhToUpdate: db.updateIntoBridgeHistory(k)
- # prune items
for k in bhToRemove: db.delBridgeHistory(k)
def updateWeightedTime(statusPublicationMillis):
More information about the tor-commits
mailing list