I was getting a StackOverflowError running this in CIDER while developing with Datomic Ions
For some reason the output stream created ends up being referential with the nrepl PrintStream implementation. Changing it from :stdout to :stderr seems to solve the problem:
Welcome to Software Ninja blog - your ultimate destination for mastering software development and data manipulation. Explore cutting-edge techniques and expert tips to sharpen your coding skills and become a data virtuoso. Let's embark on a journey of discovery together!
Monday, August 26, 2019
Wednesday, August 14, 2019
Which Clojure test runner to use?
Photo by Genaro ServĂn from Pexels |
The standard way to do this is to have the test runner create a XUnit compatible XML file and have the CI tool consume this file to produce the reports. Unfortunately, the junit.xml file created by the default Clojure test runner creates a junit.xml that does not follow the spec and Bitbucket doesn't report which tests failed.
After some research, I found that Kaocha does a much better job of creating a junit.xml that Bitbucket Pipeline can grok. In addition, it also supports code coverage which is a great bonus.
Here is the stanza for deps.edn to make it work:
Thursday, August 8, 2019
Datomic Ions: lget does not exist
Photo by Matej from Pexels |
{ "Type": "java.lang.IllegalAccessError", "Message": "lget does not exist", "At": [ "clojure.core$refer", "invokeStatic", "core.clj", 4249 ] }The cause for this error seems to be that the code is trying to use either the Datomic Peer API or the wrong Datomic Client API implementation. I am using the datomic-client-memdb for testing and if the code tries to use it on AWS, you will get that error. Similarly, if the code tries to use the Peer library from a Datomic Ion, it will get this same error.
The problem arises from older code trying at runtime to determine if the Peer or Client API is being used. The ways this used to be determined seem to no longer work and so the code picks the Peer when it should be the Client.
So far I have not found any code that will correctly figure out which API is being used.
Subscribe to:
Posts (Atom)