[ https://issues.apache.org/jira/browse/GEODE-9980?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17492776#comment-17492776 ]
ASF subversion and git services commented on GEODE-9980: -------------------------------------------------------- Commit ce57e9fd2b8b644cadc469209e12e4fbd281e0d9 in geode's branch refs/heads/WIP-GEODE-9892 from Kirk Lund [ https://gitbox.apache.org/repos/asf?p=geode.git;h=ce57e9f ] GEODE-9980: Improve error handling of serial filters (#7299) Improves the error handling of serial filter configuration and filtering. The API throws a runtime exception wrapping any thrown exceptions. When geode.enableGlobalSerialFilter is FALSE: * Startup succeeds without throwing any exceptions even if an older version of Java throws "java.lang.ClassNotFoundException sun.misc.ObjectInputFilter". When geode.enableGlobalSerialFilter is TRUE: * Startup fails by throwing an exception when configuration of serial filter fails for any reason. Renames ObjectInputFilter to avoid confusion with the Java interface of the same name. Fixes a bug found in ReflectiveFacadeGlobalSerialFilterTest which resulted in configuring a non-mocked process-wide serial filter that polluted the JVM for all later tests. Fixes other minor details in LocatorLauncher, InternalDataSerializer and various related tests. > Startup of Locator or Server should fail fast if > geode.enableGlobalSerialFilter is enabled but fails configuration > ------------------------------------------------------------------------------------------------------------------ > > Key: GEODE-9980 > URL: https://issues.apache.org/jira/browse/GEODE-9980 > Project: Geode > Issue Type: Bug > Components: serialization > Affects Versions: 1.15.0 > Reporter: Kirk Lund > Assignee: Kirk Lund > Priority: Major > Labels: GeodeOperationAPI, blocks-1.15.0, pull-request-available > > 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}}. -- This message was sent by Atlassian Jira (v8.20.1#820001)