gpt4 book ai didi

java - Corda - 在 corda 库中存储字符串数据是否有任何限制?

转载 作者:行者123 更新时间:2023-12-01 16:38:32 25 4
gpt4 key购买 nike

我想存储一个大小为194个字符及以上的字符串数据。当我尝试存储这样的字符串时,它正在执行流程并且正在创建状态对象,但在服务器端它抛出异常,如下所示:

 Caused by: net.corda.core.CordaRuntimeException:
com.esotericsoftware.kryo.KryoException:
java.lang.UnsupportedOperationException:
net.corda.nodeapi.internal.persistence.CordaPersistence, which is a
closeable resource, has been detected during flow checkpointing.
Restoring such resources across node restarts is not supported. Make
sure code accessing it is confined to a private method or the
reference is nulled out.

我能够毫无异常(exception)地存储 194 个字符的字符串。但如果超过 200 个字符,则会发生异常。

我使用 cords 4.3 版本和默认的 H2 DB。我试图存储的字符串是:

"3C03582C57E94C493CEE2B3FFCBAB9757F265DB03EDFB418739D77ECE1C5B66A,EE5B0454A8993279AB1D409872D5B364CD38FCB8C3B6740FB4DEF3B5E55AFEF7,CC96E3E8348ADAC42FFBEA3C7C1A88EDFC7A391421DB6F97FB80C53F52E11F41,69D77466FEACE0F702CBF2244F2A55526DFBC5F1180AB69EA561E15542155AB1"

最佳答案

  • 该错误与字符串大小无关。在您的流程中,您正在使用 Corda 在流程检查点/恢复期间无法序列化/反序列化的某些对象。
    您是否有任何对象,例如 HTTP 客户端或数据库连接/结果集?如果这样做,按照错误消息;使用完该对象引用后,必须将该对象引用设置为 null
  • 为了回答有关字符串大小的问题,交易作为 Blob 数据存储在 NODE_TRANSACTIONS 表的 TRANSACTION_VALUE 列中(请参阅 here );我非常确定 Blob 列的大小非常大(您可以使用您最喜欢的 SQL 编辑器检查其大小);但您必须记住,控制大小限制的实际上是 maxTransactionSize,它是在网络级别设置的网络参数之一(即属于该网络的所有节点都必须遵守这些参数)参数);因此,如果您的 maxTransactionSize 设置为 500 MB,那么您就无法发送大小超过 500 MB 的交易,即使 NODE_TRANSACTIONS 表可以处理该事务(请参阅 here ).
    网络参数缓存在节点目录的 network-parameters 文件中。您还可以使用 node explorer 查看该文件的值。

关于java - Corda - 在 corda 库中存储字符串数据是否有任何限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61909691/

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