While using Terracotta DSO i'm getting the following error :
com.tc.exception.TCRuntimeException: java.lang.IllegalArgumentException: Cannot reflectively create enum objects
at com.tc.object.ClientObjectManagerImpl.createNewPeer(ClientObjectManagerImpl.java:660)
at com.tc.object.ClientObjectManagerImpl.createNewPeer(ClientObjectManagerImpl.java:645)
at com.tc.object.TCObjectImpl.createPeerObjectIfNecessary(TCObjectImpl.java:148)
at com.tc.object.TCObjectImpl.hydrate(TCObjectImpl.java:89)
at com.tc.object.ClientObjectManagerImpl.lookup(ClientObjectManagerImpl.java:321)
at com.tc.object.ClientObjectManagerImpl.lookupObject(ClientObjectManagerImpl.java:251)
at com.tc.object.TCObjectPhysical.resolveReference(TCObjectPhysical.java:101)
at com.geodesiconline.xmpp.Resource.__tc_getresourceState(Resource.java)
at com.geodesiconline.xmpp.Resource.__tc_wrapped_getResourceState(Resource.java:82)
at com.geodesiconline.xmpp.Resource.getResourceState(Resource.java)
at com.geodesiconline.xmpp.handler.AbstractHandler.getResources(AbstractHandler.java:238)
at com.geodesiconline.xmpp.handler.AsynchronousStanzaHandler.writeToAvailableResources(AsynchronousStanzaHandler.java:520)
at com.geodesiconline.xmpp.handler.Subscribe.processInboundStanza(Subscribe.java:163)
at com.geodesiconline.xmpp.handler.AsynchronousStanzaHandler.processStanza(AsynchronousStanzaHandler.java:217)
at com.geodesiconline.xmpp.handler.StanzaHandler.processElement(StanzaHandler.java:124)
at com.geodesiconline.xmpp.handler.AbstractHandler.handleStanza(AbstractHandler.java:134)
at com.geodesiconline.xmpp.XMPPController.routeStanzas(XMPPController.java:1969)
at com.geodesiconline.xmpp.XMPPController.process(XMPPController.java:900)
at com.geodesiconline.xmpp.XMPPController.processData(XMPPController.java:717)
at com.geodesiconline.xmpp.XMPPController.messageReceived(XMPPController.java:295)
at com.geodesiconline.xmpp.XMPPController.onMessage(XMPPController.java:1061)
at com.geodesiconline.mjms.MJmsMessageConsumer.onMessage(MJmsMessageConsumer.java:40)
at com.geodesiconline.mjms.MJmsTopicSubscriber.onMessage(MJmsTopicSubscriber.java:63)
at com.geodesiconline.mjms.MJmsTopic.notifySubscribers(MJmsTopic.java:283)
at com.geodesiconline.mjms.MJmsTopic$Notifier.run(MJmsTopic.java:79)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:650)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:675)
at java.lang.Thread.run(Thread.java:595)
Caused by: java.lang.IllegalArgumentException: Cannot reflectively create enum objects
at java.lang.reflect.Constructor.newInstance(Constructor.java:492)
at com.tc.object.TCObjectFactoryImpl.getNewPeerObject(TCObjectFactoryImpl.java:81)
at com.tc.object.TCObjectFactoryImpl.getNewPeerObject(TCObjectFactoryImpl.java:72)
at com.tc.object.TCObjectFactoryImpl.getNewPeerObject(TCObjectFactoryImpl.java:65)
at com.tc.object.ClientObjectManagerImpl.createNewPeer(ClientObjectManagerImpl.java:655)
... 27 more
We are using the java.lang.Enum class, which we've pre-instrumentated.
We are getting the error in situation when one terracotta client inserts the shared data and other client is trying to access it.
It seems from the exception that Enum is not supported in the current version of DSO. I have forwarded the request to our Engineering team and they are looking into it.
In case Enum is currently not supported, it should be fairly easy to add support for Enum objects in next release of DSO.