| Safe Haskell | None |
|---|---|
| Language | Haskell2010 |
Plutus.ChainIndex.Events
Synopsis
- period :: Int
- measureEventQueueSizeByTxs :: Natural -> ChainSyncEvent -> Natural
- processEventsQueue :: Trace IO (PrettyObject SyncLog) -> RunRequirements -> EventsQueue -> IO ()
Documentation
measureEventQueueSizeByTxs :: Natural -> ChainSyncEvent -> Natural Source #
We estimate the size of the event with the number of the transactions in the block.
By doing this we accumulate some number of blocks but with less than queueSize number of transactions.
This approach helps to process blocks with a constant memory usage.
However, once we are in sync with the node, we want to process every block instead of batches of blocks so that we can update the database as frequently as possible.
Just accumulating queueSize blocks doesn't work as a block can have any number of transactions.
It works fine at the beginning of the chain but later blocks grow in their size and the memory
usage grows tremendously.
processEventsQueue :: Trace IO (PrettyObject SyncLog) -> RunRequirements -> EventsQueue -> IO () Source #
processEventsQueue reads events from TBQueue, collects enough RollForwards to
append blocks at once.