summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/hashserv/server.py
diff options
context:
space:
mode:
authorPaul Barker <pbarker@konsulko.com>2021-02-05 11:26:11 +0000
committerRichard Purdie <richard.purdie@linuxfoundation.org>2021-02-10 23:48:16 +0000
commit73160aac0608cc186be1ec991b08ff8f130cdb8f (patch)
treea4b9d783b02e6efb4f715a7797b4f9fd47477291 /bitbake/lib/hashserv/server.py
parent94f34b951bedaf7c64ba61c07144bc42cc8e9937 (diff)
downloadpoky-73160aac0608cc186be1ec991b08ff8f130cdb8f.tar.gz
bitbake: hashserv: server: Support searching upstream for outhash
Use the new get-outhash message to perform a read-only query against an upstream server (if present) when a reported taskhash/outhash combination is not found in the current database. If a matching entry is found upstream it is copied into the current database so it can be found by future queries. (Bitbake rev: 2be4f7f0d2ccb09917398289e8140e1467e84bb2) Signed-off-by: Paul Barker <pbarker@konsulko.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
Diffstat (limited to 'bitbake/lib/hashserv/server.py')
-rw-r--r--bitbake/lib/hashserv/server.py20
1 files changed, 20 insertions, 0 deletions
diff --git a/bitbake/lib/hashserv/server.py b/bitbake/lib/hashserv/server.py
index 2770c23607..9ade988e56 100644
--- a/bitbake/lib/hashserv/server.py
+++ b/bitbake/lib/hashserv/server.py
@@ -130,6 +130,18 @@ async def copy_from_upstream(client, db, method, taskhash):
130 d = {k: v for k, v in d.items() if k in TABLE_COLUMNS} 130 d = {k: v for k, v in d.items() if k in TABLE_COLUMNS}
131 keys = sorted(d.keys()) 131 keys = sorted(d.keys())
132 132
133 with closing(db.cursor()) as cursor:
134 insert_task(cursor, d)
135 db.commit()
136
137 return d
138
139async def copy_outhash_from_upstream(client, db, method, outhash, taskhash):
140 d = await client.get_outhash(method, outhash, taskhash)
141 if d is not None:
142 # Filter out unknown columns
143 d = {k: v for k, v in d.items() if k in TABLE_COLUMNS}
144 keys = sorted(d.keys())
133 145
134 with closing(db.cursor()) as cursor: 146 with closing(db.cursor()) as cursor:
135 insert_task(cursor, d) 147 insert_task(cursor, d)
@@ -359,6 +371,14 @@ class ServerClient(object):
359 371
360 row = cursor.fetchone() 372 row = cursor.fetchone()
361 373
374 if row is None and self.upstream_client:
375 # Try upstream
376 row = await copy_outhash_from_upstream(self.upstream_client,
377 self.db,
378 data['method'],
379 data['outhash'],
380 data['taskhash'])
381
362 # If no matching outhash was found, or one *was* found but it 382 # If no matching outhash was found, or one *was* found but it
363 # wasn't an exact match on the taskhash, a new entry for this 383 # wasn't an exact match on the taskhash, a new entry for this
364 # taskhash should be added 384 # taskhash should be added