-
-
Notifications
You must be signed in to change notification settings - Fork 421
Commit aa525a7
Fix classloading failure when rebootstrapping (#5136)
This seems to fix the classloading problems we were having in
#5132; reproduced the problem by
doing
```
rm -rf out
./mill dist.installLocal
rm -rf out
./mill-assembly.jar '{main,scalalib,testrunner,bsp,testkit}.__.test'
```
And repeating that workflow on top of this PR seems to fix it. Must be
some funky interaction between the class classloader and the context
classloader that causes the lazy instantiation of
`mill.api.SystemStreams.ThreadLocalStreams` to fail during classloading,
but forcing the classloading to happen ahead of time sand just keeping
the long-lived reference seems to work. I haven't actually managed to
understand the root cause so the workaround will have to do for now
```
bsp.worker.docJar java.lang.reflect.InvocationTargetException
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.base/java.lang.reflect.Method.invoke(Method.java:569)
mill.scalalib.worker.ZincWorkerImpl.$anonfun$docJar$2(ZincWorkerImpl.scala:262)
scala.runtime.java8.JFunction0$mcZ$sp.apply(JFunction0$mcZ$sp.scala:17)
mill.api.Retry.$anonfun$apply$1(Retry.scala:32)
mill.api.Retry.$anonfun$apply$1$adapted(Retry.scala:32)
mill.api.Retry.rec$1(Retry.scala:38)
mill.api.Retry.rec$1(Retry.scala:50)
mill.api.Retry.rec$1(Retry.scala:50)
mill.api.Retry.indexed(Retry.scala:54)
mill.api.Retry.apply(Retry.scala:32)
mill.scalalib.worker.ZincWorkerImpl.$anonfun$docJar$1(ZincWorkerImpl.scala:232)
mill.scalalib.worker.ZincWorkerImpl.$anonfun$docJar$1$adapted(ZincWorkerImpl.scala:228)
mill.scalalib.worker.ZincWorkerImpl.$anonfun$withCompilers$2(ZincWorkerImpl.scala:479)
mill.api.CachedFactory.withValue(CachedFactory.scala:39)
mill.scalalib.worker.ZincWorkerImpl.withCompilers(ZincWorkerImpl.scala:478)
mill.scalalib.worker.ZincWorkerImpl.docJar(ZincWorkerImpl.scala:228)
mill.scalalib.ScalaModule.packageWithZinc$1(ScalaModule.scala:317)
mill.scalalib.ScalaModule.$anonfun$docJar$2(ScalaModule.scala:410)
mill.define.Task$TraverseCtx.evaluate(Task.scala:245)
java.lang.NoClassDefFoundError: mill/api/SystemStreams$ThreadLocalStreams$
mill.api.SystemStreams$ThreadLocalStreams$Err$$anon$2.delegate(SystemStreams.scala:151)
mill.api.SystemStreams$ThreadLocalStreams$Err$$anon$2.delegate(SystemStreams.scala:151)
mill.api.SystemStreams$ThreadLocalStreams$ProxyOutputStream.write(SystemStreams.scala:156)
java.base/java.io.PrintStream.write(PrintStream.java:568)
java.base/sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:234)
java.base/sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:313)
java.base/sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:318)
java.base/sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:160)
java.base/java.io.OutputStreamWriter.flush(OutputStreamWriter.java:248)
java.base/java.io.BufferedWriter.flush(BufferedWriter.java:257)
java.base/java.io.PrintWriter.newLine(PrintWriter.java:567)
java.base/java.io.PrintWriter.println(PrintWriter.java:710)
java.base/java.io.PrintWriter.println(PrintWriter.java:821)
scala.tools.nsc.reporters.ConsoleReporter.finish(ConsoleReporter.scala:30)
scala.tools.nsc.ScalaDocReporter.finish(ScalaDoc.scala:87)
scala.tools.nsc.ScalaDoc.process(ScalaDoc.scala:57)
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.base/java.lang.reflect.Method.invoke(Method.java:569)
mill.scalalib.worker.ZincWorkerImpl.$anonfun$docJar$2(ZincWorkerImpl.scala:262)
scala.runtime.java8.JFunction0$mcZ$sp.apply(JFunction0$mcZ$sp.scala:17)
mill.api.Retry.$anonfun$apply$1(Retry.scala:32)
mill.api.Retry.$anonfun$apply$1$adapted(Retry.scala:32)
mill.api.Retry.rec$1(Retry.scala:38)
mill.api.Retry.rec$1(Retry.scala:50)
mill.api.Retry.rec$1(Retry.scala:50)
mill.api.Retry.indexed(Retry.scala:54)
mill.api.Retry.apply(Retry.scala:32)
mill.scalalib.worker.ZincWorkerImpl.$anonfun$docJar$1(ZincWorkerImpl.scala:232)
mill.scalalib.worker.ZincWorkerImpl.$anonfun$docJar$1$adapted(ZincWorkerImpl.scala:228)
mill.scalalib.worker.ZincWorkerImpl.$anonfun$withCompilers$2(ZincWorkerImpl.scala:479)
mill.api.CachedFactory.withValue(CachedFactory.scala:39)
mill.scalalib.worker.ZincWorkerImpl.withCompilers(ZincWorkerImpl.scala:478)
mill.scalalib.worker.ZincWorkerImpl.docJar(ZincWorkerImpl.scala:228)
mill.scalalib.ScalaModule.packageWithZinc$1(ScalaModule.scala:317)
mill.scalalib.ScalaModule.$anonfun$docJar$2(ScalaModule.scala:410)
mill.define.Task$TraverseCtx.evaluate(Task.scala:245)
java.lang.ClassNotFoundException: mill.api.SystemStreams$ThreadLocalStreams$
mill.api.SystemStreams$ThreadLocalStreams$Err$$anon$2.delegate(SystemStreams.scala:151)
mill.api.SystemStreams$ThreadLocalStreams$Err$$anon$2.delegate(SystemStreams.scala:151)
mill.api.SystemStreams$ThreadLocalStreams$ProxyOutputStream.write(SystemStreams.scala:156)
java.base/java.io.PrintStream.write(PrintStream.java:568)
java.base/sun.nio.cs.StreamEncoder.writeBytes(StreamEncoder.java:234)
java.base/sun.nio.cs.StreamEncoder.implFlushBuffer(StreamEncoder.java:313)
java.base/sun.nio.cs.StreamEncoder.implFlush(StreamEncoder.java:318)
java.base/sun.nio.cs.StreamEncoder.flush(StreamEncoder.java:160)
java.base/java.io.OutputStreamWriter.flush(OutputStreamWriter.java:248)
java.base/java.io.BufferedWriter.flush(BufferedWriter.java:257)
java.base/java.io.PrintWriter.newLine(PrintWriter.java:567)
java.base/java.io.PrintWriter.println(PrintWriter.java:710)
java.base/java.io.PrintWriter.println(PrintWriter.java:821)
scala.tools.nsc.reporters.ConsoleReporter.finish(ConsoleReporter.scala:30)
scala.tools.nsc.ScalaDocReporter.finish(ScalaDoc.scala:87)
scala.tools.nsc.ScalaDoc.process(ScalaDoc.scala:57)
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
java.base/java.lang.reflect.Method.invoke(Method.java:569)
mill.scalalib.worker.ZincWorkerImpl.$anonfun$docJar$2(ZincWorkerImpl.scala:262)
scala.runtime.java8.JFunction0$mcZ$sp.apply(JFunction0$mcZ$sp.scala:17)
mill.api.Retry.$anonfun$apply$1(Retry.scala:32)
mill.api.Retry.$anonfun$apply$1$adapted(Retry.scala:32)
mill.api.Retry.rec$1(Retry.scala:38)
mill.api.Retry.rec$1(Retry.scala:50)
mill.api.Retry.rec$1(Retry.scala:50)
mill.api.Retry.indexed(Retry.scala:54)
mill.api.Retry.apply(Retry.scala:32)
mill.scalalib.worker.ZincWorkerImpl.$anonfun$docJar$1(ZincWorkerImpl.scala:232)
mill.scalalib.worker.ZincWorkerImpl.$anonfun$docJar$1$adapted(ZincWorkerImpl.scala:228)
mill.scalalib.worker.ZincWorkerImpl.$anonfun$withCompilers$2(ZincWorkerImpl.scala:479)
mill.api.CachedFactory.withValue(CachedFactory.scala:39)
mill.scalalib.worker.ZincWorkerImpl.withCompilers(ZincWorkerImpl.scala:478)
mill.scalalib.worker.ZincWorkerImpl.docJar(ZincWorkerImpl.scala:228)
mill.scalalib.ScalaModule.packageWithZinc$1(ScalaModule.scala:317)
mill.scalalib.ScalaModule.$anonfun$docJar$2(ScalaModule.scala:410)
mill.define.Task$TraverseCtx.evaluate(Task.scala:245)
```
Hopefully after merging this into `0.12.x` and cutting an dev release,
rebootstrapping should work again
---------
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>1 parent 7567a80 commit aa525a7Copy full SHA for aa525a7
File tree
Expand file treeCollapse file tree
1 file changed
+8
-2
lines changedOpen diff view settings
Filter options
- main/api/src/mill/api
Expand file treeCollapse file tree
1 file changed
+8
-2
lines changedOpen diff view settings
Collapse file
main/api/src/mill/api/SystemStreams.scala
Copy file name to clipboardExpand all lines: main/api/src/mill/api/SystemStreams.scala+8-2Lines changed: 8 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
147 | 147 | | |
148 | 148 | | |
149 | 149 | | |
150 | | - | |
151 | | - | |
| 150 | + | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
| 154 | + | |
| 155 | + | |
| 156 | + | |
| 157 | + | |
152 | 158 | | |
153 | 159 | | |
154 | 160 | | |
| |||
0 commit comments