Could also just make a release now of hbase-operator-tools (or in a week or so when we should have hbck1+ coverage in place) built against an up-to-date hbase release. It has the check version before running a feature in place where it matters. Operators could use this on all currently shipping hbase2s?
S On Thu, Aug 29, 2019 at 11:42 AM Stack <[email protected]> wrote: > On Thu, Aug 29, 2019 at 7:34 AM Wellington Chevreuil < > [email protected]> wrote: > >> > >> > I do not think we need to compile HBCK2 with every releases? >> > >> Well, not with every release, was thinking in doing it whenever an hbase >> release breaks compatibility. >> >> We just need >> > make sure that it can work with all the releases. >> >> This could be a solution as well, but I believe it would be harder to >> guarantee. Here the problem is: >> 1) A new hbase release changes one or more interfaces currently used by >> hbck2; >> 2) We update hbck2 to depend on this new hbase release, and change hbck2 >> accordingly; >> 3) Operators need to run hbck2 to a previous hbase release. If they try to >> build hbck2 against that version, it won't compile. If they build it with >> latest hbase version, it may give a runtime error, and now they have no >> working tool to fix the problem. >> To avoid #3, we would need to add extra checks on the changes applied on >> #2. Might become too complex. >> >> Thanks Wellington for above. I see issue now. > > So, we should make retroactive releases of hbase-operator-tools at points > just before compat broke? Release could be named for the hbase2 versions > supported. Releases would make it easier on operators making it so they > don't have to build themselves? There'd be one only? Two maybe? > > Looking at changes to the Hbck Interface -- using this as gauge for > possible breakage points -- there aren't many. One release? Maybe two? > > S > > > >> If there are missing >> > methods, we just tell users you can not use several features. >> >> Fine for new fix options added, but what if some changes break basic, >> already working hbck2 methods. >> >> >> Em qui, 29 de ago de 2019 às 14:51, 张铎(Duo Zhang) <[email protected]> >> escreveu: >> >> > I do not think we need to compile HBCK2 with every releases? We just >> need >> > make sure that it can work with all the releases. If there are missing >> > methods, we just tell users you can not use several features. >> > >> > Wellington Chevreuil <[email protected]> 于2019年8月29日周四 >> > 下午9:39写道: >> > >> > > > >> > > > bq. what would folks think about going with an hbck2 alpha release? >> > > > I'm fine with an alpha release but since "HBCK2 should continuously >> > > evolve" >> > > > it might be better to always use the latest codebase whenever you >> need >> > to >> > > > use the tool. >> > > > >> > > Ideally yes, but that might not always be possible, as hbase API might >> > > change ahead of hbck2. Operators could then have problems to get a >> > working >> > > version of hbck2. Since hbck2 already has now many equivalent options >> for >> > > the ones from hbck1, I guess a first release would provide a working >> > hbck2 >> > > that already brings a considerable number of fix methods to help with >> > most >> > > common inconsistencies issues seen in hbase 2 so far. And we could >> still >> > > fulfil the "HBCK2 should continuously evolve" principle by building >> from >> > > its master branch, in scenarios where a new fix was needed and >> > implemented >> > > back into hbck2. >> > > >> > > Em qui, 29 de ago de 2019 às 14:09, Peter Somogyi < >> [email protected]> >> > > escreveu: >> > > >> > > > bq. Is it possible to put some hacks into HBCK2 to work around >> > > > the compatibility to fix the current state >> > > > >> > > > There are some classes around Replication which were introduced in >> > 2.1.0+ >> > > > so I don't think we could easily solve it for 2.0. >> > > > For 2.1.1 the missing method is Hbck#scheduleServerCrashProcedure, >> > > probably >> > > > that could be solved with some workarounds or using reflection. >> > > > >> > > > bq. focus more on automation to let us know the next time we >> inevitably >> > > > break it again? ;) >> > > > >> > > > Sure! Based on this I think it should be a strong goal. We can set >> up >> > > > nightly builds for hbase-operator-tools repo that builds against the >> > > latest >> > > > development branches as well as checking compatibility with released >> > > > versions. >> > > > >> > > > bq. what would folks think about going with an hbck2 alpha release? >> > > > I'm fine with an alpha release but since "HBCK2 should continuously >> > > evolve" >> > > > it might be better to always use the latest codebase whenever you >> need >> > to >> > > > use the tool. >> > > > >> > > > On Thu, Aug 29, 2019 at 2:30 PM Wellington Chevreuil < >> > > > [email protected]> wrote: >> > > > >> > > > > I would favour having hbck2 release branches. Temporary >> compatibility >> > > > > breaks at compile time may be inevitable if we always point to the >> > > latest >> > > > > release. That could cause problems for operators trying to build >> > hbck2 >> > > > (we >> > > > > are already seeing this happening with our support team). Another >> > > > argument >> > > > > for starting having hbck2 releases is that we already have quite a >> > few >> > > > > hbase 2 releases, yet, the main tool to fix inconsistencies is not >> > > easily >> > > > > available. And there's been considerable efforts lately to bring >> many >> > > of >> > > > > the fix options from hbck1 into hbck2, so what would folks think >> > about >> > > > > going with an hbck2 alpha release? >> > > > > >> > > > > Em qui, 29 de ago de 2019 às 13:20, Josh Elser <[email protected] >> > >> > > > > escreveu: >> > > > > >> > > > > > I still like one HBCK2 release as the goal. >> > > > > > >> > > > > > Is it possible to put some hacks into HBCK2 to work around the >> > > > > > compatibility to fix the current state and focus more on >> automation >> > > to >> > > > > > let us know the next time we inevitably break it again? ;) >> > > > > > >> > > > > > On 8/29/19 8:12 AM, Peter Somogyi wrote: >> > > > > > > Hi everyone, >> > > > > > > >> > > > > > > This topic came up a couple of times already but now we >> reached a >> > > > point >> > > > > > > when the recent HBCK2 is incompatible with older HBase >> releases, >> > > > > > > specifically 2.0.x, 2.1.0 and 2.1.1. When you build HBCK2 >> against >> > > one >> > > > > of >> > > > > > > the previously mentioned releases you will get compilation >> > errors. >> > > > (mvn >> > > > > > > clean install -DskipTests -Dhbase.version=2.0.6) >> > > > > > > >> > > > > > > Our previous goal was to maintain compatibility with HBCK2 and >> > all >> > > > > HBase >> > > > > > 2 >> > > > > > > releases. Now we missed this target. >> > > > > > > >> > > > > > > One option that we could do is to have different >> > branches/releases >> > > of >> > > > > > HBCK2 >> > > > > > > targeted for specific HBase releases (e.g. branch-2.0 version >> of >> > > > > HBCK2). >> > > > > > > This probably makes the development on HBCK2 a bit harder >> since >> > > we'll >> > > > > > have >> > > > > > > to take care of multiple branches. >> > > > > > > >> > > > > > > Another option I could think of is to always build HBCK2 with >> the >> > > > > latest >> > > > > > > HBase release but have version checks on individual commands >> > where >> > > we >> > > > > > could >> > > > > > > decide if it is supported on that release line. >> > > > > > > >> > > > > > > What are your opinions on this? >> > > > > > > >> > > > > > > Thanks, >> > > > > > > Peter >> > > > > > > >> > > > > > >> > > > > >> > > > >> > > >> > >> >
