CVS User Account cvsuser
Mon Mar 20 09:26:54 PST 2006
Log Message:
-----------
As pointed out by Tanida Yutaka <tanida at sraoss.co.jp>...

We lock configuration using rtcfg_lock(); if the node isn't active,
the code does a break without unlocking configuration, which leads to
a deadlock, which kills the slon if you drop a node.

The change is to call rtcfg_unlock() before the break...

Modified Files:
--------------
    slony1-engine/src/slon:
        remote_worker.c (r1.107 -> r1.108)

-------------- next part --------------
Index: remote_worker.c
===================================================================
RCS file: /usr/local/cvsroot/slony1/slony1-engine/src/slon/remote_worker.c,v
retrieving revision 1.107
retrieving revision 1.108
diff -Lsrc/slon/remote_worker.c -Lsrc/slon/remote_worker.c -u -w -r1.107 -r1.108
--- src/slon/remote_worker.c
+++ src/slon/remote_worker.c
@@ -354,9 +354,15 @@
 		{
 			rtcfg_lock();
 			if (!node->no_active)
+			{
+	                        rtcfg_unlock();
 				break;
+			}
 			if (node->worker_status != SLON_TSTAT_RUNNING)
+			{
+                        	rtcfg_unlock();
 				break;
+			}
 
 			if (curr_config != rtcfg_seq_get())
 			{



More information about the Slony1-commit mailing list