raco setup: avoid recompilation in parallel mode
The `parallel-lock-client` protocol expects a #f back when a file was meanwhile compiled by another process. So, don't just forget about a file after it is compiled, in case there is still a lock request on the way for that file.
This commit is contained in:
parent
4946196c91
commit
0bc010d972
|
@ -38,6 +38,9 @@
|
||||||
(hash-set!
|
(hash-set!
|
||||||
locks fn
|
locks fn
|
||||||
(match v
|
(match v
|
||||||
|
['done
|
||||||
|
(wrkr/send wrkr (list 'compiled))
|
||||||
|
'done]
|
||||||
[(list w waitlst)
|
[(list w waitlst)
|
||||||
(hash-set! depends wrkr (cons w fn))
|
(hash-set! depends wrkr (cons w fn))
|
||||||
(let ([fns (check-cycles wrkr (hash) null)])
|
(let ([fns (check-cycles wrkr (hash) null)])
|
||||||
|
@ -57,7 +60,7 @@
|
||||||
(for ([x (second (hash-ref locks fn))])
|
(for ([x (second (hash-ref locks fn))])
|
||||||
(hash-remove! depends x)
|
(hash-remove! depends x)
|
||||||
(wrkr/send x (list 'compiled)))
|
(wrkr/send x (list 'compiled)))
|
||||||
(hash-remove! locks fn)]))
|
(hash-set! locks fn 'done)]))
|
||||||
(define/private (check-cycles w seen fns)
|
(define/private (check-cycles w seen fns)
|
||||||
(cond
|
(cond
|
||||||
[(hash-ref seen w #f) fns]
|
[(hash-ref seen w #f) fns]
|
||||||
|
|
Loading…
Reference in New Issue
Block a user