Thursday, August 8, 2019

Datomic Ions: lget does not exist

Photo by Matej from Pexels
I keep running into this exception when running Clojure in on AWS using Datomic Ions:
{ "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.

No comments: