[
https://issues.apache.org/jira/browse/RANGER-4806?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Monika kachhadiya updated RANGER-4806:
--------------------------------------
Description:
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.)
was:
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.)
> 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
>
> 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)