@@ -30,17 +30,25 @@ use std::fmt::{self, Debug};
30
30
use std:: sync:: Arc ;
31
31
32
32
enum Node {
33
- Task { task : Arc < Task > , running : bool } ,
33
+ // Running stores the worker that should be running this task, purely for
34
+ // printing.
35
+ Task {
36
+ task : Arc < Task > ,
37
+ running : Option < String > ,
38
+ } ,
34
39
CrateCompleted ,
35
40
Root ,
36
41
}
37
42
38
43
impl Debug for Node {
39
44
fn fmt ( & self , f : & mut fmt:: Formatter ) -> fmt:: Result {
40
45
match * self {
41
- Node :: Task { ref task, running } => {
42
- if running {
43
- write ! ( f, "running: {:?}" , task) ?;
46
+ Node :: Task {
47
+ ref task,
48
+ ref running,
49
+ } => {
50
+ if let Some ( worker) = running {
51
+ write ! ( f, "running on {}: {:?}" , worker, task) ?;
44
52
} else {
45
53
write ! ( f, "{:?}" , task) ?;
46
54
}
@@ -84,7 +92,7 @@ impl TasksGraph {
84
92
self . add_node (
85
93
Node :: Task {
86
94
task : Arc :: new ( task) ,
87
- running : false ,
95
+ running : None ,
88
96
} ,
89
97
deps,
90
98
)
@@ -133,7 +141,7 @@ impl TasksGraph {
133
141
let mut already_executed = false ;
134
142
if let Node :: Task {
135
143
ref task,
136
- running : false ,
144
+ running : None ,
137
145
} = self . graph [ node]
138
146
{
139
147
if !task. needs_exec ( ex, db) {
@@ -168,12 +176,14 @@ impl TasksGraph {
168
176
169
177
let mut delete = false ;
170
178
let result = match self . graph [ node] {
171
- Node :: Task { running : true , .. } => WalkResult :: Blocked ,
179
+ Node :: Task {
180
+ running : Some ( _) , ..
181
+ } => WalkResult :: Blocked ,
172
182
Node :: Task {
173
183
ref task,
174
184
ref mut running,
175
185
} => {
176
- * running = true ;
186
+ * running = Some ( worker . to_owned ( ) ) ;
177
187
WalkResult :: Task ( node, task. clone ( ) )
178
188
}
179
189
Node :: CrateCompleted => {
0 commit comments