[JBoss Messaging] - 1.20.GA/SP1 woes
by colomb
Since upgrading our queues from 1.0.1SP4 to 1.2.0GA/SP1 (tried both), the queues seem to be far less reliable. Within minutes of bringing them up, they will hang after some activity on them. Looking at the log, I see this just before they become unresponsive. Any ideas? Thank you.
| 10:40:29,657 ERROR [ChannelSupport] failed to commit
| 10:40:29,657 ERROR [ServerConsumerEndpoint] Failed to expire delivery: Delivery[Reference[135168]:NON-RELIABLE](done)
| org.jboss.messaging.core.tx.TransactionException: Transaction already committed, cannot rollback
| at org.jboss.messaging.core.tx.Transaction.rollback(Transaction.java:295)
| at org.jboss.jms.server.endpoint.ServerSessionEndpoint.moveInTransaction(ServerSessionEndpoint.java:1087)
| at org.jboss.jms.server.endpoint.ServerSessionEndpoint.expireDelivery(ServerSessionEndpoint.java:743)
| at org.jboss.jms.server.endpoint.ServerConsumerEndpoint.handle(ServerConsumerEndpoint.java:208)
| at org.jboss.messaging.core.local.RoundRobinPointToPointRouter.handle(RoundRobinPointToPointRouter.java:120)
| at org.jboss.messaging.core.ChannelSupport.deliverInternal(ChannelSupport.java:600)
| at org.jboss.messaging.core.ChannelSupport$InMemoryCallback.afterCommit(ChannelSupport.java:1017)
| at org.jboss.messaging.core.tx.Transaction.commit(Transaction.java:228)
| at org.jboss.jms.server.endpoint.ServerSessionEndpoint.moveInTransaction(ServerSessionEndpoint.java:1083)
| at org.jboss.jms.server.endpoint.ServerSessionEndpoint.expireDelivery(ServerSessionEndpoint.java:743)
| at org.jboss.jms.server.endpoint.ServerConsumerEndpoint.handle(ServerConsumerEndpoint.java:208)
| at org.jboss.messaging.core.local.RoundRobinPointToPointRouter.handle(RoundRobinPointToPointRouter.java:120)
| at org.jboss.messaging.core.ChannelSupport.deliverInternal(ChannelSupport.java:600)
| at org.jboss.messaging.core.ChannelSupport$InMemoryCallback.afterCommit(ChannelSupport.java:1017)
| at org.jboss.messaging.core.tx.Transaction.commit(Transaction.java:228)
| at org.jboss.jms.server.endpoint.ServerSessionEndpoint.moveInTransaction(ServerSessionEndpoint.java:1083)
| at org.jboss.jms.server.endpoint.ServerSessionEndpoint.expireDelivery(ServerSessionEndpoint.java:743)
| at org.jboss.jms.server.endpoint.ServerConsumerEndpoint.handle(ServerConsumerEndpoint.java:208)
| at org.jboss.messaging.core.local.RoundRobinPointToPointRouter.handle(RoundRobinPointToPointRouter.java:120)
| at org.jboss.messaging.core.ChannelSupport.deliverInternal(ChannelSupport.java:600)
| at org.jboss.messaging.core.ChannelSupport$InMemoryCallback.afterCommit(ChannelSupport.java:1017)
| at org.jboss.messaging.core.tx.Transaction.commit(Transaction.java:228)
|
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4044728#4044728
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4044728
19 years, 1 month
[JBoss Seam] - EntityHome + nested persist = FK constraint violation
by damianharvey
Hi,
I have an Entity USER that can be in many GROUPs. This relationship is held in the USERGROUP entity. I have a page where a new User can be created and their groups selected.
When I go to persist these using the following code I get a Foreign Key Constraint Violation from mySQL as the USER doesn't yet exist in the database.
| public String add() {
|
| //Persist the user
| String status = userHome.persist();
| log.info("Persisted User");
|
| userHome.getEntityManager().flush();
| log.info("Flushed User");
|
| //Process the groups
| Iterator groupIter = groups.iterator();
| while(groupIter.hasNext()) {
| Groups group = (Groups)groupIter.next();
|
| //Use the EntityHome object to persist
| userGroupListHome.create();
| userGroupListHome.getInstance().setUser(userHome.getInstance());
| userGroupListHome.getInstance().setGroups(group);
|
| userGroupListHome.persist();
| }
| }
|
My understanding was that the flush() would actually force the transient object to be saved to the database. If I look in the DB it isn't there.
Would appreciate any advice as this has driven me nuts once before.
Thanks,
Damian.
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4044727#4044727
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4044727
19 years, 1 month
[JBoss Messaging] - Re: RediveryDelay implemented yet?
by parressh
timfox, my MDB is simply calling a web service, which can be slow/unreliable and that is why we are using JMS; so that our front-end processing can be fast. Since the web service may be down, it doesn't make sense to retry the operation without a delay.
My current hack for delaying redelivery is to throw a RuntimeException from the MDB which sends the message to the DLQ since I have DefaultMaxDeliveryAttempts=1. (Interesting how this config parameter works with MDB's, but DefaultRedeliveryDelay does not.) Anyway, I have another MDB listening to the DLQ which sleeps for a time and sends back to the original queue where the first MDB picks it up again. I suspect that sleeping the thread is probably a bad idea, which is why I'd like to know how to make use of the redelivery delay feature of JBM. I'm open to not using MDB's (like Spring, maybe), so I was wondering what suggestion you have for receiving the messages to make use of the delay, since it does not work with MDB's.
View the original post : http://www.jboss.com/index.html?module=bb&op=viewtopic&p=4044715#4044715
Reply to the post : http://www.jboss.com/index.html?module=bb&op=posting&mode=reply&p=4044715
19 years, 1 month