[
https://issues.apache.org/jira/browse/HBASE-30338?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18107499#comment-18107499
]
Hudson commented on HBASE-30338:
--------------------------------
Results for branch branch-3
[build #607 on
builds.a.o|https://ci-hbase.apache.org/job/HBase%20Nightly/job/branch-3/607/]:
(x) *{color:red}-1 overall{color}*
----
details (if available):
(/) {color:green}+1 general checks{color}
-- For more information [see general
report|https://ci-hbase.apache.org/job/HBase%20Nightly/job/branch-3/607/General_20Nightly_20Build_20Report/]
(x) {color:red}-1 jdk17 hadoop3 checks{color}
-- For more information [see jdk17
report|https://ci-hbase.apache.org/job/HBase%20Nightly/job/branch-3/607/JDK17_20Nightly_20Build_20Report_20_28Hadoop3_29/]
> Shaded jar content check is a no-op
> -----------------------------------
>
> Key: HBASE-30338
> URL: https://issues.apache.org/jira/browse/HBASE-30338
> Project: HBase
> Issue Type: Bug
> Components: build, shading
> Affects Versions: 3.0.0
> Reporter: Junegunn Choi
> Assignee: Junegunn Choi
> Priority: Minor
> Labels: pull-request-available
> Fix For: 4.0.0-alpha-1, 3.1.0, 3.0.1
>
>
> h2. Problem
> {{ensure-jars-have-correct-contents.sh}} has enforced nothing since
> HBASE-29226. That change needed to allow the unrelocated servlet API that
> jetty 12 on ee8 requires, but wrote the allowance as a plain assignment
> wrapped in a group with an empty alternative:
> {code:java}
> # Required by jetty 12 on ee8
> allowed_expr="(|^javax/$)"
> {code}
> Two defects in one line.
> - The assignment discards every rule accumulated above it.
> - The empty alternative makes grep abort with {{{}empty (sub)expression{}}},
> and the {{|| true}} on that grep swallows the failure, so {{bad_contents}}
> comes back empty and the script reports the artifact as correct.
> h2. Fix
> {code:java}
> -allowed_expr="(|^javax/$)"
> +allowed_expr+="|^javax/$|^javax/servlet/"
> {code}
> Restoring the operator alone is not enough. The empty alternative survives,
> grep still aborts, and the script still reports everything as correct.
> Reviving the check then exposes 139 {{javax/servlet}} entries in
> {{{}hbase-shaded-mapreduce{}}}, which jetty 12 on ee8 requires unrelocated.
> {{^javax/$}} matches only the bare directory entry, so the original line
> would not have covered them even with the right operator. The servlet package
> is allowed explicitly.
> h2. Test
> h3. Before fix
> {code:java}
> SCRIPT=hbase-shaded/hbase-shaded-check-invariants/src/test/resources/ensure-jars-have-correct-contents.sh
> bash $SCRIPT
> hbase-shaded/hbase-shaded-client/target/hbase-shaded-client-4.0.0-alpha-1-SNAPSHOT.jar
> # grep: empty (sub)expression
> # [INFO] Artifact looks correct:
> 'hbase-shaded-client-4.0.0-alpha-1-SNAPSHOT.jar'
> bash $SCRIPT --allow-hadoop
> hbase-shaded/hbase-shaded-client/target/hbase-shaded-client-4.0.0-alpha-1-SNAPSHOT.jar
> # grep: empty (sub)expression
> # [INFO] Artifact looks correct:
> 'hbase-shaded-client-4.0.0-alpha-1-SNAPSHOT.jar'
> bash $SCRIPT
> hbase-shaded/hbase-shaded-mapreduce/target/hbase-shaded-mapreduce-4.0.0-alpha-1-SNAPSHOT.jar
> # grep: empty (sub)expression
> # [INFO] Artifact looks correct:
> 'hbase-shaded-mapreduce-4.0.0-alpha-1-SNAPSHOT.jar'
> bash $SCRIPT --allow-hadoop
> hbase-shaded/hbase-shaded-mapreduce/target/hbase-shaded-mapreduce-4.0.0-alpha-1-SNAPSHOT.jar
> # grep: empty (sub)expression
> # [INFO] Artifact looks correct:
> 'hbase-shaded-mapreduce-4.0.0-alpha-1-SNAPSHOT.jar'
> {code}
> h3. After fix
> {code:java}
> SCRIPT=hbase-shaded/hbase-shaded-check-invariants/src/test/resources/ensure-jars-have-correct-contents.sh
> bash $SCRIPT
> hbase-shaded/hbase-shaded-client/target/hbase-shaded-client-4.0.0-alpha-1-SNAPSHOT.jar
> # [ERROR] Found artifact with unexpected contents:
> 'hbase-shaded/hbase-shaded-client/target/hbase-shaded-client-4.0.0-alpha-1-SNAPSHOT.jar'
> # Please check the following and either correct the build or update
> # the allowed list with reasoning.
> #
> # org/apache/hadoop/security/
> # org/apache/hadoop/security/authentication/
> # org/apache/hadoop/security/authentication/server/
> #
> org/apache/hadoop/security/authentication/server/MultiSchemeAuthenticationHandler.class
> #
> org/apache/hadoop/security/authentication/server/AuthenticationFilter.class
> #
> org/apache/hadoop/security/authentication/server/KerberosAuthenticationHandler.class
> # ....
> bash $SCRIPT --allow-hadoop
> hbase-shaded/hbase-shaded-client/target/hbase-shaded-client-4.0.0-alpha-1-SNAPSHOT.jar
> # [INFO] Artifact looks correct:
> 'hbase-shaded-client-4.0.0-alpha-1-SNAPSHOT.jar'
> bash $SCRIPT
> hbase-shaded/hbase-shaded-mapreduce/target/hbase-shaded-mapreduce-4.0.0-alpha-1-SNAPSHOT.jar
> # [INFO] Artifact looks correct:
> 'hbase-shaded-mapreduce-4.0.0-alpha-1-SNAPSHOT.jar'
> bash $SCRIPT --allow-hadoop
> hbase-shaded/hbase-shaded-mapreduce/target/hbase-shaded-mapreduce-4.0.0-alpha-1-SNAPSHOT.jar
> # [INFO] Artifact looks correct:
> 'hbase-shaded-mapreduce-4.0.0-alpha-1-SNAPSHOT.jar'
> {code}
> h2. Notes
> Whether {{hbase-shaded-mapreduce}} should ship the servlet API unrelocated at
> all is a separate question. This issue restores the check and records the
> content that is already shipping as allowed.
> Affects master and branch-3. branch-2 never carried HBASE-29226.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)