boot-clj / boot-clj/boot

java.lang.ExceptionInInitializerError during pod cleanup

Open
#689 2 comments 0 reactions 0 assignees View on GitHub
Dominant language
Clojure
Stars
1.7k
Forks
178
PR merge metrics
No merged PRs in 30d

Description

### Problem Description

When using [boot-tools-deps][boot-tools-deps] and [boot-test][boot-test], sometimes a `java.lang.ExceptionInInitializerError` will occur after the test has completed.

[boot-test]: https://github.com/adzerk-oss/boot-test
[boot-tools-deps]: https://github.com/seancorfield/boot-tools-deps

I don't know if this is specific to boot-tools-deps and boot-test, but that's where I came across the error and can reproduce it.

### Steps to reproduce

```
git clone https://github.com/grzm/ex.boot-tools-deps-alt-test
cd ex.boot-tools-deps-alt-test
boot deps -Q test
```

On occassion, I'll get the following stacktrace (a full example is also provided in the repo). Over the course of 10 runs, I'll see it at least twice, if not more often.

```
java.lang.Thread.run Thread.java: 844
java.util.concurrent.ThreadPoolExecutor$Worker.run Exception in thread "Thread-19" java.lang.ExceptionInInitializerError
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:375)
at clojure.lang.RT.classForName(RT.java:2204)
at clojure.lang.RT.classForName(RT.java:2213)
at clojure.lang.RT.loadClassForName(RT.java:2232)
at clojure.lang.RT.load(RT.java:450)
at clojure.lang.RT.load(RT.java:426)
at clojure.lang.RT.doInit(RT.java:468)
at clojure.lang.RT.(RT.java:336)
at org.projectodd.shimdandy.impl.ClojureRuntimeShimImpl.init(ClojureRuntimeShimImpl.java:23)
at org.projectodd.shimdandy.ClojureRuntimeShim.newRuntime(ClojureRuntimeShim.java:26)
at org.projectodd.shimdandy.ClojureRuntimeShim.newRuntime(ClojureRuntimeShim.java:32)
at boot.App.newShim(App.java:309)
at boot.pod$make_pod.doInvoke(pod.clj:895)
at clojure.lang.RestFn.invoke(RestFn.java:410)
at boot.pod$pod_pool$fn__1867.invoke(pod.clj:960)
at boot.pod$lifecycle_pool$fill__1810.invoke(pod.clj:822)
at clojure.lang.AFn.run(AFn.java:22)
at java.base/java.lang.Thread.run(Thread.java:844)
Caused by: java.io.IOException: Stream closed, compiling:(clojure/core_instant18.clj:15:1)
at clojure.lang.Compiler.load(Compiler.java:7526)
at clojure.lang.RT.loadResourceScript(RT.java:379)
at clojure.lang.RT.loadResourceScript(RT.java:370)
at clojure.lang.RT.load(RT.java:460)
at clojure.lang.RT.load(RT.java:426)
at clojure.core$load$fn__6548.invoke(core.clj:6046)
at clojure.core$load.invokeStatic(core.clj:6045)
at clojure.core$load.doInvoke(core.clj:6029)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$fn__8055.invokeStatic(core.clj:6709)
at clojure.core$fn__8055.invoke(core.clj:6708)
at clojure.core__init.load(Unknown Source)
at clojure.core__init.(Unknown Source)
... 19 more
Caused by: java.io.IOException: Stream closed
at java.base/java.util.zip.InflaterInputStream.ensureOpen(InflaterInputStream.java:68)
at java.base/java.util.zip.InflaterInputStream.read(InflaterInputStream.java:143)
at java.base/java.io.FilterInputStream.read(FilterInputStream.java:133)
at java.base/sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:284)
at java.base/sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:326)
at java.base/sun.nio.cs.StreamDecoder.read(StreamDecoder.java:178)
at java.base/java.io.InputStreamReader.read(InputStreamReader.java:185)
at java.base/java.io.BufferedReader.fill(BufferedReader.java:161)
at java.base/java.io.BufferedReader.read(BufferedReader.java:182)
at java.base/java.io.LineNumberReader.read(LineNumberReader.java:126)
at java.base/java.io.FilterReader.read(FilterReader.java:65)
at java.base/java.io.PushbackReader.read(PushbackReader.java:90)
at clojure.lang.LineNumberingPushbackReader.read(LineNumberingPushbackReader.java:66)
at clojure.lang.LispReader.read1(LispReader.java:160)
at clojure.lang.Compiler.consumeWhitespaces(Compiler.java:7467)
at clojure.lang.Compiler.load(Compiler.java:7511)
... 31 more
ThreadPoolExecutor.java: 641
java.util.concurrent.ThreadPoolExecutor.runWorker ThreadPoolExecutor.java: 1167
java.util.concurrent.FutureTask.run FutureTask.java: 264
...
clojure.core/binding-conveyor-fn/fn core.clj: 2022
boot.core/boot/fn core.clj: 1031
boot.core/run-tasks core.clj: 1021
adzerk.boot-test/eval253/fn/fn/fn boot_test.clj: 105
adzerk.boot-test/eval318/fn/fn/fn boot_test.clj: 184
clojure.core/ex-info core.clj: 4739
```

### Platform details

```
λ uname -v
Darwin Kernel Version 17.4.0: Sun Dec 17 09:19:54 PST 2017; root:xnu-4570.41.2~1/RELEASE_X86_64
λ system_profiler SPSoftwareDataType | ack -v Name
Software:

System Software Overview:

System Version: macOS 10.13.3 (17D47)
Kernel Version: Darwin 17.4.0
Boot Volume: Macintosh HD
Boot Mode: Normal
Secure Virtual Memory: Enabled
System Integrity Protection: Enabled
Time since boot: 7 days 18:11

λ java -version
java version "9.0.4"
Java(TM) SE Runtime Environment (build 9.0.4+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.4+11, mixed mode)
```

### Boot details

```
λ boot --version
#http://boot-clj.com
#Fri Feb 02 15:20:28 CST 2018
BOOT_VERSION=2.7.2
BOOT_CLOJURE_VERSION=1.10.0-alpha2
BOOT_CLOJURE_NAME=org.clojure/clojure
```

`build.boot` present? **Yes.**
`~/.boot/profile` present? **No.**
Task name? **boot deps -Q test**

## Duplicated from the repo:

`build.boot`

```clojure
(def project 'com.grzm/ex.tools-deps-alt-test)
(def version "0.1.0-SNAPSHOT")

(set-env! :resource-paths #{"src"}
:source-paths #{"test"}
:dependencies '[[org.clojure/clojure "RELEASE"]
[adzerk/boot-test "RELEASE" :scope "test"]
[metosin/boot-alt-test "0.3.2" :scope "test"]
[com.stuartsierra/dependency "0.2.0"]
[seancorfield/boot-tools-deps "0.3.0"]])

(task-options!
pom {:project project
:version version
:description "FIXME: write description"
:url "http://example/FIXME"
:scm {:url "https://github.com/yourname/ex.tools-deps-alt-test"}
:license {"Eclipse Public License"
"http://www.eclipse.org/legal/epl-v10.html"}})

(deftask build
"Build and install the project locally."
[]
(comp (pom) (jar) (install)))

(require '[adzerk.boot-test :refer [test]])

(require '[metosin.boot-alt-test :refer (alt-test)])

(require '[boot-tools-deps.core :refer [deps]])
```

`deps.edn`

```clojure
{:deps {org.clojure/java.jdbc {:mvn/version "0.7.5"}}
:aliases {:test
{:extra-deps {org.clojure/math.combinatorics {:mvn/version "0.1.4"}}}}}
```

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.