diff options
Diffstat (limited to 'lib/hashserv/server.py')
-rw-r--r-- | lib/hashserv/server.py | 20 |
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 |