That limits us to 19 digit ledgerId and Charan's patch should work as-is as it has different name space. and 2^63 should be pretty good for Yahoo's usecase too.
On Tue, Nov 1, 2016 at 2:05 AM, Sijie Guo <si...@apache.org> wrote: > On Fri, Oct 28, 2016 at 5:01 PM, Charan Reddy G <reddychara...@gmail.com> > wrote: > > > In our last meeting, we briefly discussed about options of handling > > negative long ledgerids in LongeHierarchicalLedgerManager. Mainly by > using > > the unsigned long value (20 digits) for determining the ledger zNode > path. > > I see couple of problems with that > > > > (signed long) -> (unsigned long) > > -9223372036854775808 -> "09223372036854775808" > > 9223372036854775807 -> "09223372036854775807" > > > > now both these ledger znodes would be under the same parent zNode > > 0922/3372/0368/5477 > > > > gc method in ScanAndCompareGarbageCollector, for LedgerRange > > (0922/3372/0368/5477) the following logic would break. Because we would > get > > mix of positive and negative ledgerids in this ledgerrange and > > scanandcompare logic with bkActiveLedgers (ledgerStorage. > getActiveLedgers) > > will not work. > > > > > > while(ledgerRangeIterator.hasNext()) { > > LedgerRange lRange = ledgerRangeIterator.next(); > > > > Long start = lastEnd + 1; > > Long end = lRange.end(); > > if (!ledgerRangeIterator.hasNext()) { > > end = Long.MAX_VALUE; > > } > > > > Iterable<Long> subBkActiveLedgers = > > bkActiveLedgers.subSet(start, true, end, true); > > > > and also with ledgerrange with all negative ledgerids we need to do some > > tweaking for the 'start' and the 'end'. > > > > So in summary, I feel its risky to use unsigned long for determining the > > ledger zNode path, since we used signed long for ledgerids all across the > > codebase and this inconsistency can cause issue in some other areas as > > well. > > > > So I'm more convinced to use the signed long for determining the ledger > > zNode path and let the LongHierarchicalLedgerManager/Iterator deal with > > negative ledgerids accordingly (for eg. deal with znode with '-' while > > doing comparison and iteration). So it makes scope of the change limited > to > > LongHierarchicalLedgerManager rather than applying patches to other > areas. > > > > (ledger id) -> (znode path) > > -9223372036854775808 -> "-922/3372/0368/5477/5808" > > 9223372036854775807 -> "0922/3372/0368/5477/5807" > > > > Or shall we just simply not use negative numbers? > > > > > > Thanks, > > Charan > > > > > > On Wed, Oct 26, 2016 at 10:55 PM, Sijie Guo <si...@apache.org> wrote: > > > > > On Wed, Oct 26, 2016 at 3:49 PM, Matteo Merli <mme...@apache.org> > wrote: > > > > > > > On Wed, Oct 26, 2016 at 11:45 AM Venkateswara Rao Jujjuri < > > > > jujj...@gmail.com> > > > > wrote: > > > > > > > > > - Ledgers are unique across multiple clusters. Useful if storage > > tiers > > > > with > > > > > different stores are employed. > > > > > > > > > > > > > For this you could combine the ledgerId with another 64bit id, that > > could > > > > encode the rest of the required informations ( storage tier, cluster, > > .. > > > ) > > > > > > > > > > +1 on this idea > > > > > > > > > > > > > > > > > > > - No centralized id creation - Allows client to give the name > instead > > > of > > > > > server generating name on create. > > > > > > > > > > > > > This should be already possible with your changes in 4.4, right? > > > > > > > > Wouldn't be enough to combine the 64bit ledgerId with an additional > id > > > that > > > > doesn't need to flow through BK ? > > > > > > > > > > -- Jvrao --- First they ignore you, then they laugh at you, then they fight you, then you win. - Mahatma Gandhi