aboutsummaryrefslogtreecommitdiffstats
path: root/lib/hashserv/server.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/hashserv/server.py')
-rw-r--r--lib/hashserv/server.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/lib/hashserv/server.py b/lib/hashserv/server.py
index 2770c2360..9ade988e5 100644
--- a/lib/hashserv/server.py
+++ b/lib/hashserv/server.py
@@ -130,6 +130,18 @@ async def copy_from_upstream(client, db, method, taskhash):
d = {k: v for k, v in d.items() if k in TABLE_COLUMNS}
keys = sorted(d.keys())
+ with closing(db.cursor()) as cursor:
+ insert_task(cursor, d)
+ db.commit()
+
+ return d
+
+async def copy_outhash_from_upstream(client, db, method, outhash, taskhash):
+ d = await client.get_outhash(method, outhash, taskhash)
+ if d is not None:
+ # Filter out unknown columns
+ d = {k: v for k, v in d.items() if k in TABLE_COLUMNS}
+ keys = sorted(d.keys())
with closing(db.cursor()) as cursor:
insert_task(cursor, d)
@@ -359,6 +371,14 @@ class ServerClient(object):
row = cursor.fetchone()
+ if row is None and self.upstream_client:
+ # Try upstream
+ row = await copy_outhash_from_upstream(self.upstream_client,
+ self.db,
+ data['method'],
+ data['outhash'],
+ data['taskhash'])
+
# If no matching outhash was found, or one *was* found but it
# wasn't an exact match on the taskhash, a new entry for this
# taskhash should be added