vaultQuery超过默认页面大小

时间:2018-09-04 22:18:58

标签: corda

我已经在我的简单CordApp上运行了一些负载测试,现在当我执行保管库查询以检查事务列表时,在日志中出现异常:net.corda.core.node.services.VaultQueryException:请指定PageSpecification,因为结果[201]比默认页面大小[200]更多。似乎没有传递参数进行分页的选项。我需要过滤结果吗?那不会影响例外的原因。推荐的做法是什么?

1 个答案:

答案 0 :(得分:2)

此处link

有据

最大页面大小

val pagingSpec = PageSpecification(DEFAULT_PAGE_NUM, MAX_PAGE_SIZE)
val criteria = VaultQueryCriteria(status = Vault.StateStatus.ALL)
val results = vaultService.queryBy<ContractState>(criteria, paging = pagingSpec)

浏览每个页面。

var pageNumber = DEFAULT_PAGE_NUM
val states = mutableListOf<StateAndRef<ContractState>>()
do {
    val pageSpec = PageSpecification(pageNumber = pageNumber, pageSize = pageSize)
    val results = vaultService.queryBy<ContractState>(VaultQueryCriteria(), pageSpec)
    states.addAll(results.states)
    pageNumber++
} while ((pageSpec.pageSize * (pageNumber - 1)) <= results.totalStatesAvailable)