Jinwoo Hwang created GEODE-10493:
------------------------------------

             Summary: japicmp API compatibility task failing after being 
restored during Gradle 7.6.6 migration
                 Key: GEODE-10493
                 URL: https://issues.apache.org/jira/browse/GEODE-10493
             Project: Geode
          Issue Type: Improvement
            Reporter: Jinwoo Hwang


h3. Current Problem

The japicmp API compatibility check is now failing in CI with binary 
compatibility errors:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 *  
 *  
 *  
 * 
 
This failure began appearing after build system fixes were applied during the 
Gradle 7.6.6 migration (GEODE-10490).
h3. Investigation Findings
h4. japicmp Was Previously Broken

Analysis reveals that japicmp had been silently non-functional due to class 
loading issues in composite builds:
 * Original configuration used compile-time imports that failed to load custom 
rules
 * Task would appear to pass but wasn't actually enforcing API compatibility
 * API violations accumulated undetected across multiple releases

h4. Stale Baseline Comparison

The failure compares against an outdated baseline:
 * Current comparison: 1.16.0-build.0 vs 1.14.4 (missing 1.15.x series)
 * Missing versions: 1.15.0, 1.15.1, 1.15.2 from 
[geode-old-versions|vscode-file://vscode-app/Applications/Visual%20Studio%20Code.app/Contents/Resources/app/out/vs/code/electron-browser/workbench/workbench.html]
 directory
 * Result: Excessive accumulated changes spanning multiple release cycles

h4. What the Fix in GEODE-10490 Actually Did

The Gradle migration included a fix to japicmp class loading:
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 *  
 *  
 *  
 * 
 
This restored japicmp to working order, which then exposed years of untracked 
API changes.
h3. Proposed Solution
h4. 1. Update Baseline Versions
 * Add missing directories: 
[1.15.0|vscode-file://vscode-app/Applications/Visual%20Studio%20Code.app/Contents/Resources/app/out/vs/code/electron-browser/workbench/workbench.html],
 {{{}1.15.1/{}}}, {{1.15.2/}}
 * Change comparison from 1.14.4 → 1.16.0 to 1.15.2 → 1.16.0
 * Focus review on recent, relevant changes only

h4. 2. Update Exception Rules
 * Clean up 
[japicmp_exceptions.json|vscode-file://vscode-app/Applications/Visual%20Studio%20Code.app/Contents/Resources/app/out/vs/code/electron-browser/workbench/workbench.html]
 for correct 1.15.2 baseline
 * Remove bulk exceptions that were masking the baseline problem
 * Document legitimate API changes between 1.15.2 and 1.16.0

h4. 3. Improve CI Diagnostics
 * Add japicmp report artifact upload for failed builds
 * Enable developers to download and examine detailed compatibility reports
 * Reduce debugging time for future API compatibility issues

h3. Expected Benefits

*Immediate:*
 * Unblock CI builds by addressing accumulated technical debt
 * Provide actionable reports showing specific API compatibility violations
 * Restore proper API compatibility enforcement going forward

*Long-term:*
 * Prevent future API compatibility violations from going undetected
 * Improve developer productivity with better diagnostic information
 * Establish foundation for proper API evolution governance

h3. Risk Assessment

*Low Risk:*
 * Changes only affect build tooling and baseline comparison
 * No impact on runtime behavior or public APIs
 * Fixes restore intended functionality rather than changing behavior

*High Value:*
 * Addresses significant technical debt in API compatibility checking
 * Prevents future accumulation of undetected violations
 * Improves development workflow and CI reliability

h3. Acceptance Criteria
 *  japicmp task passes with updated 1.15.2 baseline
 *  Exception rules properly handle legitimate API changes
 *  CI uploads diagnostic reports on japicmp failures
 *  Build process documentation updated to include baseline maintenance
 *  
 *  



--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to