首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Datomic在连接到恢复的数据库时抛出ActiveMQInternalErrorException

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

Stack Overflow用户
提问于 2020-10-24 18:57:57
回答 1查看 279关注 0票数 1

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

代码语言:javascript
复制
~/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显然成功:

代码语言:javascript
复制
➜  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抛出了:

代码语言:javascript
复制
(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")失败并返回相同的错误,但尝试连接到不存在的DB时会抛出"catalog不存在“。

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

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

代码语言:javascript
复制
(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

嗯,我开始认为我发现了一个数据中的bug,或者是我本地的JDK (OpenJDK 15)有问题。

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

代码语言:javascript
复制
{: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是怎么说依赖树的:

代码语言:javascript
复制
➜  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还是OracleJDK15,都会发生同样的情况。我还尝试在启动Datomic之前删除我的数据文件夹。

EN

回答 1

Stack Overflow用户

发布于 2020-10-25 17:43:47

Datomic事务处理机requires Java 8,尚不支持较新版本。通过将transactor env切换到OpenJDK v1.8.0_272解决:

代码语言:javascript
复制
brew cask install adoptopenjdk8
export JAVA_HOME=/Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
bin/transactor config/dev-transactor.properties

我在这上面浪费了10个小时。也许,如果事务处理机尝试在启动时连接到自己,作为一种健全的检查,它可能会提前警告用户。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64512606

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档