Description
Current status:
1. we are having two types of threads: request handling thread for any client requests as well as controller requests for `immigration` and `emigration`, and the marker sender thread for draining queued marker entries and handle responses. They maintain different in-memory cache structures like the `txnMetadataCache`, and the `pendingTxnMap` which are storing the same info, and they access some of the shared structures concurrently, like the markers queue and the markerPurgatory.
2. we are having one queue per broker today, and due to the emigration purpose we probably are having one queue per brokerId + TxnLogPartitionId + DataPartitionId, which would result in a lot of queues to handle.
This ticket is for collapsing some of these structures and simplify the access of them from concurrent threads.