在不需要使用某些状态时(在dev / prod中),corda是否支持状态删除方案 因为我在启动节点时遇到异常,例如“找不到类异常”,所以当我在项目中删除状态类并使用相同的旧持久性文件时,就会发生这种情况。
我认为是因为状态类已经插入VAULT_STATES中,并且在启动节点时找不到该类。
我希望有一些提供状态删除的方法。
更多信息 在开发方面,我删除了持久性文件,它当然可以工作,但是我只担心生产方面。
答案 0 :(得分:0)
出于开发目的,您只需删除persistence.mv.db
文件即可,该文件是整个H2数据库。这将重置您的corda节点。
当然不要将其用于任何生产用途。
答案 1 :(得分:0)
从Corda 3开始,如果节点将状态作为事务的一部分存储在其事务存储或保管库中,则该节点需要将状态的类定义永久保留在其类路径中。
您可以直接通过节点的数据库直接删除旧的事务和状态,但前提是事务解析不需要该事务。您可以通过从节点数据库的NODE_TRANSACTIONS
和VAULT_STATES
表中删除行来完成此操作(如果状态为QueryableState
,则可以删除状态模式定义的任何自定义表)。但是,如果以后需要将已删除的事务作为解决事务的一部分,则您的节点将抛出错误。
Corda的未来版本可能提供删除旧的或“非当前”状态和事务的机制。您可以在这里找到有关此过程的讨论:https://groups.io/g/corda-dev/topic/20405353。