gpt4 book ai didi

Datomic 在连接到恢复的数据库时抛出 ActiveMQInternalErrorException

转载 作者:行者123 更新时间:2023-12-02 02:34:40 25 4
gpt4 key购买 nike

我从 :dev storage 备份了一个 Datomic v0.9.5786 数据库:

~/datomic/datomic-pro-0.9.5786/bin/datomic -Xmx4g -Xms4g backup-db datomic:dev://localhost:4334/acct file:/Users/petrus/acct.datomic
Copied 0 segments, skipped 0 segments.
Copied 414 segments, skipped 0 segments.
:succeeded

在我的其他笔记本电脑上将备份恢复到较新版本的 Datomic Pro v1.0.6202 显然成功了:

➜  datomic-pro-1.0.6202 bin/datomic -Xmx4g -Xms4g restore-db file:/Users/petrus/Projects/acct/resources/data/acct.datomic datomic:dev://localhost:4334/acct
Copied 0 segments, skipped 0 segments.
Copied 414 segments, skipped 0 segments.
:succeeded
{:event :restore, :db acct, :basis-t 38265, :inst #inst "2020-10-22T10:03:31.186-00:00"}

我按照 in the docs 所述重新启动了 Dev 事务处理程序,但是当我尝试从 REPL 连接时,Datomic 抛出:

(d/connect "datomic:dev://localhost:4334/acct")
=> Execution error (ActiveMQInternalErrorException) at org.apache.activemq.artemis.core.protocol.core.impl.ChannelImpl/sendBlocking (ChannelImpl.java:404).
null

尝试 (d/delete-database "datomic:dev://localhost:4334/acct") 失败并出现同样的错误,但尝试连接到不存在的数据库会干净地抛出“目录不存在。”

我在源机器上安装 Datomic Pro v1.0.6202 后重复了备份/恢复过程,以便源和目标版本匹配,但在连接到恢复的数据库时出现相同的症状。

让我们看看当我尝试创建一个新数据库时会发生什么:

(d/connect "datomic:dev://localhost:4334/newdb")
=> Execution error at datomic.peer/get-connection$fn (peer.clj:661).
Could not find newdb in catalog
(d/create-database "datomic:dev://localhost:4334/newdb")
=> Execution error (ActiveMQInternalErrorException) at org.apache.activemq.artemis.core.protocol.core.impl.ChannelImpl/sendBlocking (ChannelImpl.java:404).
null

嗯,我开始认为我在 Datomic 中发现了一个错误,或者我的本地 JDK (OpenJDK 15) 有问题。

所以我在 deps.edn 中创建了一个只有 1.10.1 和 Datomic Pro v1.0.6202 的新 Clojure 项目:

{:mvn/repos {"my.datomic.com" {:url "https://my.datomic.com/repo"}}
:deps {org.clojure/clojure {:mvn/version "1.10.1"}
com.datomic/datomic-pro {:mvn/version "1.0.6202"}}}

➜ clj
Clojure 1.10.1
user=> (require '[datomic.api :as d])
nil
user=> (d/connect "datomic:dev://localhost:4334/newdb")
Execution error at datomic.peer/get-connection$fn (peer.clj:661).
Could not find newdb in catalog
user=> (d/create-database "datomic:dev://localhost:4334/newdb")
Execution error (ActiveMQInternalErrorException) at org.apache.activemq.artemis.core.protocol.core.impl.ChannelImpl/sendBlocking (ChannelImpl.java:404).

某处会不会有奇怪的冲突?让我们看看 Maven 对依赖树的看法:

➜  datomic-debug clj -Spom
➜ datomic-debug mvn dependency:tree -Dverbose=true
[INFO] Scanning for projects...
[INFO]
[INFO] --------------------< datomic-debug:datomic-debug >---------------------
[INFO] Building datomic-debug 0.1.0
[INFO] --------------------------------[ jar ]---------------------------------
Downloading from clojars: https://repo.clojars.org/com/google/guava/guava/18.0/guava-18.0.jar
Downloading from my.datomic.com: https://my.datomic.com/repo/com/google/guava/guava/18.0/guava-18.0.jar
Downloading from central: https://repo.maven.apache.org/maven2/com/google/guava/guava/18.0/guava-18.0.jar
Downloaded from central: https://repo.maven.apache.org/maven2/com/google/guava/guava/18.0/guava-18.0.jar (2.3 MB at 2.9 MB/s)
[INFO]
[INFO] --- maven-dependency-plugin:2.8:tree (default-cli) @ datomic-debug ---
[INFO] datomic-debug:datomic-debug:jar:0.1.0
[INFO] +- org.clojure:clojure:jar:1.10.1:compile
[INFO] | +- org.clojure:spec.alpha:jar:0.2.176:compile
[INFO] | \- org.clojure:core.specs.alpha:jar:0.2.44:compile
[INFO] \- com.datomic:datomic-pro:jar:1.0.6202:compile
[INFO] +- (org.clojure:clojure:jar:1.8.0:compile - omitted for conflict with 1.10.1)
[INFO] +- org.clojure:tools.cli:jar:0.3.5:compile
[INFO] +- org.fressian:fressian:jar:0.6.5:compile
[INFO] +- commons-codec:commons-codec:jar:1.10:compile
[INFO] +- org.slf4j:jul-to-slf4j:jar:1.7.22:compile
[INFO] | \- org.slf4j:slf4j-api:jar:1.7.22:compile
[INFO] +- org.slf4j:slf4j-nop:jar:1.7.22:compile
[INFO] | \- (org.slf4j:slf4j-api:jar:1.7.22:compile - omitted for duplicate)
[INFO] +- org.slf4j:log4j-over-slf4j:jar:1.7.22:runtime
[INFO] | \- (org.slf4j:slf4j-api:jar:1.7.22:runtime - omitted for duplicate)
[INFO] +- org.slf4j:jcl-over-slf4j:jar:1.7.22:compile
[INFO] | \- (org.slf4j:slf4j-api:jar:1.7.22:compile - omitted for duplicate)
[INFO] +- org.apache.activemq:artemis-core-client:jar:1.5.6:compile
[INFO] | +- org.apache.activemq:artemis-commons:jar:1.5.6:compile
[INFO] | | +- org.jboss.logging:jboss-logging:jar:3.3.0.Final:compile
[INFO] | | +- (io.netty:netty-all:jar:4.1.5.Final:compile - omitted for duplicate)
[INFO] | | +- commons-beanutils:commons-beanutils:jar:1.9.2:compile
[INFO] | | | \- (commons-collections:commons-collections:jar:3.2.1:compile - omitted for conflict with 3.2.2)
[INFO] | | \- (com.google.guava:guava:jar:19.0:compile - omitted for conflict with 18.0)
[INFO] | +- (io.netty:netty-all:jar:4.1.5.Final:compile - omitted for conflict with 4.1.32.Final)
[INFO] | +- org.apache.geronimo.specs:geronimo-json_1.0_spec:jar:1.0-alpha-1:compile
[INFO] | \- org.apache.johnzon:johnzon-core:jar:0.9.5:compile
[INFO] +- io.netty:netty-all:jar:4.1.32.Final:compile
[INFO] +- com.datomic:query-support:jar:0.8.27:compile
[INFO] +- com.h2database:h2:jar:1.3.171:compile
[INFO] +- com.datomic:datomic-lucene-core:jar:3.3.0:compile
[INFO] +- com.google.guava:guava:jar:18.0:compile
[INFO] +- net.spy:spymemcached:jar:2.11.4:compile
[INFO] +- org.apache.httpcomponents:httpclient:jar:4.5.9:compile
[INFO] | +- org.apache.httpcomponents:httpcore:jar:4.4.11:compile
[INFO] | \- (commons-codec:commons-codec:jar:1.11:compile - omitted for conflict with 1.10)
[INFO] +- org.apache.tomcat:tomcat-jdbc:jar:7.0.27:compile
[INFO] | \- org.apache.tomcat:tomcat-juli:jar:7.0.27:compile
[INFO] +- commons-collections:commons-collections:jar:3.2.2:compile
[INFO] \- org.codehaus.janino:commons-compiler-jdk:jar:3.0.12:compile
[INFO] \- org.codehaus.janino:commons-compiler:jar:3.0.12:compile
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 3.181 s
[INFO] Finished at: 2020-10-24T13:15:47+01:00
[INFO] ------------------------------------------------------------------------

无论我使用的是 OpenJDK 15 还是 Oracle 的 JDK 15,都会发生同样的情况。我还尝试在启动 Datomic 之前删除我的 Datomic 数据文件夹。

最佳答案

Datomic 事务处理程序 requires Java 8并且支持较新的版本。通过将 transactor env 切换到 OpenJDK v1.8.0_272 解决:

brew cask install adoptopenjdk8
export JAVA_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
bin/transactor config/dev-transactor.properties

我为此浪费了 10 个小时。也许如果交易者在启动时尝试连接到自身作为健全性检查,它可能会及早警告用户。

关于Datomic 在连接到恢复的数据库时抛出 ActiveMQInternalErrorException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64512606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com