eclipse-ee4j / eclipse-ee4j/genericmessagingra
Reconnect does not happen when the endpoint release throws exception
- Dominant language
- Java
- Stars
- 2
- Forks
- 5
- PR merge metrics
- No merged PRs in 30d
Description
When a connection with the broker fails the generic ra tries to reconnect to the
broker ( if configured in the activation spec). During this time, the ra tries
to release the endpoint ( stop the pool) before reconnecting to the broker. If
the release endpoint ( which inturn calls afterDelivery() on the enpoint) fails
then the reconnect does not happen. There are 2 issues here
1\. There is a timeout in the inbound resource pool to release all the resources
in the pool, but there is no timeout for releasing a single resource. So ideally
the total pool release timeout should be divided across the resources in the
pool ( simplest solution of course).
2\. If releasing one of the resources in the pool causes an exception, ( which is
not handled now) then the other resources are not released properly. This
indirectly affects the reconnection feature in the following way. When an
existing MQ connection throws an exception then the ReconnectHelper in the RA
tries to reconnect to the broker, before doing this the jms resource pool is
stopped and reinitialized, and if there is an exception while stopping the pool
( which is dependendent on releasing the endpoint) then the pool does not get
re-initialized and the reconnection does not happen. So, the exceptions need to
be handled appropriately.
This issue can can be reproduced by installing a broker on a remote machine and
the app server and ra on one machine and then causing a network outage when the
messages are in transit.
#### Environment
Operating System: All
Platform: All
#### Affected Versions
[v1.6]
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.