[ https://issues.apache.org/jira/browse/CASSANDRA-20335?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17927235#comment-17927235 ]
Stefan Miklosovic commented on CASSANDRA-20335: ----------------------------------------------- [~frankgh] I think the best course of action would be to just throw RTE and be done with it. SnapshotException was not doing anything useful anyway. > Non-java types are leaking from snapshots > ----------------------------------------- > > Key: CASSANDRA-20335 > URL: https://issues.apache.org/jira/browse/CASSANDRA-20335 > Project: Apache Cassandra > Issue Type: Bug > Components: Local/Snapshots > Reporter: Francisco Guerrero > Assignee: Stefan Miklosovic > Priority: Normal > Fix For: 5.x > > Time Spent: 10m > Remaining Estimate: 0h > > https://issues.apache.org/jira/browse/CASSANDRA-18111 brought a major uplift > of the snapshot code. A new exception type was introduced for signaling > issues related to snapshots (\{{SnapshotException}}). This type however is > leaking through JMX. Cassandra only exposes java types through the RMI > interface. I encountered the issue in Sidecar when trying to create an > already existing snapshot. Here’s the stack trace: > {code:java} > java.lang.RuntimeException: java.rmi.UnmarshalException: Error unmarshaling > return; nested exception is: > java.lang.ClassNotFoundException: > org.apache.cassandra.service.snapshot.SnapshotException (no security manager: > RMI class loader disabled) > at > org.apache.cassandra.sidecar.adapters.base.CassandraStorageOperations.takeSnapshotInternal(CassandraStorageOperations.java:149) > at > org.apache.cassandra.sidecar.adapters.cassandra41.Cassandra41StorageOperations.takeSnapshot(Cassandra41StorageOperations.java:69) > at > org.apache.cassandra.sidecar.routes.snapshots.CreateSnapshotHandler.lambda$handleInternal$0(CreateSnapshotHandler.java:96) > at > org.apache.cassandra.sidecar.concurrent.TaskExecutorPool.lambda$runBlocking$4(TaskExecutorPool.java:197) > at > io.vertx.core.impl.ContextImpl.lambda$executeBlocking$4(ContextImpl.java:192) > at > io.vertx.core.impl.ContextInternal.dispatch(ContextInternal.java:270) > at io.vertx.core.impl.ContextImpl$1.execute(ContextImpl.java:221) > at io.vertx.core.impl.WorkerTask.run(WorkerTask.java:56) > at > java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) > at > java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) > at > io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) > at java.base/java.lang.Thread.run(Thread.java:829) > Caused by: java.rmi.UnmarshalException: Error unmarshaling return; nested > exception is: > java.lang.ClassNotFoundException: > org.apache.cassandra.service.snapshot.SnapshotException (no security manager: > RMI class loader disabled) > at > java.rmi/sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:273) > at java.rmi/sun.rmi.server.UnicastRef.invoke(UnicastRef.java:164) > at jdk.remoteref/jdk.jmx.remote.internal.rmi.PRef.invoke(Unknown > Source) > at > java.management.rmi/javax.management.remote.rmi.RMIConnectionImpl_Stub.invoke(Unknown > Source) > at > java.management.rmi/javax.management.remote.rmi.RMIConnector$RemoteMBeanServerConnection.invoke(RMIConnector.java:1021) > at > java.management/javax.management.MBeanServerInvocationHandler.invoke(MBeanServerInvocationHandler.java:298) > at com.sun.proxy.$Proxy29.takeSnapshot(Unknown Source) > at > org.apache.cassandra.sidecar.adapters.base.CassandraStorageOperations.takeSnapshotInternal(CassandraStorageOperations.java:129) > ... 11 common frames omitted > Caused by: java.lang.ClassNotFoundException: > org.apache.cassandra.service.snapshot.SnapshotException (no security manager: > RMI class loader disabled) > at > java.rmi/sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:396) > at > java.rmi/sun.rmi.server.LoaderHandler.loadClass(LoaderHandler.java:186) > at > java.rmi/java.rmi.server.RMIClassLoader$2.loadClass(RMIClassLoader.java:637) > at > java.rmi/java.rmi.server.RMIClassLoader.loadClass(RMIClassLoader.java:264) > at > java.rmi/sun.rmi.server.MarshalInputStream.resolveClass(MarshalInputStream.java:213) > at > java.base/java.io.ObjectInputStream.readNonProxyDesc(ObjectInputStream.java:2003) > at > java.base/java.io.ObjectInputStream.readClassDesc(ObjectInputStream.java:1870) > at > java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2201) > at > java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1687) > at > java.base/java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2496) > at > java.base/java.io.ObjectInputStream.defaultReadObject(ObjectInputStream.java:625) > at java.base/java.lang.Throwable.readObject(Throwable.java:896) > at > java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) > at > java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) > at java.base/java.lang.reflect.Method.invoke(Method.java:566) > at > java.base/java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:1046) > at > java.base/java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2357) > at > java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2228) > at > java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1687) > at > java.base/java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:2496) > at > java.base/java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:2390) > at > java.base/java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:2228) > at > java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1687) > at > java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:489) > at > java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:447) > at > java.rmi/sun.rmi.transport.StreamRemoteCall.executeCall(StreamRemoteCall.java:270) > ... 18 common frames omitted {code} -- This message was sent by Atlassian Jira (v8.20.10#820010) --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@cassandra.apache.org For additional commands, e-mail: commits-h...@cassandra.apache.org