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.py25
1 files changed, 24 insertions, 1 deletions
diff --git a/bitbake/lib/hashserv/server.py b/bitbake/lib/hashserv/server.py
index 84cf4f2283..c691df7618 100644
--- a/bitbake/lib/hashserv/server.py
+++ b/bitbake/lib/hashserv/server.py
@@ -124,6 +124,7 @@ class ServerClient(bb.asyncrpc.AsyncServerConnection):
124 self.max_chunk = bb.asyncrpc.DEFAULT_MAX_CHUNK 124 self.max_chunk = bb.asyncrpc.DEFAULT_MAX_CHUNK
125 self.backfill_queue = backfill_queue 125 self.backfill_queue = backfill_queue
126 self.upstream = upstream 126 self.upstream = upstream
127 self.read_only = read_only
127 128
128 self.handlers.update( 129 self.handlers.update(
129 { 130 {
@@ -131,13 +132,15 @@ class ServerClient(bb.asyncrpc.AsyncServerConnection):
131 "get-outhash": self.handle_get_outhash, 132 "get-outhash": self.handle_get_outhash,
132 "get-stream": self.handle_get_stream, 133 "get-stream": self.handle_get_stream,
133 "get-stats": self.handle_get_stats, 134 "get-stats": self.handle_get_stats,
135 # Not always read-only, but internally checks if the server is
136 # read-only
137 "report": self.handle_report,
134 } 138 }
135 ) 139 )
136 140
137 if not read_only: 141 if not read_only:
138 self.handlers.update( 142 self.handlers.update(
139 { 143 {
140 "report": self.handle_report,
141 "report-equiv": self.handle_equivreport, 144 "report-equiv": self.handle_equivreport,
142 "reset-stats": self.handle_reset_stats, 145 "reset-stats": self.handle_reset_stats,
143 "backfill-wait": self.handle_backfill_wait, 146 "backfill-wait": self.handle_backfill_wait,
@@ -284,7 +287,27 @@ class ServerClient(bb.asyncrpc.AsyncServerConnection):
284 await self.socket.send("ok") 287 await self.socket.send("ok")
285 return self.NO_RESPONSE 288 return self.NO_RESPONSE
286 289
290 async def report_readonly(self, data):
291 method = data["method"]
292 outhash = data["outhash"]
293 taskhash = data["taskhash"]
294
295 info = await self.get_outhash(method, outhash, taskhash)
296 if info:
297 unihash = info["unihash"]
298 else:
299 unihash = data["unihash"]
300
301 return {
302 "taskhash": taskhash,
303 "method": method,
304 "unihash": unihash,
305 }
306
287 async def handle_report(self, data): 307 async def handle_report(self, data):
308 if self.read_only:
309 return await self.report_readonly(data)
310
288 outhash_data = { 311 outhash_data = {
289 "method": data["method"], 312 "method": data["method"],
290 "outhash": data["outhash"], 313 "outhash": data["outhash"],