Fork me on GitHub
#datomic
<
2017-10-01
>
timgilbert14:10:18

Say, I’m seeing a bunch of errors in my datomic connected to DDB. The transactor says this:

2017-10-01 09:32:15.549 WARN  default    o.a.activemq.artemis.core.client - AMQ212037: Connection failure has been detected: AMQ119014: Did not receive data from /x.x.x.x:47452 within the 10,000ms connection TTL. The connection will now be closed. [code=CONNECTION_TIMEDOUT]

timgilbert14:10:07

…and then on the peer I get a traceback that looks like this;

org.apache.activemq.artemis.api.core.ActiveMQUnBlockedException: AMQ119016: Connection failure detected. Unblocking a blocking call that will never get a response
	at org.apache.activemq.artemis.core.protocol.core.impl.ChannelImpl.sendBlocking(ChannelImpl.java:409)
	at org.apache.activemq.artemis.core.protocol.core.impl.ChannelImpl.sendBlocking(ChannelImpl.java:307)
	at org.apache.activemq.artemis.core.protocol.core.impl.ActiveMQSessionContext.deleteQueue(ActiveMQSessionContext.java:249)
	at org.apache.activemq.artemis.core.client.impl.ClientSessionImpl.deleteQueue(ClientSessionImpl.java:330)
	at org.apache.activemq.artemis.core.client.impl.ClientSessionImpl.deleteQueue(ClientSessionImpl.java:339)
	at datomic.artemis_client$delete_queue.invokeStatic(artemis_client.clj:147)
	at datomic.artemis_client$delete_queue.invoke(artemis_client.clj:143)
	at clojure.core$partial$fn__5380.invoke(core.clj:2604)
	at datomic.artemis_client$create_rpc_client$fn__7146$fn__7147.invoke(artemis_client.clj:290)
	at datomic.artemis_client$create_rpc_client$fn__7146.invoke(artemis_client.clj:290)
	at clojure.lang.AFn.applyToHelper(AFn.java:152)
	at clojure.lang.AFn.applyTo(AFn.java:144)
	at clojure.core$apply.invokeStatic(core.clj:657)
	at clojure.core$apply.invoke(core.clj:652)
	at datomic.error$runonce$fn__263.doInvoke(error.clj:148)
	at clojure.lang.RestFn.invoke(RestFn.java:397)
	at datomic.artemis_client$create_rpc_client$fn__7150.invoke(artemis_client.clj:290)
	at clojure.lang.AFn.applyToHelper(AFn.java:152)
	at clojure.lang.AFn.applyTo(AFn.java:144)
	at clojure.core$apply.invokeStatic(core.clj:657)
	at clojure.core$apply.invoke(core.clj:652)
	at datomic.error$runonce$fn__263.doInvoke(error.clj:148)
	at clojure.lang.RestFn.invoke(RestFn.java:397)
	at datomic.artemis_client$create_rpc_client$fn__7154.invoke(artemis_client.clj:290)
	at clojure.lang.AFn.applyToHelper(AFn.java:152)
	at clojure.lang.AFn.applyTo(AFn.java:144)
	at clojure.core$apply.invokeStatic(core.clj:657)
	at clojure.core$apply.invoke(core.clj:652)
	at datomic.error$runonce$fn__263.doInvoke(error.clj:148)
	at clojure.lang.RestFn.invoke(RestFn.java:397)
	at datomic.artemis_client.RpcClient$fn__7133.invoke(artemis_client.clj:276)
	at clojure.core$binding_conveyor_fn$fn__5297.invoke(core.clj:2027)
	at clojure.lang.AFn.call(AFn.java:18)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

timgilbert14:10:59

It’s crashing one of my loops somewhere, but without any of my application code in the traceback it’s hard to figure out where the actual error occurs. Would this be in a (d/transact) call most likely? And what can I do to recover from it?

timgilbert14:10:47

The thread for the peer exception is reported as clojure-agent-send-off-pool-28

itaied15:10:30

How can I execute functions on transactions? For example, say I have an entity that I want to multiple its :e/c field by 2, how can I execute it?

wistb16:10:47

hi, in our place, we are considering between datomic and apache ignite. For us, scale is top priority and our back of the envelope calculations are coming up in 20 - 30 billion datoms to start with. If you factor in the novelty and the accumulated history it does not look like datomic can scale for our needs. We talked about 'data decantation' (where we extract latest snapshot of data from one datomic and populate another) as a means to prolong. On the other hand Ignite is in-memory and can scale to big data (according to their docs). I wonder how in-memory node can scale to big data. I guess it uses the same idea of 'hot data' will be kept in memory and rest of the data will be fetched from storage. Any ideas or pointers how I should go about comparing the two ? thanks.

clojuregeek22:10:13

Hi, i'm creating an entity for a customer who has 1-3 address lines... is it better to have 3 attributes line1 line2 line3 .... or street-address with cardinality of many? ... i tried searching but not much luck

danielcompton22:10:18

@clojuregeek cardinality many doesn't have ordering built-in, so you'd need to add that as well

danielcompton22:10:30

Depends on what kind of queries you want to be doing, if you need to query any of the three lines easily, then maybe you'd want card/many, however I suspect most of the time line-1, line-2, line-3 would be simpler, and communicate intent just as well

clojuregeek22:10:09

ok, yeah that make sense. thanks 🙂