quarkiverse / quarkus-bon-jova-rockstar

An implementation of Rockstar as a JVM language
https://codewithrockstar.com/
3 stars 2 forks source link

Lyrics reading tests failing in CI #158

Open holly-cummins opened 4 months ago

holly-cummins commented 4 months ago

I can't reproduce locally, but this is failing consistently in the build, although the exact nature of the failure is varying. It looks like concurrency issues (eek).

Error:  io.quarkiverse.bonjova.lyrics.LyricsReaderTest.readLyricsTwiceShouldUseTheCache  Time elapsed: 2.496 s  <<< ERROR!
java.lang.RuntimeException: java.util.concurrent.ExecutionException: BUG! exception in phase 'conversion' in source unit 'Script1.groovy' Cannot invoke "Object.equals(Object)" because "this.listKeys[i]" is null
    at io.quarkiverse.bonjova.lyrics.RemoteLyricsReader.lambda$readRemoteLyrics$2(RemoteLyricsReader.java:156)
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
    at java.base/java.util.ArrayList$ArrayListSpliterator.forEachRemaining(ArrayList.java:1708)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
    at java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:575)
    at java.base/java.util.stream.AbstractPipeline.evaluateToArrayNode(AbstractPipeline.java:260)
    at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:616)
    at java.base/java.util.stream.ReferencePipeline.toArray(ReferencePipeline.java:622)
    at java.base/java.util.stream.ReferencePipeline.toList(ReferencePipeline.java:627)
    at io.quarkiverse.bonjova.lyrics.RemoteLyricsReader.readRemoteLyrics(RemoteLyricsReader.java:161)
```
Error:  Errors: 

Error: LyricsRatingCalculatorTest.setUp:20 » Runtime java.util.concurrent.ExecutionException: BUG! exception in phase 'conversion' in source unit 'Script1.groovy' Cannot invoke "Object.equals(Object)" because "this.listKeys[i]" is null Error: LyricsReaderTest.readLyricsShouldReturn100Songs:14 » Runtime java.util.concurrent.ExecutionException: BUG! exception in phase 'conversion' in source unit 'Script1.groovy' Cannot invoke "Object.equals(Object)" because "this.listKeys[i]" is null Error: LyricsReaderTest.readLyricsTwiceShouldUseTheCache:20 » Runtime java.util.concurrent.ExecutionException: BUG! exception in phase 'conversion' in source unit 'Script1.groovy' Cannot invoke "Object.equals(Object)" because "this.listKeys[i]" is null



I'm also seeing failures where 92 (or some other < 100 number) songs are downloaded.
holly-cummins commented 4 months ago

I think this may be a functional concurrency issue, not just a test issue, but it does not seem to affect our laptops, so it's hard to reproduce and fix. I've disabled the affected test, pending a fix.

holly-cummins commented 4 months ago

There's actually two failures; one is the LyricsRatingCalculatorTest failure, which is intermittent, and the other is the LyricsReaderTest failure, which became a hard failure sometime around three months ago, even though it was working before.