The JBossMarshaller can be used before its start() method is called. I've noticed that with replicated cache without transactions, an OOB thread can start demarshalling SingleRpcCommand in CacheRpcCommandExternalizer but when it tries to create a new unmarshaller (through AbstractJBossMarshaller.startObjectInput(...) and the marshallerTL.initialValue() the baseCfg configuration is not fully initialized yet and this results in creating marshallers in PerThreadInstanceHolder with objectTable == null. Then, objects are deserialized to null (which results in NullPointerExceptions elsewhere).
Galder Zamarreño <galder.zamarreno> made a comment on jira ISPN-2553 Radim, where do you see this? In JDG (which runs on top of AS7), or in standalone Infinispan usage (i.e. library)?
I experience this in library mode test. https://jenkins.mw.lab.eng.bos.redhat.com/hudson/job/jdg-radargun-resilience-repl-no-tx/4/console-edg-perf10/ But this has not TRACE logs enabled and to identify the issue I had to put more than the standard ISPN's TRACE logs. Luckily, the issue is reproducable in this test and I have been able to do reproduce it locally as well (although not always).
Galder Zamarreño <galder.zamarreno> updated the status of jira ISPN-2553 to Coding In Progress
Galder Zamarreño <galder.zamarreno> made a comment on jira ISPN-2553 Radim, I have a patch that I think solves the issue: https://github.com/galderz/infinispan/tree/t_2553 Can you give it a shot and see if it fixes the issue?
I will try it, thanks.