|
5 | 5 | * Read (pickled) build options from command line. |
6 | 6 | * Populate status file with pid and socket address. |
7 | 7 | * Receive build sources from coordinator. |
8 | | -* Load graph using the sources, and send ack to coordinator. |
| 8 | +* Initialize build manager with the sources, and send ack to coordinator. |
| 9 | +* Receive build graph from coordinator, and ack it. |
9 | 10 | * Receive SCC structure from coordinator, and ack it. |
10 | | -* Receive an SCC id from coordinator, process it, and send back the results. |
11 | | -* Each SCC is processed in two phases: interface then implementation, with an ack in |
12 | | - between. (It is not 100% clear why the ack is needed, but deadlocks happen without it) |
13 | | -* When prompted by coordinator (with a scc_id=None message), cleanup and shutdown. |
| 11 | +* In a loop: |
| 12 | + - Receive an SCC id from coordinator, and start processing it. |
| 13 | + - SCC is processed in two phases: interface and implementation, send a response after each. |
| 14 | + - When prompted by coordinator (with a scc_id=None message), cleanup and shutdown. |
14 | 15 | """ |
15 | 16 |
|
16 | 17 | from __future__ import annotations |
|
30 | 31 |
|
31 | 32 | from mypy import util |
32 | 33 | from mypy.build import ( |
33 | | - ACK_MESSAGE, |
34 | 34 | GRAPH_MESSAGE, |
35 | 35 | SCC, |
36 | 36 | SCC_REQUEST_MESSAGE, |
@@ -201,9 +201,6 @@ def serve(server: IPCServer, ctx: ServerContext) -> None: |
201 | 201 | mod_results[id] = mod_result |
202 | 202 | meta_files.append(meta_file) |
203 | 203 | send(server, SccResponseMessage(scc_id=scc_id, is_interface=True, result=mod_results)) |
204 | | - # Only proceed with the implementations if there are no blockers so far. |
205 | | - if should_shutdown(receive(server), ACK_MESSAGE): |
206 | | - break |
207 | 204 | try: |
208 | 205 | result = process_stale_scc_implementation(graph, stale, manager, meta_files) |
209 | 206 | # Both phases write cache, so we should commit here as well. |
|
0 commit comments