mirror of
https://github.com/sbt/sbt.git
synced 2026-09-01 18:47:14 +02:00
1bfb971e2d8b83d30d3bce885118d1715fcf7843
NetworkChannel batches writes to the client at most once per 20ms to reduce terminal flicker and byte volume. forceFlush(), used to order buffered stdout ahead of a control-plane message, called flushExecutor.shutdownNow() -- the only place the executor was ever shut down. Once it ran during active output it tore the executor down (and, if a coalesced flush was pending, cancelled its future without resetting flushFuture, leaving the slot stuck), so the 20ms coalescing was gone for the rest of the connection: stdout was then flushed per write via the inline fallback instead of batched. Output still reaches the client, so the effect is extra flushes rather than lost output, but shutting the shared executor down on the first forceFlush is clearly unintended. Extract the flush state machine into CoalescingFlusher. forceFlush now drains immediately and leaves the timer live (a pending coalesced drain harmlessly drains the remainder when it fires); the executor is shut down once, at channel teardown, so it no longer leaks. doFlush now holds a lock across both the drain and the publish so an inline forceFlush and the timer's drain can't deliver two stdout batches out of order. Fixes #9415 Co-authored-by: BrianHotopp <[email protected]> Co-authored-by: Claude Fable 5 <[email protected]>
sbt
sbt is a build tool for Scala, Java, and more.
For general documentation, see https://www.scala-sbt.org/.
sbt 2.x
This is the 2.x series of sbt. The source code of sbt is split across several GitHub repositories, including this one.
- sbt/io hosts
sbt.iomodule. - sbt/zinc hosts Zinc, an incremental compiler for Scala.
- sbt/sbt, this repository hosts modules that implement the build tool.
Other links
- Setup: Describes getting started with the latest binary release.
- FAQ: Explains how to get help and more.
- sbt/sbt-zero-seven: hosts sbt 0.7.7 and earlier versions
Issues and Pull Requests
Please read CONTRIBUTING carefully before opening a GitHub Issue or a pull request.
If you're looking for an idea for a contribution, issues labeled with good first issue or help wanted might be good starting points.
If you would like to ask questions about sbt, there's sbt channel on Scala Discord, but it would be good to gather questions on Stackoverflow.
license
See LICENSE.
Languages
Scala
94.5%
Java
3.1%
Shell
1.1%
Batchfile
0.9%
Roff
0.2%
Other
0.1%