From 8c3a75b3c85a8912e865a5973cde1ffe9662256b Mon Sep 17 00:00:00 2001 From: Mark Veidemanis Date: Thu, 11 Aug 2022 20:43:34 +0100 Subject: [PATCH] Expand ECA secondary allocation algorithm --- modules/chankeep.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/modules/chankeep.py b/modules/chankeep.py index d46e7fd..d672010 100644 --- a/modules/chankeep.py +++ b/modules/chankeep.py @@ -69,8 +69,15 @@ def emptyChanAllocate(net, flist, relay, new): chanfree[0][i] = chanfree[1] allocated = {} toalloc = len(flist) + # toalloc:2148 free:{1: 250} chanlimit:250 correction:2147 if toalloc > sum(chanfree[0].values()): - correction = round(toalloc - sum(chanfree[0].values()) / chanfree[1]) + sum_free = sum(chanfree[0].values()) # 250 + chans_not_covered = toalloc - sum_free # 2148 - 250 = 1898 + relays_needed = chans_not_covered / chanfree[1] # 1898 / 250 = 7.592 + relays_needed_rounded = round(relays_needed) + debug(f"emptyChanAllocate() secondary allocation sum_free:{sum_free} chans_not_covered:{chans_not_covered} relays_needed:{relays_needed} relays_needed_rounded:{relays_needed_rounded}") + #correction = round(toalloc - sum(chanfree[0].values()) / chanfree[1]) + correction = relays_needed_rounded debug(f"emptyChanAllocate() not enough free channels: toalloc:{toalloc} free:{chanfree[0]} chanlimit:{chanfree[1]} correction:{correction}") warn("Ran out of channel spaces, provisioning additional %i relays for %s" % (correction, net)) modules.provision.provisionMultipleRelays(net, correction)