Clojure 1.8 Upgrade
jjcomer opened this issue · 6 comments
I recently tried upgrading my pulsar application to clojure 1.8 with no success.
This is the new stack trace I'm seeing when running 1.8 (this error does not happen when running 1.7)
jsr166e.ForkJoinWorkerThread.run ForkJoinWorkerThread.java: 107
jsr166e.ForkJoinPool.runWorker ForkJoinPool.java: 1628
jsr166e.ForkJoinPool$WorkQueue.runTask ForkJoinPool.java: 988
jsr166e.ForkJoinTask.doExec ForkJoinTask.java: 261
co.paralleluniverse.concurrent.forkjoin.ParkableForkJoinTask.exec ParkableForkJoinTask.java: 73
co.paralleluniverse.concurrent.forkjoin.ParkableForkJoinTask.doExec ParkableForkJoinTask.java: 116
co.paralleluniverse.fibers.FiberForkJoinScheduler$FiberForkJoinTask.exec1 FiberForkJoinScheduler.java: 265
co.paralleluniverse.fibers.Fiber.exec Fiber.java: 730
co.paralleluniverse.fibers.Fiber.run1 Fiber.java: 1019
co.paralleluniverse.fibers.Fiber.run Fiber.java: 1024
co.paralleluniverse.pulsar.ClojureHelper$4.run ClojureHelper.java: 200
co.paralleluniverse.pulsar.ClojureHelper.suspendableInvoke ClojureHelper.java: 213
co.paralleluniverse.pulsar.InstrumentedIFn.invoke InstrumentedIFn.java: 32
co.paralleluniverse.pulsar.async/f->chan/fn async.clj: 306
co.paralleluniverse.pulsar.async/f->chan/fn/fn async.clj: 306
co.paralleluniverse.pulsar.InstrumentedIFn.invoke InstrumentedIFn.java: 32
myapp.handlers.matcher/kick-off-interaction/fn matcher.clj: 79
myapp.handlers.matcher/match-dispatch-mapping matcher.clj: 42
myapp.matcher/match-dispatch-mapping/invokeStatic matcher.clj: 49
co.paralleluniverse.pulsar.InstrumentedIFn.invoke InstrumentedIFn.java: 40
co.paralleluniverse.pulsar.actors/call! actors.clj: 665
co.paralleluniverse.pulsar.actors/call!/invokeStatic actors.clj: 669
co.paralleluniverse.actors.behaviors.Server.call Server.java: 80
co.paralleluniverse.actors.behaviors.Server.call Server.java: 102
co.paralleluniverse.actors.behaviors.RequestReplyHelper.call RequestReplyHelper.java: 174
co.paralleluniverse.actors.SelectiveReceiveHelper.receive SelectiveReceiveHelper.java: 141
co.paralleluniverse.actors.Mailbox.await Mailbox.java: 90
co.paralleluniverse.strands.ConditionSynchronizer.await ConditionSynchronizer.java: 54
co.paralleluniverse.strands.Strand.park Strand.java: 493
java.lang.NullPointerException:
This is a pretty printed exception (so it goes backwards which the top of the stack at the bottom).
The stack leaves my code in on matcher.clj: 49
which is a call!
to a gen-server.
We have auto instrumentation turned on. This error happens with both pulsar 0.7.3 and 0.7.4
Any insights would be great.
Clojure 1.8 has come out few days after the last Pulsar release (0.7.4, which supports Clojure 1.7) and it changes quite a few important things under the cover so it's expected to require changes in Pulsar to support it, especially with auto-instrumentation. We'll upgrade ASAP Pulsar to Clojure 1.8 and publish a 0.7.5-SNAPSHOT.
In the meanwhile do you have a chance to try it without auto-instrumentation (i.e. with explicit defsfn
, sfn
etc.)? If not I suggest you to stay with Clojure 1.7 until there's a new Pulsar SNAPSHOT. Or is there some Clojure 1.8 feature you need badly (or would greatly benefit from)?
The biggest benefit we have notice is compilation time, 1.8 is significantly faster.
I keep a lookout for when the snapshot drops and give the upgrade a try then.
We recently hit this issue and see there is no 1.7.5-SNAPSHOT available in clojars?
Any ideas, on a 0.7.5 snapshot timeframe (with support for Clojure 1.8.0)? It would be very helpful to use to be able to manage our roadmap.
Awesome! Can't wait to start testing this out.