Description
Apply explicit upper bounds to every resource pool that wallet operations touch. This includes: capping the RecipientDataCache channel size and the background provisioning goroutine's throughput so that cache-miss storms cannot exhaust memory; setting maximum connection-pool sizes and query timeouts on the underlying wallet database so that concurrent iterator construction cannot hold locks indefinitely; and enforcing a hard limit on the total number of recipient identities that can be registered per wallet (or per enrollment ID) to prevent unbounded growth of the persistent registry and the identitydb store. Without these caps, rate limiting alone can be circumvented by a burst that fills pools before the limiter fires.
Description
Apply explicit upper bounds to every resource pool that wallet operations touch. This includes: capping the
RecipientDataCachechannel size and the background provisioning goroutine's throughput so that cache-miss storms cannot exhaust memory; setting maximum connection-pool sizes and query timeouts on the underlying wallet database so that concurrent iterator construction cannot hold locks indefinitely; and enforcing a hard limit on the total number of recipient identities that can be registered per wallet (or per enrollment ID) to prevent unbounded growth of the persistent registry and theidentitydbstore. Without these caps, rate limiting alone can be circumvented by a burst that fills pools before the limiter fires.