Description of the problem
1) start a cluster on two nodes N1 and N2
2) start process p1 with consumer C1 and producer P1 for queue Q. C1 uses JMS Target T1
3) start process p2 with consumer C2 and producer P2 for queue Q and sending one text message / sec to queue Q with target T1. C2 uses JMS Target T2.
4) confirm with tcpdump that N1 is retrieving the traffic
5) shut down node N1 with 'qpidd --quit'
6) wait for 5 sec
7) restart node N1 with 'qpidd'
8) check the qpidd.log with the error catch-up connection closed prematurely
Test code is attached with this bug report, the case is actually simpler than it seems from the previous description and reading the test code should clarify the problem.
QPid log when trying to restart
2011-09-19 14:00:43 notice Initializing CPG
2011-09-19 14:00:43 notice cluster(172.16.133.123:19037 PRE_INIT) configuration change: 172.16.133.120:29504 172.16.133.123:19037
2011-09-19 14:00:43 notice cluster(172.16.133.123:19037 PRE_INIT) Members joined: 172.16.133.123:19037
2011-09-19 14:00:43 notice SASL disabled: No Authentication Performed
2011-09-19 14:00:43 notice Listening on TCP port 5672
2011-09-19 14:00:43 notice cluster(172.16.133.123:19037 INIT) cluster-uuid = 7ab02e1b-67dd-4fed-b176-79b567ab699f
2011-09-19 14:00:43 notice cluster(172.16.133.123:19037 JOINER) joining cluster MYCLUSTER
2011-09-19 14:00:43 notice Broker running
2011-09-19 14:00:43 notice cluster(172.16.133.123:19037 UPDATEE) receiving update from 172.16.133.120:29504
2011-09-19 14:00:43 error deliveryRecord no update message (qpid/cluster/Connection.cpp:537)
2011-09-19 14:00:43 critical cluster(172.16.133.123:19037 UPDATEE) catch-up connection closed prematurely 172.16.133.120:5672-172.16.136.143:53170(172.16.133.123:19037-4 local,catchup)
2011-09-19 14:00:43 notice cluster(172.16.133.123:19037 LEFT) leaving cluster MYCLUSTER
2011-09-19 14:00:43 notice Shut down
Steps for running the test repeating the problem
1) Download, extract and compile attachment qpid-cluster-problem.tar.gz
2) Start two QPid nodes on a cluster
3) Start ConsumerTest.class and ProducerTest.class on a third node
4) Restart nodes as described previously
5) Change attribute ProducerTest.TEST_SCENARIO=2 on the source code and test again. The cluster node restarts should work because producer and consumer are now attached to separate queues on both ConsumerTest and ProducerTest.