From 17153fea38daaa84ab6c34b3ed7e6be47f905947 Mon Sep 17 00:00:00 2001
From: Artem Polyakov <artpol84@gmail.com>
Date: Wed, 18 Nov 2015 15:46:09 +0600
Subject: [PATCH] Fix direct modex race condition.

---
 src/plugins/mpi/pmix/pmixp_dmdx.c | 23 ++++++++++++-----------
 1 file changed, 12 insertions(+), 11 deletions(-)

diff --git a/src/plugins/mpi/pmix/pmixp_dmdx.c b/src/plugins/mpi/pmix/pmixp_dmdx.c
index d796480b1a4..2bd44147e53 100644
--- a/src/plugins/mpi/pmix/pmixp_dmdx.c
+++ b/src/plugins/mpi/pmix/pmixp_dmdx.c
@@ -259,6 +259,18 @@ int pmixp_dmdx_get(const char *nspace, int rank,
 	/* store cur seq. num and move to the next request */
 	seq = _dmdx_seq_num++;
 
+	/* track this request */
+	req = xmalloc(sizeof(dmdx_req_info_t));
+	req->seq_num = seq;
+	req->cbfunc = cbfunc;
+	req->cbdata = cbdata;
+	req->ts = time(NULL);
+#ifndef NDEBUG
+	strncpy(req->nspace, nspace, PMIX_MAX_NSLEN);
+	req->rank = rank;
+#endif
+	list_append(_dmdx_requests, req);
+
 	/* send the request */
 	rc = pmixp_server_send(host, PMIXP_MSG_DMDX, seq, addr,
 			get_buf_data(buf), get_buf_offset(buf));
@@ -274,17 +286,6 @@ int pmixp_dmdx_get(const char *nspace, int rank,
 		return SLURM_ERROR;
 	}
 
-	/* track this request */
-	req = xmalloc(sizeof(dmdx_req_info_t));
-	req->seq_num = seq;
-	req->cbfunc = cbfunc;
-	req->cbdata = cbdata;
-	req->ts = time(NULL);
-#ifndef NDEBUG
-	strncpy(req->nspace, nspace, PMIX_MAX_NSLEN);
-	req->rank = rank;
-#endif
-	list_append(_dmdx_requests, req);
 	return rc;
 }
 
-- 
GitLab