Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

HBASE-24896 'Stuck' in static initialization creating RegionInfo inst… #2274

Closed
wants to merge 1 commit into from

Conversation

saintstack
Copy link
Contributor

…ance

Patch deprecates and nulls RegionInfo#UNDEFINED (added by HBASE-22723)
so as to break possible static initialization deadlock. Adds a local
UNDEFINED to the only place where it is used, in CatalogJanitor doing
fixup.

Cleans up checkstyle complaints in RegionInfo.

@saintstack
Copy link
Contributor Author

Hard to reproduce so no test.

Copy link
Contributor

@bharathv bharathv left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Patch lgtm, just one question on an alternate approach, if thats doable.

*/
// Removed because creation was creating a static deadlock, HBASE-24896
@Deprecated
RegionInfo UNDEFINED = null;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Was wondering if we can move the following into RegionInfo to avoid this deprecation stuff. For that we will have to switch to RegionInfoBuilder c'tor because the following usage is a private c'tor. Curious if you considered that and didn't want to do it for some reason. The c'tor was specifically designed for this usecase, so I may be missing some context here.

public static final RegionInfo FIRST_META_REGIONINFO =
new MutableRegionInfo(1L, TableName.META_TABLE_NAME, RegionInfo.DEFAULT_REPLICA_ID);

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the review @bharathv

Say more. You suggesting move FIRST_META_REGIONINFO define into RegionInfo?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You suggesting move FIRST_META_REGIONINFO define into RegionInfo?

Exactly. I think thats one way to break the loop without this deprecation schedule. I don't know if it has other implications (especially if it breaks the semantics described in HBASE-17980).

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd glanced in passing but there are ~100 refs to old location. Let me try it... make sure we are not just moving this problem. Would be better I agree if it worked and we could avoid this deprecation. @bharathv

@saintstack
Copy link
Contributor Author

Your suggestion is better @bharathv .... more code change but looks safe to me. RegionInfoBuilder, the host for FIRST_META_REGIONINFO is @InterfaceAudience.Private so moving it is 'allowed'. Thought of adding back something like the below to RegionInfoBuilder in case any downstream references...

public static final RegionInfo FIRST_META_REGIONINFO = RegionInfo.FIRST_META_REGIONINFO;

... but that might bring back the statics load deadlock in a new guise.

Copy link
Contributor

@bharathv bharathv left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1 pending QA bot.

but that might bring back the statics load deadlock in a new guise.

Ya. I see what you are saying. Recursive static initializations are tricky.

@Apache-HBase
Copy link

🎊 +1 overall

Vote Subsystem Runtime Comment
+0 🆗 reexec 1m 29s Docker mode activated.
_ Prechecks _
+1 💚 dupname 0m 1s No case conflicting files found.
+1 💚 hbaseanti 0m 0s Patch does not have any anti-patterns.
+1 💚 @author 0m 0s The patch does not contain any @author tags.
_ branch-2.3 Compile Tests _
+0 🆗 mvndep 0m 17s Maven dependency ordering for branch
+1 💚 mvninstall 3m 36s branch-2.3 passed
+1 💚 checkstyle 2m 7s branch-2.3 passed
+1 💚 spotbugs 3m 39s branch-2.3 passed
_ Patch Compile Tests _
+0 🆗 mvndep 0m 15s Maven dependency ordering for patch
+1 💚 mvninstall 3m 10s the patch passed
-0 ⚠️ checkstyle 0m 41s hbase-client: The patch generated 1 new + 318 unchanged - 0 fixed = 319 total (was 318)
-0 ⚠️ checkstyle 1m 16s hbase-server: The patch generated 2 new + 412 unchanged - 16 fixed = 414 total (was 428)
+1 💚 whitespace 0m 0s The patch has no whitespace issues.
+1 💚 hadoopcheck 17m 0s Patch does not cause any errors with Hadoop 2.10.0 or 3.1.2 3.2.1.
+1 💚 spotbugs 5m 22s the patch passed
_ Other Tests _
+1 💚 asflicense 0m 40s The patch does not generate ASF License warnings.
48m 45s
Subsystem Report/Notes
Docker Client=19.03.12 Server=19.03.12 base: https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-2274/1/artifact/yetus-general-check/output/Dockerfile
GITHUB PR #2274
Optional Tests dupname asflicense spotbugs hadoopcheck hbaseanti checkstyle
uname Linux a09bab3a56bf 4.15.0-60-generic #67-Ubuntu SMP Thu Aug 22 16:55:30 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/hbase-personality.sh
git revision branch-2.3 / 6202ee6
checkstyle https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-2274/1/artifact/yetus-general-check/output/diff-checkstyle-hbase-client.txt
checkstyle https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-2274/1/artifact/yetus-general-check/output/diff-checkstyle-hbase-server.txt
Max. process+thread count 94 (vs. ulimit of 12500)
modules C: hbase-client hbase-zookeeper hbase-server U: .
Console output https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-2274/1/console
versions git=2.17.1 maven=(cecedd343002696d0abb50b32b541b8a6ba2883f) spotbugs=3.1.12
Powered by Apache Yetus 0.11.1 https://yetus.apache.org

This message was automatically generated.

Copy link
Contributor

@Apache9 Apache9 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could this really solve the problem?

RegionInfoBuilder and RegionInfo deeply reference each other, even if you remove the FIRST_META_REGIONINFO, there are lots of methods which return value or parameters are RegionInfo, and the MutableRegionInfo is a sub class of RegionInfo, and also a ineer class of RegionInfoBuilder...

FWIW, if we really want to break the tie, since RegionInfo is just an interface, which means it is much 'cleaner', we should remove the dependency of RegionInfoBuilder from RegionInfo. That is, just move the UNDEFINED field to RegionInfoBuilder. I know this breaks the IA.Public rule, so maybe we just leave 2.3.x as is, since this is not easy to reproduce and does not cause any data loss. Let's make it clean on 2.4+.

@Apache9
Copy link
Contributor

Apache9 commented Aug 19, 2020

And in general, I do not think we want users to make use of RegionInfo.UNDEFINED directly? It should be put to RegionInfoBuilder at the first place...

@Apache-HBase
Copy link

🎊 +1 overall

Vote Subsystem Runtime Comment
+0 🆗 reexec 1m 24s Docker mode activated.
-0 ⚠️ yetus 0m 8s Unprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --whitespace-eol-ignore-list --whitespace-tabs-ignore-list --quick-hadoopcheck
_ Prechecks _
_ branch-2.3 Compile Tests _
+0 🆗 mvndep 0m 16s Maven dependency ordering for branch
+1 💚 mvninstall 4m 26s branch-2.3 passed
+1 💚 compile 1m 58s branch-2.3 passed
+1 💚 shadedjars 6m 5s branch has no errors when building our shaded downstream artifacts.
-0 ⚠️ javadoc 0m 31s hbase-client in branch-2.3 failed.
-0 ⚠️ javadoc 0m 41s hbase-server in branch-2.3 failed.
-0 ⚠️ javadoc 0m 16s hbase-zookeeper in branch-2.3 failed.
_ Patch Compile Tests _
+0 🆗 mvndep 0m 21s Maven dependency ordering for patch
+1 💚 mvninstall 4m 2s the patch passed
+1 💚 compile 1m 54s the patch passed
+1 💚 javac 1m 54s the patch passed
+1 💚 shadedjars 6m 11s patch has no errors when building our shaded downstream artifacts.
-0 ⚠️ javadoc 0m 31s hbase-client in the patch failed.
-0 ⚠️ javadoc 0m 17s hbase-zookeeper in the patch failed.
-0 ⚠️ javadoc 0m 49s hbase-server in the patch failed.
_ Other Tests _
+1 💚 unit 2m 39s hbase-client in the patch passed.
+1 💚 unit 0m 49s hbase-zookeeper in the patch passed.
+1 💚 unit 142m 39s hbase-server in the patch passed.
178m 27s
Subsystem Report/Notes
Docker Client=19.03.12 Server=19.03.12 base: https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-2274/1/artifact/yetus-jdk11-hadoop3-check/output/Dockerfile
GITHUB PR #2274
Optional Tests javac javadoc unit shadedjars compile
uname Linux 75e9a9fe9270 4.15.0-60-generic #67-Ubuntu SMP Thu Aug 22 16:55:30 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/hbase-personality.sh
git revision branch-2.3 / 6202ee6
Default Java 2020-01-14
javadoc https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-2274/1/artifact/yetus-jdk11-hadoop3-check/output/branch-javadoc-hbase-client.txt
javadoc https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-2274/1/artifact/yetus-jdk11-hadoop3-check/output/branch-javadoc-hbase-server.txt
javadoc https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-2274/1/artifact/yetus-jdk11-hadoop3-check/output/branch-javadoc-hbase-zookeeper.txt
javadoc https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-2274/1/artifact/yetus-jdk11-hadoop3-check/output/patch-javadoc-hbase-client.txt
javadoc https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-2274/1/artifact/yetus-jdk11-hadoop3-check/output/patch-javadoc-hbase-zookeeper.txt
javadoc https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-2274/1/artifact/yetus-jdk11-hadoop3-check/output/patch-javadoc-hbase-server.txt
Test Results https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-2274/1/testReport/
Max. process+thread count 3908 (vs. ulimit of 12500)
modules C: hbase-client hbase-zookeeper hbase-server U: .
Console output https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-2274/1/console
versions git=2.17.1 maven=(cecedd343002696d0abb50b32b541b8a6ba2883f)
Powered by Apache Yetus 0.11.1 https://yetus.apache.org

This message was automatically generated.

@Apache-HBase
Copy link

🎊 +1 overall

Vote Subsystem Runtime Comment
+0 🆗 reexec 1m 33s Docker mode activated.
-0 ⚠️ yetus 0m 8s Unprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --whitespace-eol-ignore-list --whitespace-tabs-ignore-list --quick-hadoopcheck
_ Prechecks _
_ branch-2.3 Compile Tests _
+0 🆗 mvndep 0m 17s Maven dependency ordering for branch
+1 💚 mvninstall 3m 39s branch-2.3 passed
+1 💚 compile 1m 42s branch-2.3 passed
+1 💚 shadedjars 5m 3s branch has no errors when building our shaded downstream artifacts.
+1 💚 javadoc 1m 17s branch-2.3 passed
_ Patch Compile Tests _
+0 🆗 mvndep 0m 16s Maven dependency ordering for patch
+1 💚 mvninstall 3m 26s the patch passed
+1 💚 compile 1m 40s the patch passed
+1 💚 javac 1m 40s the patch passed
+1 💚 shadedjars 5m 6s patch has no errors when building our shaded downstream artifacts.
+1 💚 javadoc 1m 15s the patch passed
_ Other Tests _
+1 💚 unit 2m 16s hbase-client in the patch passed.
+1 💚 unit 0m 42s hbase-zookeeper in the patch passed.
+1 💚 unit 153m 48s hbase-server in the patch passed.
184m 51s
Subsystem Report/Notes
Docker Client=19.03.12 Server=19.03.12 base: https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-2274/1/artifact/yetus-jdk8-hadoop2-check/output/Dockerfile
GITHUB PR #2274
Optional Tests javac javadoc unit shadedjars compile
uname Linux ce005da07678 4.15.0-60-generic #67-Ubuntu SMP Thu Aug 22 16:55:30 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/hbase-personality.sh
git revision branch-2.3 / 6202ee6
Default Java 1.8.0_232
Test Results https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-2274/1/testReport/
Max. process+thread count 3615 (vs. ulimit of 12500)
modules C: hbase-client hbase-zookeeper hbase-server U: .
Console output https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-2274/1/console
versions git=2.17.1 maven=(cecedd343002696d0abb50b32b541b8a6ba2883f)
Powered by Apache Yetus 0.11.1 https://yetus.apache.org

This message was automatically generated.

@bharathv
Copy link
Contributor

RegionInfoBuilder and RegionInfo deeply reference each other, even if you remove the FIRST_META_REGIONINFO, there are lots of methods which return value or parameters are RegionInfo, and the MutableRegionInfo is a sub class of RegionInfo, and also a ineer class of RegionInfoBuilder...

Right. This patch just reduces the window and chance of init race. If we see the jstacks (and see all the places that got changed in the patch), FIRST_META_REGIONINFO is touched in many init code paths and can potentially cause these races. The whole dependency system is still fragile and as you said, the proper way is to decouple them and I think that would be a much bigger refactor given the static fields are sprinkled all over the place and some of those places are IA.Public.

Copy link
Contributor

@virajjasani virajjasani left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1 after going through init paths correlation with FIRST_META_REGIONINFO, how much it's being referred to in all places and how static init can cause a possible deadlock during init. And I also agree to Duo's concerns of not having sufficient changes for a complete safety from other possibile deadlock ways (due to how much RegionInfo and RegionInfoBuilder are inter-twined), but this patch should be quite a relief till a reasonably good extent.

@virajjasani
Copy link
Contributor

The whole dependency system is still fragile and as you said, the proper way is to decouple them and I think that would be a much bigger refactor given the static fields are sprinkled all over the place and some of those places are IA.Public.

+1

@saintstack
Copy link
Contributor Author

Could this really solve the problem?

Problem is hard to reproduce.

Reasoning, this patch shoud reduce likelihood of our encountering this static loading lockup.

....That is, just move the UNDEFINED field to RegionInfoBuilder. I know this breaks the IA.Public rule, so maybe we just leave 2.3.x as is, since this is not easy to reproduce and does not cause any data loss. Let's make it clean on 2.4+.

Yeah, breaks the IA.Public -- hence this patch which does not break IA.Public.

Following the rules, we can't move UNDEFINED till 4.0 -- not 2.4. A server hung in this manner where all priority handlers are jammed up but heartbeating, etc. keeps 'working' broke the cluster; the operator ended up doing cluster restart... Disruptive.

Would like to land a workaround/fix for 2.3+.

Perhaps you prefer the first patch which just deprecated UNDEFINED setting it to null so as not to reference RegionInfoBuilder?

@Apache9

Thanks

@virajjasani
Copy link
Contributor

virajjasani commented Aug 19, 2020

Wondering if moving MutableRegionInfo impl class to separate outer class could help us by any chance (It's static init that is causing issue, not static subclass. However, even in the example mentioned in the blog post provided by Bharath has static init referring to static sub-class within it's own class and not any extended outer class, maybe some JVM bug not able to deal with this inter-dependencies only when one of the involved subclasses is static subclass, who knows...)

@saintstack
Copy link
Contributor Author

Wondering if moving MutableRegionInfo impl class to separate outer class could help us by any chance (It's static init that is causing issue, not static subclass.

I could make a PR to do that or do that tooo.... Thanks @virajjasani

@saintstack saintstack force-pushed the HBASE-24896 branch 3 times, most recently from 4ce004f to 092a3a8 Compare August 20, 2020 06:11
@saintstack
Copy link
Contributor Author

Thanks for the help here.

The last push implements @virajjasani 's suggestion. It moves the MutableRegionInfo out of RegionInfoBuilder to be standalone. This allows breaking of a static reference to RegionInfoBuilder from RegionInfo. A static Reference from RegionInfo to MutableRegionInfo remains but it seems clean; MRI has no interesting statics initializations for its part.

This approach looks sufficient breaking the possible static load tangle. I could add this to first patch -- deprecating and nulling UNDEFINED -- and/or add the nice @bharathv suggestion. Either would nail it but this looks enough.

@Apache9
Copy link
Contributor

Apache9 commented Aug 20, 2020

Could this really solve the problem?

Problem is hard to reproduce.

Reasoning, this patch shoud reduce likelihood of our encountering this static loading lockup.

....That is, just move the UNDEFINED field to RegionInfoBuilder. I know this breaks the IA.Public rule, so maybe we just leave 2.3.x as is, since this is not easy to reproduce and does not cause any data loss. Let's make it clean on 2.4+.

Yeah, breaks the IA.Public -- hence this patch which does not break IA.Public.

Following the rules, we can't move UNDEFINED till 4.0 -- not 2.4. A server hung in this manner where all priority handlers are jammed up but heartbeating, etc. keeps 'working' broke the cluster; the operator ended up doing cluster restart... Disruptive.

Would like to land a workaround/fix for 2.3+.

Perhaps you prefer the first patch which just deprecated UNDEFINED setting it to null so as not to reference RegionInfoBuilder?

@Apache9

Thanks

Setting it to null does not make real difference with removing it? If users use it, their code will be in trouble...

To me, I think this is a mistake, it should not be placed in RegionInfo, or at least should be marked as IA.Private? We have lots of IA.Private fields and methods in RegionInfo.

So maybe, we deprecated the field on 2.3, and also marked it as IA.Private, to tell users you should not use it directly. This patch will be committed to all branches.

And file another issue, to completely move this field from RegionInfo to RegionInfoBuilder, and this patch will be committed to branches other than 2.3. For me I prefer we commit this to 2.4+, but I'm also fine with committing to 3.x only, or even 4.x, since this problem is really not easy to reproduce.

Thanks.

@Apache-HBase
Copy link

🎊 +1 overall

Vote Subsystem Runtime Comment
+0 🆗 reexec 0m 30s Docker mode activated.
-0 ⚠️ yetus 0m 7s Unprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --whitespace-eol-ignore-list --whitespace-tabs-ignore-list --quick-hadoopcheck
_ Prechecks _
_ branch-2.3 Compile Tests _
+1 💚 mvninstall 3m 54s branch-2.3 passed
+1 💚 compile 0m 27s branch-2.3 passed
+1 💚 shadedjars 5m 31s branch has no errors when building our shaded downstream artifacts.
+1 💚 javadoc 0m 28s branch-2.3 passed
_ Patch Compile Tests _
+1 💚 mvninstall 3m 26s the patch passed
+1 💚 compile 0m 27s the patch passed
+1 💚 javac 0m 27s the patch passed
+1 💚 shadedjars 5m 16s patch has no errors when building our shaded downstream artifacts.
+1 💚 javadoc 0m 25s the patch passed
_ Other Tests _
+1 💚 unit 2m 27s hbase-client in the patch passed.
24m 10s
Subsystem Report/Notes
Docker Client=19.03.12 Server=19.03.12 base: https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-2274/4/artifact/yetus-jdk8-hadoop2-check/output/Dockerfile
GITHUB PR #2274
Optional Tests javac javadoc unit shadedjars compile
uname Linux 10f911c06e17 4.15.0-58-generic #64-Ubuntu SMP Tue Aug 6 11:12:41 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/hbase-personality.sh
git revision branch-2.3 / 4f6e44f
Default Java 1.8.0_232
Test Results https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-2274/4/testReport/
Max. process+thread count 346 (vs. ulimit of 12500)
modules C: hbase-client U: hbase-client
Console output https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-2274/4/console
versions git=2.17.1 maven=(cecedd343002696d0abb50b32b541b8a6ba2883f)
Powered by Apache Yetus 0.11.1 https://yetus.apache.org

This message was automatically generated.

@Apache-HBase
Copy link

🎊 +1 overall

Vote Subsystem Runtime Comment
+0 🆗 reexec 2m 39s Docker mode activated.
_ Prechecks _
+1 💚 dupname 0m 0s No case conflicting files found.
+1 💚 hbaseanti 0m 0s Patch does not have any anti-patterns.
+1 💚 @author 0m 0s The patch does not contain any @author tags.
_ branch-2.3 Compile Tests _
+1 💚 mvninstall 4m 56s branch-2.3 passed
+1 💚 checkstyle 0m 39s branch-2.3 passed
+1 💚 spotbugs 1m 24s branch-2.3 passed
_ Patch Compile Tests _
+1 💚 mvninstall 4m 14s the patch passed
+1 💚 checkstyle 0m 39s hbase-client: The patch generated 0 new + 23 unchanged - 3 fixed = 23 total (was 26)
+1 💚 whitespace 0m 0s The patch has no whitespace issues.
+1 💚 hadoopcheck 25m 5s Patch does not cause any errors with Hadoop 2.10.0 or 3.1.2 3.2.1.
+1 💚 spotbugs 1m 40s the patch passed
_ Other Tests _
+1 💚 asflicense 0m 15s The patch does not generate ASF License warnings.
51m 35s
Subsystem Report/Notes
Docker Client=19.03.12 Server=19.03.12 base: https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-2274/4/artifact/yetus-general-check/output/Dockerfile
GITHUB PR #2274
Optional Tests dupname asflicense spotbugs hadoopcheck hbaseanti checkstyle
uname Linux a9fca2644178 4.15.0-112-generic #113-Ubuntu SMP Thu Jul 9 23:41:39 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/hbase-personality.sh
git revision branch-2.3 / 4f6e44f
Max. process+thread count 84 (vs. ulimit of 12500)
modules C: hbase-client U: hbase-client
Console output https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-2274/4/console
versions git=2.17.1 maven=(cecedd343002696d0abb50b32b541b8a6ba2883f) spotbugs=3.1.12
Powered by Apache Yetus 0.11.1 https://yetus.apache.org

This message was automatically generated.

@Apache-HBase
Copy link

🎊 +1 overall

Vote Subsystem Runtime Comment
+0 🆗 reexec 1m 12s Docker mode activated.
-0 ⚠️ yetus 0m 7s Unprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --whitespace-eol-ignore-list --whitespace-tabs-ignore-list --quick-hadoopcheck
_ Prechecks _
_ branch-2.3 Compile Tests _
+1 💚 mvninstall 4m 46s branch-2.3 passed
+1 💚 compile 0m 31s branch-2.3 passed
+1 💚 shadedjars 6m 27s branch has no errors when building our shaded downstream artifacts.
-0 ⚠️ javadoc 0m 29s hbase-client in branch-2.3 failed.
_ Patch Compile Tests _
+1 💚 mvninstall 4m 23s the patch passed
+1 💚 compile 0m 32s the patch passed
+1 💚 javac 0m 32s the patch passed
+1 💚 shadedjars 6m 27s patch has no errors when building our shaded downstream artifacts.
-0 ⚠️ javadoc 0m 28s hbase-client in the patch failed.
_ Other Tests _
+1 💚 unit 2m 36s hbase-client in the patch passed.
29m 8s
Subsystem Report/Notes
Docker Client=19.03.12 Server=19.03.12 base: https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-2274/4/artifact/yetus-jdk11-hadoop3-check/output/Dockerfile
GITHUB PR #2274
Optional Tests javac javadoc unit shadedjars compile
uname Linux 5e2498ab52e7 4.15.0-112-generic #113-Ubuntu SMP Thu Jul 9 23:41:39 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/hbase-personality.sh
git revision branch-2.3 / 4f6e44f
Default Java 2020-01-14
javadoc https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-2274/4/artifact/yetus-jdk11-hadoop3-check/output/branch-javadoc-hbase-client.txt
javadoc https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-2274/4/artifact/yetus-jdk11-hadoop3-check/output/patch-javadoc-hbase-client.txt
Test Results https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-2274/4/testReport/
Max. process+thread count 210 (vs. ulimit of 12500)
modules C: hbase-client U: hbase-client
Console output https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-2274/4/console
versions git=2.17.1 maven=(cecedd343002696d0abb50b32b541b8a6ba2883f)
Powered by Apache Yetus 0.11.1 https://yetus.apache.org

This message was automatically generated.

@saintstack
Copy link
Contributor Author

To me, I think this is a mistake, it should not be placed in RegionInfo, or at least should be marked as IA.Private? We have lots of IA.Private fields and methods in RegionInfo.

And I think the opposite. RegionInfo seems natural home for static defines such as UNDEFINED and first Region of meta.

Thanks for the other suggestions. Let me add IA.Private and deprecation. Let me add that here to this last patch.

Shout if you -1 on this last approach. Otherwise, please remove changes requested. Thanks.

…ance

Untangle RegionInfo, RegionInfoBuilder, and MutableRegionInfo static
initializations some. Move MutableRegionInfo from inner-class of
RegionInfoBuilder to be (package private) standalone. Undo static
initializing references from RI to RIB.
@saintstack
Copy link
Contributor Author

Added IA.Private and deprecation on UNDEFINED in RI per @Apache9 suggestion.

@Apache-HBase
Copy link

🎊 +1 overall

Vote Subsystem Runtime Comment
+0 🆗 reexec 0m 34s Docker mode activated.
-0 ⚠️ yetus 0m 7s Unprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --whitespace-eol-ignore-list --whitespace-tabs-ignore-list --quick-hadoopcheck
_ Prechecks _
_ branch-2.3 Compile Tests _
+1 💚 mvninstall 3m 47s branch-2.3 passed
+1 💚 compile 0m 27s branch-2.3 passed
+1 💚 shadedjars 5m 13s branch has no errors when building our shaded downstream artifacts.
+1 💚 javadoc 0m 27s branch-2.3 passed
_ Patch Compile Tests _
+1 💚 mvninstall 3m 17s the patch passed
+1 💚 compile 0m 28s the patch passed
+1 💚 javac 0m 27s the patch passed
+1 💚 shadedjars 5m 3s patch has no errors when building our shaded downstream artifacts.
+1 💚 javadoc 0m 24s the patch passed
_ Other Tests _
+1 💚 unit 2m 13s hbase-client in the patch passed.
23m 11s
Subsystem Report/Notes
Docker Client=19.03.12 Server=19.03.12 base: https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-2274/5/artifact/yetus-jdk8-hadoop2-check/output/Dockerfile
GITHUB PR #2274
Optional Tests javac javadoc unit shadedjars compile
uname Linux 4888231358c0 4.15.0-58-generic #64-Ubuntu SMP Tue Aug 6 11:12:41 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/hbase-personality.sh
git revision branch-2.3 / 4f6e44f
Default Java 1.8.0_232
Test Results https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-2274/5/testReport/
Max. process+thread count 342 (vs. ulimit of 12500)
modules C: hbase-client U: hbase-client
Console output https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-2274/5/console
versions git=2.17.1 maven=(cecedd343002696d0abb50b32b541b8a6ba2883f)
Powered by Apache Yetus 0.11.1 https://yetus.apache.org

This message was automatically generated.

@Apache-HBase
Copy link

🎊 +1 overall

Vote Subsystem Runtime Comment
+0 🆗 reexec 1m 30s Docker mode activated.
-0 ⚠️ yetus 0m 5s Unprocessed flag(s): --brief-report-file --spotbugs-strict-precheck --whitespace-eol-ignore-list --whitespace-tabs-ignore-list --quick-hadoopcheck
_ Prechecks _
_ branch-2.3 Compile Tests _
+1 💚 mvninstall 5m 44s branch-2.3 passed
+1 💚 compile 0m 40s branch-2.3 passed
+1 💚 shadedjars 7m 36s branch has no errors when building our shaded downstream artifacts.
-0 ⚠️ javadoc 0m 33s hbase-client in branch-2.3 failed.
_ Patch Compile Tests _
+1 💚 mvninstall 5m 4s the patch passed
+1 💚 compile 0m 39s the patch passed
+1 💚 javac 0m 39s the patch passed
+1 💚 shadedjars 7m 31s patch has no errors when building our shaded downstream artifacts.
-0 ⚠️ javadoc 0m 32s hbase-client in the patch failed.
_ Other Tests _
+1 💚 unit 3m 19s hbase-client in the patch passed.
34m 29s
Subsystem Report/Notes
Docker Client=19.03.12 Server=19.03.12 base: https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-2274/5/artifact/yetus-jdk11-hadoop3-check/output/Dockerfile
GITHUB PR #2274
Optional Tests javac javadoc unit shadedjars compile
uname Linux fd44bd30b838 4.15.0-112-generic #113-Ubuntu SMP Thu Jul 9 23:41:39 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/hbase-personality.sh
git revision branch-2.3 / 4f6e44f
Default Java 2020-01-14
javadoc https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-2274/5/artifact/yetus-jdk11-hadoop3-check/output/branch-javadoc-hbase-client.txt
javadoc https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-2274/5/artifact/yetus-jdk11-hadoop3-check/output/patch-javadoc-hbase-client.txt
Test Results https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-2274/5/testReport/
Max. process+thread count 206 (vs. ulimit of 12500)
modules C: hbase-client U: hbase-client
Console output https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-2274/5/console
versions git=2.17.1 maven=(cecedd343002696d0abb50b32b541b8a6ba2883f)
Powered by Apache Yetus 0.11.1 https://yetus.apache.org

This message was automatically generated.

@bharathv
Copy link
Contributor

This approach looks sufficient breaking the possible static load tangle. I could add this to first patch -- deprecating and nulling UNDEFINED

Wondering if this is sufficient. Going by the jstacks, FIRST_META_REGIONINFO access triggers a MutableRegionInfo load and that triggers the parent interface RegionInfo load [1]. And any UNDEFINED access in RegionInfo triggers the exact opposite order. I was under the impression that we should break this tie. While un-nesting MutableRegionInfo is a welcome change, curious if that solves the problem. Thanks.

[1] https://docs.oracle.com/javase/specs/jls/se8/html/jls-12.html#jls-12.4.2

@Apache-HBase
Copy link

🎊 +1 overall

Vote Subsystem Runtime Comment
+0 🆗 reexec 0m 38s Docker mode activated.
_ Prechecks _
+1 💚 dupname 0m 0s No case conflicting files found.
+1 💚 hbaseanti 0m 0s Patch does not have any anti-patterns.
+1 💚 @author 0m 1s The patch does not contain any @author tags.
_ branch-2.3 Compile Tests _
+1 💚 mvninstall 4m 45s branch-2.3 passed
+1 💚 checkstyle 0m 45s branch-2.3 passed
+1 💚 spotbugs 1m 31s branch-2.3 passed
_ Patch Compile Tests _
+1 💚 mvninstall 4m 16s the patch passed
+1 💚 checkstyle 0m 41s hbase-client: The patch generated 0 new + 23 unchanged - 3 fixed = 23 total (was 26)
+1 💚 whitespace 0m 0s The patch has no whitespace issues.
+1 💚 hadoopcheck 20m 16s Patch does not cause any errors with Hadoop 2.10.0 or 3.1.2 3.2.1.
+1 💚 spotbugs 1m 13s the patch passed
_ Other Tests _
+1 💚 asflicense 0m 13s The patch does not generate ASF License warnings.
41m 37s
Subsystem Report/Notes
Docker Client=19.03.12 Server=19.03.12 base: https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-2274/5/artifact/yetus-general-check/output/Dockerfile
GITHUB PR #2274
Optional Tests dupname asflicense spotbugs hadoopcheck hbaseanti checkstyle
uname Linux d9b5fac11a41 4.15.0-60-generic #67-Ubuntu SMP Thu Aug 22 16:55:30 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
Build tool maven
Personality dev-support/hbase-personality.sh
git revision branch-2.3 / 4f6e44f
Max. process+thread count 94 (vs. ulimit of 12500)
modules C: hbase-client U: hbase-client
Console output https://ci-hadoop.apache.org/job/HBase/job/HBase-PreCommit-GitHub-PR/job/PR-2274/5/console
versions git=2.17.1 maven=(cecedd343002696d0abb50b32b541b8a6ba2883f) spotbugs=3.1.12
Powered by Apache Yetus 0.11.1 https://yetus.apache.org

This message was automatically generated.

@saintstack
Copy link
Contributor Author

Thats for the helpful pointer @bharathv and your input.

Given the above discussion and my not wanting to waste valuable review resource, I think I need to reproduce this issue so can say for sure whether an approach works; I speculate too much overusing the 'hard-to-reproduce' license.

Let me add the IA.Private and the deprecation per @Apache9 suggests in a separate issue for now at least while I figure how to repro. the lockup.

Thank you for reviews @bharathv , @virajjasani , and @Apache9

@saintstack
Copy link
Contributor Author

Closing this PR. Will open a new one against this JIRA when I have a better story.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants