Red Hat Bugzilla – Bug 1003913
JMSService.start is doing blocking I/O
Last modified: 2014-03-28 12:50:34 EDT
Description of problem:
JMSService.start is doing blocking I/O which is forbidden by the MSC service contract.
*** Bug 1009530 has been marked as a duplicate of this bug. ***
*** Bug 974942 has been marked as a duplicate of this bug. ***
could you help with verification of this bz, please? I can see that PR contains actually more than one thing. "HornetQ fail-back results in XA recovery warnings" I can verify easily.
Problem is "[WFLY-101] JMSService.start to perform blocking I/O asynchronously" I guess only way to verify is to read the code, right?
(In reply to Miroslav Novak from comment #5)
> Problem is "[WFLY-101] JMSService.start to perform blocking I/O
> asynchronously" I guess only way to verify is to read the code, right?
That's correct, there is no observable way to verify this.
Reading the code, it appears that the JMSService.start/stop methods performs HornetQ-related operations asynchronously in a separate executor: https://github.com/jmesnil/jboss-eap/commit/161295de1ae35a10c53dcc8f4fce933b4baadeb2#diff-60f2c56b6f01bb06387cbe9054ddc549R89
I tried to use debugger to hold start of HornetQ - line break point was HornetQServerImpl.start line 404. But I didn't see other services to start when debugger stopped initialization of HornetQ. My understanding is that those services should start when they do not have dependency on messaging. Is it right?
Breakpoint should be on org.hornetq.jms.server.impl.JMSServerManagerImpl#start
That the HornetQ class that is called by WildFly JMSService.
I'm nto sure what should happen exactly but since the JMS server start is asynchrounous now, other WildFly services will be able to start without being blocked.
This changes nothing for services *depending* on JMSService. They will not be started until the JMSService is started (asynchronously or not).
I could not verify this BZ using debugger but based on code review (also from D. Loyd) this fix is ok.
Verified in EAP 6.2.0.ER3.