This repository was archived by the owner on Mar 1, 2022. It is now read-only.
File tree 3 files changed +28
-11
lines changed
3 files changed +28
-11
lines changed Original file line number Diff line number Diff line change @@ -106,7 +106,10 @@ mixin template DefaultComponentWrapper(bool withDtor = true)
106
106
if (! _threads)
107
107
synchronized (this )
108
108
if (! _threads)
109
+ {
109
110
_threads = new TaskPool(max(minSize, min(maxSize, defaultPoolThreads)));
111
+ _threads.isDaemon = true ;
112
+ }
110
113
return _threads;
111
114
}
112
115
Original file line number Diff line number Diff line change @@ -623,7 +623,10 @@ class WorkspaceD
623
623
if (! _gthreads)
624
624
synchronized (this )
625
625
if (! _gthreads)
626
+ {
626
627
_gthreads = new TaskPool(max(2 , min(6 , defaultPoolThreads)));
628
+ _gthreads.isDaemon = true ;
629
+ }
627
630
return _gthreads;
628
631
}
629
632
}
Original file line number Diff line number Diff line change @@ -227,16 +227,28 @@ class DCDComponent : ComponentWrapper
227
227
running = true ;
228
228
serverThreads.create({
229
229
mixin (traceTask);
230
- if (quietServer)
231
- foreach (block; serverPipes.stderr.byChunk(4096 ))
232
- {
233
- }
234
- else
235
- while (serverPipes.stderr.isOpen && ! serverPipes.stderr.eof)
236
- {
237
- auto line = serverPipes.stderr.readln();
238
- trace(" Server: " , line); // evaluates lazily, so read before
239
- }
230
+ scope (exit)
231
+ running = false ;
232
+
233
+ try
234
+ {
235
+ if (quietServer)
236
+ foreach (block; serverPipes.stderr.byChunk(4096 ))
237
+ {
238
+ }
239
+ else
240
+ while (serverPipes.stderr.isOpen && ! serverPipes.stderr.eof)
241
+ {
242
+ auto line = serverPipes.stderr.readln();
243
+ trace(" Server: " , line); // evaluates lazily, so read before
244
+ }
245
+ }
246
+ catch (Exception e)
247
+ {
248
+ error(" Reading/clearing stderr from dcd-server crashed (-> killing dcd-server): " , e);
249
+ serverPipes.pid.kill();
250
+ }
251
+
240
252
auto code = serverPipes.pid.wait();
241
253
info(" DCD-Server stopped with code " , code);
242
254
if (code != 0 )
@@ -246,7 +258,6 @@ class DCDComponent : ComponentWrapper
246
258
" type" : JSONValue(" crash" ),
247
259
" component" : JSONValue(" dcd" )
248
260
]));
249
- running = false ;
250
261
}
251
262
});
252
263
}
You can’t perform that action at this time.
0 commit comments