Hi I want to simulate different channels by implementing connections and network of brokers in an unusual way.
I have 2 processes A and B on the same server. Each have their own embedded AMQ broker. B is a supervisor process which echanges signal messages. A is connected on its broker (conn1), and A is optionnaly connected on the B's broker (conn2), if a previous message on conn1 (answer to a previous broadcast), tells him that B is on. A's broker and B's broker are in the same network of brokers (networkConnector is instance-nc, associated with multicast protocol). Each has the same networkConnector "instance-nc" multicast configuration A and B brokers have a transportConnector which is associated with instance-nc, multicast protocol. A connector : port 61616 B connector : port 61600 B has an other connector 61602 If A is started without B, and A is gracefully stop. All is right. I have a problem when 1 : B (supervisor) is started (B is connected on its broker : vm transport) 2 : A is started (A is connected on its broker : vm transport) 3 : network connections are automatically established by ActiveMQ (61616 and 61600 ports) for instance-nc 4 : conn2 (A->B:61602) is established by my program (tcp transport) 5 : B is gracefully killed (B internal connection is gracefully closed, and AMQ embedded broker is stopped) 6 : on A, ExceptionListener is aware that A->B:61602 is broken. 7 : Then, myprogram on A, I wish to leave 7-1 : conn1 is gracefully stopped and close 7-2 : internal broker is gracefully stopped In this situation, on A, the instance-nc multicast Discovery thread and scheduler, doesn't want to stop. (see thread dump) With trace on, I see that conn2 (A->B:61602) is closed when B is killed. I see that "instance-nc" networkConnector is closed when A's broker is stopped by my program For your information, in the trace, you will see that there is a third connection (61620) towards a distinct AMQ stand-alone broker which is active and not killed during the operation. I think all is right with this "passive" connection. In the trace, you will see at the end that I tried to close the broken connection and that "close" generates the last exception. But the thread stay active although embedded broker is down Then, if I interrupt the blocked process (CTRL-C), the 2 AMQ threads die very quickly, and my program leaves. Version : AMQ 5.3-snapshot I joined the trace of A internal embedded Broker and the thread dump at the end of A process. Eric-AWL http://www.nabble.com/file/p24034367/AMQ%2Bthread%2Bdump.txt AMQ+thread+dump.txt http://www.nabble.com/file/p24034367/AMQ%2Btrace.txt AMQ+trace.txt -- View this message in context: http://www.nabble.com/broker-dead-block.-Multicast-Discovery-Notifier-thread-doesn%27t-stop-tp24034367p24034367.html Sent from the ActiveMQ - User mailing list archive at Nabble.com.
