[ https://issues.apache.org/jira/browse/GEODE-9980?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17510937#comment-17510937 ]
ASF subversion and git services commented on GEODE-9980: -------------------------------------------------------- Commit 5d9e4b5b54b84c2de28b670fe6feb0b0c44443f7 in geode's branch refs/heads/support/1.14 from Kirk Lund [ https://gitbox.apache.org/repos/asf?p=geode.git;h=5d9e4b5 ] GEODE-9980: Improve error handling of serial filters (#7355) 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. (cherry picked from commit ce57e9fd2b8b644cadc469209e12e4fbd281e0d9) (cherry picked from commit 6ecdce0d9ef9040f3bbb90c8ea4ff5eb99d712fc) > 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)