Clustering tangosol and PEP pubsub problem

I finally got Clustering to work; but when I tried using pep with a strophe client, I get a status 500 server error. when I check the log I get the following error in the server:

2011.12.19 09:28:12 org.jivesoftware.openfire.handler.IQHandler - Internal server error

(Wrapped) java.io.NotSerializableException: org.jivesoftware.openfire.commands.AdHocCommandManager at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1164)

at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1518)

at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1483)

at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1400)

at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1158)

at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:330)

at com.tangosol.util.ExternalizableHelper.writeSerializable(ExternalizableHelper.j ava:2120)

at com.tangosol.util.ExternalizableHelper.internalWriteObject(ExternalizableHelper .java:2501)

at com.tangosol.util.ExternalizableHelper.toBinary(ExternalizableHelper.java:169)

at com.tangosol.util.ExternalizableHelper$2.convert(ExternalizableHelper.java:3877 )

at com.tangosol.util.ConverterCollections$ConverterObservableMap.put(ConverterColl ections.java:1796)

at com.tangosol.coherence.component.util.daemon.queueProcessor.service.Distributed Cache$ViewMap.put(DistributedCache.CDB:1)

at com.tangosol.coherence.component.util.SafeNamedCache.put(SafeNamedCache.CDB:1)

at com.tangosol.net.cache.CachingMap.put(CachingMap.java:929)

at com.tangosol.net.cache.CachingMap.put(CachingMap.java:888)

at com.tangosol.net.cache.CachingMap.put(CachingMap.java:800)

at com.jivesoftware.util.cache.ClusteredCache.put(ClusteredCache.java:143)

at org.jivesoftware.util.cache.CacheWrapper.put(CacheWrapper.java:129)

at org.jivesoftware.openfire.pep.PEPServiceManager.loadPEPServiceFromDB(PEPService Manager.java:148)

at org.jivesoftware.openfire.pep.PEPServiceManager.getPEPService(PEPServiceManager .java:78)

at org.jivesoftware.openfire.pep.IQPEPHandler.handleIQ(IQPEPHandler.java:337)

at org.jivesoftware.openfire.handler.IQHandler.process(IQHandler.java:65)

at org.jivesoftware.openfire.IQRouter.handle(IQRouter.java:372)

at org.jivesoftware.openfire.IQRouter.route(IQRouter.java:121)

at org.jivesoftware.openfire.spi.PacketRouterImpl.route(PacketRouterImpl.java:76)

at org.jivesoftware.openfire.net.StanzaHandler.processIQ(StanzaHandler.java:337)

at org.jivesoftware.openfire.net.ClientStanzaHandler.processIQ(ClientStanzaHandler .java:93)

at org.jivesoftware.openfire.net.StanzaHandler.process(StanzaHandler.java:302)

at org.jivesoftware.openfire.net.StanzaHandler.process(StanzaHandler.java:194)

at org.jivesoftware.openfire.nio.ConnectionHandler.messageReceived(ConnectionHandl er.java:169)

at org.apache.mina.common.support.AbstractIoFilterChain$TailFilter.messageReceived (AbstractIoFilterChain.java:570)

at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(Ab stractIoFilterChain.java:299)

at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilt erChain.java:53)

at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceive d(AbstractIoFilterChain.java:648)

at org.apache.mina.common.IoFilterAdapter.messageReceived(IoFilterAdapter.java:80)

at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(Ab stractIoFilterChain.java:299)

at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilt erChain.java:53)

at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceive d(AbstractIoFilterChain.java:648)

at org.apache.mina.filter.codec.support.SimpleProtocolDecoderOutput.flush(SimplePr otocolDecoderOutput.java:58)

at org.apache.mina.filter.codec.ProtocolCodecFilter.messageReceived(ProtocolCodecF ilter.java:185)

at org.apache.mina.common.support.AbstractIoFilterChain.callNextMessageReceived(Ab stractIoFilterChain.java:299)

at org.apache.mina.common.support.AbstractIoFilterChain.access$1100(AbstractIoFilt erChain.java:53)

at org.apache.mina.common.support.AbstractIoFilterChain$EntryImpl$1.messageReceive d(AbstractIoFilterChain.java:648)

at org.apache.mina.filter.executor.ExecutorFilter.processEvent(ExecutorFilter.java :239)

at org.apache.mina.filter.executor.ExecutorFilter$ProcessEventsRunnable.run(Execut orFilter.java:283)

at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java: 886)

at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)

at org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)

at java.lang.Thread.run(Thread.java:662)

I noticed that this is an error with tangosol. Moreover if I disable clustering my pep publishing works again. Has anyone ever encountered the same problem?

Please advice.

Best Regards,

Stevenson

Pubsub (and PEP) doesn’t actually support clustering yet. It simply isn’t going to work since pubsub turns itself off when in a cluster (actually it will work but for the senior cluster member only).

How do I explicitly specify that a node is a senior cluster node? I used well known addresses to specify the members of the cluster.

Also I have a setup where I only have one node in my cluster, therefore it should be the senior node. so how come pep still causes the same error?

Don’t know, but if it is the only member, then I would think it would have to be the senior member. It is possible that PEP doesn’t work with clustering turned on at all, but I don’t really know as I haven’t tried it.

Hi Rcollier,

thanks for the quick responses.

I found this issue:

http://issues.igniterealtime.org/browse/OF-205?page=com.atlassian.jira.plugin.sy stem.issuetabpanels:all-tabpanel#issue-tabs

So this confirms that this is an open issue with openfire.

I’m having issues when I publish a message to openfire.

But since openfire is able to send messages, I thought of just embedding a payload to my message stanza and send it to all the members of a user’s roster. Is this a reasonable solution?

Generic clients would not be able to understand it but my own clients can. Is there any known issues if I do this?

Best Regards,

Stevenson Lee