java.lang.NegativeArraySizeException when synchronising

View: New views
11 Messages — Rating Filter:   Alert me  

java.lang.NegativeArraySizeException when synchronising

by LFZ.ATOS :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

when trying to connect the standby router to a standalone router we have this exception that prevents us to do so:
+++ High Availability State: STANDALONE/STANDALONE
+++ High Availability State: INITIALIZE/STANDALONE
+++ High Availability State: NEGOTIATE/STANDALONE
+++ High Availability State: ACTIVE-SYNC-PREPARE/ACTIVE-SYNC-PREPARE
+++ High Availability State: ACTIVE-SYNC/ACTIVE-SYNC
java.lang.NegativeArraySizeException
        at com.swiftmq.impl.store.standard_ha.v600.db.StoreSourceProxyImpl.a(Unknown Source)
        at com.swiftmq.impl.store.standard_ha.v600.db.StoreSourceProxyImpl.sendInit(Unknown Source)
        at com.swiftmq.impl.store.standard_ha.ActiveHAAdapter.stateActiveSync(Unknown Source)
        at com.swiftmq.impl.hacontroller.standard.state.StateRegistry.a(Unknown Source)
        at com.swiftmq.impl.hacontroller.standard.state.StateRegistry.c(Unknown Source)
        at com.swiftmq.impl.hacontroller.standard.state.StateRegistry.a(Unknown Source)
        at com.swiftmq.impl.hacontroller.standard.state.StateRegistry.setCurrentState(Unknown Source)
        at com.swiftmq.impl.hacontroller.standard.v600.stage.ActiveSyncStage.visit(Unknown Source)
        at com.swiftmq.impl.hacontroller.standard.v600.smqpha.StartSyncReplyRequest.accept(Unknown Source)
        at com.swiftmq.impl.hacontroller.standard.v600.stage.ActiveSyncStage.process(Unknown Source)
        at com.swiftmq.impl.hacontroller.standard.stage.StageController.visit(Unknown Source)
        at com.swiftmq.impl.hacontroller.standard.stage.po.PORequestReceived.accept(Unknown Source)
        at com.swiftmq.tools.pipeline.PipelineQueue.process(Unknown Source)
        at com.swiftmq.tools.queue.SingleProcessorQueue.dequeue(Unknown Source)
        at com.swiftmq.tools.pipeline.PipelineQueue$QueueProcessor.run(Unknown Source)
        at com.swiftmq.impl.threadpool.standard.PoolThread.run(Unknown Source)
Shutdown SwiftMQ 7.5.3 Production ...


router is quite empty, but page.db is 2,5Go...

How can we solve it ?

Re: java.lang.NegativeArraySizeException when synchronising

by IIT Software :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Seems to be an integer overflow because if the 2.5GB page.db size. Can you reduce the size before connecting the STANDBY (e.g. by consuming all messages or shrinking)?

Re: java.lang.NegativeArraySizeException when synchronising

by LFZ.ATOS :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

The messages where all consumed, and shrink is performed each night without reducing page.db size.


Re: java.lang.NegativeArraySizeException when synchronising

by IIT Software :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

In that case you have an inconsistent page.db, otherwise it would be shrinked down to 1 MB. Inconsistency can happen e.g. if you run only one HA instance in STANDALONE and hard kill it. Or it is caused by the shrink bug in a release prior to 7.5.3. This has been fixed in 7.5.3. In either case it is inconsistent. Shutdown the STANDALONE HA instance, delete the page.db, restart both HA instances.

Re: java.lang.NegativeArraySizeException when synchronising

by LFZ.ATOS :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Thanks, we will do that.

But the router were not killed and/or restarted, and was started from a brand new page.db when we have migrated to 7.5.3. We had this inconscistancy during normal service.

Re: java.lang.NegativeArraySizeException when synchronising

by IIT Software :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

How did you do the migration? As explained here?

Re: java.lang.NegativeArraySizeException when synchronising

by LFZ.ATOS :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

no, we have done a service interruption.
We have stopped 7.5.1 standby, and after active that were standalone.
Installed new 7.5.3, then started 7.5.3 on standalone(active one) (to eventually convert config files).
Then stopped again SwiftMQ. Then we have Deleted page.db and transaction.log to start correctly as you indicated that page.db can be corrupted in 7.5.1.
Then we have started Standby migrated router to synchronise correctly. They were correctly Standby/Active.
Standby was stopped a week, and can't be restarted now without blocking Standalone (to active) router.

Re: java.lang.NegativeArraySizeException when synchronising

by IIT Software :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Ok, but how did you get a 2.5GB page.db? Is this your "normal" operation?

Re: java.lang.NegativeArraySizeException when synchronising

by LFZ.ATOS :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Yes, we have a 2GB page.db, and operate quite well till 8GB.

We crash everytime we reach about 10GB.

Re: java.lang.NegativeArraySizeException when synchronising

by IIT Software :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Well, I have no idea why the page.db cannot be shrinked. In normal operation it is not possible to create these inconsistency, except you run shrink in an earlier version and still use that file, or there was a crash in the past. 10 GB of page.db is quite large and not intended. This is a transient message store, not a database. You might want to switch over to a shared (clustered) database to store such an amount of messages. The JDBC Store Swiftlet is included in SwiftMQ HA Router.

If you want that we will investigate that further, you might file a Gold incident.

Re: java.lang.NegativeArraySizeException when synchronising

by IIT Software :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

This has been fixed in 7.5.4, released today.