<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Datomic Knowledgebase - Recent questions</title>
<link>https://ask.datomic.com/index.php/questions</link>
<description>Powered by Question2Answer</description>
<item>
<title>Ion push failing with error message about (missing?, unreadable?) maven artifact ion-1.0.47.jar</title>
<link>https://ask.datomic.com/index.php/1890/failing-error-message-about-missing-unreadable-maven-artifact</link>
<description>&lt;p&gt;Attempting to push an ion and get an error about not finding (or unable to read) &lt;code&gt;ion-1.0.47.jar&lt;/code&gt;. I tried some troubleshooting and I don't think it is a permissions issue, because I am able to use the aws cli and copy &lt;code&gt;ion-0.9.7.jar&lt;/code&gt;. So why is 1.0.47 not working?&lt;/p&gt;
&lt;p&gt;deps.edn:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{:mvn/repos {&quot;datomic-cloud&quot; {:url &quot;s3://datomic-releases-1fc2183a/maven/releases&quot;}}

 :aliases {
           :ion-dev {:deps {com.datomic/ion-dev {:mvn/version &quot;1.0.352&quot;}
                            com.datomic/client-cloud {:mvn/version &quot;1.0.131&quot;}
                            com.datomic/ion {:mvn/version &quot;1.0.71&quot;}}
                     :main-opts [&quot;-m&quot; &quot;datomic.ion.dev&quot;]}}}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;command I'm trying to run:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;clojure -M:ion-dev '{:op :push :creds-profile &quot;byt-wrought-test&quot; :region &quot;us-west-2&quot;}'
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;error:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{:command-failed
 &quot;{:op :push :creds-profile \&quot;byt-wrought-test\&quot; :region \&quot;us-west-2\&quot;}&quot;,
 :causes
 ({:message
   &quot;Failed to read artifact descriptor for com.datomic:ion-http-direct:jar:1.0.47&quot;,
   :class ArtifactDescriptorException}
  {:message
   &quot;Could not transfer artifact com.datomic:ion-http-direct:pom:1.0.47 from/to datomic-cloud (s3://datomic-releases-1fc2183a/maven/releases): Unexpected error downloading artifact from datomic-releases-1fc2183a&quot;,
   :class ArtifactResolutionException}
  {:message
   &quot;Could not transfer artifact com.datomic:ion-http-direct:pom:1.0.47 from/to datomic-cloud (s3://datomic-releases-1fc2183a/maven/releases): Unexpected error downloading artifact from datomic-releases-1fc2183a&quot;,
   :class ArtifactTransferException}
  {:message
   &quot;Unexpected error downloading artifact from datomic-releases-1fc2183a&quot;,
   :class ExceptionInfo,
   :data
   {:bucket &quot;datomic-releases-1fc2183a&quot;,
    :path
    &quot;maven/releases/com/datomic/ion-http-direct/1.0.47/ion-http-direct-1.0.47.pom&quot;,
    :reason :cognitect.anomalies/fault}})}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Based on some conversations I found on slack and datomic dev forum, I tried this as a troubleshooting step:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;aws --profile byt-wrangle-test s3 cp s3://datomic-releases-1fc2183a/maven/releases/com/datomic/ion/0.9.7/ion-0.9.7.jar .

download: s3://datomic-releases-1fc2183a/maven/releases/com/datomic/ion/0.9.7/ion-0.9.7.jar to ./ion-0.9.7.jar
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;and that works. But the same attempt with 1.0.47 does not:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;aws --profile byt-wrangle-test s3 cp s3://datomic-releases-1fc2183a/maven/releases/com/datomic/ion/1.0.47/ion-1.0.47.jar .
fatal error: An error occurred (403) when calling the HeadObject operation: Forbidden
&lt;/code&gt;&lt;/pre&gt;
</description>
<category>Ions</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/1890/failing-error-message-about-missing-unreadable-maven-artifact</guid>
<pubDate>Tue, 19 May 2026 19:40:21 +0000</pubDate>
</item>
<item>
<title>Datomic peer - Support SSO</title>
<link>https://ask.datomic.com/index.php/1885/datomic-peer-support-sso</link>
<description>&lt;p&gt;Datomic currently does not support AWS SSO out-of-the-box&lt;/p&gt;
&lt;p&gt;This issue is probably because it uses an old version of &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.datomic.com/operation/storage.html#dynamodb-aws-peer-dependency&quot;&gt;dynamodb SDK&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I believe that this issue can be fixed by upgrading the AWS SDK to &lt;a rel=&quot;nofollow&quot; href=&quot;https://mvnrepository.com/artifact/software.amazon.awssdk/dynamodb/2.41.27&quot;&gt;v2&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Here a workaround:&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://gist.github.com/souenzzo/42060567479ab2dd916769f1d73042fa&quot;&gt;https://gist.github.com/souenzzo/42060567479ab2dd916769f1d73042fa&lt;/a&gt;&lt;/p&gt;
</description>
<category>Peer API</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/1885/datomic-peer-support-sso</guid>
<pubDate>Fri, 13 Feb 2026 17:36:46 +0000</pubDate>
</item>
<item>
<title>Datomic peer on dynamodb - misleading error message</title>
<link>https://ask.datomic.com/index.php/1884/datomic-peer-on-dynamodb-misleading-error-message</link>
<description>&lt;p&gt;Starting from a simple setup:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{:deps {com.datomic/peer       {:mvn/version &quot;1.0.7491&quot;}
        org.slf4j/slf4j-simple {:mvn/version &quot;2.0.17&quot;}}}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And trying to connect into a dynamodb connection, it fails with a &quot;s3&quot; error: &lt;/p&gt;
&lt;pre&gt;&lt;code&gt;user=&amp;gt; (require '[datomic.api :as d])
nil
user=&amp;gt; (d/connect &quot;datomic:ddb://us-east-1/prd/db&quot;)
[main] INFO datomic.process-monitor - {:event :metrics/initializing, :metricsCallback clojure.core/identity, :phase :begin, :pid 311, :tid 3}
[main] INFO datomic.process-monitor - {:event :metrics/initializing, :metricsCallback clojure.core/identity, :msec 0.696, :phase :end, :pid 311, :tid 3}
[main] INFO datomic.process-monitor - {:metrics/started clojure.core/identity, :pid 311, :tid 3}
[clojure-agent-send-off-pool-0] INFO datomic.domain - {:event :cache/create, :cache-bytes 502267904, :pid 311, :tid 25}
[clojure-agent-send-off-pool-0] INFO datomic.process-monitor - {:AvailableMB 895.0, :ObjectCacheCount 0, :event :metrics, :pid 311, :tid 25}
Execution error (ClassNotFoundException) at jdk.internal.loader.BuiltinClassLoader/loadClass (BuiltinClassLoader.java:580).
com.amazonaws.services.s3.model.MultiObjectDeleteException
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;From this error message, it is pretty hard to find that datomic actually requires an extra dynamodb dependency to work.&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.datomic.com/operation/storage.html#dynamodb-aws-peer-dependency&quot;&gt;https://docs.datomic.com/operation/storage.html#dynamodb-aws-peer-dependency&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Possible fixes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A better error message&lt;/li&gt;
&lt;li&gt;Adding this error message to datomic docs, as a &quot;common errors&quot; - do google will be able to find. &lt;/li&gt;
&lt;/ul&gt;
</description>
<category>Peer API</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/1884/datomic-peer-on-dynamodb-misleading-error-message</guid>
<pubDate>Fri, 13 Feb 2026 16:19:56 +0000</pubDate>
</item>
<item>
<title>Datomic on JDK25 - WARNING: A restricted method in java.lang.System has been called</title>
<link>https://ask.datomic.com/index.php/1883/datomic-jdk25-warning-restricted-method-java-system-called</link>
<description>&lt;p&gt;Using this dependencies&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{:deps {com.datomic/peer                    {:mvn/version &quot;1.0.7491&quot;}
        org.slf4j/slf4j-nop                 {:mvn/version &quot;2.0.17&quot;}
        com.amazonaws/aws-java-sdk-dynamodb {:mvn/version &quot;1.12.564&quot;}}}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Note: aws-java-sdk-dynamodb has an updated version, but 1.12.564 is the &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.datomic.com/operation/storage.html#dynamodb-aws-peer-dependency&quot;&gt;recommended&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Generate these warnings:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;WARNING: A terminally deprecated method in sun.misc.Unsafe has been called
WARNING: sun.misc.Unsafe::objectFieldOffset has been called by io.netty.util.internal.PlatformDependent0$4 (file:/root/.m2/repository/io/netty/netty-common/4.1.100.Final/netty-common-4.1.100.Final.jar)
WARNING: Please consider reporting this to the maintainers of class io.netty.util.internal.PlatformDependent0$4
WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release
WARNING: A restricted method in java.lang.System has been called
WARNING: java.lang.System::loadLibrary has been called by io.netty.util.internal.NativeLibraryUtil in an unnamed module (file:/root/.m2/repository/io/netty/netty-common/4.1.100.Final/netty-common-4.1.100.Final.jar)
WARNING: Use --enable-native-access=ALL-UNNAMED to avoid a warning for callers in this module
WARNING: Restricted methods will be blocked in a future release unless native access is enabled
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This issue report focus in the first part: &lt;/p&gt;
&lt;pre&gt;&lt;code&gt;WARNING: A restricted method in java.lang.System has been called
WARNING: java.lang.System::loadLibrary has been called by io.netty.util.internal.NativeLibraryUtil in an unnamed module (file:/root/.m2/repository/io/netty/netty-common/4.1.100.Final/netty-common-4.1.100.Final.jar)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Trace:&lt;br&gt;
-  io.netty/netty-common 4.1.100&lt;br&gt;
- required by org.apache.activemq/artemis-commons 2.31.2&lt;br&gt;
- required by org.apache.activemq/artemis-core-client 2.31.2&lt;br&gt;
- required by com.datomic/peer.&lt;/p&gt;
</description>
<category>Peer API</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/1883/datomic-jdk25-warning-restricted-method-java-system-called</guid>
<pubDate>Fri, 13 Feb 2026 16:19:55 +0000</pubDate>
</item>
<item>
<title>Datomic on JDK25 - WARNING: A terminally deprecated method in sun.misc.Unsafe has been called</title>
<link>https://ask.datomic.com/index.php/1882/datomic-warning-terminally-deprecated-method-unsafe-called</link>
<description>&lt;p&gt;Using this dependencies&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{:deps {com.datomic/peer                    {:mvn/version &quot;1.0.7491&quot;}
        org.slf4j/slf4j-nop                 {:mvn/version &quot;2.0.17&quot;}
        com.amazonaws/aws-java-sdk-dynamodb {:mvn/version &quot;1.12.564&quot;}}}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Note: aws-java-sdk-dynamodb has an updated version, but 1.12.564 is the &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.datomic.com/operation/storage.html#dynamodb-aws-peer-dependency&quot;&gt;recommended&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Generate these warnings:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;WARNING: A terminally deprecated method in sun.misc.Unsafe has been called
WARNING: sun.misc.Unsafe::objectFieldOffset has been called by io.netty.util.internal.PlatformDependent0$4 (file:/root/.m2/repository/io/netty/netty-common/4.1.100.Final/netty-common-4.1.100.Final.jar)
WARNING: Please consider reporting this to the maintainers of class io.netty.util.internal.PlatformDependent0$4
WARNING: sun.misc.Unsafe::objectFieldOffset will be removed in a future release
WARNING: A restricted method in java.lang.System has been called
WARNING: java.lang.System::loadLibrary has been called by io.netty.util.internal.NativeLibraryUtil in an unnamed module (file:/root/.m2/repository/io/netty/netty-common/4.1.100.Final/netty-common-4.1.100.Final.jar)
WARNING: Use --enable-native-access=ALL-UNNAMED to avoid a warning for callers in this module
WARNING: Restricted methods will be blocked in a future release unless native access is enabled
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This issue report focus in the first part: &lt;/p&gt;
&lt;pre&gt;&lt;code&gt;WARNING: A terminally deprecated method in sun.misc.Unsafe has been called
WARNING: sun.misc.Unsafe::objectFieldOffset has been called by io.netty.util.internal.PlatformDependent0$4 (file:/root/.m2/repository/io/netty/netty-common/4.1.100.Final/netty-common-4.1.100.Final.jar)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Trace:&lt;br&gt;
-  io.netty/netty-common 4.1.100&lt;br&gt;
- required by org.apache.activemq/artemis-commons 2.31.2&lt;br&gt;
- required by org.apache.activemq/artemis-core-client 2.31.2&lt;br&gt;
- required by com.datomic/peer.&lt;/p&gt;
</description>
<category>Peer API</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/1882/datomic-warning-terminally-deprecated-method-unsafe-called</guid>
<pubDate>Fri, 13 Feb 2026 16:19:51 +0000</pubDate>
</item>
<item>
<title>Datomic Pro's executable shell scripts (e.g. transactor.sh) fail on NixOS</title>
<link>https://ask.datomic.com/index.php/1880/datomic-pros-executable-shell-scripts-transactor-fail-nixos</link>
<description>&lt;p&gt;This is because the shebang is &lt;code&gt;#!/bin/bash&lt;/code&gt; which is not standards compliant and NixOS does not expose this. The compliant shebang that works on all systems is &lt;code&gt;#!/usr/bin/env bash&lt;/code&gt; (according to the NixOS user). The impact of this is that when I do user interview calls for Datomic Browser and ask users to install Datomic Pro with mbrainz, NixOS users get errors on &lt;code&gt;restore-db&lt;/code&gt; etc. The resolution is I have to instruct them to edit in place the Datomic shell scripts in &lt;code&gt;bin/&lt;/code&gt; to rewrite their shebang to the correct value.&lt;/p&gt;
&lt;p&gt;datomic pro 1.0.7469&lt;/p&gt;
</description>
<category>On-Prem</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/1880/datomic-pros-executable-shell-scripts-transactor-fail-nixos</guid>
<pubDate>Thu, 18 Dec 2025 13:40:50 +0000</pubDate>
</item>
<item>
<title>Why does changing the #inst reader make my query fail?</title>
<link>https://ask.datomic.com/index.php/1867/why-does-changing-the-inst-reader-make-my-query-fail</link>
<description>&lt;p&gt;does datomic pro print and read queries during datomic.api/q, maybe as part of its query cache? we’ve changed the &lt;code&gt;#inst&lt;/code&gt; reader in our project to return java.time.Instant and now a java.util.Date we pass to a query comes out as a &lt;code&gt;java.time.Instant&lt;/code&gt;. Is that expected &amp;amp; documented somewhere?&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;(require '[datomic.api])

;; this is demonstrating an issue we ran into where overwriting the
;; `#inst` reader broke `datomic.api/q` in surprising ways.

(def schema
  [{:db/ident :exit/datetime
    :db/valueType :db.type/instant
    :db/cardinality :db.cardinality/one}])

(def conn
  (datomic.api/connect (doto &quot;datomic:mem://inst-java-time-readers&quot; datomic.api/create-database)))

@(datomic.api/transact conn schema)

(def db+data
  (:db-after
   @(datomic.api/transact conn [{:exit/datetime #inst &quot;2024&quot;}
                                {:exit/datetime #inst &quot;2025&quot;}
                                {:exit/datetime #inst &quot;2026&quot;}])))

;; this works
(count (datomic.api/q [:find '?f
                       :where
                       '[?f :exit/datetime ?exit]
                       [(list '&amp;lt; '?exit (java.util.Date.))]]
                      db+data))


;; fails silently (returns incorrect number of results)
(binding [*data-readers* (assoc *data-readers* 'inst (fn [cs] (java.util.Date/.toInstant (clojure.instant/read-instant-date cs))))]
  (count (datomic.api/q [:find '?f
                         :where
                         '[?f :exit/datetime ?exit]
                         [(list '&amp;lt; '?exit (java.util.Date.))]]
                        db+data)))

;; fails loudly with processing rule: (q__124130 ?f), message:
;; processing clause: [?f :exit/datetime ?exit], message:
;; java.lang.ClassCastException: class java.time.Instant cannot be
;; cast to class java.util.Date (java.time.Instant and java.util.Date
;; are in module java.base of loader 'bootstrap')
(binding [*data-readers* (assoc *data-readers* 'inst (fn [cs] (java.util.Date/.toInstant (clojure.instant/read-instant-date cs))))]
  (count (datomic.api/q [:find '?f
                         :where
                         '[?f :exit/datetime ?exit]
                         [(list java.util.Date/.before '?exit (java.util.Date.))]]
                        db+data)))

;; My guess is that this is related to datomic's [query
;; caching](https://docs.datomic.com/query/query-executing.html#query-caching)
;; because once a query has been cached, a sucessive call with the
;; same query value and a bound #inst reader succeeds:
(let [query [:find '?f
             :where
             '[?f :exit/datetime ?exit]
             [(list java.util.Date/.before '?exit (java.util.Date.))]]]
  (= (count (datomic.api/q query db+data))
     (binding [*data-readers* (assoc *data-readers* 'inst (fn [cs] (java.util.Date/.toInstant (clojure.instant/read-instant-date cs))))]
       (count (datomic.api/q query db+data)))))
&lt;/code&gt;&lt;/pre&gt;
</description>
<category>On-Prem</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/1867/why-does-changing-the-inst-reader-make-my-query-fail</guid>
<pubDate>Mon, 20 Oct 2025 17:21:00 +0000</pubDate>
</item>
<item>
<title>500 errors from api gateway for large Ion responses</title>
<link>https://ask.datomic.com/index.php/1090/500-errors-from-api-gateway-for-large-ion-responses</link>
<description>&lt;p&gt;I'm having trouble with 500 errors that I'm pretty sure are coming from the Jetty container.&lt;/p&gt;
&lt;p&gt;My internal logging is showing that I am responding with a status 200 and a valid response. &lt;/p&gt;
&lt;p&gt;Smaller responses work fine but larger responses are failing with a 500 at the client and I can see that 500 in the API Gateway logs. &lt;/p&gt;
&lt;p&gt;We are using HTTP direct in this case so it's an HTTP API gateway. &lt;/p&gt;
&lt;p&gt;All these attempts have failed and don't have any telemetry or logs indicating the true source of the failure. &lt;/p&gt;
&lt;p&gt;To learn more I suspect we need to enable jetty logs to stop being swallowed and start appearing in the CloudWatch logs but I haven't have any luck in finding how to do this. &lt;/p&gt;
&lt;p&gt;Are there instructions somewhere on how to enable or increase the level of logging from the Jetty container? &lt;/p&gt;
</description>
<category>Ions</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/1090/500-errors-from-api-gateway-for-large-ion-responses</guid>
<pubDate>Wed, 07 May 2025 01:49:57 +0000</pubDate>
</item>
<item>
<title>Using a collection of datoms as input to a query</title>
<link>https://ask.datomic.com/index.php/1089/using-a-collection-of-datoms-as-input-to-a-query</link>
<description>&lt;p&gt;I was wondering if there is a way to use a collection of datoms obtained from &lt;code&gt;d/tx-range + get a single tx&lt;/code&gt; or received from a listener that subscribed to a tx queue as input to &lt;code&gt; d/q&lt;/code&gt;? The nature of this collection looks very similar to history db which can be used with &lt;code&gt;d/q&lt;/code&gt;, however passing this collection as input does not produce the expected result. Neither there is any error.&lt;/p&gt;
</description>
<category>On-Prem</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/1089/using-a-collection-of-datoms-as-input-to-a-query</guid>
<pubDate>Thu, 24 Apr 2025 12:51:36 +0000</pubDate>
</item>
<item>
<title>Why does Datomic store all databases in a single datomic_kvs table instead of having a separate table per database?</title>
<link>https://ask.datomic.com/index.php/1085/datomic-databases-datomickvs-instead-separate-database</link>
<description>&lt;p&gt;I am curious about the reasoning behind keeping all Datomic databases in a single datomic_kvs table rather than creating a separate table for each database.&lt;/p&gt;
&lt;p&gt;Some disadvantages of the current approach that I see:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;More complex maintenance: For example, if VACUUM FULL is needed because one database is highly active and generates a lot of garbage, it will block all Datomic databases, not just the affected one.&lt;/li&gt;
&lt;li&gt;Difficult to determine per-database segment size: Since the table contains entries for all databases, simply counting elements in datomic_kvs does not provide a per-database segment count.&lt;/li&gt;
&lt;li&gt;Database deletion requires a special utility: Instead of simply dropping a table, removing a database requires a dedicated tool.&lt;/li&gt;
&lt;li&gt;Disk space is not immediately freed: Because of the previous point, space is not reclaimed until VACUUM FULL is run, which again locks all Datomic databases.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Given these limitations, what are the key advantages that justify using a single datomic_kvs table instead of separate tables per database?&lt;/p&gt;
&lt;p&gt;Also, is there any plan to introduce a mode where each Datomic database has its own separate table?&lt;/p&gt;
</description>
<category>On-Prem</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/1085/datomic-databases-datomickvs-instead-separate-database</guid>
<pubDate>Mon, 03 Mar 2025 17:06:33 +0000</pubDate>
</item>
<item>
<title>datomic's spymemcached fork collides with original</title>
<link>https://ask.datomic.com/index.php/1075/datomics-spymemcached-fork-collides-with-original</link>
<description>&lt;p&gt;Datomic seems to be shading spymemcached. The logger implementation of spymemcached uses the property &lt;code&gt;net.spy.log.LoggerImpl&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Unfortunately that property wasn't shaded properly in datomic - the fork uses the naked property without a prefix. This means setting that property crashes either datomic startup or spymemcached startup, because the same class cannot be used in both places.&lt;/p&gt;
</description>
<category>Peer API</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/1075/datomics-spymemcached-fork-collides-with-original</guid>
<pubDate>Mon, 24 Feb 2025 19:02:52 +0000</pubDate>
</item>
<item>
<title>Regression in latest datomic when transacting data &amp; schema in one tx</title>
<link>https://ask.datomic.com/index.php/1070/regression-latest-datomic-when-transacting-data-schema-one</link>
<description>&lt;p&gt;Let's say you have a transaction like:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{:db/id :admin/id,
 :db/unique :db.unique/identity
 :db.install/_attribute :db.part/db}
{:db/id &quot;admin&quot;
  :db/ident :admin/bug
  :admin/id admin-id}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;(So both schema &amp;amp; data in one tx)&lt;/p&gt;
&lt;p&gt;Normally you would expect idents to work properly - e.g. after that transaction &lt;code&gt;(d/entity db [:admin/id admin-id])&lt;/code&gt; would return the &lt;code&gt;:admin/bug&lt;/code&gt; entity. Unfortunately that's not the case (though it used to work in previous versions of datomic) - it returns nil. Splitting the transaction into two makes everything work.&lt;/p&gt;
&lt;p&gt;Here's a full repro:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;(require '[datomic.api :as d])
(def conn (d/connect (doto (str &quot;datomic:mem://&quot; (d/squuid)) (d/create-database))))
@(d/transact conn [{:db/id &quot;new&quot;
                    :db/ident :admin/id,
                    :db/valueType :db.type/uuid,
                    :db/cardinality :db.cardinality/one,
                    :db/doc &quot;Id of the admin&quot;
                    :db.install/_attribute :db.part/db}])

(def admin-id (d/squuid))

@(d/transact conn [{:db/id :admin/id,
                    :db/unique :db.unique/identity
                    :db.install/_attribute :db.part/db}
                   {:db/id &quot;admin&quot;
                    :db/ident :admin/bug
                    :admin/id admin-id}])

(def db (d/db conn))

(if (some? (d/entity db [:admin/id admin-id]))
  (println &quot;All OK - admin is found by identity&quot;)
  (println &quot;Admin identity not there? Let's see the entity: &quot; (d/touch (d/entity db :admin/bug))))
&lt;/code&gt;&lt;/pre&gt;
</description>
<category>On-Prem</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/1070/regression-latest-datomic-when-transacting-data-schema-one</guid>
<pubDate>Wed, 19 Feb 2025 20:44:39 +0000</pubDate>
</item>
<item>
<title>&quot;No suitable driver&quot; when starting peer</title>
<link>https://ask.datomic.com/index.php/1068/no-suitable-driver-when-starting-peer</link>
<description>&lt;p&gt;In the peer container:&lt;/p&gt;
&lt;p&gt;root@3249b8857f6f:/opt/datomic# bin/repl&lt;br&gt;
Clojure 1.11.4&lt;br&gt;
user=&amp;gt; (Class/forName &quot;org.postgresql.Driver&quot;)&lt;br&gt;
org.postgresql.Driver&lt;br&gt;
user=&amp;gt; (require 'datomic.peer-server)&lt;br&gt;
nil&lt;br&gt;
user=&amp;gt; (datomic.peer-server/-main&lt;br&gt;
  &quot;-h&quot; &quot;0.0.0.0&quot;&lt;br&gt;
  &quot;-p&quot; &quot;8998&quot;&lt;br&gt;
  &quot;-a&quot; &quot;none,none&quot;&lt;br&gt;
  &quot;-d&quot; &quot;datomic,datomic:sql://mydb?jdbc=postgresql://catalyst-postgres-1:5432/datomic?user=datomic&amp;amp;password=datomic&amp;amp;jdbc-class=org.postgresql.Driver&quot;)&lt;br&gt;
Execution error (SQLException) at java.sql.DriverManager/getDriver (DriverManager.java:299).&lt;br&gt;
No suitable driver&lt;br&gt;
user=&amp;gt; &lt;/p&gt;
</description>
<category>On-Prem</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/1068/no-suitable-driver-when-starting-peer</guid>
<pubDate>Fri, 24 Jan 2025 01:10:09 +0000</pubDate>
</item>
<item>
<title>transactor on-prem logging</title>
<link>https://ask.datomic.com/index.php/1037/transactor-on-prem-logging</link>
<description>&lt;p&gt;Transactor emits too much log data with INFO level which makes it difficult to separate important realtime metrics/events from low level stuff useful only for troubleshooting. E.g.:&lt;br&gt;
&lt;code&gt;`&lt;/code&gt;&lt;br&gt;
2024-12-23 12:14:42.147 INFO  default    datomic.kv-cluster - {:event :kv-cluster/create-val, :val-key &quot;67695432-37bb-4155-9731-0ad26be7e1de&quot;, :bufsize 882, :msec 5.65, :phase :end, :pid 9, :tid 692}&lt;br&gt;
2024-12-23 12:14:42.151 INFO  default    datomic.kv-cluster - {:event :kv-cluster/create-val, :val-key &quot;67695432-11c9-4b95-85dc-1d081032a132&quot;, :bufsize 1170, :msec 6.64, :phase :end, :pid 9, :tid 694}&lt;/p&gt;
&lt;p&gt;...&lt;/p&gt;
&lt;p&gt;2024-12-23 12:32:35.033 INFO  default    datomic.log-gc - {:gcName &quot;G1 Young Generation&quot;, :gcAction &quot;end of minor GC&quot;, :gcCause &quot;GCLocker Initiated GC&quot;, :event :gc, :duration 70, :pid 9, :tid 5}&lt;br&gt;
2024-12-23 12:32:35.396 INFO  default    datomic.log-gc - {:gcName &quot;G1 Young Generation&quot;, :gcAction &quot;end of minor GC&quot;, :gcCause &quot;G1 Evacuation Pause&quot;, :event :gc, :duration 63, :pid 9, :tid 5}&lt;br&gt;
2024-12-23 12:32:35.749 INFO  default    datomic.log-gc - {:gcName &quot;G1 Young Generation&quot;, :gcAction &quot;end of minor GC&quot;, :gcCause &quot;GCLocker Initiated GC&quot;, :event :gc, :duration 49, :pid 9, :tid 5}&lt;br&gt;
2024-12-23 12:32:36.135 INFO  default    datomic.log-gc - {:gcName &quot;G1 Young Generation&quot;, :gcAction &quot;end of minor GC&quot;, :gcCause &quot;G1 Evacuation Pause&quot;, :event :gc, :duration 68, :pid 9, :tid 5}&lt;br&gt;
2024-12-23 12:32:36.487 INFO  default    datomic.log-gc - {:gcName &quot;G1 Young Generation&quot;, :gcAction &quot;end of minor GC&quot;, :gcCause &quot;GCLocker Initiated GC&quot;, :event :gc, :duration 65, :pid 9, :tid 5}&lt;br&gt;
2024-12-23 12:32:36.853 INFO  default    datomic.log-gc - {:gcName &quot;G1 Young Generation&quot;, :gcAction &quot;end of minor GC&quot;, :gcCause &quot;GCLocker Initiated GC&quot;, :event :gc, :duration 55, :pid 9, :tid 5}&lt;br&gt;
2024-12-23 12:32:37.239 INFO  default    datomic.log-gc - {:gcName &quot;G1 Young Generation&quot;, :gcAction &quot;end of minor GC&quot;, :gcCause &quot;G1 Evacuation Pause&quot;, :event :gc, :duration 73, :pid 9, :tid 5}&lt;br&gt;
2024-12-23 12:32:37.615 INFO  default    datomic.log-gc - {:gcName &quot;G1 Young Generation&quot;, :gcAction &quot;end of minor GC&quot;, :gcCause &quot;G1 Evacuation Pause&quot;, :event :gc, :duration 65, :pid 9, :tid 5}&lt;br&gt;
2024-12-23 12:32:37.961 INFO  default    datomic.log-gc - {:gcName &quot;G1 Young Generation&quot;, :gcAction &quot;end of minor GC&quot;, :gcCause &quot;G1 Evacuation Pause&quot;, :event :gc, :duration 69, :pid 9, :tid 5}&lt;br&gt;
2024-12-23 12:32:38.285 INFO  default    datomic.log-gc - {:gcName &quot;G1 Young Generation&quot;, :gcAction &quot;end of minor GC&quot;, :gcCause &quot;G1 Evacuation Pause&quot;, :event :gc, :duration 58, :pid 9, :tid 5}&lt;br&gt;
2024-12-23 12:32:38.713 INFO  default    datomic.log-gc - {:gcName &quot;G1 Young Generation&quot;, :gcAction &quot;end of minor GC&quot;, :gcCause &quot;G1 Evacuation Pause&quot;, :event :gc, :duration 68, :pid 9, :tid 5}&lt;br&gt;
2024-12-23 12:32:39.039 INFO  default    datomic.log-gc - {:gcName &quot;G1 Young Generation&quot;, :gcAction &quot;end of minor GC&quot;, :gcCause &quot;G1 Evacuation Pause&quot;, :event :gc, :duration 62, :pid 9, :tid 5}&lt;br&gt;
2024-12-23 12:32:39.364 INFO  default    datomic.log-gc - {:gcName &quot;G1 Young Generation&quot;, :gcAction &quot;end of minor GC&quot;, :gcCause &quot;G1 Evacuation Pause&quot;, :event :gc, :duration 66, :pid 9, :tid 5}&lt;br&gt;
2024-12-23 12:32:39.721 INFO  default    datomic.log-gc - {:gcName &quot;G1 Young Generation&quot;, :gcAction &quot;end of minor GC&quot;, :gcCause &quot;G1 Evacuation Pause&quot;, :event :gc, :duration 78, :pid 9, :tid 5}&lt;br&gt;
2024-12-23 12:32:39.923 INFO  default    datomic.lifecycle - {:tid 19, :username &quot;krVN7t+5clwdg5/HazGJsrE0ckBlt50uk+HlYn9vbwY=&quot;, :port 4334, :rev 4243344, :host &quot;0.0.0.0&quot;, :pid 9, :event :transactor/heartbeat, :version &quot;1.0.7187&quot;, :timestamp 1734957159894, :encrypt-channel true}&lt;br&gt;
&lt;code&gt;`&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;It would be nice to review log levels and have a paper on messages generated with INFO level. Also the log line seems to be EDN for which there is no parser on ELK/Grafana side. Can this be made JSON to enable structural logging?&lt;/p&gt;
</description>
<category>On-Prem</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/1037/transactor-on-prem-logging</guid>
<pubDate>Mon, 23 Dec 2024 12:18:20 +0000</pubDate>
</item>
<item>
<title>How to deprecate a composite tuple?</title>
<link>https://ask.datomic.com/index.php/1035/how-to-deprecate-a-composite-tuple</link>
<description>&lt;p&gt;As Datomic does not allow deleting attributes from schema we use the policy of adding a prefix to the attributes that are no longer used, e.g. &lt;code&gt;:foo/bar&lt;/code&gt; becomes &lt;code&gt;:foo/#bar&lt;/code&gt;. We then stop inserting deprecated attributes in the app code. This way old entities get to keep deprecated attributes, new ones do not have them. This works with all kinds of attributes, however this is not sufficient for composite tuples as Datomic calculates/inserts their values automatically. &lt;/p&gt;
&lt;p&gt;Is there a way to instruct Datomic to stop populating a composite tuple? &lt;/p&gt;
</description>
<category>On-Prem</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/1035/how-to-deprecate-a-composite-tuple</guid>
<pubDate>Sun, 24 Nov 2024 09:06:05 +0000</pubDate>
</item>
<item>
<title>how do I connect to a datomic transactor from a tomcat servlet?</title>
<link>https://ask.datomic.com/index.php/1032/how-do-i-connect-to-a-datomic-transactor-from-tomcat-servlet</link>
<description>&lt;p&gt;i have a transactor running that I can connect to via the repl and make transactions, but whenever I go to launch tomcat, i get a FileNotFoundException because it can't find datomic.clj&lt;/p&gt;
</description>
<category>Peer API</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/1032/how-do-i-connect-to-a-datomic-transactor-from-tomcat-servlet</guid>
<pubDate>Thu, 01 Aug 2024 21:39:06 +0000</pubDate>
</item>
<item>
<title>Why does Datomic block shutting down when using :timeout in d/query?</title>
<link>https://ask.datomic.com/index.php/1027/why-does-datomic-block-shutting-down-when-using-timeout-query</link>
<description>&lt;p&gt;We started adding a &lt;code&gt;:timeout&lt;/code&gt; to our &lt;code&gt;d/query&lt;/code&gt; calls, and noticed that this made our app and test suite not shutdown properly anymore.  I have pinpointed this to an thread &lt;code&gt;pool-2-thread-1&lt;/code&gt; that is keeping the VM alive, because it does not have the daemon flag set. If we don't use &lt;code&gt;:timeout&lt;/code&gt;, this thread is not being created.&lt;/p&gt;
&lt;p&gt;It seems that the ThreadFactory used by &lt;code&gt;datomic.datalog/cancel-service&lt;/code&gt; does not set this daemon flag. Is this intentional?&lt;/p&gt;
&lt;p&gt;As a workaround we now use this, which seems to work and doesn't block shutdown:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;(.setThreadFactory datomic.datalog/cancel-service
                   (reify java.util.concurrent.ThreadFactory
                     (newThread [_this runnable]
                       (doto (Thread. runnable)
                         (.setName &quot;cancel-service&quot;)
                         (.setDaemon true))
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I think the current behavior is a bug/oversight, and it would be great if these threads were made daemons by default in the future (just like every other thread Datomic seems to create).&lt;/p&gt;
</description>
<category>Peer API</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/1027/why-does-datomic-block-shutting-down-when-using-timeout-query</guid>
<pubDate>Tue, 16 Jul 2024 12:19:45 +0000</pubDate>
</item>
<item>
<title>is there a &quot;un-divert&quot; to undo divert-system</title>
<link>https://ask.datomic.com/index.php/1021/is-there-a-un-divert-to-undo-divert-system</link>
<description>&lt;p&gt;after using datomic.dev-local/divert, is there a way to undo this in a repl to switch back to the original endpoint?&lt;/p&gt;
</description>
<category>Cloud</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/1021/is-there-a-un-divert-to-undo-divert-system</guid>
<pubDate>Wed, 15 May 2024 18:23:15 +0000</pubDate>
</item>
<item>
<title>http-direct configuation not working as per tutorials</title>
<link>https://ask.datomic.com/index.php/1018/http-direct-configuation-not-working-as-per-tutorials</link>
<description>&lt;p&gt;I cannot get http-direct working.  The AWS configuration consoles have changed and the &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.datomic.com/cloud/livetutorial/http-direct.html&quot;&gt;tutorial&lt;/a&gt; does not appear to work.&lt;/p&gt;
&lt;p&gt;Specifically: in the &lt;strong&gt;API Gateway-&amp;gt;APIs-&amp;gt;Create API&lt;/strong&gt; creation I appear to have to choose between HTTPapi or RESTapi.  Between the two, the tutorial appears to follow the REST Api route (before HTTP was an option apparently).  If I do that, the load balancer does not show up as an option.  The vpc links are created for either HTTP or REST.  There is not a LoadBalancer for REST.  &lt;/p&gt;
&lt;p&gt;I have been able to work through getting a request routed to the LoadBalancer with the preconfigured 8184 listener but I get a Ion excution failed and I'm too far off the tutorial to understand what I need.  &lt;/p&gt;
</description>
<category>Ions</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/1018/http-direct-configuation-not-working-as-per-tutorials</guid>
<pubDate>Tue, 07 May 2024 19:17:52 +0000</pubDate>
</item>
<item>
<title>How to write the Metaschema file?</title>
<link>https://ask.datomic.com/index.php/1013/how-to-write-the-metaschema-file</link>
<description>&lt;p&gt;I'm learning the Analytics Support of Datomic Pro. I have configured the Transactor, Peer Server, and Presto Server and ensured that they can run properly.&lt;br&gt;
I am trying to use PrestoJDBC to query the content in the Datomic database through SQL statements. By reading the Datomic Pro documentation, I realized that I need to write a Metaschema file to implement this operation. But I didn't find any examples of Metasahema files on the internet.&lt;br&gt;
So I would like to seek help information related to Metaschema file examples.If I misunderstood, please point out my mistake!&lt;br&gt;
I really need your help in the short term!&lt;br&gt;
Thank you!&lt;/p&gt;
</description>
<category>Analytics</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/1013/how-to-write-the-metaschema-file</guid>
<pubDate>Mon, 22 Apr 2024 09:54:04 +0000</pubDate>
</item>
<item>
<title>Using Valcache via Docker bind mounts</title>
<link>https://ask.datomic.com/index.php/1012/using-valcache-via-docker-bind-mounts</link>
<description>&lt;p&gt;I'm evaluating caching options for Datomic Pro. Valcache sounds like a great fit, but there is one thing that might be a showstopper.&lt;/p&gt;
&lt;p&gt;The &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.datomic.com/pro/operation/valcache.html#prerequisites&quot;&gt;Prerequisites docs&lt;/a&gt; says that &quot;Valcache relies on an SSD with the strictatime and lazytime flags set&quot;. This requirement I can meet pretty easily by remounting the disk on the hosts running the peers.&lt;/p&gt;
&lt;p&gt;Now, the applications that are Datomic peers, who would be the users of these Valcaches, run as Docker containers in a Docker Swarm. The idea is to mount the Valcache as a &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.docker.com/storage/bind-mounts/&quot;&gt;Docker bind mount&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Would this work? The underlaying SSD disk would be mounted with strictatime and lazytime, but would whatever mechanism that requires these flags to be set work through a Docker bind mount?&lt;/p&gt;
</description>
<category>On-Prem</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/1012/using-valcache-via-docker-bind-mounts</guid>
<pubDate>Thu, 11 Apr 2024 09:50:54 +0000</pubDate>
</item>
<item>
<title>How do I restart a gc-deleted-dbs after it got canceled in &quot;Deleting garbage segments&quot; phase?</title>
<link>https://ask.datomic.com/index.php/1004/restart-deleted-canceled-deleting-garbage-segments-phase</link>
<description>&lt;p&gt;I recently (backed up and) deleted a fairly large database in production, and had gotten partway through reclaiming the space in Postgres with &lt;code&gt;bin/datomic -Ddatomic.gcStoragePaceMsec=5 gc-deleted-dbs [...]&lt;/code&gt; when I wanted to speed it up by removing the pacing, so I stopped it with Ctrl-C. The docs explicitly say that &quot;You can kill a gc-deleted-dbs process and restart it later with no adverse affects&quot; and I had previously done exactly that to speed up the pacing once before.&lt;/p&gt;
&lt;p&gt;Unfortunately, it no longer recognizes any need to clean up garbage segments, the third stage (after log and index segments). Adding a new temporary database, filling it with a bunch of junk transactions, and deleting it, successfully goes through the whole process for that DB only, but does not trigger any additional garbage segment cleanup. (If I don't add the junk transactions it skips that stage entirely.)&lt;/p&gt;
</description>
<category>On-Prem</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/1004/restart-deleted-canceled-deleting-garbage-segments-phase</guid>
<pubDate>Tue, 19 Mar 2024 04:10:45 +0000</pubDate>
</item>
<item>
<title>Possibly security issue with the dev H2 storage?</title>
<link>https://ask.datomic.com/index.php/1003/possibly-security-issue-with-the-dev-h2-storage</link>
<description>&lt;p&gt;While trying to understand more about the behaviour of Datomic dev (mainly from a security/encryption point of view), I attempted to connect to datomic.mv.db from an instance of the H2 console. I accidentally tried to log in as &quot;admin&quot; with a blank password and was surprised when I connected successfully. Connecting as &quot;admin&quot; with any password fails, so it seems explicitly to be blank. As far as I can tell I only have public  schema access and can't see any transacted data, but I am able to run SQL queries in the console.&lt;/p&gt;
&lt;p&gt;Clearly a dev transactor isn't intended to be high security, but admin with a blank password seems risky even for a dev environment. In most SQL environments I work with, the sa/admin account is just disabled if not used. Am I missing something?&lt;/p&gt;
&lt;p&gt;As an aside, does the dev transactor use H2's AES encryption or is the resulting data file unencrypted?&lt;/p&gt;
</description>
<category>On-Prem</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/1003/possibly-security-issue-with-the-dev-h2-storage</guid>
<pubDate>Wed, 13 Mar 2024 21:58:26 +0000</pubDate>
</item>
<item>
<title>import-cloud fails with &quot;No reader function for tag object&quot;</title>
<link>https://ask.datomic.com/index.php/999/import-cloud-fails-with-no-reader-function-for-tag-object</link>
<description>&lt;p&gt;The recent release of version 1.0.277 of datomic-local allowed me to run &lt;code&gt;import-cloud&lt;/code&gt; to completion successfully.  Unfortunately, the resulting database is unusable.  When I try to connect, I get this error message:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;{:type java.lang.RuntimeException&lt;br&gt;
   :message &quot;No reader function for tag object&quot;&lt;br&gt;
   :at [clojure.lang.EdnReader$TaggedReader readTagged &quot;EdnReader.java&quot; 801]}]&lt;br&gt;
 :trace&lt;br&gt;
 [[clojure.lang.EdnReader$TaggedReader readTagged &quot;EdnReader.java&quot; 801]&lt;br&gt;
  [clojure.lang.EdnReader$TaggedReader invoke &quot;EdnReader.java&quot; 783]&lt;br&gt;
  [clojure.lang.EdnReader$DispatchReader invoke &quot;EdnReader.java&quot; 549]&lt;br&gt;
  [clojure.lang.EdnReader readDelimitedList &quot;EdnReader.java&quot; 757]&lt;br&gt;
  [clojure.lang.EdnReader$MapReader invoke &quot;EdnReader.java&quot; 680]&lt;br&gt;
  [clojure.lang.EdnReader readDelimitedList &quot;EdnReader.java&quot; 757]&lt;br&gt;
  [clojure.lang.EdnReader$MapReader invoke &quot;EdnReader.java&quot; 680]&lt;br&gt;
  [clojure.lang.EdnReader readDelimitedList &quot;EdnReader.java&quot; 757]&lt;br&gt;
  [clojure.lang.EdnReader$VectorReader invoke &quot;EdnReader.java&quot; 672]&lt;br&gt;
  [clojure.lang.EdnReader readDelimitedList &quot;EdnReader.java&quot; 757]&lt;br&gt;
  [clojure.lang.EdnReader$MapReader invoke &quot;EdnReader.java&quot; 680]&lt;br&gt;
  [clojure.lang.EdnReader read &quot;EdnReader.java&quot; 145]&lt;br&gt;
  [clojure.lang.EdnReader read &quot;EdnReader.java&quot; 111]&lt;br&gt;
  [clojure.lang.EdnReader readString &quot;EdnReader.java&quot; 67]&lt;br&gt;
  [clojure.edn$read_string invokeStatic &quot;edn.clj&quot; 46]&lt;br&gt;
  [clojure.edn$read_string invokeStatic &quot;edn.clj&quot; 37]&lt;br&gt;
  [clojure.edn$read_string invoke &quot;edn.clj&quot; 37]&lt;br&gt;
  [datomic.dev_local.btindex_set$read_latest_root invokeStatic &quot;btindex_set.clj&quot; 99]&lt;br&gt;
  [datomic.dev_local.btindex_set$read_latest_root invoke &quot;btindex_set.clj&quot; 95]&lt;br&gt;
  [datomic.dev_local.btindex_set$current_index_files invokeStatic &quot;btindex_set.clj&quot; 149]&lt;br&gt;
  [datomic.dev_local.btindex_set$current_index_files invoke &quot;btindex_set.clj&quot; 146]&lt;br&gt;
  [datomic.dev_local.btindex_set$old_index_files invokeStatic &quot;btindex_set.clj&quot; 159]&lt;br&gt;
  [datomic.dev_local.btindex_set$old_index_files invoke &quot;btindex_set.clj&quot; 156]&lt;br&gt;
  [datomic.dev_local.btindex_set$delete_old_index_files invokeStatic &quot;btindex_set.clj&quot; 176]&lt;br&gt;
  [datomic.dev_local.btindex_set$delete_old_index_files invoke &quot;btindex_set.clj&quot; 169]&lt;br&gt;
  [datomic.dev_local.btindex_db$delete_unused_files invokeStatic &quot;btindex_db.clj&quot; 604]&lt;br&gt;
  [datomic.dev_local.btindex_db$delete_unused_files invoke &quot;btindex_db.clj&quot; 602]&lt;br&gt;
  [datomic.dev_local.impl$create_durable_connection invokeStatic &quot;impl.clj&quot; 189]&lt;br&gt;
  [datomic.dev_local.impl$create_durable_connection invoke &quot;impl.clj&quot; 187]&lt;br&gt;
  [datomic.dev_local.impl$create_connection invokeStatic &quot;impl.clj&quot; 205]&lt;br&gt;
  [datomic.dev_local.impl$create_connection invoke &quot;impl.clj&quot; 201]&lt;br&gt;
  [datomic.dev_local.impl.DurableClient connect &quot;impl.clj&quot; 271]&lt;br&gt;
  [datomic.client.api$connect invokeStatic &quot;api.clj&quot; 151]&lt;br&gt;
  [datomic.client.api$connect invoke &quot;api.clj&quot; 138]&lt;br&gt;
  [st.system$ensure_db_BANG_ invokeStatic &quot;system.clj&quot; 117]&lt;br&gt;
  [st.system$ensure_db_BANG_ invoke &quot;system.clj&quot; 114]&lt;br&gt;
  [st.system$eval57307$fn__57309$fn__57311 invoke &quot;system.clj&quot; 122]&lt;br&gt;
  [clojure.core$mapv$fn__8535 invoke &quot;core.clj&quot; 6979]&lt;br&gt;
...&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Note that I use a custom credentials provider and it appears as an opaque java object in the resulting db-root-00000000 file.&lt;/p&gt;
</description>
<category>Cloud</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/999/import-cloud-fails-with-no-reader-function-for-tag-object</guid>
<pubDate>Wed, 14 Feb 2024 18:08:30 +0000</pubDate>
</item>
<item>
<title>Why is the pull pattern for wild card giving me an error?</title>
<link>https://ask.datomic.com/index.php/984/why-is-the-pull-pattern-for-wild-card-giving-me-an-error</link>
<description>&lt;p&gt;I am having an issue with a query and wild card patterns:&lt;br&gt;
(d/q {:query '[:find (pull ?page pattern)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;                         :in $ ?id pattern
                         :where
                         [?page :page/id ?id]]
                  :args [(d/db conn)
                         id
                         '[*]]})
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It gives me an error:&lt;br&gt;
 Attribute identifier clojure.core/* of class: class java.lang.String does not start with a colon&lt;br&gt;
Any idea why it doesn't work? I also tried adding the pattern directly to the pull expression, but I get the exact same issue&lt;/p&gt;
</description>
<category>On-Prem</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/984/why-is-the-pull-pattern-for-wild-card-giving-me-an-error</guid>
<pubDate>Wed, 31 Jan 2024 16:27:11 +0000</pubDate>
</item>
<item>
<title>Are DB values obtained from a single conn guaranteed to include transactions submitted against the same connection?</title>
<link>https://ask.datomic.com/index.php/983/obtained-guaranteed-include-transactions-submitted-connection</link>
<description>&lt;p&gt;It stands to reason that all transactions submitted (via &lt;code&gt;datomic.api/transact&lt;/code&gt;) and transacted (demonstrated via &lt;code&gt;deref&lt;/code&gt;) on a single peer would be included in all subsequent DB values obtained (via &lt;code&gt;datomic.api/db&lt;/code&gt;) on the Peer, but I'd love to know if that is &lt;em&gt;guaranteed&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;For example, if a test transacts data resulting in some &lt;em&gt;T&lt;/em&gt;, and the rest of the test only cares that it runs against a DB value with &lt;em&gt;T'&lt;/em&gt; &amp;gt;= &lt;em&gt;T&lt;/em&gt;, is the following sufficient?:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;@(datomic.api/transact conn tx) ; T
(let [db' (datomic.api/db conn)] ; T' &amp;gt;= T?
,,(do-something-with db')&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Or is it strictly necessary to do:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;(let [{:keys [db-after]} @(datomic.api/transact conn tx)]
,,(do-something-with db-after))&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;I know that the former &lt;em&gt;tends&lt;/em&gt; to work, but I'm particularly interested if it's &lt;em&gt;guaranteed to work&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;I do understand that additional transactions from other threads / clients / etc. may have been included in &lt;code&gt;db'&lt;/code&gt; in the first scenario, so I realize the code is not equivalent in the general case. I'm only concerned about &lt;code&gt;tx&lt;/code&gt; having been transacted and included in the fetched &lt;code&gt;db'&lt;/code&gt; value.&lt;/p&gt;
&lt;p&gt;Thank you!&lt;/p&gt;
&lt;p&gt;(Apologies for formatting—I can't seem to convince this thing to care about my whitespace.)&lt;/p&gt;
</description>
<category>Peer API</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/983/obtained-guaranteed-include-transactions-submitted-connection</guid>
<pubDate>Wed, 31 Jan 2024 05:03:55 +0000</pubDate>
</item>
<item>
<title>Multiple CVEs are reported on Datomic Peer 1.0.7075</title>
<link>https://ask.datomic.com/index.php/966/multiple-cves-are-reported-on-datomic-peer-1-0-7075</link>
<description>&lt;p&gt;Starting about two weeks ago, OWASP Dependency Check (via &lt;code&gt;nvd-clojure&lt;/code&gt;) is reporting multiple CVEs on Datomic. It's in the package &lt;code&gt;memcache-asg-java-client-1.1.0.36.jar&lt;/code&gt; (file path &lt;code&gt;$HOME/.m2/repository/com/datomic/memcache-asg-java-client/1.1.0.36/memcache-asg-java-client-1.1.0.36.jar&lt;/code&gt;). They are reported as level &quot;CRITICAL&quot;. The reported CVEs are:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-8704&quot;&gt;https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-8704&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-8705&quot;&gt;https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-8705&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2023-46853&quot;&gt;https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2023-46853&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-8706&quot;&gt;https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2016-8706&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2017-9951&quot;&gt;https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2017-9951&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2018-1000127&quot;&gt;https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2018-1000127&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2019-11596&quot;&gt;https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2019-11596&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2023-46852&quot;&gt;https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2023-46852&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2011-4971&quot;&gt;https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2011-4971&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2013-7239&quot;&gt;https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2013-7239&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2013-7291&quot;&gt;https://web.nvd.nist.gov/view/vuln/detail?vulnId=CVE-2013-7291&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Partial dependency tree (&lt;code&gt;clojure -Stree&lt;/code&gt;):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[own code]
  . com.datomic/peer 1.0.7075
    . com.datomic/memcache-asg-java-client 1.1.0.36
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;At the very least I want to make sure that you're aware of this, and I'd also appreciate your advice on whether this is ACTUALLY an issue in Datomic context.&lt;/p&gt;
&lt;p&gt;Thank you!&lt;/p&gt;
</description>
<category>Peer API</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/966/multiple-cves-are-reported-on-datomic-peer-1-0-7075</guid>
<pubDate>Mon, 15 Jan 2024 07:50:02 +0000</pubDate>
</item>
<item>
<title>java.lang.IllegalStateException: Can't set!: *io-index* from non-binding thread</title>
<link>https://ask.datomic.com/index.php/965/java-lang-illegalstateexception-cant-index-binding-thread</link>
<description>&lt;p&gt;I'm getting the following error in the transactor when trying to transact some data using a transaction function. It only happens for a specific query and set of data.&lt;/p&gt;
&lt;p&gt;I'm not sure about the correct place to report errors like this, so feel free to direct me to another place if this is not the correct place.&lt;/p&gt;
&lt;p&gt;Also let me know if you need any other information.&lt;/p&gt;
&lt;p&gt;I am using datomic version 1.0.7075, peer and transactor have the same version.&lt;/p&gt;
&lt;p&gt;I'm using JDK 21, Temurin (datomic transactor is running inside &lt;code&gt;clojure:temurin-21-tools-deps-alpine&lt;/code&gt; docker container)&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;taskfeed-datomic  | java.lang.IllegalStateException: Can't set!: *io-index* from non-binding thread
taskfeed-datomic  |     at clojure.lang.Var.set(Var.java:223)
taskfeed-datomic  |     at datomic.measure.io_stats$using_index_BANG_.invokeStatic(io_stats.clj:57)
taskfeed-datomic  |     at datomic.measure.io_stats$using_index_BANG_.invoke(io_stats.clj:54)
taskfeed-datomic  |     at datomic.index.Index.seek(index.clj:553)
taskfeed-datomic  |     at datomic.btset$seek.invokeStatic(btset.clj:399)
taskfeed-datomic  |     at datomic.btset$seek.invoke(btset.clj:394)
taskfeed-datomic  |     at datomic.db.Db.seekEAVT(db.clj:2410)
taskfeed-datomic  |     at datomic.query$eav.invokeStatic(query.clj:78)
taskfeed-datomic  |     at datomic.query$eav.invoke(query.clj:69)
taskfeed-datomic  |     at datomic.query.EntityMap.valAt(query.clj:213)                                                                                                                               taskfeed-datomic  |     at datomic.query.EntityMap.entryAt(query.clj:199)                                                                                                                             taskfeed-datomic  |     at clojure.lang.RT.find(RT.java:860)
taskfeed-datomic  |     at clojure.core$select_keys.invokeStatic(core.clj:1562)
taskfeed-datomic  |     at clojure.core$select_keys.invoke(core.clj:1555)
taskfeed-datomic  |     at ns_272$eval273$fn__274$fn__275$fn__276.invoke(NO_SOURCE_FILE:143)
taskfeed-datomic  |     at clojure.walk$prewalk.invokeStatic(walk.clj:65)
taskfeed-datomic  |     at clojure.walk$prewalk.invoke(walk.clj:61)
taskfeed-datomic  |     at clojure.core$partial$fn__5908.invoke(core.clj:2641)
taskfeed-datomic  |     at clojure.core$map$fn__5935.invoke(core.clj:2770)
taskfeed-datomic  |     at clojure.lang.LazySeq.sval(LazySeq.java:42)
taskfeed-datomic  |     at clojure.lang.LazySeq.seq(LazySeq.java:51)
taskfeed-datomic  |     at clojure.lang.RT.seq(RT.java:535)
taskfeed-datomic  |     at clojure.core$seq__5467.invokeStatic(core.clj:139)
taskfeed-datomic  |     at clojure.core.protocols$seq_reduce.invokeStatic(protocols.clj:24)
taskfeed-datomic  |     at clojure.core.protocols$fn__8236.invokeStatic(protocols.clj:75)
taskfeed-datomic  |     at clojure.core.protocols$fn__8236.invoke(protocols.clj:75)
taskfeed-datomic  |     at clojure.core.protocols$fn__8178$G__8173__8191.invoke(protocols.clj:13)
taskfeed-datomic  |     at clojure.core$reduce.invokeStatic(core.clj:6886)
taskfeed-datomic  |     at clojure.core$into.invokeStatic(core.clj:6958)
taskfeed-datomic  |     at clojure.walk$walk.invokeStatic(walk.clj:50)
taskfeed-datomic  |     at clojure.walk$prewalk.invokeStatic(walk.clj:65)
taskfeed-datomic  |     at clojure.walk$prewalk.invoke(walk.clj:61)
taskfeed-datomic  |     at clojure.core$partial$fn__5908.invoke(core.clj:2641)
taskfeed-datomic  |     at clojure.core$map$fn__5935.invoke(core.clj:2772)
taskfeed-datomic  |     at clojure.lang.LazySeq.sval(LazySeq.java:42)
taskfeed-datomic  |     at clojure.lang.LazySeq.seq(LazySeq.java:51)
taskfeed-datomic  |     at clojure.lang.Cons.next(Cons.java:39)
taskfeed-datomic  |     at clojure.lang.RT.next(RT.java:713)                                                                                                                                          taskfeed-datomic  |     at clojure.core$next__5451.invokeStatic(core.clj:64)
taskfeed-datomic  |     at clojure.core.protocols$fn__8249.invokeStatic(protocols.clj:169)
taskfeed-datomic  |     at clojure.core.protocols$fn__8249.invoke(protocols.clj:124)
taskfeed-datomic  |     at clojure.core.protocols$fn__8204$G__8199__8213.invoke(protocols.clj:19)
taskfeed-datomic  |     at clojure.core.protocols$seq_reduce.invokeStatic(protocols.clj:31)
taskfeed-datomic  |     at clojure.core.protocols$fn__8236.invokeStatic(protocols.clj:75)
taskfeed-datomic  |     at clojure.core.protocols$fn__8236.invoke(protocols.clj:75)
taskfeed-datomic  |     at clojure.core.protocols$fn__8178$G__8173__8191.invoke(protocols.clj:13)
taskfeed-datomic  |     at clojure.core.protocols$fn__8236.invoke(protocols.clj:75)                                                                                                        [3165/9184]
taskfeed-datomic  |     at clojure.core.protocols$fn__8178$G__8173__8191.invoke(protocols.clj:13)
taskfeed-datomic  |     at clojure.core$reduce.invokeStatic(core.clj:6886)
taskfeed-datomic  |     at clojure.core$into.invokeStatic(core.clj:6958)
taskfeed-datomic  |     at clojure.walk$walk.invokeStatic(walk.clj:50)
taskfeed-datomic  |     at clojure.walk$prewalk.invokeStatic(walk.clj:65)
taskfeed-datomic  |     at clojure.walk$prewalk.invoke(walk.clj:61)
taskfeed-datomic  |     at ns_272$eval273$fn__274$fn__275.invoke(NO_SOURCE_FILE:93)
taskfeed-datomic  |     at clojure.core$pmap$fn__8552$fn__8553.invoke(core.clj:7089)
taskfeed-datomic  |     at clojure.core$binding_conveyor_fn$fn__5823.invoke(core.clj:2047)
taskfeed-datomic  |     at clojure.lang.AFn.call(AFn.java:18)
taskfeed-datomic  |     at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
taskfeed-datomic  |     at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
taskfeed-datomic  |     at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
taskfeed-datomic  |     at java.base/java.lang.Thread.run(Thread.java:1583)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;On the client side, I get the following error:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;taskfeed-1  | 01:09:47 [clojure-agent-send-off-pool-21] WARN  datomic.connector - {:message &quot;error executing future&quot;, :pid 1, :tid 97} {  }
taskfeed-1  | java.lang.ClassCastException: class java.lang.String cannot be cast to class java.lang.Throwable (java.lang.String and java.lang.Throwable are in module java.base of loader 'bootstrap'
)
taskfeed-1  |   at user$eval172500$fn__172501.invoke(NO_SOURCE_FILE)
taskfeed-1  |   at datomic.error$deserialize_exception.invokeStatic(error.clj:178)
taskfeed-1  |   at datomic.error$deserialize_exception.invoke(error.clj:160)
taskfeed-1  |   at datomic.peer.Connection.notify_error(peer.clj:388)
taskfeed-1  |   at datomic.connector$fn__16648.invokeStatic(connector.clj:154)
taskfeed-1  |   at datomic.connector$fn__16648.invoke(connector.clj:152)
taskfeed-1  |   at clojure.lang.MultiFn.invoke(MultiFn.java:234)
taskfeed-1  |   at datomic.connector$create_hornet_notifier$fn__16654$fn__16655$fn__16659$fn__16660.invoke(connector.clj:178)
taskfeed-1  |   at datomic.connector$create_hornet_notifier$fn__16654$fn__16655$fn__16659.invoke(connector.clj:173)
taskfeed-1  |   at datomic.connector$create_hornet_notifier$fn__16654$fn__16655.invoke(connector.clj:171)
taskfeed-1  |   at clojure.core$binding_conveyor_fn$fn__5823.invoke(core.clj:2047)
taskfeed-1  |   at clojure.lang.AFn.call(AFn.java:18)
taskfeed-1  |   at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
taskfeed-1  |   at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
taskfeed-1  |   at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
taskfeed-1  |   at java.base/java.lang.Thread.run(Thread.java:1583)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And then a few seconds later, it throws the following error:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;taskfeed-1  | Caused by:  :db.error/transaction-timeout Transaction timed out.
taskfeed-1  | clojure.lang.ExceptionInfo: :db.error/transaction-timeout Transaction timed out.                                                                                                        taskfeed-1  | #:db{:error :db.error/transaction-timeout}
taskfeed-1  |  at datomic.error$raise.invokeStatic (error.clj:70)
taskfeed-1  |     datomic.error$raise.invoke (error.clj:58)
taskfeed-1  |     datomic.error$raise.invokeStatic (error.clj:68)
taskfeed-1  |     datomic.error$raise.invoke (error.clj:58)
taskfeed-1  |     datomic.peer$await_tx_result.invokeStatic (peer.clj:79)
taskfeed-1  |     datomic.peer$await_tx_result.invoke (peer.clj:70)
taskfeed-1  |     datomic.peer.Connection.transact (peer.clj:315)
taskfeed-1  |     datomic.api$transact.invokeStatic (api.clj:107)
taskfeed-1  |     datomic.api$transact.doInvoke (api.clj:105)
&lt;/code&gt;&lt;/pre&gt;
</description>
<category>On-Prem</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/965/java-lang-illegalstateexception-cant-index-binding-thread</guid>
<pubDate>Sat, 13 Jan 2024 22:49:31 +0000</pubDate>
</item>
<item>
<title>how to run a dev transactor from the same process as a peer?</title>
<link>https://ask.datomic.com/index.php/964/how-to-run-a-dev-transactor-from-the-same-process-as-a-peer</link>
<description>&lt;p&gt;At scale you definitely want a separate transactor, but for development or for deploying an early prototype , it would be very handy to be able to have the transactor running in the same process as the peer. This would trade reliability and predictability for resource efficiency, and allow deploying on an inexpensive instance somewhere in a public cloud. This would probably lower the bar for trying out datomic in many settings.&lt;/p&gt;
&lt;p&gt;In fact, it seems that &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.datomic.com/cloud/datomic-local.html&quot;&gt;datomic local&lt;/a&gt; allows having an embedded H2 database and a transactor into the same JVM process as your client.&lt;/p&gt;
&lt;p&gt;You mentioned that it is possible to do the same for datomic on-prem, could you detail how one might do it?&lt;/p&gt;
</description>
<category>On-Prem</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/964/how-to-run-a-dev-transactor-from-the-same-process-as-a-peer</guid>
<pubDate>Wed, 10 Jan 2024 22:30:06 +0000</pubDate>
</item>
<item>
<title>Is it possible to run a transactor within the scope of my application?</title>
<link>https://ask.datomic.com/index.php/957/is-it-possible-run-transactor-within-the-scope-application</link>
<description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;Is it possible to run a transactor from within a Clojure application? I'm trying to gain more control over/feedback about the state of the transactor, and simply shelling out to bin\transactor doesn't seem like a neat solution. I'd also prefer that the end user doesn't have to provide and maintain their own transactor.&lt;/p&gt;
&lt;p&gt;PS, I understand concerns about contention for resources, but what I envision is a simple wrapper application that runs in its own JVM process separate from the rest of my application logic.&lt;/p&gt;
</description>
<category>On-Prem</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/957/is-it-possible-run-transactor-within-the-scope-application</guid>
<pubDate>Sun, 03 Dec 2023 11:52:25 +0000</pubDate>
</item>
<item>
<title>Is it possible to separate Datomic On-Prem from Cloud?</title>
<link>https://ask.datomic.com/index.php/956/is-it-possible-to-separate-datomic-on-prem-from-cloud</link>
<description>&lt;p&gt;I see that AWS-specific jars comprise more than half the size of Datomic install; adding these 300+ jars to the classpath also makes Datomic unusable in Windows due to &quot;input line is too long&quot;.&lt;/p&gt;
&lt;p&gt;As an exclusively On-Prem user, is there any way to omit these unnecessary components and still have a viable Datomic On-Prem transactor? Or have the two capabilities been too-deeply intermingled for this to be possible?&lt;/p&gt;
</description>
<category>On-Prem</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/956/is-it-possible-to-separate-datomic-on-prem-from-cloud</guid>
<pubDate>Sun, 03 Dec 2023 11:48:45 +0000</pubDate>
</item>
<item>
<title>Equivalents for d/with; transaction function test scaffold story when using cloud</title>
<link>https://ask.datomic.com/index.php/949/equivalents-transaction-function-scaffold-story-using-cloud</link>
<description>&lt;p&gt;Is there absolutely no way to access the peer api on datomic cloud?&lt;/p&gt;
&lt;p&gt;My thinking is that, conceptually, since it uses clients, that implies that peer servers do exist.&lt;/p&gt;
&lt;p&gt;I realise that light horizontal scaling is the point in DC, but the peer api, and in particular &lt;code&gt;d/with&lt;/code&gt; I'm finding important to allow test scaffolds for transaction functions.&lt;/p&gt;
&lt;p&gt;So the thought here is it would be nice to be able to access the richer peer api just for one off tasks, such as managing schema or even here making speculative databases so one can create a test scaffold to test a more complex transaction function.&lt;/p&gt;
&lt;p&gt;I don't know what the test scaffold story is with DC or if there is one. Bit of a dark area on the map for me at the moment so any suggestions would be appreciated. &lt;/p&gt;
&lt;p&gt;I guess one last-resort option is to develop using Pro and test transaction functions that way. Then copy them over to DC. I have found though that in a previous iteration trying to think about Pro and Cloud at the same time as designing for your domain is something I would want to avoid where possible.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Update: I've just realised that the client api does actually include d/with, but I'll leave the question up anyway, in case anyone has any related thoughts they'd like to share.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Further Update: looking back at my initial inept attempts to build a datomic system and schema which utilised transaction functions to avoid race conditions given a complex content hierarchy in the domain I am modelling, it looks like the reason I felt forced to use the Peer API and not Client, for those Database Functions, was the absence of d/function in the Client API. I wonder if Client API actually is fully capable in terms of installing and testing database functions, but that wasn't clear to me at the time. So much is required to be able to develop in Datomic. It might be that my missing a little detail of Clojure/Java design (an easy syntactic alternative to d/function?) ended up pushing my design decision in an unnecessary direction. &lt;br&gt;
I suppose the answer may be, re. DB functions - &quot;Client API yes&quot;, &quot;Cloud no&quot;?&lt;br&gt;
(Illustrating the point that it is best not to try to think about Pro and Cloud at the same time...)&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Remaining question: I'm finding it very difficult to find out what the difference is between d/function on the peer API, vs. use of the #db/fn literal.  Cannot locate an explanation in the docs. GPT is telling me the latter is for an inline database function which will not be installed, whereas d/function is for installing the fn into the database, but it I know it could be hallucinating in such a case.&lt;/em&gt;&lt;/p&gt;
</description>
<category>Cloud</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/949/equivalents-transaction-function-scaffold-story-using-cloud</guid>
<pubDate>Wed, 01 Nov 2023 11:24:08 +0000</pubDate>
</item>
<item>
<title>Database functions, Classpath functions, and Transaction functions</title>
<link>https://ask.datomic.com/index.php/948/database-functions-classpath-functions-transaction-functions</link>
<description>&lt;p&gt;Datomic Pro documentation, reference/database functions states:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;You can deploy code to a Datomic system by installing database functions into a Datomic database, or by adding classpath functions to the Java classpath. Both database functions and classpath functions can be used as transaction functions that run inside a transaction to enforce arbitrary data invariants.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I understand that either kind &quot;can be used as&quot; a transaction function.&lt;br&gt;
But in reality is this the only way either is used in practice?   &lt;/p&gt;
&lt;p&gt;I've been trying to unfangle what an implied other kind (that isn't used as a transaction function) could be and haven't found any examples.&lt;/p&gt;
&lt;p&gt;So the conditions regarding taking the db value as first argument, and being pure function, actually apply to every function, whether database or classpath, that we may write?&lt;/p&gt;
</description>
<category>On-Prem</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/948/database-functions-classpath-functions-transaction-functions</guid>
<pubDate>Wed, 01 Nov 2023 08:56:45 +0000</pubDate>
</item>
<item>
<title>Is there way to use s3 compatible backup storage</title>
<link>https://ask.datomic.com/index.php/946/is-there-way-to-use-s3-compatible-backup-storage</link>
<description>&lt;p&gt;We use google cloud and managing the backup persistent disks is not a huge burden but still less than ideal. Google cloud storage offers s3 compatible storage, but we would need to know how to provide their endpoint in the URI. &lt;/p&gt;
</description>
<category>On-Prem</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/946/is-there-way-to-use-s3-compatible-backup-storage</guid>
<pubDate>Mon, 16 Oct 2023 18:17:34 +0000</pubDate>
</item>
<item>
<title>Why do values of :db.type/uri return as com.cognitect.transit.impl.URIImpl?</title>
<link>https://ask.datomic.com/index.php/943/why-values-type-uri-return-com-cognitect-transit-impl-uriimpl</link>
<description>&lt;p&gt;I've recently worked with dev-local try out Datomic and when I moved to Cloud I noticed the following scenario, whenever I transact a fact that is of the &lt;code&gt;java.net.URI&lt;/code&gt; type and try to query it back I get &lt;code&gt;com.cognitect.transit.impl.URIImpl&lt;/code&gt; back as the type, I have found no documentation about this, I was expecting that the types remain the same, is there any way to disable this behavior or at least convert back to &lt;code&gt;java.net.URI&lt;/code&gt;?&lt;/p&gt;
&lt;p&gt;This matters because I had some code break because it was expecting &lt;code&gt;java.net.URI&lt;/code&gt; and because this behavior is undocumented (or if documented inaccessible by searching the Datomic documentation and search engines)&lt;/p&gt;
&lt;p&gt;Thank you for your time&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;code&gt;deps.edn&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;org.clojure/clojure {:mvn/version &quot;1.11.1&quot;}
com.datomic/client-cloud {:mvn/version &quot;1.0.123&quot;}
&lt;/code&gt;&lt;/pre&gt;
</description>
<category>Cloud</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/943/why-values-type-uri-return-com-cognitect-transit-impl-uriimpl</guid>
<pubDate>Mon, 02 Oct 2023 03:56:45 +0000</pubDate>
</item>
<item>
<title>How to change the default 1 minute jetty async servlet timeout?</title>
<link>https://ask.datomic.com/index.php/939/how-to-change-the-default-minute-jetty-async-servlet-timeout</link>
<description>&lt;p&gt;We have some ring routes in our HTTP direct ring handler, which returns some Excel files, which are constructed on the fly.&lt;/p&gt;
&lt;p&gt;This handler sometimes runs for more than a minute, resulting in the following error:&lt;br&gt;
&lt;code&gt;HTTP ERROR 503 Async servlet timeout
URI:	/...
STATUS:	503
MESSAGE:	Async servlet timeout
SERVLET:	cognitect.http_endpoint.jetty.FnServlet-49bf6f8c
Powered by Jetty:// 9.4.48.v20220622&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;How can we raise this timeout to ~5minutes, which is the maximum timeout of AWS NLBs?&lt;/p&gt;
&lt;p&gt;(We are exposing the HTTP direct ion endpoint to the public internet via an AWS NLB, to avoid the 30s timeout and 10MB response payload limit of the AWS API Gateway)&lt;/p&gt;
&lt;p&gt;Multiple sources on the internet - eg. &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/ring-clojure/ring/issues/299&quot;&gt;https://github.com/ring-clojure/ring/issues/299&lt;/a&gt; - mention a &lt;code&gt;org.eclipse.jetty.server.HttpChannelState.DEFAULT_TIMEOUT&lt;/code&gt; Java property which is supposed to affect Jetty's async context timeout.&lt;/p&gt;
&lt;p&gt;Since the change of this property at runtime is not picked up by a running jetty instance, we have added provided it as a startup option, via the &lt;code&gt;OverrideSettings&lt;/code&gt; CloudFormation template parameter:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;`&lt;/code&gt;&lt;br&gt;
{:OverrideSettings&lt;br&gt;
 (str &quot;export JVM_FLAGS=\&quot;$JVM_FLAGS&quot;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  &quot; -Dclojure.server.repl=&quot;
  &quot;{:address,\\\&quot;0.0.0.0\\\&quot;,:port,50505,:accept,clojure.core.server/repl}&quot;
  &quot; -Dorg.eclipse.jetty.server.HttpChannelState.DEFAULT_TIMEOUT=300000&quot;
  &quot;\&quot;&quot;)}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;`&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;It is indeed observable within the ion JVM process:&lt;br&gt;
&lt;code&gt;(Long/getLong &quot;org.eclipse.jetty.server.HttpChannelState.DEFAULT_TIMEOUT&quot;)
=&amp;gt; 300000&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Yet we are getting a 503 timeout response from the &lt;code&gt;cognitect.http_endpoint.jetty.FnServlet-49bf6f8c&lt;/code&gt; servlet after 1 minute still.&lt;/p&gt;
&lt;p&gt;Request, which take less then a minute work as expected.&lt;/p&gt;
</description>
<category>Ions</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/939/how-to-change-the-default-minute-jetty-async-servlet-timeout</guid>
<pubDate>Thu, 10 Aug 2023 16:01:07 +0000</pubDate>
</item>
<item>
<title>Is `(pull $db2 ?e [*])` supported officially?</title>
<link>https://ask.datomic.com/index.php/937/is-pull-db2-e-supported-officially</link>
<description>&lt;p&gt;The &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.datomic.com/cloud/query/query-data-reference.html?search=p#pull-expressions&quot;&gt;documentation&lt;/a&gt; only mentions the syntax without a &lt;code&gt;src-var&lt;/code&gt;:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;pull-expr                  = ['pull' variable pattern]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;but found that this syntax also works:&lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;pull-expr                  = ['pull' src-var variable pattern]&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I have a self-contained code example here, which demonstrates a use-case, where an entity is split between 2 Datomic databases, for privacy reasons:&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://forum.datomic.com/t/pull-db-entity-pattern-is-undocumented/2299&quot;&gt;https://forum.datomic.com/t/pull-db-entity-pattern-is-undocumented/2299&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Is this variant of the &lt;code&gt;pull-expr&lt;/code&gt; in Datalog queries are not supported officially?&lt;/p&gt;
&lt;p&gt;Should I use it in production or does it have some undefined behaviour, compared to its binary arity variant?&lt;/p&gt;
&lt;p&gt;Or the documentation is just incomplete?&lt;/p&gt;
</description>
<category>Cloud</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/937/is-pull-db2-e-supported-officially</guid>
<pubDate>Sat, 15 Jul 2023 04:42:45 +0000</pubDate>
</item>
<item>
<title>Datomic Cloud IAM role drift on setup - is this normal?</title>
<link>https://ask.datomic.com/index.php/935/datomic-cloud-iam-role-drift-on-setup-is-this-normal</link>
<description>&lt;p&gt;hi, just set up DC for the first time (ran the two AWS cloudformation templates). The storage stack is showing drift on the IAM managed policy &lt;code&gt;datomic-admin-...&lt;/code&gt;, shows 'MODIFIED', in red. Is this normal upon setup? (checking the changes in the 'versions' tab, the difference is addition of autoscaling and s3 actions to the policy; the second version, presumably causing the 'drift', was added during the provisioning). Is this just a setup artifact nothing to worry about? &lt;/p&gt;
</description>
<category>Cloud</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/935/datomic-cloud-iam-role-drift-on-setup-is-this-normal</guid>
<pubDate>Wed, 12 Jul 2023 09:34:33 +0000</pubDate>
</item>
<item>
<title>How create more one production compute?</title>
<link>https://ask.datomic.com/index.php/930/how-create-more-one-production-compute</link>
<description>&lt;p&gt;Hello, &lt;br&gt;
I need to use my existing storage with additional compute and tried create new production compute with this system name(storage stack name). And I get creation error: &lt;/p&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;Export with name myname-VpcLinkId is already exported by stack myname-compute. Rollback requested by user.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;I understand that this is due to a name conflict, but I don’t understand how then to correctly create a compute.&lt;/p&gt;
&lt;p&gt;I want to run my application in a separate server(сompute) but use the same storage.&lt;/p&gt;
</description>
<category>Cloud</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/930/how-create-more-one-production-compute</guid>
<pubDate>Wed, 05 Jul 2023 13:54:33 +0000</pubDate>
</item>
<item>
<title>Support for DynamoDB compatible services</title>
<link>https://ask.datomic.com/index.php/898/support-for-dynamodb-compatible-services</link>
<description>&lt;p&gt;Hi!&lt;br&gt;
There is a DynamoDB compatible service called &lt;a rel=&quot;nofollow&quot; href=&quot;https://ydb.tech/&quot;&gt;YDB&lt;/a&gt;.&lt;br&gt;
&lt;a rel=&quot;nofollow&quot; href=&quot;https://cloud.yandex.com/en/services/ydb&quot;&gt;YDB in the Yandex Cloud&lt;/a&gt;  has a serverless mode with &lt;a rel=&quot;nofollow&quot; href=&quot;https://cloud.yandex.com/en/docs/ydb/docapi/tools/aws-setup&quot;&gt;DynamoDB support.&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;So I have:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;AWS_ACCESS_KEY_ID&lt;/li&gt;
&lt;li&gt;AWS_SECRET_KEY&lt;/li&gt;
&lt;li&gt;region: ru-central1&lt;/li&gt;
&lt;li&gt;endpoint like &lt;code&gt;https://docapi.serverless.yandexcloud.net/ru-central1/b1gia87mbaomkfvs6rgl/etnudu2n9ri35luqe4h1&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;I have tried using the ddb and ddb-local protocols with different settings.&lt;/p&gt;
&lt;p&gt;Variants of &lt;code&gt;aws-dynamodb-override-endpoint&lt;/code&gt;&lt;br&gt;
 1. &lt;code&gt;docapi.serverless.yandexcloud.net/ru-central1/.../...&lt;/code&gt;&lt;br&gt;
 2. &lt;code&gt;docapi.serverless.yandexcloud.net:443/ru-central1/.../...&lt;/code&gt;&lt;br&gt;
 3. &lt;code&gt;https://docapi.serverless.yandexcloud.net/ru-central1/.../...&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ bin/datomic ensure-transactor config/ddb.properties config/ddb-gen.properties
java.lang.IllegalArgumentException: java.net.URISyntaxException: Illegal character in authority at index 7: http://&quot;https://docapi.serverless.yandexcloud.net/ru-central1/b1g31q09ln3ca15cg5mf/etnckvjnbskiko1s639l&quot;
	at com.amazonaws.util.RuntimeHttpUtils.toUri(RuntimeHttpUtils.java:216)
	at com.amazonaws.util.RuntimeHttpUtils.toUri(RuntimeHttpUtils.java:190)
	at com.amazonaws.AmazonWebServiceClient.toURI(AmazonWebServiceClient.java:329)
	at com.amazonaws.AmazonWebServiceClient.setEndpoint(AmazonWebServiceClient.java:317)
	at datomic.ddb$client.invokeStatic(ddb.clj:14)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I think that ddb-local always uses http protocol and there is no way to configure it with https.&lt;/p&gt;
&lt;p&gt;There are some &lt;a rel=&quot;nofollow&quot; href=&quot;https://cloud.yandex.com/en/docs/ydb/docapi/tools/aws-sdk/create-table&quot;&gt;examples&lt;/a&gt; of using AwsSDK with YDB in Yandex cloud&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;AmazonDynamoDB client = AmazonDynamoDBClientBuilder.standard()
          .withEndpointConfiguration(new AwsClientBuilder.EndpointConfiguration(&quot;&amp;lt;Document API endpoint&amp;gt;&quot;, &quot;ru-central1&quot;))
          .build();
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Could you add support for DynamoDB compatible services?&lt;br&gt;
Could it be the new `aws-dynamodb-override-protocol' setting, which is by default 'http' ?&lt;/p&gt;
</description>
<category>On-Prem</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/898/support-for-dynamodb-compatible-services</guid>
<pubDate>Thu, 11 May 2023 12:18:56 +0000</pubDate>
</item>
<item>
<title>Why is this error message saying the entity can't be resolved?</title>
<link>https://ask.datomic.com/index.php/897/why-is-this-error-message-saying-the-entity-cant-be-resolved</link>
<description>&lt;p&gt;Here is the error message:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cognitect.anomalies/message: &quot;Unable to resolve entity: 1.7592186046217E13 in datom [\&quot;shape_VVVVVVVVVVVVVVVV_0_1\&quot; :shape/source-shape 1.7592186046217E13]&quot;
                           datom: [&quot;shape_VVVVVVVVVVVVVVVV_0_1&quot; :shape/source-shape 1.7592186046217E13]
                        db/error: :db.error/not-an-entity
                             dbs: [{:database-id
                                    &quot;datomic:dev://datomic-transactor:4334/blah&quot;,
                                    :t 1818,
                                    :next-t 1819,
                                    :history false}]
                          entity: 1.7592186046217E13
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I can query for the :db/id 17592186046217, so I know it exists. My question is why can't Datomic find it? There's only one transaction and it failed, so it is guaranteed that entity 17592186046217 existed before the transaction as well.&lt;/p&gt;
&lt;p&gt;This is the schema for &lt;code&gt;:shape/source-shape&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{:db/ident :shape/source-shape
 :db/valueType :db.type/ref  
 :db/cardinality :db.cardinality/one}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The version of Datomic is &lt;code&gt;datomic-pro-1.0.6269&lt;/code&gt;.&lt;/p&gt;
</description>
<category>On-Prem</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/897/why-is-this-error-message-saying-the-entity-cant-be-resolved</guid>
<pubDate>Thu, 04 May 2023 22:53:42 +0000</pubDate>
</item>
<item>
<title>Will dev-local be available in Maven Central?</title>
<link>https://ask.datomic.com/index.php/896/will-dev-local-be-available-in-maven-central</link>
<description>&lt;p&gt;With Datomic going free (thank you!), that's one less special configuration required for a password protected Maven repository.&lt;/p&gt;
&lt;p&gt;Any chance dev-local will end up in Maven Central as well like datomic-free used to be? This would make initial dev setup much easier as developers would not need to configure any password protected Maven repositories to get started.&lt;/p&gt;
&lt;p&gt;Having dev-local in Maven central would make it possible to jump directly into development on something like &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/lambdaisland/plenish&quot;&gt;lambdaisland/plenish&lt;/a&gt; without any additional setup.&lt;/p&gt;
</description>
<category>dev-tools</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/896/will-dev-local-be-available-in-maven-central</guid>
<pubDate>Sun, 30 Apr 2023 21:30:38 +0000</pubDate>
</item>
<item>
<title>Can a tuple value be added when one of the parts of the tuple is an lookup-ref?</title>
<link>https://ask.datomic.com/index.php/891/can-tuple-value-added-when-one-the-parts-the-tuple-lookup-ref</link>
<description>&lt;p&gt;I'm wanting to use a lookup ref instead of an entity id (:db-id) when specifying the value for a tuple of attributes where one of the attributes is of type :db.type/ref. Is this possible? I've looked over the Datomic Cloud grammar on transactions and I don't see how to specify a tuple value at all (maybe I'm missing something). I've tried what I thought would be the obvious way to do it and this doesn't work. Here's what I have...&lt;/p&gt;
&lt;p&gt;Truncated schema:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{:db/ident       :molecule/legacy-id
 :db/unique      :db.unique/identity
 :db/valueType   :db.type/long
 :db/cardinality :db.cardinality/one
 :db/doc         &quot;The Molecule/Complex id from the ProcessDB Oracle database.&quot;}
{:db/ident       :molecule-part/number
 :db/valueType   :db.type/long
 :db/cardinality :db.cardinality/one
 :db/doc         &quot;The number of molecules for this molecule. The entity with this attribute may be reused and is
 not unique for a particular complex so do not change this number. Instead, check for another existing entity
 or create one.&quot;}
{:db/ident       :molecule-part/molecule
 :db/valueType   :db.type/ref
 :db/cardinality :db.cardinality/one
 :db/doc         &quot;The molecule this part refers to. The entity with this attribute may be reused and is
 not unique for a particular complex.&quot;}
{:db/ident       :molecule-part/number+molecule
 :db/unique      :db.unique/identity
 :db/valueType   :db.type/tuple
 :db/tupleAttrs  [:molecule-part/number :molecule-part/molecule]
 :db/cardinality :db.cardinality/one
 :db/doc         &quot;The number and molecule that collectively form the unique identity of this entity.&quot;}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then I try to add a molecule part using&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;(d/transact (db/get-connection) {:tx-data [{:molecule-part/molecule [:molecule/legacy-id 717] :molecule-part/number 1 :molecule-part/number+molecule [1 [:molecule/legacy-id 717]]}]})
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And get the following error&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;:db.error/invalid-tuple-value Invalid tuple value
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If I replace &quot;[:molecule/legacy-id 717]&quot; with the entity id (:db/id) for that molecule then it works. But I don't want to use the entity id... I want to use the lookup ref, because what I have is the :molecule/legacy-id. I don't want to have to do a query to resolve this before doing a transaction to add the :molecule-part.&lt;/p&gt;
</description>
<category>Cloud</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/891/can-tuple-value-added-when-one-the-parts-the-tuple-lookup-ref</guid>
<pubDate>Thu, 20 Apr 2023 20:09:32 +0000</pubDate>
</item>
<item>
<title>Is there only one deployment target for ions?</title>
<link>https://ask.datomic.com/index.php/890/is-there-only-one-deployment-target-for-ions</link>
<description>&lt;p&gt;I have deployed and used the ion-starter project.  I see that I can have multiple databases and multiple connections all of which work.&lt;/p&gt;
&lt;p&gt;But I fail when I try to create an ion from another project folder.  the &lt;code&gt;{:ion-dev &quot;push&quot;}&lt;/code&gt; appears to work but deployment fails.  &lt;/p&gt;
&lt;p&gt;Should it be a &quot;new&quot; stack? a different deploy group?  Or for ions is there only one project folder that must be used for all ions for a datomic instance?&lt;/p&gt;
</description>
<category>Ions</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/890/is-there-only-one-deployment-target-for-ions</guid>
<pubDate>Sun, 16 Apr 2023 19:26:10 +0000</pubDate>
</item>
<item>
<title>Backup Datomic Cloud to another account</title>
<link>https://ask.datomic.com/index.php/884/backup-datomic-cloud-to-another-account</link>
<description>&lt;p&gt;Is there a way to backup a datomic cloud instance to another aws account? I know that cloud is based on HA technology inside the AWS, (dynamo, s3, etc) but backups are important for business continuity. In the event of an attack, &lt;em&gt;everything&lt;/em&gt; can be deleted within our aws account with one breach. I can make the tools to copy s3 items, it does not seem possible to import an existing s3 db into datomic.&lt;/p&gt;
</description>
<category>Cloud</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/884/backup-datomic-cloud-to-another-account</guid>
<pubDate>Fri, 31 Mar 2023 13:55:41 +0000</pubDate>
</item>
<item>
<title>What defines a datomic on-prem system?</title>
<link>https://ask.datomic.com/index.php/883/what-defines-a-datomic-on-prem-system</link>
<description>&lt;p&gt;The price for an on-prem pro license is for one system. What defines a system? Does a single system include a transactor, a stand-by transactor and multiple peers?&lt;/p&gt;
</description>
<category>On-Prem</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/883/what-defines-a-datomic-on-prem-system</guid>
<pubDate>Wed, 29 Mar 2023 20:55:33 +0000</pubDate>
</item>
<item>
<title>Request Entity Too Large - clojure.lang.ExceptionInfo: Response body did not conform to Datomic client protocol</title>
<link>https://ask.datomic.com/index.php/882/request-clojure-exceptioninfo-response-conform-protocol</link>
<description>&lt;p&gt;There seems to be a bug in Datomic 990-9202 that breaks the d/tx-range function.&lt;/p&gt;
&lt;p&gt;Earlier I could use the tx-range function the fetch data from my database.&lt;/p&gt;
&lt;p&gt;But after upgrading to Datomic 990-9202 I get and exception when a transaction has too much data. &lt;/p&gt;
&lt;p&gt;&lt;code&gt;`&lt;/code&gt;&lt;br&gt;
clojure.lang.ExceptionInfo: Response body did not conform to Datomic client protocol&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;cognitect.anomalies/category: :cognitect.anomalies/incorrect
 cognitect.anomalies/message: &quot;Response body did not conform to Datomic client protocol&quot;
                 http-result: {:status 413,
                               :headers
                               {&quot;apigw-requestid&quot; &quot;Vg4UxisCDoEEJsQ=&quot;,
                                &quot;server&quot; &quot;Jetty(9.4.44.v20210927)&quot;,
                                &quot;connection&quot; &quot;keep-alive&quot;,
                                &quot;content-length&quot; &quot;38&quot;,
                                &quot;date&quot; &quot;Tue, 19 Jul 2022 12:17:47 GMT&quot;,
                                &quot;content-type&quot; &quot;application/json&quot;},
                               :body &quot;{\&quot;message\&quot;:\&quot;Request Entity Too Large\&quot;}&quot;}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;`&lt;/code&gt;&lt;/p&gt;
</description>
<category>Cloud</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/882/request-clojure-exceptioninfo-response-conform-protocol</guid>
<pubDate>Tue, 21 Mar 2023 12:26:20 +0000</pubDate>
</item>
<item>
<title>How can I connect to Datomic after upgrade to 990-9202, the bastion disappeared?</title>
<link>https://ask.datomic.com/index.php/880/how-connect-datomic-after-upgrade-9202-bastion-disappeared</link>
<description>&lt;p&gt;Hi!&lt;/p&gt;
&lt;p&gt;After I upgraded Datomic cloud to version 2023/02/28 990-9202 the bastion disappeared in AWS. So now I can't connect to Datomic anymore.&lt;/p&gt;
&lt;p&gt;When I try to connect to it with &lt;code&gt;datomic client access &amp;lt;SYSTEM-NAME&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt; I get this error:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;`&lt;/code&gt;&lt;br&gt;
{:clojure.main/message&lt;br&gt;
 &quot;Execution error at datomic.tools.ops.aws/get-ip (aws.clj:116).\nGateway not found, make sure gateway is running.\n&quot;,&lt;br&gt;
 :clojure.main/triage&lt;br&gt;
 {:clojure.error/class java.lang.RuntimeException,&lt;br&gt;
  :clojure.error/line 116,&lt;br&gt;
  :clojure.error/cause&lt;br&gt;
  &quot;Gateway not found, make sure gateway is running.&quot;,&lt;br&gt;
  :clojure.error/symbol datomic.tools.ops.aws/get-ip,&lt;br&gt;
  :clojure.error/source &quot;aws.clj&quot;,&lt;br&gt;
  :clojure.error/phase :execution},&lt;br&gt;
 :clojure.main/trace&lt;br&gt;
 {:via&lt;br&gt;
  [{:type java.lang.RuntimeException,&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;:message &quot;Gateway not found, make sure gateway is running.&quot;,
:at [datomic.tools.ops.aws$get_ip invokeStatic &quot;aws.clj&quot; 116]}],
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;  :trace&lt;br&gt;
  [[datomic.tools.ops.aws$get_ip invokeStatic &quot;aws.clj&quot; 116]&lt;br&gt;
   [datomic.tools.ops.aws$get_ip invoke &quot;aws.clj&quot; 113]&lt;br&gt;
   [datomic.tools.ops.ssh$access invokeStatic &quot;ssh.clj&quot; 77]&lt;br&gt;
   [datomic.tools.ops.ssh$access invoke &quot;ssh.clj&quot; 56]&lt;br&gt;
   [datomic.tools.ops.cli.client$eval13301$fn__13302&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;invoke
&quot;client.clj&quot;
68]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;   [clojure.lang.MultiFn invoke &quot;MultiFn.java&quot; 229]&lt;br&gt;
   [datomic.tools.ops$_main invokeStatic &quot;ops.clj&quot; 83]&lt;br&gt;
   [datomic.tools.ops$_main doInvoke &quot;ops.clj&quot; 76]&lt;br&gt;
   [clojure.lang.RestFn applyTo &quot;RestFn.java&quot; 137]&lt;br&gt;
   [clojure.lang.Var applyTo &quot;Var.java&quot; 705]&lt;br&gt;
   [clojure.core$apply invokeStatic &quot;core.clj&quot; 667]&lt;br&gt;
   [clojure.main$main_opt invokeStatic &quot;main.clj&quot; 514]&lt;br&gt;
   [clojure.main$main_opt invoke &quot;main.clj&quot; 510]&lt;br&gt;
   [clojure.main$main invokeStatic &quot;main.clj&quot; 664]&lt;br&gt;
   [clojure.main$main doInvoke &quot;main.clj&quot; 616]&lt;br&gt;
   [clojure.lang.RestFn applyTo &quot;RestFn.java&quot; 137]&lt;br&gt;
   [clojure.lang.Var applyTo &quot;Var.java&quot; 705]&lt;br&gt;
   [clojure.main main &quot;main.java&quot; 40]],&lt;br&gt;
  :cause &quot;Gateway not found, make sure gateway is running.&quot;}}&lt;br&gt;
  &lt;code&gt;`&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;  What should I do to be able to connect to Datomic again?&lt;/p&gt;
</description>
<category>Cloud</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/880/how-connect-datomic-after-upgrade-9202-bastion-disappeared</guid>
<pubDate>Fri, 17 Mar 2023 09:42:45 +0000</pubDate>
</item>
<item>
<title>How to get io-stats from pull and pull-many?</title>
<link>https://ask.datomic.com/index.php/876/how-to-get-io-stats-from-pull-and-pull-many</link>
<description>&lt;p&gt;I tried looking here but it doesn't seem to be documented &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.datomic.com/on-prem/clojure/index.html&quot;&gt;https://docs.datomic.com/on-prem/clojure/index.html&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;I was able to get the io-stats from query, thanks to an example on this page: &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.datomic.com/on-prem/api/io-stats.html#query&quot;&gt;https://docs.datomic.com/on-prem/api/io-stats.html#query&lt;/a&gt;&lt;/p&gt;
</description>
<category>Peer API</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/876/how-to-get-io-stats-from-pull-and-pull-many</guid>
<pubDate>Wed, 08 Mar 2023 15:04:12 +0000</pubDate>
</item>
<item>
<title>Is it possible for Datomic On-prem to get the storage credentials from Secrets Manager or similar software?</title>
<link>https://ask.datomic.com/index.php/873/possible-datomic-storage-credentials-manager-similar-software</link>
<description>&lt;p&gt;Is there a way to run the transactor service without storing the credentials to disk?&lt;/p&gt;
</description>
<category>On-Prem</category>
<guid isPermaLink="true">https://ask.datomic.com/index.php/873/possible-datomic-storage-credentials-manager-similar-software</guid>
<pubDate>Thu, 02 Mar 2023 10:50:19 +0000</pubDate>
</item>
</channel>
</rss>