From 7988c97c94ba16dd05977022b933193095f974c6 Mon Sep 17 00:00:00 2001 From: Rubel Hassan Mollik Date: Wed, 19 Jun 2024 13:58:15 +0600 Subject: [PATCH 1/2] Increase Escrower tock to avoid overly busy CPU during escrow processing Setting tock to 1.0 second runs escrower loop 30s delay and delegator approval received after 30 seconds --- src/keria/app/agenting.py | 30 ++++++++++++++++-------------- tests/app/test_delegating.py | 2 +- 2 files changed, 17 insertions(+), 15 deletions(-) diff --git a/src/keria/app/agenting.py b/src/keria/app/agenting.py index 172e778b..7c381b6b 100644 --- a/src/keria/app/agenting.py +++ b/src/keria/app/agenting.py @@ -5,6 +5,7 @@ """ import json +import datetime import os from dataclasses import asdict from urllib.parse import urlparse, urljoin @@ -745,23 +746,24 @@ def __init__(self, kvy, rgy, rvy, tvy, exc, vry, registrar, credentialer): self.vry = vry self.registrar = registrar self.credentialer = credentialer + self.tock = 1.0 - super(Escrower, self).__init__() + super(Escrower, self).__init__(tock=self.tock) - def recur(self, tyme): + def recur(self, tyme=None): """ Process all escrows once per loop. """ - self.kvy.processEscrows() - self.kvy.processEscrowDelegables() - self.rgy.processEscrows() - self.rvy.processEscrowReply() - if self.tvy is not None: - self.tvy.processEscrows() - self.exc.processEscrow() - self.vry.processEscrows() - self.registrar.processEscrows() - self.credentialer.processEscrows() - - return False + while True: + self.kvy.processEscrows() + self.kvy.processEscrowDelegables() + self.rgy.processEscrows() + self.rvy.processEscrowReply() + if self.tvy is not None: + self.tvy.processEscrows() + self.exc.processEscrow() + self.vry.processEscrows() + self.registrar.processEscrows() + self.credentialer.processEscrows() + yield self.tock def loadEnds(app): diff --git a/tests/app/test_delegating.py b/tests/app/test_delegating.py index 01b44387..b5b261b8 100644 --- a/tests/app/test_delegating.py +++ b/tests/app/test_delegating.py @@ -151,7 +151,7 @@ def test_delegator_end(helpers): assert res.status_code == 200 op = res.json count += 1 - if count > 10: + if count > 60: raise Exception("Delegator never processed the delegatee dip event") # Delegator escrows completed and now aknowledges the delegatee dip event From 19a4bd96866d04127b0fe549035bbf9953f72d8e Mon Sep 17 00:00:00 2001 From: Rubel Hassan Mollik Date: Mon, 24 Jun 2024 14:05:57 +0600 Subject: [PATCH 2/2] Remove redundant looping inside escrower recur method --- src/keria/app/agenting.py | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/src/keria/app/agenting.py b/src/keria/app/agenting.py index 7c381b6b..bb02f4df 100644 --- a/src/keria/app/agenting.py +++ b/src/keria/app/agenting.py @@ -5,7 +5,6 @@ """ import json -import datetime import os from dataclasses import asdict from urllib.parse import urlparse, urljoin @@ -750,20 +749,19 @@ def __init__(self, kvy, rgy, rvy, tvy, exc, vry, registrar, credentialer): super(Escrower, self).__init__(tock=self.tock) - def recur(self, tyme=None): + def recur(self, tyme): """ Process all escrows once per loop. """ - while True: - self.kvy.processEscrows() - self.kvy.processEscrowDelegables() - self.rgy.processEscrows() - self.rvy.processEscrowReply() - if self.tvy is not None: - self.tvy.processEscrows() - self.exc.processEscrow() - self.vry.processEscrows() - self.registrar.processEscrows() - self.credentialer.processEscrows() - yield self.tock + self.kvy.processEscrows() + self.kvy.processEscrowDelegables() + self.rgy.processEscrows() + self.rvy.processEscrowReply() + if self.tvy is not None: + self.tvy.processEscrows() + self.exc.processEscrow() + self.vry.processEscrows() + self.registrar.processEscrows() + self.credentialer.processEscrows() + return False def loadEnds(app):