vaultQuery превышает размер страницы по умолчанию - PullRequest
0 голосов
/ 05 сентября 2018

Я выполнял некоторые нагрузочные тесты на моем простом CordApp, и теперь, когда я делаю запрос хранилища для проверки списка транзакций, я получаю исключение в журналах: net.corda.core.node.services.VaultQueryException: Укажите PageSpecification, поскольку результатов больше [201], чем размер страницы по умолчанию [200]. Кажется, нет возможности передать параметр для подкачки. Нужно ли фильтровать результаты? Это не повлияет на причину исключения. Какова рекомендуемая практика?

1 Ответ

0 голосов
/ 05 сентября 2018

По задокументированной здесь ссылка

Максимальный размер страницы

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)
...