“More acks than expected”, connection closed

i am using Smack 4.0.3

Every once in a while I get a message on the server from the client that looks something like this:

INCOMING MESSAGE!!!!!!!!!!!! <message id='2u650-31' to='xxxxxxxxxxx@gcm.googleapis.com/Smack0152E3A3' type='error'><error type="cancel">``<not-acceptable xmlns="urn:ietf:params:xml:ns:xmpp-stanzas"/><text xml:lang="en" xmlns="urn:ietf:params:xml:ns:xmpp-stanzas">Received more acks than expected.</text></error><gcm xmlns="google:mobile:data">{&quot;to&quot;:&quot;ClientsRegistrationIDGoesHere&quot;,&quot;message_id&quot;:&quot;1054919404&quot;,&quot;message_type&quot;:&quot;ack&quot;}</gcm></message>

GCM PACKET com.bannervision.web.controller.admin.SmackCcsClient$GcmPacketExtension@6454f46b JSON {"to":"ClientsRegistrationIDGoesHere","message_id":"1054919404","message_type":"ack"}

After this error I get a stack trace that looks like this:

``WARNING: Not connected anymore, echo message is not sent
org.jivesoftware.smack.SmackException$NotConnectedException
at org.jivesoftware.smack.XMPPConnection.sendPacket(XMPPConnection.java:584)
at com.bannervision.web.controller.admin.SmackCcsClient.send(SmackCcsClient.java:106)
at com.bannervision.web.controller.admin.SmackCcsClient.sendDownstreamMessage(SmackCcsClient.java:84)
at com.bannervision.web.controller.admin.SmackCcsClient.handleUpstreamMessage(SmackCcsClient.java:228)
at com.bannervision.web.controller.admin.SmackCcsClient$2.processPacket(SmackCcsClient.java:409)
at org.jivesoftware.smack.XMPPConnection$ListenerWrapper.notifyListener(XMPPConnection.java:1233)
at org.jivesoftware.smack.XMPPConnection$ListenerNotification.run(XMPPConnection.java:1143)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)

Oct 08, 2014 10:36:01 PM com.bannervision.web.controller.admin.SmackCcsClient$2 processPacket
SEVERE: Failed to process packet
org.jivesoftware.smack.SmackException$NotConnectedException
at org.jivesoftware.smack.XMPPConnection.sendPacket(XMPPConnection.java:584)
at com.bannervision.web.controller.admin.SmackCcsClient.send(SmackCcsClient.java:106)
at com.bannervision.web.controller.admin.SmackCcsClient$2.processPacket(SmackCcsClient.java:415)
at org.jivesoftware.smack.XMPPConnection$ListenerWrapper.notifyListener(XMPPConnection.java:1233)
at org.jivesoftware.smack.XMPPConnection$ListenerNotification.run(XMPPConnection.java:1143)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:178)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:292)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:722)``

The error that pops doesn’t seem to effect anything else, everything keeps sending and coming in as it should but after this error start popping, it will continue every 5 seconds.

Question How do I catch this error? The error only appears in the xml. Better yet how do I prevent it?

Any ideas?