This patch fixes an assert in YKD where an ATTEMPT message is received
while the state machine is in SENDSTATE. I have no idea if it's
theoretically correct or not, but it works on my 16 node cluster.
It also fixes a send routine so it puts the right type of message in the
header (now that we're looking it that matters!)
Chrissie
Index: exec/vsf_ykd.c
===================================================================
--- exec/vsf_ykd.c (revision 2761)
+++ exec/vsf_ykd.c (working copy)
@@ -193,7 +193,7 @@
struct ykd_header header;
int res;
- header.id = YKD_HEADER_SENDSTATE;
+ header.id = YKD_HEADER_ATTEMPT;
iovec.iov_base = (char *)&header;
iovec.iov_len = sizeof (struct ykd_header);
@@ -343,6 +343,7 @@
int all_received = 1;
int state_position = 0;
int i;
+ struct ykd_header *header = (struct ykd_header *)msg;
char *msg_state = (char *)msg + sizeof (struct ykd_header);
/*
@@ -390,6 +391,13 @@
}
}
+ /*
+ * Ignore messages from a different state
+ */
+ if ((ykd_mode == YKD_MODE_SENDSTATE && header->id ==
YKD_HEADER_ATTEMPT) ||
+ (ykd_mode == YKD_MODE_ATTEMPT && header->id ==
YKD_HEADER_SENDSTATE))
+ return;
+
switch (ykd_mode) {
case YKD_MODE_SENDSTATE:
assert (msg_len > sizeof (struct ykd_header));
_______________________________________________
Openais mailing list
[email protected]
https://lists.linux-foundation.org/mailman/listinfo/openais