Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Overhaul transitive module handling in dependency resolution #4145

Merged
Merged
Changes from 1 commit
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
95f49f9
Overhaul transitive module handling in dep resolution
alexarchambault Dec 16, 2024
a561284
fixes
alexarchambault Dec 17, 2024
9434d99
Update coursier to 2.1.22
alexarchambault Dec 17, 2024
ca347cc
Temporary - drop resolveFilters
alexarchambault Dec 18, 2024
b1eff1c
Fix
alexarchambault Dec 18, 2024
24714ed
Get rid of resolveFilter stuff
alexarchambault Dec 18, 2024
e1c1daa
Merge branch 'main' into pr/java-module-cs-project
alexarchambault Dec 18, 2024
275f54d
Missing bits from #4162
alexarchambault Dec 18, 2024
5c90bb0
Fix bin compat
alexarchambault Dec 18, 2024
1a8a3d2
add docs, tweak things
alexarchambault Dec 18, 2024
c6c8a7e
Add doc, plus fixes / guards
alexarchambault Dec 18, 2024
191bf54
Merge branch 'main' into pr/java-module-cs-project
alexarchambault Dec 27, 2024
d9195df
Merge branch 'main' into pr/java-module-cs-project
alexarchambault Jan 7, 2025
6f39c72
Tweaking
alexarchambault Jan 7, 2025
31f610d
Update BspServerTests test data
alexarchambault Jan 7, 2025
4f293a3
Merge branch 'main' into pr/java-module-cs-project
alexarchambault Jan 7, 2025
aa5e418
Merge branch 'main' into pr/java-module-cs-project
alexarchambault Jan 8, 2025
2098054
Cache test module overrides read attempts
alexarchambault Jan 8, 2025
feda739
Better error messages
alexarchambault Jan 8, 2025
b970a90
debug bootstrap job
alexarchambault Jan 8, 2025
e1c02eb
debug deadlock issue on CI
alexarchambault Jan 8, 2025
8b8db3c
fixup
alexarchambault Jan 8, 2025
9c2e634
fixup
alexarchambault Jan 8, 2025
84d8a4d
debug
alexarchambault Jan 8, 2025
10601aa
?
alexarchambault Jan 8, 2025
222efe7
Revert "debug"
alexarchambault Jan 8, 2025
90f93e9
Merge branch 'main' into pr/java-module-cs-project
alexarchambault Jan 8, 2025
1f46568
More debugging
alexarchambault Jan 8, 2025
7ad6ff4
check
alexarchambault Jan 8, 2025
db7af84
other check
alexarchambault Jan 8, 2025
8f8ecb0
Revert "check"
alexarchambault Jan 8, 2025
c5dc629
Tweaking
alexarchambault Jan 8, 2025
e1f5d8f
Don't change default stderr
alexarchambault Jan 8, 2025
a122015
last check
alexarchambault Jan 8, 2025
30462a2
?
alexarchambault Jan 8, 2025
5527736
Revert debug stuff
alexarchambault Jan 8, 2025
847462b
fmt
alexarchambault Jan 8, 2025
b9ee650
Update BSP test snapshots
alexarchambault Jan 8, 2025
4c0a06f
Merge branch 'main' into pr/java-module-cs-project
alexarchambault Jan 9, 2025
b5611cf
Merge branch 'main' into pr/java-module-cs-project
alexarchambault Jan 13, 2025
2c6b737
Tweak things / add comments
alexarchambault Jan 13, 2025
da17946
Fix version in new deprecation messages
alexarchambault Jan 13, 2025
7ac0124
Fix new import order
alexarchambault Jan 13, 2025
0d8d34d
Revert BSP benchmark change
alexarchambault Jan 13, 2025
536d958
Copy comment
alexarchambault Jan 14, 2025
685fb8d
Merge branch 'main' into pr/java-module-cs-project
alexarchambault Jan 15, 2025
1ab71c9
Fix out-files test
alexarchambault Jan 15, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
debug deadlock issue on CI
alexarchambault committed Jan 8, 2025
commit e1c02ebcc6c480bb390dac657b4ccefe30ae5107
73 changes: 73 additions & 0 deletions main/util/src/mill/util/CoursierSupport.scala
Original file line number Diff line number Diff line change
@@ -145,6 +145,10 @@ trait CoursierSupport {
artifactTypes: Option[Set[Type]] = None,
resolutionParams: ResolutionParams = ResolutionParams()
): Result[Agg[PathRef]] = {

DependencyWatcher.ref()
try {

val resolutionRes = resolveDependenciesMetadataSafe(
repositories,
deps,
@@ -190,6 +194,10 @@ trait CoursierSupport {
)
}
}
}
finally {
DependencyWatcher.unref()
}
}

// bin-compat shim
@@ -534,4 +542,69 @@ object CoursierSupport {
}
}

private object DependencyWatcher extends Runnable {
import java.util.concurrent.atomic.AtomicInteger
import java.util.concurrent.Executors
import java.util.concurrent.ScheduledExecutorService
import java.util.concurrent.TimeUnit
import java.util.concurrent.ScheduledFuture
import java.util.Locale
import scala.jdk.CollectionConverters._

def run(): Unit = {
val stackTraces = Thread.getAllStackTraces()
.asScala
.toVector
.sortBy(_._1.getId)
for ((t, stackTrace) <- stackTraces) {
System.err.println(s"Thread ${t.getName} (${t.getId}, ${t.getState.toString.toLowerCase(Locale.ROOT)}${if (t.isDaemon()) ", daemon" else ""})")
for (elem <- stackTrace)
System.err.println(s" $elem")
System.err.println()
}
}

private var pool: ScheduledExecutorService = null
private var f: ScheduledFuture[_] = null
private val count = new AtomicInteger

private def resetWatcher(): Unit = {
if (f != null)
f.cancel(false)
f = pool.scheduleWithFixedDelay(
DependencyWatcher,
2L,
10L,
TimeUnit.MINUTES
)
}

private def setup(): Unit = {
assert(pool == null)
pool = Executors.newSingleThreadScheduledExecutor()
}

private def tearDown(): Unit = {
assert(pool != null)
assert(f != null)
f.cancel(true)
f = null
pool.shutdown()
pool = null
}

def ref(): Unit = {
val prevCount = count.getAndIncrement()
if (prevCount == 0)
setup()
resetWatcher()
}

def unref(): Unit = {
val newCount = count.decrementAndGet()
if (newCount == 0)
tearDown()
}
}

}