OK, let me open PRs for branch-2 and branch-2.6 too.
Istvan Toth <st...@cloudera.com.invalid> 于2024年6月13日周四 14:02写道: > > I am also concerned about this change on branch-2. > Some of our code does implement getSequenceId() , so doing this on 2.5 and > 2.6 would definitely break the existing releases, and require some changes > and new compatibility modules on the Phoenix side. > > Phoenix usually uses the KeyValue type internally, which already extends > ExtendedCell, so it's probably not a huge problem, but we'd like to check > before this is merged to branch-2. > I'd like to ask for a heads-up when we have a PR for branch-2 so that we > can check what breaks. > (We currently only support branch-2.6, so ideally we'd have a branch-2.6 PR > to check, but we can probably get branch-2 to work to check the change > without a lot of work) > > We also have a POC branch for HBase 3, so we can also check Phoenix with a > branch-3 version of this change. > > The worst case scenario for Phoenix would be having to open a different > branch for hbase 3.x support, we really want to avoid that. > As long as the change can be papered over with a compatibility module, > we're mostly fine. > > Istvan > > > > On Thu, Jun 13, 2024 at 5:45 AM 张铎(Duo Zhang) <palomino...@gmail.com> wrote: > > > In fact, I do not think CPs can really return their own Cell > > implementation which is not an ExtendedCell, we will call > > PrivateCellUtil.setSequenceId and setTimestamp at server side, if the > > Cell is not an ExtendedCell we will throw IOException... > > > > I guess the only place where it is safe to return a customized Cell is > > in filter implementation, in getNextCellHint, where we will only use > > it to seek the scanners without storing it anywhere... > > > > Reid Chan <reidchan0...@gmail.com> 于2024年6月13日周四 10:56写道: > > > > > > It may affect Phoenix, as it is CPs related, at least for branch-2. > > > > > > Let's wait and see if there are any comments from them > > > > > > > > > --- > > > > > > Best regards, > > > R.C > > > > > > > > > > > > On Tue, Jun 11, 2024 at 4:19 PM Duo Zhang <zhang...@apache.org> wrote: > > > > > > > We have several deprecated methods in Cell interface, like > > > > getSequenceId and tag related ones, which are marked as deprecated > > > > since 2.0.0 and should be removed in 3.0.0. Most of them are marked as > > > > deprecated in HBASE-19112. > > > > > > > > After investigating, I found that it is not an easy work... > > > > > > > > We have 3 levels for the Cell interface > > > > > > > > Cell -> RawCell -> ExtendedCell > > > > > > > > Where Cell is the Public API for client side usage, RawCell is for CPs > > > > where we expose the tag related APIs, and ExtendedCell is for server > > > > side usage, where we expose all the internal stuff, like sequence id. > > > > > > > > In HBASE-19550, we introduced a CellWrapper as we think maybe CPs will > > > > return a Cell which is not an ExtendedCell at server side, we need to > > > > wrap it so at server side we always get an ExtendedCell. So if we > > > > remove the tag and sequence id related methods, CellWrapper will be > > > > broken. > > > > > > > > For me, I do not think we need the CellWrapper. In general, all actual > > > > Cell implementation classes in our code base implement the > > > > ExtendedCell interface, i.e, we can simply consider all Cells are > > > > actually ExtendedCells. The only reason we introduce the Cell > > > > interface, is to hide internal stuff from client public API, does not > > > > mean we want users to implement their own Cell. > > > > > > > > So the plan is to change server side code use ExtendedCell as much as > > > > possible in HBASE-28644, a draft PR is already there for review[1]. > > > > This will be landed to both 3.x and at least branch-2(I'm not sure if > > > > it worth to also land on branch-2.6 and branch-2.5). > > > > And starting from 3.0.0, we should make clear that all Cell instances > > > > should be created via the CellBuilder related APIs, other Cell > > > > implementations are not allowed. So on 3.0.0, we should treat Cell as > > > > ExtendedCell everywhere in our code base, and also remove the > > > > CellWrapper class, then we could finally remove the deprecated methods > > > > in the Cell interface. > > > > > > > > Thoughts? > > > > > > > > Thanks. > > > > > > > > 1. https://github.com/apache/hbase/pull/5976 > > > > > > > > > -- > *István Tóth* | Sr. Staff Software Engineer > *Email*: st...@cloudera.com > cloudera.com <https://www.cloudera.com> > [image: Cloudera] <https://www.cloudera.com/> > [image: Cloudera on Twitter] <https://twitter.com/cloudera> [image: > Cloudera on Facebook] <https://www.facebook.com/cloudera> [image: Cloudera > on LinkedIn] <https://www.linkedin.com/company/cloudera> > ------------------------------ > ------------------------------