Fixes for runBackground
mutex and log management
#3971
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Fixes #3955.
We make
runBackground
forward the stdout/stderr to$serverDir/{stdout,stderr}
instead ofos.Inherit
. This is necessary because since we started using com-lihaoyi/os-lib@59b5fd9,os.Inherit
is automatically pumped to the enclosing task logger, which forrunBackground
ends up being closed immediately so the logs are lost.FileToStreamTailer
infrastructure, which picks them up and forwards them to any connected client regardless of who started the runBackground processMoved usage of
FileToStreamTailer
from the mill client to the server.Simplified
BackgroundWrapper
MillBackgroundWrapper
so it's more clear what it is when seen injps
Thread.sleep
after we take the lock, because the prior process seems to still hold on to sockets for some period of time. This defaults to 500ms (what is necessary experimentally) but is configurable by the newrunBackgroundRestartDelayMillis: T[Int]
taskMillBackgroundWrapper
, rather than having it split betweenBackgroundWrapper
anddef backgroundSetup
in the Mill server processTested manually by running
rm -rf out && /Users/lihaoyi/Github/mill/target/mill-release -w runBackground
insideexample/javalib/web/1-hello-jetty
. Forced updates viaEnter
in the terminal or via editing server source files. Verified that therunBackground
server logs appear in the console and that they do not conflict with the multi-line status prompt