Hi Lennart, all,

Thanks for your explanation. I would like to update the patch by adding an
explanation 
at the beginning of lgs_mbcsv.c and remove my incorrect comments. File is
attached.

Version 3 checking is already removed in the patch.

@all:
Please have a look and give your comments if any..

md5sum:
e22b13a7ea3f0cbacfaf921ce7a55b55  lgs_ckpt_1459_r1b.patch

Regards,
Vu


>-----Original Message-----
>From: Lennart Lund [mailto:[email protected]]
>Sent: Tuesday, September 08, 2015 6:02 PM
>To: Vu Nguyen M; [email protected]; Giang Do T
>Cc: [email protected]
>Subject: RE: [PATCH 1 of 1] log: Log server crash if SC nodes is not of
same
>chkpt version [#1459]
>
>Hi Vu
>
>If possible remove version 3 checking entirely, see my previous mail
>
>Thanks
>Lennart
>
>-----Original Message-----
>From: Vu Minh Nguyen [mailto:[email protected]]
>Sent: den 8 september 2015 09:48
>To: [email protected]; Lennart Lund; Giang Do T
>Cc: [email protected]
>Subject: [PATCH 1 of 1] log: Log server crash if SC nodes is not of same
chkpt
>version [#1459]
>
> osaf/services/saf/logsv/lgs/lgs_mbcsv.c |  20 ++++++++++----------
> tests/logsv/README                      |  32
++++++++++++++++++++++++++++++++
> 2 files changed, 42 insertions(+), 10 deletions(-)
>
>
>Fix incorrect handling of version 3/4 checkpoint handling
>
>diff --git a/osaf/services/saf/logsv/lgs/lgs_mbcsv.c
>b/osaf/services/saf/logsv/lgs/lgs_mbcsv.c
>--- a/osaf/services/saf/logsv/lgs/lgs_mbcsv.c
>+++ b/osaf/services/saf/logsv/lgs/lgs_mbcsv.c
>@@ -782,7 +782,7 @@ static uint32_t ckpt_encode_async_update
>               data_v3 = (lgsv_ckpt_msg_v3_t *)(long)cbk_arg-
>>info.encode.io_reo_hdl;
>               vdata = data_v3;
>               edp_function = edp_ed_ckpt_msg_v3;
>-      } else if (lgs_is_peer_v2()) {
>+      } else if (lgs_is_peer_v2()) {  /* Checkpoint version 2/3 is the
same
>*/
>               data_v2 = (lgsv_ckpt_msg_v2_t *)(long)cbk_arg-
>>info.encode.io_reo_hdl;
>               vdata = data_v2;
>               edp_function = edp_ed_ckpt_msg_v2;
>@@ -1098,7 +1098,7 @@ static uint32_t ckpt_decode_log_cfg(lgs_
>               ckpt_msg_v3 = ckpt_msg;
>               lgs_cfg = &ckpt_msg_v3->ckpt_rec.lgs_cfg;
>               edp_function = edp_ed_lgs_cfg_rec_v3;
>-      } else if (lgs_is_peer_v2()) {
>+      } else if (lgs_is_peer_v2()) {  /* Checkpoint version 2/3 is the
same
>*/
>               ckpt_msg_v2 = ckpt_msg;
>               lgs_cfg = &ckpt_msg_v2->ckpt_rec.lgs_cfg;
>               edp_function = edp_ed_lgs_cfg_rec_v2; @@ -1151,10 +1151,10
>@@ static uint32_t ckpt_decode_async_update
>       if (lgs_is_peer_v5()) {
>               ckpt_msg_v5->header = hdr;
>               ckpt_msg = ckpt_msg_v5;
>-      } else if (lgs_is_peer_v4() && (hdr_ptr->ckpt_rec_type ==
>LGS_CKPT_LGS_CFG_V3)) {
>+      } else if (lgs_is_peer_v4()) {
>               ckpt_msg_v3->header = hdr;
>               ckpt_msg = ckpt_msg_v3;
>-      } else if (lgs_is_peer_v2()) {
>+      } else if (lgs_is_peer_v2()) { /* Checkpoint version 2/3 is the same
>+*/
>               ckpt_msg_v2->header = hdr;
>               ckpt_msg = ckpt_msg_v2;
>       } else {
>@@ -1168,9 +1168,9 @@ static uint32_t ckpt_decode_async_update
>               TRACE_2("\tINITIALIZE REC: UPDATE");
>               if (lgs_is_peer_v5()) {
>                       reg_rec = &ckpt_msg_v5->ckpt_rec.initialize_client;
>-              } else if (lgs_is_peer_v3()) {
>+              } else if (lgs_is_peer_v4()) {
>                       reg_rec = &ckpt_msg_v3->ckpt_rec.initialize_client;
>-              } else if (lgs_is_peer_v2()) {
>+              } else if (lgs_is_peer_v2()) { /* Checkpoint version 2/3 is
the
>same
>+*/
>                       reg_rec = &ckpt_msg_v2->ckpt_rec.initialize_client;
>               } else {
>                       reg_rec = &ckpt_msg_v1->ckpt_rec.initialize_client;
>@@ -1193,9 +1193,9 @@ static uint32_t ckpt_decode_async_update
>               TRACE_2("\tSTREAM OPEN: UPDATE");
>               if (lgs_is_peer_v5()) {
>                       stream_open = &ckpt_msg_v5->ckpt_rec.stream_open;
>-              } else if (lgs_is_peer_v3()) {
>+              } else if (lgs_is_peer_v4()) {
>                       stream_open = &ckpt_msg_v3->ckpt_rec.stream_open;
>-              } else if (lgs_is_peer_v2()) {
>+              } else if (lgs_is_peer_v2()) { /* Checkpoint version 2/3 is
the
>same
>+*/
>                       stream_open = &ckpt_msg_v2->ckpt_rec.stream_open;
>               } else {
>                       stream_open = &ckpt_msg_v1->ckpt_rec.stream_open;
>@@ -1449,7 +1449,7 @@ static uint32_t process_ckpt_data(lgs_cb
>       } else if (lgs_is_peer_v4()) {
>               data_v3 = data;
>               lgsv_ckpt_msg_type = data_v3->header.ckpt_rec_type;
>-      } else if (lgs_is_peer_v2()) {
>+      } else if (lgs_is_peer_v2()) { /* Checkpoint version 2/3 is the same
>+*/
>               data_v2 = data;
>               lgsv_ckpt_msg_type = data_v2->header.ckpt_rec_type;
>       } else {
>@@ -2182,7 +2182,7 @@ uint32_t lgs_ckpt_send_async(lgs_cb_t *c
>       } else if (lgs_is_peer_v4()) {
>               lgsv_ckpt_msg_v3_t *ckpt_rec_v3 = ckpt_rec;
>               ckpt_rec_type = ckpt_rec_v3->header.ckpt_rec_type;
>-      } else if (lgs_is_peer_v2()) {
>+      } else if (lgs_is_peer_v2()) { /* Checkpoint version 2/3 is the same
>+*/
>               lgsv_ckpt_msg_v2_t *ckpt_rec_v2 = ckpt_rec;
>               ckpt_rec_type = ckpt_rec_v2->header.ckpt_rec_type;
>       } else {
>diff --git a/tests/logsv/README b/tests/logsv/README
>--- a/tests/logsv/README
>+++ b/tests/logsv/README
>@@ -10,3 +10,35 @@ The second TC tries to set the data grou  In order to
help
>the TC passed, "log-data" group must be existing and be added  to
>supplementary group list of the user as which LOGSV is running.
> Otherwise that TC will be skipped.
>+
>+
>+SET UP A CLUSTER 02 NODES WITH DIFFERENT CKPT VERSIONS
>+------------------------------------------------------
>+There was issue when two nodes runs with different ckpt versions.
>+Ticket #1459 is an example. How to setup this on UML?
>+
>+Here is guideline for environment preparing for the case active logsv
>+with version #5, standby logsv with version #4.
>+
>+1. Create 02 separate folders, one refers to branch 5.0.x (folder A),
>+   other one refers to 4.6.x branch (folder B).
>+
>+2. Build OpenSAF and UML for them (refer to Wiki)
>+
>+3. Open 2 terminals. On each one, change directory to
>+../tools/cluster_sim_uml
>+
>+4. Start active node SC-1 with logsv version #5.
>+   cluster_sim_uml> ./opensaf nodestart 1
>+
>+5. Start standby node SC-2 with logsv version #4
>+   cluster_sim_uml> ./opensaf nodestart 2
>+
>+6. Wait for seconds to make sure all OpenSAF services come up.
>+
>+7. Run test by `logtest` app with no option.
>+
>+8. Observe both nodes if there is any issue (e.g: node is rebooted)
>+
>+If want to test the case active logsv version #4, standby logsv version
#5,
>reboot above SC-1 (swithover).
>+
>+

Attachment: lgs_ckpt_1459_r1b.patch
Description: Binary data

------------------------------------------------------------------------------
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to