2017-08-15 1 views
0

私はM13を使用しています(できるだけM14に移動します)。この例外を見て:すぐが付け加えKryoException:クラスkotlin.KotlinNullPointerExceptionは注釈もホワイトリストにもないので、シリアライズでは使用できません

com.esotericsoftware.kryo.KryoException: Class kotlin.KotlinNullPointerException is not annotated or on the whitelist, so cannot be used in serialization 

:クライアントRPC.Iから自分の流れを起動しようとすると

E 15:11:10 [rpc-observation-sender-0] messaging.ObservableContext.sendMessage - Failed to send message, kicking client. Message was Observation(id=ObservableId(toLong=8088750694041100169), content=[[email protected] OnError null]) 

は、カスタムデータ型が@CordaSerializable属性を持っていることをcheckeddています。

私はRPCシリアル化に関連してM13にバグがあることを示す別の質問に対する答えを見ました。これは上記の例外を説明できますか?

本当にこれに固執しているので、どんな助けでも大歓迎です。

のフルスタックトレース:

E 15:11:10 [rpc-observation-sender-0] messaging.ObservableContext.sendMessage - Failed to send message, kicking client. Message was Observation(id=ObservableId(toLong=8088750694041100169), content=[[email protected] OnError null]) 
com.esotericsoftware.kryo.KryoException: Class kotlin.KotlinNullPointerException is not annotated or on the whitelist, so cannot be used in serialization 
Serialization trace: 
throwable (rx.Notification) 
at net.corda.core.serialization.CordaClassResolver.checkClass(CordaClassResolver.kt:65) ~[main/:?] 
at net.corda.core.serialization.CordaClassResolver.getRegistration(CordaClassResolver.kt:35) ~[main/:?] 
at com.esotericsoftware.kryo.Kryo.getRegistration(Kryo.java:488) ~[kryo-4.0.0.jar:?] 
at net.corda.nodeapi.RPCKryo.getRegistration(RPCStructures.kt:74) ~[main/:?] 
at com.esotericsoftware.kryo.util.DefaultClassResolver.writeClass(DefaultClassResolver.java:97) ~[kryo-4.0.0.jar:?] 
at com.esotericsoftware.kryo.Kryo.writeClass(Kryo.java:540) ~[kryo-4.0.0.jar:?] 
at com.esotericsoftware.kryo.serializers.ObjectField.write(ObjectField.java:76) ~[kryo-4.0.0.jar:?] 
at com.esotericsoftware.kryo.serializers.CompatibleFieldSerializer.write(CompatibleFieldSerializer.java:66) ~[kryo-4.0.0.jar:?] 
at com.esotericsoftware.kryo.Kryo.writeClassAndObject(Kryo.java:651) ~[kryo-4.0.0.jar:?] 
at net.corda.core.serialization.KryoKt.serialize(Kryo.kt:169) ~[main/:?] 
at net.corda.core.serialization.KryoKt$serialize$1.execute(Kryo.kt:151) ~[main/:?] 
at net.corda.core.serialization.KryoKt$serialize$1.execute(Kryo.kt) ~[main/:?] 
at net.corda.core.serialization.KryoPoolWithContext.run(Kryo.kt:652) ~[main/:?] 
at net.corda.core.serialization.KryoKt.serialize(Kryo.kt:151) ~[main/:?] 
at net.corda.core.serialization.KryoKt.serialize$default(Kryo.kt:150) ~[main/:?] 
at net.corda.nodeapi.RPCApi$ServerToClient$Observation.writeToClientMessage(RPCApi.kt:170) ~[main/:?] 
at net.corda.node.services.messaging.ObservableContext.sendMessage(RPCServer.kt:411) [main/:?] 
at net.corda.node.services.messaging.RpcServerObservableSerializer$write$observableWithSubscription$1$onNext$1.run(RPCServer.kt:446) [main/:?] 
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) [?:1.8.0_131] 
at java.util.concurrent.FutureTask.run(FutureTask.java:266) [?:1.8.0_131] 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_131] 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_131] 
at java.lang.Thread.run(Thread.java:748) [?:1.8.0_131] 
E 15:54:42 [Thread-4 (ActiveMQ-client-global-threads)] internal.RPCClientProxyHandler.artemisMessageHandler - RPC reply arrived to unknown RPC ID RpcRequestId(toLong=8669965257690653719), this indicates an internal RPC error. 
E 15:54:42 [Thread-4 (ActiveMQ-client-global-threads)] internal.RPCClientProxyHandler.artemisMessageHandler - RPC reply arrived to unknown RPC ID RpcRequestId(toLong=6979460553466678543), this indicates an internal RPC error. 
E 15:54:42 [Thread-4 (ActiveMQ-client-global-threads)] internal.RPCClientProxyHandler.artemisMessageHandler - RPC reply arrived to unknown RPC ID RpcRequestId(toLong=2006512959418997107), this indicates an internal RPC error. 
+0

残りのスタックトレースを投稿できますか? – joel

+0

完了しました - これを見ていただきありがとうございます。 – Toadfather

+0

ありがとうございます。 2つ目のスタックトレースがあります.1つはフロー内で実際に間違ってNullPointerExceptionを引き起こし、もう1つはKryoがNullPointerExceptionをシリアル化しようとするときです。フローのアクティビティに関連するエラーメッセージの2番目のセットがあるかどうかを確認できますか? – joel

答えて

1

これはKotlinNullPointerExceptionによって引き起こされるが、フローにスローされます。 KotlinNullPointerExceptionはRPCクライアントのシリアル化のホワイトリストにないため、根本的な原因ではなく、このエラーがスローされます。

KotlinNullPointerExceptionは、RPCクライアントのホワイトリスト上にあるなぜ我々が調査している

が、ノードのホワイトリストにないhttps://github.com/corda/corda/issues/1268

+0

あなたのattnありがとう – Toadfather

関連する問題