Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
1.15.0
Description
The following error conditions need better handling which includes handling of all errors consistently and cause the startup of a Locator or Server to fail if it's unable to honor the setting of -Dgeode.enableGlobalSerialFilter=true for any reason. Currently, if -Dgeode.enableGlobalSerialFilter=true is specified but Geode is unable to create a global serial filter, then it will will log a warning and continue running. A user may easily miss that log statement and believe that the JVM is running with a properly configured serialization filter.
1) The user is trying to secure the JVM very thoroughly and accidentally specifies both -Djdk.serialFilter and -Dgeode.enableGlobalSerialFilter.
2) The user runs some non-Geode code in the same JVM that invokes ObjectInputFilter.Config.setFilter(...) directly.
3) The user is using a version of Java 8 prior to 8u121 (the release that first added sun.misc.ObjectInputFilter) and specifies -Dgeode.enableGlobalSerialFilter=true. Also, the same behavior occurs if they do NOT specify enabling that property.
4) LocatorLauncher or ServerLauncher is started in a JVM that has already created at least one ObjectInputStream which will cause ObjectInputFilter.Config.setFilter(...) to fail.
5) LocatorLauncher or ServerLauncher is started in a Java 8 JVM that is not based on OpenJDK (ie sun.misc.ObjectInputFilter does not exist).
6) LocatorLauncher or ServerLauncher is started in an unforeseen environment that causes invocation of ObjectInputFilter.Config.setFilter(...) via Java Reflection to throw IllegalAccessException.