> In HBase 2.0, CPs can read Cells passed them on a CP hook invocation but they > must not retain references beyond the life of the invocation; they must copy > Cells if they intend to retain them beyond the invocation, pass the Cells off > to upper tiers, or return them otherwise to clients.
IMO, this is what we should expect already and can document ASAP. > On Feb 18, 2016, at 11:09 AM, Stack <st...@duboce.net> wrote: > > In HBase 2.0, CPs can read Cells passed them on a CP hook invocation but > they must not retain references beyond the life of the invocation; they > must copy Cells if they intend to retain them beyond the invocation, pass > the Cells off to upper tiers, or return them otherwise to clients. > > The above stricture is explicitly put on CPs going forward as it can no > longer be presumed Cells are self-contained. In particular, Cells may not > 'own' their memory but rather just referencing a backing, memory block. > Internal reference-counting to which CPs cannot be made privvy determines > when it is safe to let go of the backing memory. If a CP retains Cell > references beyond an invocation, it may find that a later read returns > unexpected results. > > For obvious reasons, HBase cannot pass CPs Cell copies on each invocation. > > Are you all good with this? > > If so, we'll add the above to Interfaces and message it to downstreamers, > etc. > > Thanks, > Anoop, Ram, and St.Ack