vaultQuery Melebihi Ukuran Halaman Default

Saya telah menjalankan beberapa tes beban pada CordApp sederhana saya dan sekarang ketika saya melakukan kueri brankas untuk memeriksa daftar transaksi, saya mendapatkan pengecualian di log: net.corda.core.node.services.VaultQueryException: Harap tentukan a PageSpecification karena hasil [201] lebih banyak daripada ukuran halaman default [200]. Tampaknya tidak ada opsi untuk meneruskan parameter untuk paging. Apakah saya perlu memfilter hasilnya? Itu tidak akan mempengaruhi alasan pengecualiannya. Amalan apa yang direkomendasikan?


person Kevin Peterson    schedule 04.09.2018    source sumber


Jawaban (1)


Seperti yang didokumentasikan di sini tautan

Ukuran Halaman Maks

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

Mengulangi setiap halaman.

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)
person Adrian    schedule 05.09.2018