How are those stats exposed to the user?
On Mon, Feb 20, 2023 at 6:01 AM Xiangying Meng <xiangy...@apache.org> wrote: > Hi, Community, > We plan to add an internal class to `TransactionBufferStats` to record the > snapshot status uniformly. > As we all know, the current transaction buffer(TB) filters the messages > sent using the aborted transaction by storing the aborted ID in TB. > Then TB will periodically store these aborted txn IDs in a bookie entry in > the form of snapshots so that TB can recover faster when recovering. > But as more and more people use transactions, we found that in some extreme > cases, a bookie entry may not be able to store all aborted transaction IDs. > So in PIP196 <https://github.com/apache/pulsar/issues/16913>, we > implemented the multiple-snapshot function. > As the transaction buffer snapshot mechanism becomes increasingly complex, > the only information related to the transaction snapshot is > `lastSnapshotTimestamps`; That is not enough, we need to add more info to > record the snapshot stats. > So I suggest adding an internal class SnapshotStats to > TransactionBufferStats to record the snapshot status uniformly. > > The modification could be : > ```java > public class TransactionBufferStats { > ... > public long lastSnapshotTimestamps; > ... > } > ``` > ```java > public class TransactionBufferStats { > ... > //public long lastSnapshotTimestamps; > ... > public SnapshotStats snapshotStats; > > public static class SnapshotStats { > public long segmentsSize; > > public long unsealedAbortTxnIDs; > > > public long lastSnapshotTimestamps; > } > } > > ``` > Thanks. > Xiangying >