[
https://issues.apache.org/jira/browse/RANGER-4806?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Madhan Neethiraj updated RANGER-4806:
-------------------------------------
Fix Version/s: 2.5.0
> 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
> Fix For: 3.0.0, 2.5.0
>
>
> 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|https://github.com/google/gson/issues/1979#issuecomment-927943566]:
>
> Similar to [#1963|https://github.com/google/gson/issues/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 or move to jackson
> fasterxml.
>
> The reason why this is causing an exception for JDK 17 is because JDK
> internals are now strongly encapsulated (see [JEP
> 403|https://openjdk.org/jeps/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)