[ 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)