I am working on substrate
and trying to benchmark my node. I'm sending unsigned extrinsics
to the pool and implemented the ValidateUnsigned
trait where I add priority, longevity, provide and require tags. The benchmark launches about 100k extrinsics, using the author_submitExtrinsic
endpoint. While sending these extrinsics, I check the status of the pool by querying the author_pendingExtrinsics
endpoint.
After about 14k transactions
have entered the pool, the amount of extrinsics stagnates, with sometimes ~100 extra extrinsics entering. Also looking at the extrinsic data, it looks like even after 4-5 blocks, although transactions are being executed (I see extrinsics being added to blocks in the logs), it seems like no extrinsics have been removed from the pool and I start getting nonce errors (which confirmes that they have been executed but are now being reexecuted?).
What I tried so far:
- confirming that sending a lower amount of extrinsics (10k) allows them to be processed correctly and that they are removed from the pool
- replacing my implementation of the ValidateUnsigned yields the same result