fast-serialization icon indicating copy to clipboard operation
fast-serialization copied to clipboard

When the FSTObjectInput.readObject fails, any chance of more info?

Open RuedigerMoeller opened this issue 8 years ago • 3 comments

[transferred from kontraktor #58] I think this is the culprit, names have been changed to protect the innocent.

{  
"styp":"array",
"seq":[  
  2,
  {  
     "typ":"call",
     "obj":{  
        "isContinue":0,
        "queue":0,
        "futureKey":1,
        "receiverKey":1,
        "cb":null,
        "args":null,
        "method":"getProducts",
        "serializedArgs":"{\"styp\":\"array\",\"seq\":[1,{\"typ\":\"uk.co.example.Application\",\"obj\":{\"numberOfDogs\":12,\"extraInformation\":{\"typ\":\"list\",\"obj\":[0]},\"advance\":{\"typ\":\"java.math.BigDecimal\",\"obj\":[\"1000\"]},\"grossHousehold\":null,\"startDate\":null,\"questions\":{\"typ\":\"uk.co.example.Questions\",\"obj\":{\"numberOfThings\":null,\"numberOfMissed\":null,\"numberOfMissedOther\":null,\"everHadBeef\":null,\"everMadeHouse\":null,\"missedPaymentsOnThingy\":null}},\"applicants\":{\"typ\":\"list\",\"obj\":[0]},\"propertyDetails\":null,\"authorises\":\"Y\",\"applicationName\":null,\"reference\":null,\"campaign\":null,\"ddBankAccount\":null,\"employmentStatus\":null,\"filterResults\":\"N\",\"homeOwner\":null,\"purpose\":null,\"sourcing\":null,\"stage\":null,\"userId\":\"stdclient\"}}]}"
     }
  },
  2
]
}

RuedigerMoeller avatar Nov 29 '17 01:11 RuedigerMoeller

The original question went missing in the transfer to this repo. Here it is

Version 4.18 of Kontraktor. When I get a failure with the de/serialization, probably due to my code, it is very hard to find the cause. E.g. here is a typical trace:

EXC:
java.lang.RuntimeException: Class org.nustaq.kontraktor.Actor$$Lambda$26/1188770185 does not implement Serializable or externalizable
at org.nustaq.serialization.FSTClazzInfo.<init>(FSTClazzInfo.java:142)
at org.nustaq.serialization.FSTClazzInfoRegistry.getCLInfo(FSTClazzInfoRegistry.java:129)
at org.nustaq.serialization.FSTObjectOutput.getFstClazzInfo(FSTObjectOutput.java:534)
at org.nustaq.serialization.FSTObjectOutput.writeObjectWithContext(FSTObjectOutput.java:416)
at org.nustaq.serialization.FSTObjectOutput.writeArray(FSTObjectOutput.java:800)
at org.nustaq.serialization.FSTObjectOutput.writeObjectWithContext(FSTObjectOutput.java:427)
at org.nustaq.serialization.FSTObjectOutput.writeObjectInternal(FSTObjectOutput.java:327)
at org.nustaq.serialization.FSTObjectOutput.writeObject(FSTObjectOutput.java:285)
at org.nustaq.serialization.FSTObjectOutput.writeObject(FSTObjectOutput.java:204)
at org.nustaq.serialization.FSTConfiguration.asByteArray(FSTConfiguration.java:1174)
at org.nustaq.kontraktor.remoting.encoding.RemoteCallEntry.pack(RemoteCallEntry.java:133)
at org.nustaq.kontraktor.remoting.base.ConnectionRegistry.pollAndSend2Remote(ConnectionRegistry.java:581)
at org.nustaq.kontraktor.remoting.base.RemoteRefPolling.onePoll(RemoteRefPolling.java:132)
at org.nustaq.kontraktor.remoting.base.RemoteRefPolling.run(RemoteRefPolling.java:91)
at sun.reflect.GeneratedMethodAccessor3.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.nustaq.kontraktor.impl.DispatcherThread.invoke(DispatcherThread.java:363)
at org.nustaq.kontraktor.impl.DispatcherThread.pollQs(DispatcherThread.java:291)
at org.nustaq.kontraktor.impl.DispatcherThread.pollQs(DispatcherThread.java:264)
at org.nustaq.kontraktor.impl.DispatcherThread.run(DispatcherThread.java:164)

I assume you have the name of the field and the outer JSON element and everything in between. Any chance of dumping those in the trace output?

davidwynter avatar Nov 29 '17 09:11 davidwynter

should be possible :)

RuedigerMoeller avatar Dec 11 '17 19:12 RuedigerMoeller

A bit more info on this issue. I am now using Kontraktor 4.22. I looked thru all the classes that make up a fairly complex payload for the remote actor call and all implement Serializable, so am at a loss as to which class it is complaining about. I also note that it is saying the Actor$$Lambda$26/1188770185 is not Serializable? Is this really a fst problem, or is it a Kontraktor issue?

davidwynter avatar Jan 11 '18 17:01 davidwynter