this is a great news!
Thanks for raising the issue and also for digging into it!

Regards,
Mate

On Mon, Mar 1, 2021 at 10:00 PM Li Wang <li4w...@gmail.com> wrote:

> Some updates on this.
>
> I looked more into this and found that quota usage is actually
> re-calculated when deserializing the data tree from the snapshot,  so the
> quota data will be consistent even in  the case zk server crashes.
>
> Best,
>
> Li
>
> On Tue, Feb 23, 2021 at 10:13 AM Li Wang <li4w...@gmail.com> wrote:
>
> >
> > 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
> >
>

Reply via email to