Skip to content

Commit

Permalink
HBASE-25473 [create-release] checkcompatibility.py failing with "KeyE…
Browse files Browse the repository at this point in the history
…rror: 'binary'"

Exclude hbase-shaded-testing-util*.jar from checkcompatibility; this
jar can not be unzipped on a case-insensitive filesystem. Added
some means of debug into the checkcompatibility to help when
cryptic failures.
  • Loading branch information
saintstack committed Jan 8, 2021
1 parent 5c233e9 commit 0b22ae0
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 1 deletion.
16 changes: 15 additions & 1 deletion dev-support/checkcompatibility.py
Original file line number Diff line number Diff line change
Expand Up @@ -229,7 +229,7 @@ def compare_results(tool_results, known_issues, compare_warnings):
observed_count=tool_results[check][issue_type])
for check, known_issue_counts in known_issues.items()
for issue_type, known_count in known_issue_counts.items()
if tool_results[check][issue_type] > known_count]
if compare_tool_results_count(tool_results, check, issue_type, known_count)]

if not compare_warnings:
unexpected_issues = [tup for tup in unexpected_issues
Expand All @@ -241,6 +241,20 @@ def compare_results(tool_results, known_issues, compare_warnings):

return bool(unexpected_issues)

def compare_tool_results_count(tool_results, check, issue_type, known_count):
""" Check problem counts are no more than the known count.
(This function exists just so can add in logging; previous was inlined
one-liner but this made it hard debugging)
"""
# logging.info("known_count=%s, check key=%s, tool_results=%s, issue_type=%s",
# str(known_count), str(check), str(tool_results), str(issue_type))
try:
return tool_results[check][issue_type] > known_count
except KeyError as ke:
logging.info("KeyError %s", str(ke))
return False



def process_java_acc_output(output):
""" Process the output string to find the problems and warnings in both the
Expand Down
10 changes: 10 additions & 0 deletions dev-support/create-release/release-util.sh
Original file line number Diff line number Diff line change
Expand Up @@ -469,8 +469,18 @@ function generate_api_report {
local timing_token
timing_token="$(start_step)"
# Generate api report.
# Filter out some jar types. Filters are tricky. Python regex on
# file basename. Exclude the saved-aside original jars... they are
# not included in resulting artifact. Also, do not include the
# hbase-shaded-testing-util.* jars. This jar is unzip'able on mac
# os x as is because has it a META_INF/LICENSE file and then a
# META_INF/license directory for the included jar's licenses;
# it fails to unjar on mac os x which this tool does making its checks
# (Its exclusion should be fine; it is just an aggregate of other jars).
"${project}"/dev-support/checkcompatibility.py --annotation \
org.apache.yetus.audience.InterfaceAudience.Public \
-e "original-hbase.*.jar" \
-e "hbase-shaded-testing-util.*.jar" \
"$previous_tag" "$release_tag"
previous_version="$(echo "${previous_tag}" | sed -e 's/rel\///')"
cp "${project}/target/compat-check/report.html" "./api_compare_${previous_version}_to_${release_tag}.html"
Expand Down

0 comments on commit 0b22ae0

Please sign in to comment.