Cannot publish items with pubsub in Openfire

Hi all,

I have an annoying bug with pubsub in Openfire, and I’m sure I didn’t have this bug with earlier versions of Openfire.

The problem is that only one item out of two is published, and the other one fails.

what I produce with my client :

<iq id=“oa0mz-20” to=“pubsub.m12826” type=“set”>

<pubsub xmlns=“http://jabber.org/protocol/pubsub”>

<publish node=“test_node_08”>

<item id=“e33229a2-9507-435c-b852-13a3acd66b2c”>

<text>messa_1</text>

</item>

</publish>

</pubsub>

</iq>

what I get from server :

<iq id=“oa0mz-20” to=“diff@m12826/Smack” from=“pubsub.m12826” type=“result”/>

<iq id=“oa0mz-20” to=“diff@m12826/Smack” from=“pubsub.m12826” type=“error”>

<error code=“500” type=“WAIT”>

<internal-server-error xmlns=“urn:ietf:params:xml:ns:xmpp-stanzas”/>

</error>

</iq>

It only occurs for one item out of 2.

When I restart openfire, it works without problem, but only for a few dozens of items, after that, it alterns between correct publishing and failing.

Note: here is an extract from ‘error.log’ :

2007.12.07 16:16:38 [org.jivesoftware.openfire.pubsub.PubSubModule.process(PubSubModule.java:191)

] Internal server error

java.lang.NullPointerException

at java.util.concurrent.LinkedBlockingQueue.remove(LinkedBlockingQueue.java:480)

at org.jivesoftware.openfire.pubsub.PubSubEngine.queueItemToRemove(PubSubEngine.ja va:1846)

at org.jivesoftware.openfire.pubsub.PubSubModule.queueItemToRemove(PubSubModule.ja va:284)

at org.jivesoftware.openfire.pubsub.LeafNode.publishItems(LeafNode.java:260)

at org.jivesoftware.openfire.pubsub.PubSubEngine.publishItemsToNode(PubSubEngine.j ava:371)

at org.jivesoftware.openfire.pubsub.PubSubEngine.process(PubSubEngine.java:70)

at org.jivesoftware.openfire.pubsub.PubSubModule.process(PubSubModule.java:179)

at org.jivesoftware.openfire.spi.RoutingTableImpl.routePacket(RoutingTableImpl.jav a:234)

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

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

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

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

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

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

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

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

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.filter.codec.support.SimpleProtocolDecoderOutput.flush(SimplePr otocolDecoderOutput.java:58)

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

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: 665)

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

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

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

2007.12.07 16:16:47 [org.jivesoftware.openfire.nio.ConnectionHandler.exceptionCaught(ConnectionHand ler.java:109)

]

java.lang.NoClassDefFoundError: com.sun.security.sasl.util.PolicyUtils

at org.jivesoftware.openfire.sasl.SaslServerFactoryImpl.createSaslServer(SaslServe rFactoryImpl.java:49)

at javax.security.sasl.Sasl.createSaslServer(Sasl.java:486)

at org.jivesoftware.openfire.net.SASLAuthentication.handle(SASLAuthentication.java :211)

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

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

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.filter.codec.support.SimpleProtocolDecoderOutput.flush(SimplePr otocolDecoderOutput.java:58)

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

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: 665)

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

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

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

2007.12.07 16:17:02 [org.jivesoftware.openfire.pubsub.PublishedItemTask.run(PublishedItemTask.java: 78)

] Internal server error

java.lang.NullPointerException

at java.util.concurrent.LinkedBlockingQueue.extract(LinkedBlockingQueue.java:157)

at java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:440)

at org.jivesoftware.openfire.pubsub.PublishedItemTask.run(PublishedItemTask.java:6 9)

at java.util.TimerThread.mainLoop(Timer.java:527)

at java.util.TimerThread.run(Timer.java:477)

2007.12.07 16:17:19 [org.jivesoftware.openfire.pubsub.PubSubModule.process(PubSubModule.java:191)

] Internal server error

java.lang.NullPointerException

at java.util.concurrent.LinkedBlockingQueue.remove(LinkedBlockingQueue.java:480)

at org.jivesoftware.openfire.pubsub.PubSubEngine.queueItemToRemove(PubSubEngine.ja va:1846)

at org.jivesoftware.openfire.pubsub.PubSubModule.queueItemToRemove(PubSubModule.ja va:284)

at org.jivesoftware.openfire.pubsub.LeafNode.publishItems(LeafNode.java:260)

at org.jivesoftware.openfire.pubsub.PubSubEngine.publishItemsToNode(PubSubEngine.j ava:371)

at org.jivesoftware.openfire.pubsub.PubSubEngine.process(PubSubEngine.java:70)

at org.jivesoftware.openfire.pubsub.PubSubModule.process(PubSubModule.java:179)

at org.jivesoftware.openfire.spi.RoutingTableImpl.routePacket(RoutingTableImpl.jav a:234)

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

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

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

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

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

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

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

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

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.filter.codec.support.SimpleProtocolDecoderOutput.flush(SimplePr otocolDecoderOutput.java:58)

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

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: 665)

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

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

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

2007.12.07 16:19:02 [org.jivesoftware.openfire.pubsub.PublishedItemTask.run(PublishedItemTask.java: 78)

] Internal server error

java.lang.NullPointerException

at java.util.concurrent.LinkedBlockingQueue.extract(LinkedBlockingQueue.java:157)

at java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:440)

at org.jivesoftware.openfire.pubsub.PublishedItemTask.run(PublishedItemTask.java:6 9)

at java.util.TimerThread.mainLoop(Timer.java:527)

at java.util.TimerThread.run(Timer.java:477)

2007.12.07 16:21:02 [org.jivesoftware.openfire.pubsub.PublishedItemTask.run(PublishedItemTask.java: 78)

] Internal server error

java.lang.NullPointerException

at java.util.concurrent.LinkedBlockingQueue.extract(LinkedBlockingQueue.java:157)

at java.util.concurrent.LinkedBlockingQueue.poll(LinkedBlockingQueue.java:440)

at org.jivesoftware.openfire.pubsub.PublishedItemTask.run(PublishedItemTask.java:6 9)

at java.util.TimerThread.mainLoop(Timer.java:527)

at java.util.TimerThread.run(Timer.java:477)

I just found the solution, which isn’t related to pubsub at all. I post it here in case someone has this same bug.

The ‘JAVA_HOME’ environment variable must be set to a SUN jre, not another jre. Having IBM Rational Application Developper as my primary IDE, this variable was set to my IBM jre…

hey @michael can you please elaborate on “The ‘JAVA_HOME’ environment variable must be set to a SUN jre” i mean how to do it. I am new to openfire. Thanks