In the ticket 3291, a new message was introduced.
We need increase the log subpart version to figure
out a log director support that message or not.
---
src/log/agent/lga_agent.cc | 26 +++++++++++++-------------
src/log/agent/lga_mds.cc | 23 +++++++++++++++++++----
src/log/agent/lga_mds.h | 2 ++
3 files changed, 34 insertions(+), 17 deletions(-)
diff --git a/src/log/agent/lga_agent.cc b/src/log/agent/lga_agent.cc
index acbb18884..8cc8d6cfa 100644
--- a/src/log/agent/lga_agent.cc
+++ b/src/log/agent/lga_agent.cc
@@ -339,19 +339,19 @@ unsigned int LogAgent::WaitLogServerUp(int64_t
polling_timeout) {
goto done;
}
- // Wait for initial clm status
- status = osaf_poll_one_fd(m_GET_FD_FROM_SEL_OBJ(init_clm_status_sel_),
- timeout);
- if (status == 0) {
- // The server may not support this signal
- // or it's dropped.
- TRACE("Waiting for initial clm status timeout");
- rc = NCSCC_RC_SUCCESS;
- goto done;
- } else if (status < 0) {
- TRACE("Waiting for initial clm status failed: %s", strerror(errno));
- rc = NCSCC_RC_FAILURE;
- goto done;
+ if (lga_mds_msg_does_support_init_clm_status()) {
+ // Wait for initial clm status
+ status = osaf_poll_one_fd(m_GET_FD_FROM_SEL_OBJ(init_clm_status_sel_),
+ timeout);
+ if (status == 0) {
+ TRACE("Waiting for initial clm status timeout");
+ rc = NCSCC_RC_SUCCESS;
+ goto done;
+ } else if (status < 0) {
+ TRACE("Waiting for initial clm status failed: %s", strerror(errno));
+ rc = NCSCC_RC_FAILURE;
+ goto done;
+ }
}
// Log server was up and detected this agent. Stop waiting
diff --git a/src/log/agent/lga_mds.cc b/src/log/agent/lga_mds.cc
index a7ce61b47..828a25445 100644
--- a/src/log/agent/lga_mds.cc
+++ b/src/log/agent/lga_mds.cc
@@ -29,16 +29,19 @@
#include "log/agent/lga_common.h"
#include "log/common/lgsv_defs.h"
-#define LGA_SVC_PVT_SUBPART_VERSION 1
+#define LGA_SVC_PVT_SUBPART_VERSION 2
#define LGA_WRT_LGS_SUBPART_VER_AT_MIN_MSG_FMT 1
-#define LGA_WRT_LGS_SUBPART_VER_AT_MAX_MSG_FMT 1
+#define LGA_WRT_LGS_SUBPART_VER_AT_MAX_MSG_FMT 2
#define LGA_WRT_LGS_SUBPART_VER_RANGE \
(LGA_WRT_LGS_SUBPART_VER_AT_MAX_MSG_FMT - \
LGA_WRT_LGS_SUBPART_VER_AT_MIN_MSG_FMT + 1)
+#define LGA_SVC_PVT_INIT_CLM_STATE_SUBPART_VERSION 2
-// msg format version for LGA subpart version 1
+// msg format version for LGA subpart version 2
static MDS_CLIENT_MSG_FORMAT_VER
- LGA_WRT_LGS_MSG_FMT_ARRAY[LGA_WRT_LGS_SUBPART_VER_RANGE] = {1};
+ LGA_WRT_LGS_MSG_FMT_ARRAY[LGA_WRT_LGS_SUBPART_VER_RANGE] = {1, 2};
+
+static MDS_SVC_PVT_SUB_PART_VER rem_svc_pvt_ver = LGA_SVC_PVT_SUBPART_VERSION;
/****************************************************************************
Name : lga_enc_initialize_msg
@@ -719,6 +722,7 @@ static uint32_t lga_mds_svc_evt(struct ncsmds_callback_info
*mds_cb_info) {
mds_cb_info->info.svc_evt.i_dest);
// Inform LOG server is up
LogAgent::instance()->MarkLogServerUp();
+ rem_svc_pvt_ver = mds_cb_info->info.svc_evt.i_rem_svc_pvt_ver;
// Start recovery
lga_serv_recov1state_set();
break;
@@ -1459,6 +1463,17 @@ uint32_t lga_mds_msg_async_send(lgsv_msg_t *i_msg,
uint32_t prio) {
return rc;
}
+/****************************************************************************
+ * Name : lga_mds_msg_does_support_init_clm_status
+ *
+ * Description : Check if the init clm status is supported or not
+ *
+ * Return Values : true/false
+ *****************************************************************************/
+bool lga_mds_msg_does_support_init_clm_status() {
+ return rem_svc_pvt_ver >= LGA_SVC_PVT_INIT_CLM_STATE_SUBPART_VERSION;
+}
+
/****************************************************************************
* Name : lga_msg_destroy
*
diff --git a/src/log/agent/lga_mds.h b/src/log/agent/lga_mds.h
index af5608849..b06b25bd4 100644
--- a/src/log/agent/lga_mds.h
+++ b/src/log/agent/lga_mds.h
@@ -32,4 +32,6 @@ uint32_t lga_mds_msg_sync_send(lgsv_msg_t *i_msg, lgsv_msg_t
**o_msg,
SaTimeT timeout, uint32_t prio);
uint32_t lga_mds_msg_async_send(lgsv_msg_t *i_msg, uint32_t prio);
+bool lga_mds_msg_does_support_init_clm_status();
+
#endif // SRC_LOG_AGENT_LGA_MDS_H_
--
2.25.1
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel