当 Vault 中的行数超过 200 时缓冲区溢出问题

Buffer overflow issue when rows in vault is more than 200

我们开发了一个应用程序,它在 table 的保险库中创建义务。如果 table 的行大小小于 200,则应用程序运行良好。但是,如果行数超过 200,则在执行期间会出现以下错误 -

请指定 PageSpecification,因为结果 [201] 多于默认页面大小 [200]

将分页从默认的 200 增加到 400 后,出现 java 堆内存不足错误。 我厌倦了将节点的堆大小从 512m(默认)增加到 1024m。但是,这个问题仍然没有解决,我在 H2 DB 中收到错误- 异常:java.lang.OutOfMemoryError 从线程“MVStore 后台编写器 nio:C:/Users/Administrator/Desktop/Settlemen 中的 UncaughtExceptionHandler 抛出 t/corda-settlement/build/nodes/Bob/persistence.mv.db"

我也厌倦了在 H2 DB 文档中寻找解决方案。但是,找不到任何解决方案。

当未指定 Pagination 大小时,默认情况下 Vault 查询快速失败。参见 https://docs.corda.net/releases/release-V2.0/api-vault-query.html?highlight=pagination#pagination

按查询大小的比例增加堆大小应该可以充分扩展(即,您不应该看到任何内存不足错误)。了解您的交易大小(例如,交易的大小,包括以 blob 形式存储在您的 H2 数据库的交易 table 中的合约状态)对我们很有用,这样我们就可以执行一些内部基准测试看看我们是否可以重现相同的情况。