Hi,
The Quota stats are updated by calling updateQuotaStat() API in the
FinalRequestProcessor. However, the updateQuotaStat() API only updates the
in-memory data tree.
In the scenario that a ZK server crashed right before the updateQuotaStat
is called or a snapshot was taken, are we going to have the following data
inconsistency issue?
1. the quota stats is inaccurate in the crashed server as the
write transaction has been logged by the SyncRequestProcessor but the
quota stats update was lost?
2. the quota stats will be inconsistent across different servers as the
quota stats persisted in other servers via snapshot but not the crashed one
updateQuotaStat() code snippet
========================
synchronized (statNode) {
updatedStat = new StatsTrack(statNode.data);
updatedStat.setCount(updatedStat.getCount() + countDiff);
updatedStat.setBytes(updatedStat.getBytes() + bytesDiff);
statNode.data = updatedStat.getStatsBytes();
}
Any thoughts?
Thanks,
Li