Hi datomic team, are there any ideas what might happen when peer and transaction indicates about OutOfMemoryError, according lo the logs below I see it it somehow related to indexing, we started to get these errors recently on several different envs with very small traffic, restarting of the peer and the transacrtor do not help, after some time we see these errors again. datomic version is 1.0.7277
Peer logs :
clojure.lang.ExceptionInfo: Unable to convert data: {:key "67c05464-8a44-4e69-b413-48da3561370a", :crc32 3420686353, :size 22731791}
at datomic.cache$report_val_fn_fail.invokeStatic(cache.clj:69)
at datomic.cache$report_val_fn_fail.invoke(cache.clj:65)
at datomic.domain.DeserializingRepairingLookup$fn__16804.invoke(domain.clj:217)
at datomic.domain.DeserializingRepairingLookup.valAt(domain.clj:214)
at clojure.lang.RT.get(RT.java:791)
at datomic.cache$lookup_with_inflight_cache$reify__9410$fn__9411.invoke(cache.clj:184)
at clojure.lang.Delay.deref(Delay.java:42)
at clojure.core$deref.invokeStatic(core.clj:2337)
at clojure.core$deref.invoke(core.clj:2323)
at datomic.cache$lookup_with_inflight_cache$reify__9410.valAt(cache.clj:187)
at clojure.lang.RT.get(RT.java:791)
at datomic.cache$lookup_cache$reify__9407.valAt(cache.clj:151)
at clojure.lang.RT.get(RT.java:791)
at datomic.common$getx.invokeStatic(common.clj:209)
at datomic.common$getx.invoke(common.clj:205)
at datomic.index$get_dir_node.invokeStatic(index.clj:194)
at datomic.index$get_dir_node.invoke(index.clj:185)
at datomic.index.Index.seek(index.clj:566)
at datomic.db$ident_setting_datoms.invokeStatic(db.clj:2759)
at datomic.db$ident_setting_datoms.invoke(db.clj:2752)
at datomic.db$run_hooks.invokeStatic(db.clj:2774)
at datomic.db$run_hooks.invoke(db.clj:2765)
at datomic.db$db.invokeStatic(db.clj:2864)
at datomic.db$db.invoke(db.clj:2848)
at datomic.db_io$load_db_from_basis.invokeStatic(db_io.clj:75)
at datomic.db_io$load_db_from_basis.doInvoke(db_io.clj:69)
at clojure.lang.RestFn.invoke(RestFn.java:467)
at datomic.peer.Connection$fn__21505$load_db__21513.invoke(peer.clj:225)
at datomic.peer.Connection$fn__21505.invoke(peer.clj:226)
at datomic.peer.Connection.create_connection_state(peer.clj:204)
at datomic.peer$create_connection$reconnect_fn__21588.invoke(peer.clj:488)
at clojure.core$partial$fn__5908.invoke(core.clj:2640)
at datomic.common$retry_fn$fn__9168.invoke(common.clj:545)
at datomic.common$retry_fn.invokeStatic(common.clj:545)
at datomic.common$retry_fn.doInvoke(common.clj:528)
at clojure.lang.RestFn.invoke(RestFn.java:713)
at datomic.peer$create_connection$fn__21590.invoke(peer.clj:492)
at datomic.reconnector2.Reconnector$fn__17136.invoke(reconnector2.clj:57)
at clojure.core$binding_conveyor_fn$fn__5823.invoke(core.clj:2047)
at clojure.lang.AFn.call(AFn.java:18)
at java.base/java.util.concurrent.FutureTask.run(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.base/java.lang.Thread.run(Unknown Source)
Caused by: java.lang.OutOfMemoryError: Java heap space
Transactor logs:
2025-02-27 12:00:04.165 WARN default datomic.index - {:message "merge-one-index failed", :pid 1, :tid 5814}
java.util.concurrent.ExecutionException: java.lang.OutOfMemoryError: Java heap space
at java.base/java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.base/java.util.concurrent.FutureTask.get(FutureTask.java:191)
at clojure.core$deref_future.invokeStatic(core.clj:2317)
at clojure.core$future_call$reify__8544.deref(core.clj:7042)
at clojure.core$deref.invokeStatic(core.clj:2337)
at clojure.core$deref.invoke(core.clj:2323)
at clojure.core$map$fn__5935.invoke(core.clj:2772)
at clojure.lang.LazySeq.sval(LazySeq.java:42)
at clojure.lang.LazySeq.seq(LazySeq.java:58)
at clojure.lang.RT.seq(RT.java:535)
at clojure.core$seq__5467.invokeStatic(core.clj:139)
at clojure.core$seq__5467.invoke(core.clj:139)
at datomic.index$merge_one_index$fn__15019.invoke(index.clj:1377)
at datomic.index$merge_one_index.invokeStatic(index.clj:1377)
at datomic.index$merge_one_index.invoke(index.clj:1220)
at datomic.index$merge_db_STAR_$build_tiered_index__15285$build_index__15289.invoke(index.clj:1814)
at datomic.index$merge_db_STAR_$build_tiered_index__15285$fn__15335.invoke(index.clj:1897)
at datomic.index$merge_db_STAR_$build_tiered_index__15285.invoke(index.clj:1885)
at datomic.index$merge_db_STAR_.invokeStatic(index.clj:1909)
at datomic.index$merge_db_STAR_.invoke(index.clj:1796)
at datomic.index$merge_db$fn__15387$fn__15391.invoke(index.clj:2014)
at datomic.index$merge_db$fn__15387.invoke(index.clj:2007)
at datomic.index$merge_db.invokeStatic(index.clj:1998)
at datomic.index$merge_db.invoke(index.clj:1988)
at datomic.update$process_request_index$fn__27023$fn__27024$fn__27028.invoke(update.clj:315)
at datomic.update$process_request_index$fn__27023$fn__27024.invoke(update.clj:310)
at datomic.update$process_request_index$fn__27023.invoke(update.clj:306)
at clojure.core$binding_conveyor_fn$fn__5823.invoke(core.clj:2047)
at clojure.lang.AFn.call(AFn.java:18)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1135)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:831)
Caused by: java.lang.OutOfMemoryError: Java heap space
at java.base/java.util.Arrays.copyOf(Arrays.java:3536)
at java.base/java.io.ByteArrayOutputStream.ensureCapacity(ByteArrayOutputStream.java:100)
at java.base/java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:130)
at java.base/java.io.BufferedOutputStream.write(BufferedOutputStream.java:123)
at java.base/java.util.zip.CheckedOutputStream.write(CheckedOutputStream.java:73)
at org.fressian.impl.RawOutput.writeRawBytes(RawOutput.java:95)
at org.fressian.FressianWriter.writeString(FressianWriter.java:138)
at org.fressian.impl.Handlers$6.write(Handlers.java:68)
at org.fressian.FressianWriter.doWrite(FressianWriter.java:449)
at org.fressian.FressianWriter.writeAs(FressianWriter.java:459)
at org.fressian.FressianWriter.writeAs(FressianWriter.java:464)
at org.fressian.FressianWriter.writeObject(FressianWriter.java:472)
at org.fressian.impl.Handlers$13.write(Handlers.java:139)
at org.fressian.FressianWriter.doWrite(FressianWriter.java:449)
at org.fressian.FressianWriter.writeAs(FressianWriter.java:459)
at org.fressian.FressianWriter.writeAs(FressianWriter.java:464)
at org.fressian.FressianWriter.writeObject(FressianWriter.java:472)
at datomic.index$reify__14764.write(index.clj:606)
at org.fressian.FressianWriter.doWrite(FressianWriter.java:449)
at org.fressian.FressianWriter.writeAs(FressianWriter.java:459)
at org.fressian.FressianWriter.writeAs(FressianWriter.java:464)
at org.fressian.FressianWriter.writeObject(FressianWriter.java:472)
at datomic.index$reify__14768.write(index.clj:625)
at org.fressian.FressianWriter.doWrite(FressianWriter.java:449)
at org.fressian.FressianWriter.writeAs(FressianWriter.java:459)
at org.fressian.FressianWriter.writeAs(FressianWriter.java:464)
at org.fressian.FressianWriter.writeObject(FressianWriter.java:472)
at datomic.fressian$fressian.invokeStatic(fressian.clj:87)
at datomic.fressian$fressian.doInvoke(fressian.clj:76)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.core$apply.invokeStatic(core.clj:671)
at clojure.core$apply.invoke(core.clj:662)
2025-02-27 12:00:04.165 WARN default datomic.index - ... caused by ...
java.lang.OutOfMemoryError: Java heap space
at java.base/java.util.Arrays.copyOf(Arrays.java:3536)
at java.base/java.io.ByteArrayOutputStream.ensureCapacity(ByteArrayOutputStream.java:100)
at java.base/java.io.ByteArrayOutputStream.write(ByteArrayOutputStream.java:130)
at java.base/java.io.BufferedOutputStream.write(BufferedOutputStream.java:123)
at java.base/java.util.zip.CheckedOutputStream.write(CheckedOutputStream.java:73)
at org.fressian.impl.RawOutput.writeRawBytes(RawOutput.java:95)
at org.fressian.FressianWriter.writeString(FressianWriter.java:138)
at org.fressian.impl.Handlers$6.write(Handlers.java:68)
at org.fressian.FressianWriter.doWrite(FressianWriter.java:449)
at org.fressian.FressianWriter.writeAs(FressianWriter.java:459)
at org.fressian.FressianWriter.writeAs(FressianWriter.java:464)
at org.fressian.FressianWriter.writeObject(FressianWriter.java:472)
at org.fressian.impl.Handlers$13.write(Handlers.java:139)
at org.fressian.FressianWriter.doWrite(FressianWriter.java:449)
at org.fressian.FressianWriter.writeAs(FressianWriter.java:459)
at org.fressian.FressianWriter.writeAs(FressianWriter.java:464)
at org.fressian.FressianWriter.writeObject(FressianWriter.java:472)
at datomic.index$reify__14764.write(index.clj:606)
at org.fressian.FressianWriter.doWrite(FressianWriter.java:449)
at org.fressian.FressianWriter.writeAs(FressianWriter.java:459)
at org.fressian.FressianWriter.writeAs(FressianWriter.java:464)
at org.fressian.FressianWriter.writeObject(FressianWriter.java:472)
at datomic.index$reify__14768.write(index.clj:625)
at org.fressian.FressianWriter.doWrite(FressianWriter.java:449)
at org.fressian.FressianWriter.writeAs(FressianWriter.java:459)
at org.fressian.FressianWriter.writeAs(FressianWriter.java:464)
at org.fressian.FressianWriter.writeObject(FressianWriter.java:472)
at datomic.fressian$fressian.invokeStatic(fressian.clj:87)
at datomic.fressian$fressian.doInvoke(fressian.clj:76)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.core$apply.invokeStatic(core.clj:671)
at clojure.core$apply.invoke(core.clj:662)