Skip to content

Commit 5457f2b

Browse files
authored
Merge pull request #2710 from tgodzik/log-if-fails
improvement: Log if visiting file fails
2 parents ca0e751 + 3607235 commit 5457f2b

File tree

4 files changed

+16
-8
lines changed

4 files changed

+16
-8
lines changed

frontend/src/main/scala/bloop/engine/tasks/compilation/CompileBundle.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -193,7 +193,8 @@ object CompileBundle {
193193
sourceGeneratorCache.update(_, logger, options),
194194
20,
195195
cancelCompilation,
196-
ioScheduler
196+
ioScheduler,
197+
logger
197198
)
198199
.map(res => res.map(_.sortBy(_.source.id())))
199200
.executeOn(ioScheduler)

frontend/src/main/scala/bloop/io/SourceHasher.scala

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import monix.reactive.Consumer
2525
import monix.reactive.MulticastStrategy
2626
import monix.reactive.Observable
2727
import sbt.internal.inc.PlainVirtualFileConverter
28+
import bloop.logging.Logger
2829

2930
object SourceHasher {
3031
private final val sourceMatcher =
@@ -58,7 +59,8 @@ object SourceHasher {
5859
updateGenerator: SourceGenerator => Task[List[AbsolutePath]],
5960
parallelUnits: Int,
6061
cancelCompilation: Promise[Unit],
61-
scheduler: Scheduler
62+
scheduler: Scheduler,
63+
logger: Logger
6264
): Task[Either[Unit, List[HashedSource]]] = {
6365
val isCancelled = AtomicBoolean(false)
6466
val sourceFilesAndDirectories = project.sources.distinct
@@ -80,8 +82,10 @@ object SourceHasher {
8082
def visitFileFailed(
8183
t: Path,
8284
e: IOException
83-
): FileVisitResult = FileVisitResult.CONTINUE
84-
85+
): FileVisitResult = {
86+
logger.error(s"Failed to visit file $t: ${e.getMessage}", e)
87+
FileVisitResult.CONTINUE
88+
}
8589
def preVisitDirectory(
8690
directory: Path,
8791
attributes: BasicFileAttributes
@@ -103,7 +107,7 @@ object SourceHasher {
103107
val discovery = fileVisitor(matchSourceFile)
104108
val opts = java.util.EnumSet.of(FileVisitOption.FOLLOW_LINKS)
105109
sourceFilesAndDirectories.foreach { sourcePath =>
106-
if (visitedDirs.contains(sourcePath.underlying)) ()
110+
if (visitedDirs.contains(sourcePath.underlying) || !sourcePath.exists) ()
107111
else if (isCancelled.get) ()
108112
else {
109113
Files.walkFileTree(sourcePath.underlying, opts, Int.MaxValue, discovery)

frontend/src/test/scala/bloop/io/SourceHasherSpec.scala

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,8 @@ object SourceHasherSpec extends bloop.testing.BaseSuite {
4444
state.state.sourceGeneratorCache.update(_, logger, state.state.commonOptions),
4545
2,
4646
cancelPromise,
47-
ioScheduler
47+
ioScheduler,
48+
logger
4849
)
4950
val running = sourceHashesTask.runAsync(ioScheduler)
5051

@@ -61,7 +62,8 @@ object SourceHasherSpec extends bloop.testing.BaseSuite {
6162
state.state.sourceGeneratorCache.update(_, logger, state.state.commonOptions),
6263
2,
6364
cancelPromise2,
64-
ioScheduler
65+
ioScheduler,
66+
logger
6567
)
6668
val running2 = sourceHashesTask2.runAsync(ioScheduler)
6769
val uncancelledResult = Await.result(running2, FiniteDuration(20, "s"))

frontend/src/test/scala/bloop/io/SourcesGlobsSpec.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ object SourcesGlobsSpec extends bloop.testing.BaseSuite {
5353
state.sourceGeneratorCache.update(_, logger, state.commonOptions),
5454
1,
5555
Promise[Unit](),
56-
ioScheduler
56+
ioScheduler,
57+
logger
5758
)
5859
val Right(result) = TestUtil.await(10, TimeUnit.SECONDS)(hashedSources)
5960
val obtainedFilenames = result

0 commit comments

Comments
 (0)