Ramachandran Krishnan created RANGER-5656:
---------------------------------------------

             Summary: TagSync Atlas REST sync fails with AbstractMethodError 
after RANGER-4076 Jersey 2 migration
                 Key: RANGER-5656
                 URL: https://issues.apache.org/jira/browse/RANGER-5656
             Project: Ranger
          Issue Type: Task
          Components: Ranger
    Affects Versions: 3.0.0
            Reporter: Ramachandran Krishnan
            Assignee: Ramachandran Krishnan


h2. Summary

When {{{}TAG_SOURCE_ATLASREST_ENABLED=true{}}}, TagSync fails to sync Atlas 
classifications into Ranger because {{AtlasRESTTagSource}} still uses 
{{AtlasClientV2}} (Jersey 1.x via {{{}atlas-client-v2{}}}) while TagSync's 
Ranger REST sink uses Jersey 2.x (introduced by RANGER-4076). Both JAX-RS 
stacks load on the same JVM, causing {{AbstractMethodError}} in 
{{UriBuilderImpl}} and the Atlas REST sync thread to exit on the first poll.
h2. Environment
 * Component: {{tagsync}} — {{AtlasRESTTagSource}}
 * Config: {{TAG_SOURCE_ATLASREST_ENABLED=true}}
 * Affected since: *RANGER-4076* (May 2026) — Jersey 1.x → Glassfish Jersey 2.x 
migration
 * Prior behavior: Worked before RANGER-4076 when TagSync also used Jersey 1.x 
({{{}com.sun.jersey{}}})

h2. Steps to reproduce
 # Enable Atlas REST tag source in {{{}ranger-tagsync-install.properties{}}}:
 ** {{TAG_SOURCE_ATLASREST_ENABLED=true}}
 ** {{TAG_SOURCE_ATLASREST_ENDPOINT=http://<atlas-host>:21000}}
 # Start TagSync
 # Classify a Hive column as PII (or any classification) in Atlas
 # Wait for TagSync poll interval (~60s)
 # Check Ranger Admin → Tag → resource mappings

h2. Expected result
 * TagSync polls Atlas REST without error
 * Classifications appear in Ranger as tag resource mappings ({{{}createdBy: 
rangertagsync{}}})
 * Tag-based Hive policies (deny/mask) can enforce on synced tags

h2. Actual result
 * TagSync process may remain up, but Atlas REST sync thread dies
 * Log shows {{AbstractMethodError}} in {{javax.ws.rs.core.UriBuilder}} / 
{{UriBuilderImpl}}
 * No automatic Atlas → Ranger tag push; Ranger tag mappings missing unless 
manually imported via REST/file

h2. Root cause
||Before RANGER-4076||After RANGER-4076 (broken)||
|{{AtlasClientV2}} (Jersey 1) + TagSync sink (Jersey 1)|{{AtlasClientV2}} 
(Jersey 1) + {{TagAdminRESTSink}} (Jersey 2)|

Classloader isolation was attempted; it caused {{LinkageError}} / 
{{ClassCastException}} on {{{}RuntimeDelegate{}}}.
h2. Proposed fix
 # Add {{AtlasRESTHttpClient}} — minimal Atlas REST client using 
{{HttpURLConnection}} + Atlas {{AtlasType}} JSON (no Jersey, no 
{{{}AtlasClientV2{}}})
 ** {{POST api/atlas/v2/search/basic}} — classified entity search
 ** {{GET api/atlas/v2/types/typedefs/}} — typedef load
 # Update {{AtlasRESTTagSource}} to use {{AtlasRESTHttpClient}} instead of 
{{AtlasClientV2}}
 # Remove {{atlas-client-v1}} / {{atlas-client-v2}} from {{tagsync/pom.xml}}
 # Remove {{atlas-client-*}} from {{distro/src/main/assembly/tagsync.xml}} 
runtime {{lib/}}

*Not changed:* {{{}TagSynchronizer{}}}, {{{}TagAdminRESTSink{}}}, Atlas Kafka 
tag source, Hive plugin.

Related issues
 * *RANGER-4076* — Jersey 1 → 2 migration



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

Reply via email to