Since PHOENIX-7331 has been resolved, I will also merge the PR for HBASE-28644,

Thanks all for helping moving forward here!

Istvan Toth <st...@cloudera.com.invalid> 于2024年6月17日周一 13:37写道:
>
> Hi Duo,
>
> Yes, it does:
>
> [ERROR] Failed to execute goal
> org.apache.maven.plugins:maven-compiler-plugin:3.11.0:compile
> (default-compile) on project phoenix-core-client: Compilation failure:
> Compilation failure:
> [ERROR]
> /home/stoty/workspaces/apache-phoenix/phoenix/phoenix-core-client/src/main/java/org/apache/phoenix/util/PhoenixKeyValueUtil.java:[262,93]
> incompatible types: java.util.List<org.apache.hadoop.hbase.Cell> cannot be
> converted to java.util.List<org.apache.hadoop.hbase.ExtendedCell>
> [ERROR]
> /home/stoty/workspaces/apache-phoenix/phoenix/phoenix-core-client/src/main/java/org/apache/phoenix/hbase/index/util/IndexManagementUtil.java:[248,69]
> incompatible types: java.util.List<org.apache.hadoop.hbase.Cell> cannot be
> converted to java.util.List<org.apache.hadoop.hbase.ExtendedCell>
>
> Now, we haven't actually released (TBH we haven't even committed it) Hbase
> 2.6 support yet, so technically this doesn't break any released Phoenix
> code.
>
> I played around with it a bit, and it looks like those two errors can be
> fixed in a backwards-compatible manner with some work.
>
> Opened https://issues.apache.org/jira/browse/PHOENIX-7331 to track that
> work.
>
>
> On Mon, Jun 17, 2024 at 3:12 AM 张铎(Duo Zhang) <palomino...@gmail.com> wrote:
>
> > Hi, Istvan, do you have any findings? Does this break Phoenix on
> > branch-2.6?
> >
> > Thanks.
> >
> > 张铎(Duo Zhang) <palomino...@gmail.com> 于2024年6月14日周五 09:32写道:
> > >
> > > The PR for branch-2
> > >
> > > https://github.com/apache/hbase/pull/5985
> > >
> > > The PR for branch-2.6
> > >
> > > https://github.com/apache/hbase/pull/5990
> > >
> > > At least the UTs are all fine.
> > >
> > > The current PR does not do much incompatible change, the only extra
> > > check is we require filters to return ExtendedCell instead of Cell.
> > >
> > > Thanks.
> > >
> > > 张铎(Duo Zhang) <palomino...@gmail.com> 于2024年6月13日周四 14:33写道:
> > > >
> > > > 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>
> > > > > ------------------------------
> > > > > ------------------------------
> >
>
>
> --
> *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>
> ------------------------------
> ------------------------------

Reply via email to