HBASE-15478 add comments to syncRunnerIndex handling explaining constraints on possible values.
Signed-off-by: zhangduo <zhangduo@apache.org>
This commit is contained in:
parent
64204b96c1
commit
f48c92d143
|
@ -1785,10 +1785,19 @@ public class FSHLog implements WAL {
|
||||||
// If not a batch, return to consume more events from the ring buffer before proceeding;
|
// If not a batch, return to consume more events from the ring buffer before proceeding;
|
||||||
// we want to get up a batch of syncs and appends before we go do a filesystem sync.
|
// we want to get up a batch of syncs and appends before we go do a filesystem sync.
|
||||||
if (!endOfBatch || this.syncFuturesCount <= 0) return;
|
if (!endOfBatch || this.syncFuturesCount <= 0) return;
|
||||||
// Below expects that the offer 'transfers' responsibility for the outstanding syncs to
|
// syncRunnerIndex is bound to the range [0, Integer.MAX_INT - 1] as follows:
|
||||||
// the syncRunner. We should never get an exception in here.
|
// * The maximum value possible for syncRunners.length is Integer.MAX_INT
|
||||||
|
// * syncRunnerIndex starts at 0 and is incremented only here
|
||||||
|
// * after the increment, the value is bounded by the '%' operator to [0, syncRunners.length),
|
||||||
|
// presuming the value was positive prior to the '%' operator.
|
||||||
|
// * after being bound to [0, Integer.MAX_INT - 1], the new value is stored in syncRunnerIndex
|
||||||
|
// ensuring that it can't grow without bound and overflow.
|
||||||
|
// * note that the value after the increment must be positive, because the most it could have
|
||||||
|
// been prior was Integer.MAX_INT - 1 and we only increment by 1.
|
||||||
this.syncRunnerIndex = (this.syncRunnerIndex + 1) % this.syncRunners.length;
|
this.syncRunnerIndex = (this.syncRunnerIndex + 1) % this.syncRunners.length;
|
||||||
try {
|
try {
|
||||||
|
// Below expects that the offer 'transfers' responsibility for the outstanding syncs to
|
||||||
|
// the syncRunner. We should never get an exception in here.
|
||||||
this.syncRunners[this.syncRunnerIndex].offer(sequence, this.syncFutures,
|
this.syncRunners[this.syncRunnerIndex].offer(sequence, this.syncFutures,
|
||||||
this.syncFuturesCount);
|
this.syncFuturesCount);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|
Loading…
Reference in New Issue