svn commit: r219830 - head/sbin/hastd

Pawel Jakub Dawidek pjd at FreeBSD.org
Mon Mar 21 14:50:13 UTC 2011


Author: pjd
Date: Mon Mar 21 14:50:12 2011
New Revision: 219830
URL: http://svn.freebsd.org/changeset/base/219830

Log:
  Detect situation where resource internal identifier differs.
  This means that both nodes have separately managed resources that don't
  have the same data.
  
  MFC after:	1 week

Modified:
  head/sbin/hastd/secondary.c

Modified: head/sbin/hastd/secondary.c
==============================================================================
--- head/sbin/hastd/secondary.c	Mon Mar 21 14:29:35 2011	(r219829)
+++ head/sbin/hastd/secondary.c	Mon Mar 21 14:50:12 2011	(r219830)
@@ -259,6 +259,19 @@ init_remote(struct hast_resource *res, s
 			memset(map, 0xff, mapsize);
 		}
 		nv_add_uint8(nvout, HAST_SYNCSRC_PRIMARY, "syncsrc");
+	} else if (res->hr_resuid != resuid) {
+		char errmsg[256];
+
+		(void)snprintf(errmsg, sizeof(errmsg),
+		    "Resource unique ID mismatch (primary=%ju, secondary=%ju).",
+		    (uintmax_t)resuid, (uintmax_t)res->hr_resuid);
+		pjdlog_error("%s", errmsg);
+		nv_add_string(nvout, errmsg, "errmsg");
+		if (hast_proto_send(res, res->hr_remotein, nvout, NULL, 0) < 0) {
+			pjdlog_exit(EX_TEMPFAIL, "Unable to send response to %s",
+			    res->hr_remoteaddr);
+		}
+		exit(EX_CONFIG);
 	} else if (
 	    /* Is primary is out-of-date? */
 	    (res->hr_secondary_localcnt > res->hr_primary_remotecnt &&


More information about the svn-src-head mailing list