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