Exception Datomic异常“读取事务处理程序位置失败”是什么意思?

Exception Datomic异常“读取事务处理程序位置失败”是什么意思?,exception,datomic,Exception,Datomic,删除或创建Datomic数据库(使用Datomic Pro 0.9.4899)时出现以下异常: 这个例外意味着什么?发生这种情况的常见原因是什么?我已经有好几个星期没有遇到这种情况了。我想我找到了答案,但我不确定我是否记得正确。如果我错了,我会把它变成一个社区维基 :db.error/read transactior location失败表示在Datomic中配置的位置没有有效的后端存储服务 我在AWS CloudFormation中遇到了这个错误。我有一个事务处理程序(在EC2实例上运行)和后

删除或创建Datomic数据库(使用Datomic Pro 0.9.4899)时出现以下异常:

这个例外意味着什么?发生这种情况的常见原因是什么?

我已经有好几个星期没有遇到这种情况了。我想我找到了答案,但我不确定我是否记得正确。如果我错了,我会把它变成一个社区维基

:db.error/read transactior location失败
表示在Datomic中配置的位置没有有效的后端存储服务


我在AWS CloudFormation中遇到了这个错误。我有一个事务处理程序(在EC2实例上运行)和后端存储(一个DynamoDB表)。我认为发生此错误是因为事务处理程序在创建DynamoDB表之前启动。(将
DependsOn
子句添加到事务处理程序实例中修复了该问题。)

事务处理程序启动时,会将其位置写入存储。他们实际上用每一条心跳信息写下自己的位置。如果在对等方尝试连接时看到此消息,则表示未写入任何事务处理程序位置,或者无法从存储中读取数据(在尝试执行此操作时,请先点击此错误)

AWS配置(比如将AWS CloudFormation和DynamoDB作为存储)出现这种情况的一个原因是启动时使用的事务处理程序属性文件未正确配置为写入存储。当对等方尝试连接到存储时,它们将无法读取事务处理程序的位置。这可能是因为事务处理程序和对等方指向不同的存储。您还可能遇到权限问题,例如,事务处理人没有权限写入您指定的存储(安全组配置等)


无论哪种情况,导致这种情况的一般原因都是错误消息所说的,即无法从存储中读取事务处理程序位置。这里缺少的细节似乎是在系统正常且配置正确的情况下如何发生的:对等方从存储中读取事务处理程序位置,事务处理程序将其位置写入心跳信号(在故障转移事件中,备用事务处理程序将在接管时写入其位置)。可能是各种系统配置问题造成的。

当我在数据库uri中没有密码的情况下连接时,会出现此错误

datomic:dev://transactor:4334/mydb?password=XxXxXx

你用的是哪种存储?我用的是Amazon DynamoDB。很有意义。谢谢你的详细回答。那么你是如何调试的呢?我使用了来自的cloudformation模板,现在我看到了这个错误消息“代码”,就其本身而言,主要是一个为DynamoDB表选择的名称的工件,因此在这里共享代码没有多大意义。以下是关于
DependsOn
子句的更多信息:
datomic:dev://transactor:4334/mydb?password=XxXxXx