summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/hashserv/server.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/hashserv/server.py')
-rw-r--r--bitbake/lib/hashserv/server.py36
1 files changed, 36 insertions, 0 deletions
diff --git a/bitbake/lib/hashserv/server.py b/bitbake/lib/hashserv/server.py
index 0aff77688e..cc7e48233b 100644
--- a/bitbake/lib/hashserv/server.py
+++ b/bitbake/lib/hashserv/server.py
@@ -143,6 +143,7 @@ class ServerClient(object):
143 handlers = { 143 handlers = {
144 'get': self.handle_get, 144 'get': self.handle_get,
145 'report': self.handle_report, 145 'report': self.handle_report,
146 'report-equiv': self.handle_equivreport,
146 'get-stream': self.handle_get_stream, 147 'get-stream': self.handle_get_stream,
147 'get-stats': self.handle_get_stats, 148 'get-stats': self.handle_get_stats,
148 'reset-stats': self.handle_reset_stats, 149 'reset-stats': self.handle_reset_stats,
@@ -303,6 +304,41 @@ class ServerClient(object):
303 304
304 self.write_message(d) 305 self.write_message(d)
305 306
307 async def handle_equivreport(self, data):
308 with closing(self.db.cursor()) as cursor:
309 insert_data = {
310 'method': data['method'],
311 'outhash': "",
312 'taskhash': data['taskhash'],
313 'unihash': data['unihash'],
314 'created': datetime.now()
315 }
316
317 for k in ('owner', 'PN', 'PV', 'PR', 'task', 'outhash_siginfo'):
318 if k in data:
319 insert_data[k] = data[k]
320
321 cursor.execute('''INSERT OR IGNORE INTO tasks_v2 (%s) VALUES (%s)''' % (
322 ', '.join(sorted(insert_data.keys())),
323 ', '.join(':' + k for k in sorted(insert_data.keys()))),
324 insert_data)
325
326 self.db.commit()
327
328 # Fetch the unihash that will be reported for the taskhash. If the
329 # unihash matches, it means this row was inserted (or the mapping
330 # was already valid)
331 row = self.query_equivalent(data['method'], data['taskhash'])
332
333 if row['unihash'] == data['unihash']:
334 logger.info('Adding taskhash equivalence for %s with unihash %s',
335 data['taskhash'], row['unihash'])
336
337 d = {k: row[k] for k in ('taskhash', 'method', 'unihash')}
338
339 self.write_message(d)
340
341
306 async def handle_get_stats(self, request): 342 async def handle_get_stats(self, request):
307 d = { 343 d = {
308 'requests': self.request_stats.todict(), 344 'requests': self.request_stats.todict(),