Changes in 12cR1.4.3.11

The following changes were made in Oracle NoSQL Database 12cR1.4.3.11.

Bug and Performance Fixes

  1. Updates to improve security related to JLine and the shell command line history. [#25940]

  2. Fixed an RMI registry filter failure that could occur when running the Oracle NoSQL Database in a secure configuration using Java SE Development Kit 8, Update 121 (JDK 8u121). The failure was caused by the new RMI better constraint checking feature. The fix adds the patterns oracle.kv.**;java.lang.Enum to the RMI registry filter sun.rmi.registry.registryFilter automatically if they are not present when starting a Storage Node Agent. [#25923]

    The failures would produce stack traces like the following:

    Jan 25, 2017 11:15:45 AM java.io.ObjectInputStream filterCheck
    INFO: ObjectInputFilter REJECTED: class java.lang.Enum, array length: -1, nRefs: 14, depth: 4, bytes: 768, ex: n/a
    KVLite: exception in start: java.rmi.RemoteException: Can't rebind snaService at localhost:5000 csf: <SSLClientSocketFactory name=$|sna|main id=1690670528 connectMs=0 readMs=0 kvStoreName=null clientUse=USER> ssf: <SSLServerSocketFactory backlog=1024 port range=0,0 ssl control = oracle.kv.impl.security.ssl.SSLControl@5836ad63>; nested exception is:
    	java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
    	java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
    	java.io.InvalidClassException: filter status: REJECTED
    	at oracle.kv.impl.util.registry.RegistryUtils.rebind(RegistryUtils.java:853)
    	at oracle.kv.impl.sna.StorageNodeAgent.bindUnregisteredSNA(StorageNodeAgent.java:974)
    	at oracle.kv.impl.sna.StorageNodeAgent.startupUnregistered(StorageNodeAgent.java:793)
    	at oracle.kv.impl.sna.StorageNodeAgent.start(StorageNodeAgent.java:624)
    	at oracle.kv.impl.sna.StorageNodeAgentImpl.start(StorageNodeAgentImpl.java:133)
    	at oracle.kv.util.kvlite.KVLite.startSNA(KVLite.java:298)
    	at oracle.kv.util.kvlite.KVLite.start(KVLite.java:524)
    	at oracle.kv.util.kvlite.KVLite.start(KVLite.java:513)
    	at oracle.kv.util.kvlite.KVLite.main(KVLite.java:647)
    	at oracle.kv.impl.util.KVStoreMain$1.run(KVStoreMain.java:190)
    	at oracle.kv.impl.util.KVStoreMain.main(KVStoreMain.java:477)
    Caused by: java.rmi.ServerException: RemoteException occurred in server thread; nested exception is:
    	java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is:
    	java.io.InvalidClassException: filter status: REJECTED
    	at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:460)
    	at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:294)
    	at sun.rmi.transport.Transport$1.run(Transport.java:200)
    	at sun.rmi.transport.Transport$1.run(Transport.java:197)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
    	at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568)
    	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)
    	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    	at java.lang.Thread.run(Thread.java:745)
    	at sun.rmi.transport.StreamRemoteCall.exceptionReceivedFromServer(StreamRemoteCall.java:276)
    	at sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:253)
    	at sun.rmi.server.UnicastRef.invoke(UnicastRef.java:379)
    	at sun.rmi.registry.RegistryImpl_Stub.rebind(Unknown Source)
    	at oracle.kv.impl.util.registry.RegistryUtils$ExceptionWrappingRegistry.rebind(RegistryUtils.java:1339)
    	at oracle.kv.impl.util.registry.RegistryUtils.exportAndRebind(RegistryUtils.java:1184)
    	at oracle.kv.impl.util.registry.RegistryUtils.rebind(RegistryUtils.java:849)
    	... 10 more
    Caused by: java.rmi.UnmarshalException: error unmarshalling arguments; nested exception is: 
    	java.io.InvalidClassException: filter status: REJECTED
    	at sun.rmi.registry.RegistryImpl_Skel.dispatch(Unknown Source)
    	at sun.rmi.server.UnicastServerRef.oldDispatch(UnicastServerRef.java:450)
    	at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:294)
    	at sun.rmi.transport.Transport$1.run(Transport.java:200)
    	at sun.rmi.transport.Transport$1.run(Transport.java:197)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
    	at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:568)
    	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:826)
    	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:683)
    	at java.security.AccessController.doPrivileged(Native Method)
    	at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:682)
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    	at java.lang.Thread.run(Thread.java:745)
    Caused by: java.io.InvalidClassException: filter status: REJECTED
    	at java.io.ObjectInputStream.filterCheck(ObjectInputStream.java:1244)
    	at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1832)
    	at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1713)
    	at java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:1829)
    	at java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1713)
    	at java.io.ObjectInputStream.readEnum(ObjectInputStream.java:1938)
    	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1532)
    	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2231)
    	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2155)
    	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2013)
    	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1535)
    	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:422)
    	at sun.rmi.transport.tcp.TCPEndpoint.read(TCPEndpoint.java:555)
    	at sun.rmi.transport.LiveRef.read(LiveRef.java:292)
    	at sun.rmi.server.UnicastRef2.readExternal(UnicastRef2.java:78)
    	at java.rmi.server.RemoteObject.readObject(RemoteObject.java:455)
    	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    	at java.lang.reflect.Method.invoke(Method.java:498)
    	at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1058)
    	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2122)
    	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2013)
    	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1535)
    	at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2231)
    	at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2155)
    	at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2013)
    	at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1535)
    	at java.io.ObjectInputStream.readObject(ObjectInputStream.java:422)
    	... 15 more