Skip to content

Commit b54e773

Browse files
Merge commit 'ee0b253d0' into merge-upstream
Conflicts: .scalafmt.conf benchmarks/src/main/scala/bloop/ProjectBenchmark.scala frontend/src/main/scala/bloop/Bloop.scala frontend/src/main/scala/bloop/Cli.scala frontend/src/main/scala/bloop/bsp/BspServer.scala frontend/src/test/scala/bloop/BuildLoaderSpec.scala frontend/src/test/scala/bloop/FileWatchingSpec.scala frontend/src/test/scala/bloop/bsp/BspClientTest.scala frontend/src/test/scala/bloop/bsp/BspConnectionSpec.scala frontend/src/test/scala/bloop/nailgun/NailgunTestUtils.scala launcher-core/src/main/scala/bloop/launcher/bsp/BspBridge.scala launcher-test/src/test/scala/bloop/launcher/LauncherBaseSuite.scala project/Dependencies.scala
2 parents 8a75d49 + ee0b253 commit b54e773

File tree

83 files changed

+1953
-1367
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

83 files changed

+1953
-1367
lines changed

backend/src/main/scala/bloop/BloopClassFileManager.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ import bloop.io.AbsolutePath
1616
import bloop.io.ParallelOps
1717
import bloop.io.ParallelOps.CopyMode
1818
import bloop.io.{Paths => BloopPaths}
19+
import bloop.task.Task
1920
import bloop.tracing.BraveTracer
2021

21-
import monix.eval.Task
2222
import xsbti.compile.ClassFileManager
2323

2424
final class BloopClassFileManager(

backend/src/main/scala/bloop/CompileBackgroundTasks.scala

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,9 @@ package bloop
33
import bloop.io.AbsolutePath
44
import bloop.logging.Logger
55
import bloop.reporter.Reporter
6+
import bloop.task.Task
67
import bloop.tracing.BraveTracer
78

8-
import monix.eval.Task
9-
109
abstract class CompileBackgroundTasks {
1110
def trigger(
1211
clientClassesDir: AbsolutePath,

backend/src/main/scala/bloop/Compiler.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@ import bloop.logging.ObservedLogger
1919
import bloop.reporter.ProblemPerPhase
2020
import bloop.reporter.Reporter
2121
import bloop.reporter.ZincReporter
22+
import bloop.task.Task
2223
import bloop.tracing.BraveTracer
2324
import bloop.util.AnalysisUtils
2425
import bloop.util.CacheHashCode
2526
import bloop.util.UUIDUtil
2627

27-
import monix.eval.Task
2828
import monix.execution.Scheduler
2929
import sbt.internal.inc.Analysis
3030
import sbt.internal.inc.ConcreteAnalysisContents

backend/src/main/scala/bloop/io/ClasspathHasher.scala

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,13 @@ import java.util.zip.ZipEntry
1313

1414
import scala.collection.mutable
1515
import scala.concurrent.Promise
16+
import scala.util.control.NonFatal
1617

1718
import bloop.logging.Logger
19+
import bloop.task.Task
1820
import bloop.tracing.BraveTracer
1921

20-
import monix.eval.Task
22+
import monix.eval.{Task => MonixTask}
2123
import monix.execution.Cancelable
2224
import monix.execution.Scheduler
2325
import monix.execution.atomic.AtomicBoolean
@@ -76,10 +78,10 @@ object ClasspathHasher {
7678

7779
val isCancelled = AtomicBoolean(false)
7880
val parallelConsumer = {
79-
Consumer.foreachParallelAsync[AcquiredTask](parallelUnits) {
81+
Consumer.foreachParallelTask[AcquiredTask](parallelUnits) {
8082
case AcquiredTask(path, idx, p) =>
8183
// Use task.now because Monix's load balancer already forces an async boundary
82-
val hashingTask = Task.now {
84+
val hashingTask = MonixTask.now {
8385
val hash =
8486
try {
8587
if (cancelCompilation.isCompleted) {
@@ -108,7 +110,7 @@ object ClasspathHasher {
108110
}
109111
} catch {
110112
// Can happen when a file doesn't exist, for example
111-
case monix.execution.misc.NonFatal(_) => BloopStamps.emptyHash(path)
113+
case NonFatal(_) => BloopStamps.emptyHash(path)
112114
}
113115
classpathHashes(idx) = hash
114116
hashingPromises.remove(path, p)
@@ -147,8 +149,8 @@ object ClasspathHasher {
147149
)
148150

149151
hashingTask
150-
.doOnCancel(Task(timeoutCancellation.cancel()))
151-
.doOnFinish(_ => Task(timeoutCancellation.cancel()))
152+
.doOnCancel(MonixTask(timeoutCancellation.cancel()))
153+
.doOnFinish(_ => MonixTask(timeoutCancellation.cancel()))
152154
}
153155
}
154156

@@ -172,7 +174,7 @@ object ClasspathHasher {
172174
// If the process that acquired it cancels the computation, try acquiring it again
173175
logger
174176
.warn(s"Unexpected hash computation of $entry was cancelled, restarting...")
175-
Task.fork(Task.eval(acquireHashingEntry(entry, entryIdx)))
177+
Task.eval(acquireHashingEntry(entry, entryIdx)).asyncBoundary
176178
}
177179
} else {
178180
Task.now {

backend/src/main/scala/bloop/io/ParallelOps.scala

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@ import java.util.concurrent.ConcurrentHashMap
1111

1212
import scala.concurrent.Promise
1313

14-
import monix.eval.Task
14+
import bloop.task.Task
15+
16+
import monix.eval.{Task => MonixTask}
1517
import monix.execution.Cancelable
1618
import monix.execution.Scheduler
1719
import monix.execution.atomic.AtomicBoolean
@@ -148,7 +150,7 @@ object ParallelOps {
148150
Cancelable.cancelAll(completeSubscribers :: tasksToCancel)
149151
}
150152

151-
val copyFileSequentially = Consumer.foreachAsync[((Path, BasicFileAttributes), Path)] {
153+
val copyFileSequentially = Consumer.foreachTask[((Path, BasicFileAttributes), Path)] {
152154
case ((originFile, originAttrs), targetFile) =>
153155
def copy(replaceExisting: Boolean): Unit = {
154156
if (replaceExisting) {
@@ -169,7 +171,7 @@ object ParallelOps {
169171
}
170172

171173
// It's important that this task is not forked for performance reasons
172-
def triggerCopy(p: Promise[Unit]) = Task.eval {
174+
def triggerCopy(p: Promise[Unit]) = MonixTask.eval {
173175
try {
174176
// Skip work if cancellation is on and complete promise in finalizer
175177
if (isCancelled.get) ()
@@ -205,25 +207,27 @@ object ParallelOps {
205207
()
206208
}
207209

208-
def acquireFile: Task[Unit] = {
210+
def acquireFile: MonixTask[Unit] = {
209211
val currentPromise = Promise[Unit]()
210212
val promiseInMap = takenByOtherCopyProcess.putIfAbsent(originFile, currentPromise)
211213
if (promiseInMap == null) {
212214
triggerCopy(currentPromise)
213215
} else {
214-
Task.fromFuture(promiseInMap.future).flatMap(_ => acquireFile)
216+
MonixTask.fromFuture(promiseInMap.future).flatMap(_ => acquireFile)
215217
}
216218
}
217219

218220
acquireFile.coeval(scheduler).value match {
219221
// The happy path is that we evaluate the task and return
220-
case Right(()) => Task.now(())
222+
case Right(()) => MonixTask.now(())
221223
case Left(cancelable) =>
222224
// Blocked on another process to finish the copy of a file, when it's done we restart
223225
cancelables.synchronized { cancelables.+=(cancelable) }
224-
Task
226+
MonixTask
225227
.fromFuture(cancelable)
226-
.doOnFinish(_ => Task { cancelables.synchronized { cancelables.-=(cancelable) }; () })
228+
.doOnFinish(_ =>
229+
MonixTask { cancelables.synchronized { cancelables.-=(cancelable) }; () }
230+
)
227231
}
228232
}
229233

0 commit comments

Comments
 (0)