[ 
https://issues.apache.org/jira/browse/RANGER-4806?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Monika kachhadiya updated RANGER-4806:
--------------------------------------
    Summary:  with java 17 the audit spool exception is seen if solr is not 
reachable.  (was: In EMR.6.15 environment with java 17 the audit spool 
exception is seen if solr is not reachable.)

>  with java 17 the audit spool exception is seen if solr is not reachable.
> -------------------------------------------------------------------------
>
>                 Key: RANGER-4806
>                 URL: https://issues.apache.org/jira/browse/RANGER-4806
>             Project: Ranger
>          Issue Type: Bug
>          Components: Ranger
>            Reporter: Monika kachhadiya
>            Assignee: Monika kachhadiya
>            Priority: Major
>
> In EMR.6.15 environment with java 17 the audit spool exception is seen if 
> solr is not reachable. 
>  
> {code:java}
>  
>  ERROR AuditFileSpool: Error writing to file. event=AuthzAuditEvent
> com.google.gson.JsonIOException: Failed making field 
> 'java.nio.charset.Charset#name' accessible; either increase its visibility or 
> write a custom TypeAdapter for its declaring type.
> at 
> com.google.gson.internal.reflect.ReflectionHelper.makeAccessible(ReflectionHelper.java:38)
>  ~[gson-2.10.1.jar:?]
> at 
> com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:286)
>  ~[gson-2.10.1.jar:?]
> at 
> com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:130)
>  ~[gson-2.10.1.jar:?]
> at com.google.gson.Gson.getAdapter(Gson.java:556) ~[gson-2.10.1.jar:?]
> at 
> com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:160)
>  ~[gson-2.10.1.jar:?]
> at 
> com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:294)
>  ~[gson-2.10.1.jar:?]
> at 
> com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:130)
>  ~[gson-2.10.1.jar:?]
> at com.google.gson.Gson.getAdapter(Gson.java:556) ~[gson-2.10.1.jar:?]
> at 
> com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:160)
>  ~[gson-2.10.1.jar:?]
> at 
> com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:294)
>  ~[gson-2.10.1.jar:?]
> at 
> com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:130)
>  ~[gson-2.10.1.jar:?]
> at com.google.gson.Gson.getAdapter(Gson.java:556) ~[gson-2.10.1.jar:?]
> at 
> com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:160)
>  ~[gson-2.10.1.jar:?]
> at 
> com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:294)
>  ~[gson-2.10.1.jar:?]
> at 
> com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:130)
>  ~[gson-2.10.1.jar:?]
> at com.google.gson.Gson.getAdapter(Gson.java:556) ~[gson-2.10.1.jar:?]
> at 
> com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:160)
>  ~[gson-2.10.1.jar:?]
> at 
> com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:294)
>  ~[gson-2.10.1.jar:?]
> at 
> com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:130)
>  ~[gson-2.10.1.jar:?]
> at com.google.gson.Gson.getAdapter(Gson.java:556) ~[gson-2.10.1.jar:?]
> at 
> com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:160)
>  ~[gson-2.10.1.jar:?]
> at 
> com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:294)
>  ~[gson-2.10.1.jar:?]
> at 
> com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:130)
>  ~[gson-2.10.1.jar:?]
> at com.google.gson.Gson.getAdapter(Gson.java:556) ~[gson-2.10.1.jar:?]
> at 
> com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.createBoundField(ReflectiveTypeAdapterFactory.java:160)
>  ~[gson-2.10.1.jar:?]
> at 
> com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.getBoundFields(ReflectiveTypeAdapterFactory.java:294)
>  ~[gson-2.10.1.jar:?]
> at 
> com.google.gson.internal.bind.ReflectiveTypeAdapterFactory.create(ReflectiveTypeAdapterFactory.java:130)
>  ~[gson-2.10.1.jar:?]
> at com.google.gson.Gson.getAdapter(Gson.java:556) ~[gson-2.10.1.jar:?]
> at com.google.gson.Gson.toJson(Gson.java:834) ~[gson-2.10.1.jar:?]
> at com.google.gson.Gson.toJson(Gson.java:812) ~[gson-2.10.1.jar:?]
> at com.google.gson.Gson.toJson(Gson.java:759) ~[gson-2.10.1.jar:?]
> at com.google.gson.Gson.toJson(Gson.java:736) ~[gson-2.10.1.jar:?]
> at 
> org.apache.ranger.audit.queue.AuditFileSpool.saveIndexFile(AuditFileSpool.java)
>  ~[ranger-plugins-audit-10.22.0.2.jar:10.22.0.2]
> at 
> org.apache.ranger.audit.queue.AuditFileSpool.getLogFileStream(AuditFileSpool.java)
>  ~[ranger-plugins-audit-10.22.0.2.jar:10.22.0.2]
> at 
> org.apache.ranger.audit.queue.AuditFileSpool.stashLogs(AuditFileSpool.java) 
> [ranger-plugins-audit-10.22.0.2.jar:10.22.0.2]
> at 
> org.apache.ranger.audit.queue.AuditFileSpool.stashLogs(AuditFileSpool.java) 
> [ranger-plugins-audit-10.22.0.2.jar:10.22.0.2]
> at 
> org.apache.ranger.audit.queue.AuditBatchQueue.runLogAudit(AuditBatchQueue.java)
>  [ranger-plugins-audit-10.22.0.2.jar:10.22.0.2]
> at org.apache.ranger.audit.queue.AuditBatchQueue.run(AuditBatchQueue.java) 
> [ranger-plugins-audit-10.22.0.2.jar:10.22.0.2]
> at java.lang.Thread.run(Thread.java:840) [?:?]
> Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make 
> field private final java.lang.String java.nio.charset.Charset.name 
> accessible: module java.base does not "opens java.nio.charset" to unnamed 
> module @48ae9b55
> at 
> java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:354)
>  ~[?:?]
> at 
> java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:297)
>  ~[?:?]
> at java.lang.reflect.Field.checkCanSetAccessible(Field.java:178) ~[?:?]
> at java.lang.reflect.Field.setAccessible(Field.java:172) ~[?:?]
> at 
> com.google.gson.internal.reflect.ReflectionHelper.makeAccessible(ReflectionHelper.java:35)
>  ~[gson-2.10.1.jar:?] {code}
>  
>  
> The root cause seems to be as mentioned here:
>  
> Similar to #1963 and other existing reports. Apparently you are deserializing 
> a JDK class (java.security.KeyFactory) without having specified a custom type 
> adapter for it. Gson will then by default use a reflection based type 
> adapter. You have to write a custom type adapter to solve this issue.
>  
> The reason why this is causing an exception for JDK 17 is because JDK 
> internals are now strongly encapsulated (see JEP 403).
> In general you should avoid using reflection based serialization and 
> deserialization for classes which you do not control because you rely on 
> their implementation details which could change at any point. (Unfortunately 
> Gson currently does not have a setting for easily blocking such undesired 
> reflective access.)
>  



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

Reply via email to