[devel] [PATCH 1/1] amfd: reset snd_msg_id in LostFound state [#2952]

2018-11-01 Thread Gary Lee
If a PL rejoins the main network partition before the node failover timer 
expires,
it is told to reboot by AMFD. AMFND thinks it has become headless and
resets rcv_msg_id to 0, and shows this when it receives the reboot msg from 
AMFD:

Rebooting OpenSAF NodeId = 0 EE Name = No EE Mapped, Reason: Message ID 
mismatch, rec xx, expected 1, OwnNodeId = xx, SupervisionTime = 60

We can avoid this by resetting snd_msg_id for this PL in AMFD in state 
LostFound,
before the reboot msg is sent.
---
 src/amf/amfd/node_state.cc | 5 +
 1 file changed, 5 insertions(+)

diff --git a/src/amf/amfd/node_state.cc b/src/amf/amfd/node_state.cc
index a8659dcf7..787ddab94 100644
--- a/src/amf/amfd/node_state.cc
+++ b/src/amf/amfd/node_state.cc
@@ -126,6 +126,11 @@ void LostFound::TimerExpired() {
   node->node_name.c_str());
 
   if (fsm_->Active() == true) {
+// amfnd thinks it's been headless and resets its rcv_msg_id to 0,
+// also do the same here to avoid 'Message ID mismatch' errors
+// at amfnd
+node->snd_msg_id = 0;
+
 LOG_WA("Sending node reboot order");
 avd_d2n_reboot_snd(node);
 
-- 
2.17.1



___
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel


[devel] [PATCH 0/1] Review Request for amfd: reset snd_msg_id in LostFound state [#2952]

2018-11-01 Thread Gary Lee
Summary: amfd: reset snd_msg_id in LostFound state [#2952]
Review request for Ticket(s): 2952
Peer Reviewer(s): Hans, Minh, Nagu 
Pull request to: *** LIST THE PERSON WITH PUSH ACCESS HERE ***
Affected branch(es): develop
Development branch: ticket-2952
Base revision: 39928c976dfce75f69892f717df3ea128ef835aa
Personal repository: git://git.code.sf.net/u/userid-2226215/review


Impacted area   Impact y/n

 Docsn
 Build systemn
 RPM/packaging   n
 Configuration files n
 Startup scripts n
 SAF servicesy 
 OpenSAF servicesn  
 Core libraries  n
 Samples n
 Tests   n
 Other   n


Comments (indicate scope for each "y" above):
-

revision 2ddb0f3a9bc401afcecf7e17f5a629a709e27c48
Author: Gary Lee 
Date:   Fri, 2 Nov 2018 04:57:55 +

amfd: reset snd_msg_id in LostFound state [#2952]

If a PL rejoins the main network partition before the node failover timer 
expires,
it is told to reboot by AMFD. AMFND thinks it has become headless and
resets rcv_msg_id to 0, and shows this when it receives the reboot msg from 
AMFD:

Rebooting OpenSAF NodeId = 0 EE Name = No EE Mapped, Reason: Message ID 
mismatch, rec xx, expected 1, OwnNodeId = xx, SupervisionTime = 60

We can avoid this by resetting snd_msg_id for this PL in AMFD in state 
LostFound,
before the reboot msg is sent.



Complete diffstat:
--
 src/amf/amfd/node_state.cc | 5 +
 1 file changed, 5 insertions(+)


Testing Commands:
-
*** LIST THE COMMAND LINE TOOLS/STEPS TO TEST YOUR CHANGES ***


Testing, Expected Results:
--
*** PASTE COMMAND OUTPUTS / TEST RESULTS ***


Conditions of Submission:
-
*** HOW MANY DAYS BEFORE PUSHING, CONSENSUS ETC ***


Arch  Built StartedLinux distro
---
mipsn  n
mips64  n  n
x86 n  n
x86_64  y  y 
powerpc n  n
powerpc64   n  n


Reviewer Checklist:
---
[Submitters: make sure that your review doesn't trigger any checkmarks!]


Your checkin has not passed review because (see checked entries):

___ Your RR template is generally incomplete; it has too many blank entries
that need proper data filled in.

___ You have failed to nominate the proper persons for review and push.

___ Your patches do not have proper short+long header

___ You have grammar/spelling in your header that is unacceptable.

___ You have exceeded a sensible line length in your headers/comments/text.

___ You have failed to put in a proper Trac Ticket # into your commits.

___ You have incorrectly put/left internal data in your comments/files
(i.e. internal bug tracking tool IDs, product names etc)

___ You have not given any evidence of testing beyond basic build tests.
Demonstrate some level of runtime or other sanity testing.

___ You have ^M present in some of your files. These have to be removed.

___ You have needlessly changed whitespace or added whitespace crimes
like trailing spaces, or spaces before tabs.

___ You have mixed real technical changes with whitespace and other
cosmetic code cleanup changes. These have to be separate commits.

___ You need to refactor your submission into logical chunks; there is
too much content into a single commit.

___ You have extraneous garbage in your review (merge commits etc)

___ You have giant attachments which should never have been sent;
Instead you should place your content in a public tree to be pulled.

___ You have too many commits attached to an e-mail; resend as threaded
commits, or place in a public tree for a pull.

___ You have resent this content multiple times without a clear indication
of what has changed between each re-send.

___ You have failed to adequately and individually address all of the
comments and change requests that were proposed in the initial review.

___ You have a misconfigured ~/.gitconfig file (i.e. user.name, user.email etc)

___ Your computer have a badly configured date and time; confusing the
the threaded patch review.

___ Your changes affect IPC mechanism, and you don't present any results
for in-service upgradability test.

___ Your changes affect user manual and documentation, your patch series
do not contain the patch that updates the Doxygen manual.



___
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel


[devel] [PATCH 1/3] imm: add new test cases of API saImmOmSelectionObjectGet() of apitest [#2951]

2018-11-01 Thread Mohan Kanakam
---
 src/imm/apitest/management/test_saImmOmInitialize.c   |  8 
 .../apitest/management/test_saImmOmSelectionObjectGet.c   | 15 +++
 2 files changed, 23 insertions(+)

diff --git a/src/imm/apitest/management/test_saImmOmInitialize.c 
b/src/imm/apitest/management/test_saImmOmInitialize.c
index 9dcfe7a..2dca5da 100644
--- a/src/imm/apitest/management/test_saImmOmInitialize.c
+++ b/src/imm/apitest/management/test_saImmOmInitialize.c
@@ -303,6 +303,8 @@ void saImmOmInitialize_11(void)
 
 extern void saImmOmSelectionObjectGet_01(void);
 extern void saImmOmSelectionObjectGet_02(void);
+extern void saImmOmSelectionObjectGet_03(void);
+extern void saImmOmSelectionObjectGet_04(void);
 extern void saImmOmDispatch_01(void);
 extern void saImmOmDispatch_02(void);
 extern void saImmOmDispatch_03(void);
@@ -350,6 +352,12 @@ __attribute__((constructor)) static void 
saImmOmInitialize_constructor(void)
test_case_add(
1, saImmOmSelectionObjectGet_02,
"saImmOmSelectionObjectGet - SA_AIS_ERR_BAD_HANDLE - invalid 
handle");
+   test_case_add(
+   1, saImmOmSelectionObjectGet_03,
+   "saImmOmSelectionObjectGet - SA_AIS_ERR_BAD_HANDLE - uninitlized 
handle");
+   test_case_add(
+   1, saImmOmSelectionObjectGet_04,
+   "saImmOmSelectionObjectGet - SA_AIS_ERR_BAD_HANDLE - finalized 
handle");
 
test_case_add(1, saImmOmDispatch_01,
  "saImmOmDispatch - SA_AIS_OK SA_DISPATCH_ALL");
diff --git a/src/imm/apitest/management/test_saImmOmSelectionObjectGet.c 
b/src/imm/apitest/management/test_saImmOmSelectionObjectGet.c
index 017fd70..75b8b86 100644
--- a/src/imm/apitest/management/test_saImmOmSelectionObjectGet.c
+++ b/src/imm/apitest/management/test_saImmOmSelectionObjectGet.c
@@ -35,3 +35,18 @@ void saImmOmSelectionObjectGet_02(void)
test_validate(rc, SA_AIS_ERR_BAD_HANDLE);
safassert(immutil_saImmOmFinalize(immOmHandle), SA_AIS_OK);
 }
+
+void saImmOmSelectionObjectGet_03(void)
+{
+   rc = immutil_saImmOmSelectionObjectGet(immOmHandle, );
+   test_validate(rc, SA_AIS_ERR_BAD_HANDLE);
+}
+
+void saImmOmSelectionObjectGet_04(void)
+{
+   safassert(immutil_saImmOmInitialize(, , 
),
+ SA_AIS_OK);
+   immutil_saImmOmFinalize(immOmHandle);
+   rc = immutil_saImmOmSelectionObjectGet(immOmHandle, );
+   test_validate(rc, SA_AIS_ERR_BAD_HANDLE);
+}
-- 
2.7.4



___
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel


[devel] [PATCH 0/3] Review Request for imm: add new test cases of apitest [#2951]

2018-11-01 Thread Mohan Kanakam
Summary: imm: add new test cases of API saImmOmSelectionObjectGet() of apitest 
[#2951]
Review request for Ticket(s): 2951
Peer Reviewer(s): vu.m.nguyen, Hans Nordeb??ck 
Pull request to: *** LIST THE PERSON WITH PUSH ACCESS HERE ***
Affected branch(es): develop
Development branch: ticket-2951
Base revision: 39928c976dfce75f69892f717df3ea128ef835aa
Personal repository: git://git.code.sf.net/u/mohan-hasoln/review


Impacted area   Impact y/n

 Docsn
 Build systemn
 RPM/packaging   n
 Configuration files n
 Startup scripts n
 SAF servicesn
 OpenSAF servicesn
 Core libraries  n
 Samples n
 Tests   y
 Other   n

NOTE: Patch(es) contain lines longer than 80 characers

Comments (indicate scope for each "y" above):
-
*** EXPLAIN/COMMENT THE PATCH SERIES HERE ***

revision c911b14077deab58eda68f7f5786bd030b2687fb
Author: Mohan Kanakam 
Date:   Thu, 1 Nov 2018 13:41:50 +0530

imm: add new test case of API saImmOmFinalize() of apitest [#2951]



revision edae9e76d7f286fa400de1cd4c51a0ccc225de8c
Author: Mohan Kanakam 
Date:   Thu, 1 Nov 2018 13:32:04 +0530

imm: add new test case of API saImmOmDispatch() of apitest [#2951]



revision 1fceef2f35a08c2490c11c9329725b58a6377e79
Author: Mohan Kanakam 
Date:   Thu, 1 Nov 2018 13:15:40 +0530

imm: add new test cases of API saImmOmSelectionObjectGet() of apitest [#2951]



Complete diffstat:
--
 src/imm/apitest/management/test_saImmOmDispatch.c  | 72 ++
 src/imm/apitest/management/test_saImmOmFinalize.c  | 15 +
 .../apitest/management/test_saImmOmInitialize.c| 51 +++
 .../management/test_saImmOmSelectionObjectGet.c| 15 +
 4 files changed, 153 insertions(+)


Testing Commands:
-
./immomtest 1

Testing, Expected Results:
--
14  PASSED   saImmOmSelectionObjectGet - SA_AIS_ERR_BAD_HANDLE - uninitlized 
handle
15  PASSED   saImmOmSelectionObjectGet - SA_AIS_ERR_BAD_HANDLE - finalized 
handle
20  PASSED   saImmOmDispatch - SA_AIS_ERR_BAD_HANDLE - uninitilized handle 
SA_DISPATCH_ONE
21  PASSED   saImmOmDispatch - SA_AIS_ERR_BAD_HANDLE - finalized handle 
SA_DISPATCH_ONE
22  PASSED   saImmOmDispatch - SA_AIS_OK SA_DISPATCH_BLOCKING
23  PASSED   saImmOmDispatch - SA_AIS_ERR_BAD_HANDLE - invalid handle 
SA_DISPATCH_ALL
24  PASSED   saImmOmDispatch - SA_AIS_ERR_BAD_HANDLE - uninitilized handle 
SA_DISPATCH_ALL
25  PASSED   saImmOmDispatch - SA_AIS_ERR_BAD_HANDLE - finalized handle 
SA_DISPATCH_ALL
26  PASSED   saImmOmDispatch - SA_AIS_ERR_BAD_HANDLE - invalid handle 
SA_DISPATCH_BLOCKING
27  PASSED   saImmOmDispatch - SA_AIS_ERR_BAD_HANDLE - uninitilized handle 
SA_DISPATCH_BLOCKING
28  PASSED   saImmOmDispatch - SA_AIS_ERR_BAD_HANDLE - finalized handle 
SA_DISPATCH_BLOCKING
31  PASSED   saImmOmFinalize - SA_AIS_ERR_BAD_HANDLE - finalized handle
32  PASSED   saImmOmFinalize - SA_AIS_ERR_BAD_HANDLE - uninitlized handle

Conditions of Submission:
-
Ack from maintainers

Arch  Built StartedLinux distro
---
mipsn  n
mips64  n  n
x86 n  n
x86_64  y  y
powerpc n  n
powerpc64   n  n


Reviewer Checklist:
---
[Submitters: make sure that your review doesn't trigger any checkmarks!]


Your checkin has not passed review because (see checked entries):

___ Your RR template is generally incomplete; it has too many blank entries
that need proper data filled in.

___ You have failed to nominate the proper persons for review and push.

___ Your patches do not have proper short+long header

___ You have grammar/spelling in your header that is unacceptable.

___ You have exceeded a sensible line length in your headers/comments/text.

___ You have failed to put in a proper Trac Ticket # into your commits.

___ You have incorrectly put/left internal data in your comments/files
(i.e. internal bug tracking tool IDs, product names etc)

___ You have not given any evidence of testing beyond basic build tests.
Demonstrate some level of runtime or other sanity testing.

___ You have ^M present in some of your files. These have to be removed.

___ You have needlessly changed whitespace or added whitespace crimes
like trailing spaces, or spaces before tabs.

___ You have mixed real technical changes with whitespace and other
cosmetic code cleanup changes. These have to be separate commits.

___ You need to refactor your submission into logical chunks; there is
too much content into a single commit.

___ You have extraneous garbage in your review (merge commits etc)

___ You have giant attachments which should never have been sent;
Instead you should place your content in a public 

[devel] [PATCH 3/3] imm: add new test case of API saImmOmFinalize() of apitest [#2951]

2018-11-01 Thread Mohan Kanakam
---
 src/imm/apitest/management/test_saImmOmFinalize.c   | 15 +++
 src/imm/apitest/management/test_saImmOmInitialize.c |  8 
 2 files changed, 23 insertions(+)

diff --git a/src/imm/apitest/management/test_saImmOmFinalize.c 
b/src/imm/apitest/management/test_saImmOmFinalize.c
index 1c60657..02238a8 100644
--- a/src/imm/apitest/management/test_saImmOmFinalize.c
+++ b/src/imm/apitest/management/test_saImmOmFinalize.c
@@ -33,3 +33,18 @@ void saImmOmFinalize_02(void)
test_validate(rc, SA_AIS_ERR_BAD_HANDLE);
safassert(immutil_saImmOmFinalize(immOmHandle), SA_AIS_OK);
 }
+
+void saImmOmFinalize_03(void)
+{
+   safassert(immutil_saImmOmInitialize(, , 
),
+ SA_AIS_OK);
+   rc = immutil_saImmOmFinalize(immOmHandle);
+   rc = immutil_saImmOmFinalize(immOmHandle);
+   test_validate(rc, SA_AIS_ERR_BAD_HANDLE);
+}
+
+void saImmOmFinalize_04(void)
+{
+   rc = immutil_saImmOmFinalize(immOmHandle);
+   test_validate(rc, SA_AIS_ERR_BAD_HANDLE);
+}
diff --git a/src/imm/apitest/management/test_saImmOmInitialize.c 
b/src/imm/apitest/management/test_saImmOmInitialize.c
index b17ab86..84b6cf2 100644
--- a/src/imm/apitest/management/test_saImmOmInitialize.c
+++ b/src/imm/apitest/management/test_saImmOmInitialize.c
@@ -320,6 +320,8 @@ extern void saImmOmDispatch_12(void);
 extern void saImmOmDispatch_13(void);
 extern void saImmOmFinalize_01(void);
 extern void saImmOmFinalize_02(void);
+extern void saImmOmFinalize_03(void);
+extern void saImmOmFinalize_04(void);
 extern void saImmOmThreadInterference_01(void);
 
 __attribute__((constructor)) static void saImmOmInitialize_constructor(void)
@@ -409,6 +411,12 @@ __attribute__((constructor)) static void 
saImmOmInitialize_constructor(void)
test_case_add(
1, saImmOmFinalize_02,
"saImmOmFinalize - SA_AIS_ERR_BAD_HANDLE - invalid handle");
+   test_case_add(
+   1, saImmOmFinalize_03,
+   "saImmOmFinalize - SA_AIS_ERR_BAD_HANDLE - finalized handle");
+   test_case_add(
+   1, saImmOmFinalize_04,
+   "saImmOmFinalize - SA_AIS_ERR_BAD_HANDLE - uninitlized handle");
 
test_case_add(
1, saImmOmThreadInterference_01,
-- 
2.7.4



___
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel


[devel] [PATCH 2/3] imm: add new test case of API saImmOmDispatch() of apitest [#2951]

2018-11-01 Thread Mohan Kanakam
---
 src/imm/apitest/management/test_saImmOmDispatch.c  | 72 ++
 .../apitest/management/test_saImmOmInitialize.c| 35 +++
 2 files changed, 107 insertions(+)

diff --git a/src/imm/apitest/management/test_saImmOmDispatch.c 
b/src/imm/apitest/management/test_saImmOmDispatch.c
index 3648a95..0ab9885 100644
--- a/src/imm/apitest/management/test_saImmOmDispatch.c
+++ b/src/imm/apitest/management/test_saImmOmDispatch.c
@@ -52,3 +52,75 @@ void saImmOmDispatch_04(void)
test_validate(rc, SA_AIS_ERR_INVALID_PARAM);
safassert(immutil_saImmOmFinalize(immOmHandle), SA_AIS_OK);
 }
+
+void saImmOmDispatch_05(void)
+{
+   rc = saImmOmDispatch(immOmHandle, SA_DISPATCH_ONE);
+   test_validate(rc, SA_AIS_ERR_BAD_HANDLE);
+}
+
+void saImmOmDispatch_06(void)
+{
+   safassert(immutil_saImmOmInitialize(, , 
),
+ SA_AIS_OK);
+   immutil_saImmOmFinalize(immOmHandle);
+   rc = saImmOmDispatch(immOmHandle, SA_DISPATCH_ONE);
+   test_validate(rc, SA_AIS_ERR_BAD_HANDLE);
+}
+
+void saImmOmDispatch_07(void)
+{
+   safassert(immutil_saImmOmInitialize(, , 
),
+ SA_AIS_OK);
+   rc = saImmOmDispatch(immOmHandle, SA_DISPATCH_BLOCKING);
+   test_validate(rc, SA_AIS_OK);
+   safassert(immutil_saImmOmFinalize(immOmHandle), SA_AIS_OK);
+}
+
+void saImmOmDispatch_08(void)
+{
+   safassert(immutil_saImmOmInitialize(, , 
),
+ SA_AIS_OK);
+   rc = saImmOmDispatch(-1, SA_DISPATCH_ALL);
+   test_validate(rc, SA_AIS_ERR_BAD_HANDLE);
+   safassert(immutil_saImmOmFinalize(immOmHandle), SA_AIS_OK);
+}
+
+void saImmOmDispatch_09(void)
+{
+   rc = saImmOmDispatch(immOmHandle, SA_DISPATCH_ALL);
+   test_validate(rc, SA_AIS_ERR_BAD_HANDLE);
+}
+
+void saImmOmDispatch_10(void)
+{
+   safassert(immutil_saImmOmInitialize(, , 
),
+ SA_AIS_OK);
+   immutil_saImmOmFinalize(immOmHandle);
+   rc = saImmOmDispatch(immOmHandle, SA_DISPATCH_ALL);
+   test_validate(rc, SA_AIS_ERR_BAD_HANDLE);
+}
+
+void saImmOmDispatch_11(void)
+{
+   safassert(immutil_saImmOmInitialize(, , 
),
+ SA_AIS_OK);
+   rc = saImmOmDispatch(-1, SA_DISPATCH_BLOCKING);
+   test_validate(rc, SA_AIS_ERR_BAD_HANDLE);
+   safassert(immutil_saImmOmFinalize(immOmHandle), SA_AIS_OK);
+}
+
+void saImmOmDispatch_12(void)
+{
+   rc = saImmOmDispatch(immOmHandle, SA_DISPATCH_BLOCKING);
+   test_validate(rc, SA_AIS_ERR_BAD_HANDLE);
+}
+
+void saImmOmDispatch_13(void)
+{
+   safassert(immutil_saImmOmInitialize(, , 
),
+ SA_AIS_OK);
+   immutil_saImmOmFinalize(immOmHandle);
+   rc = saImmOmDispatch(immOmHandle, SA_DISPATCH_BLOCKING);
+   test_validate(rc, SA_AIS_ERR_BAD_HANDLE);
+}
diff --git a/src/imm/apitest/management/test_saImmOmInitialize.c 
b/src/imm/apitest/management/test_saImmOmInitialize.c
index 2dca5da..b17ab86 100644
--- a/src/imm/apitest/management/test_saImmOmInitialize.c
+++ b/src/imm/apitest/management/test_saImmOmInitialize.c
@@ -309,6 +309,15 @@ extern void saImmOmDispatch_01(void);
 extern void saImmOmDispatch_02(void);
 extern void saImmOmDispatch_03(void);
 extern void saImmOmDispatch_04(void);
+extern void saImmOmDispatch_05(void);
+extern void saImmOmDispatch_06(void);
+extern void saImmOmDispatch_07(void);
+extern void saImmOmDispatch_08(void);
+extern void saImmOmDispatch_09(void);
+extern void saImmOmDispatch_10(void);
+extern void saImmOmDispatch_11(void);
+extern void saImmOmDispatch_12(void);
+extern void saImmOmDispatch_13(void);
 extern void saImmOmFinalize_01(void);
 extern void saImmOmFinalize_02(void);
 extern void saImmOmThreadInterference_01(void);
@@ -369,6 +378,32 @@ __attribute__((constructor)) static void 
saImmOmInitialize_constructor(void)
test_case_add(
1, saImmOmDispatch_04,
"saImmOmDispatch - SA_AIS_ERR_INVALID_PARAM - invalid 
dispatchFlags");
+   test_case_add(
+   1, saImmOmDispatch_05,
+   "saImmOmDispatch - SA_AIS_ERR_BAD_HANDLE - uninitilized handle 
SA_DISPATCH_ONE");
+   test_case_add(
+   1, saImmOmDispatch_06,
+   "saImmOmDispatch - SA_AIS_ERR_BAD_HANDLE - finalized handle 
SA_DISPATCH_ONE");
+   test_case_add(1, saImmOmDispatch_07,
+ "saImmOmDispatch - SA_AIS_OK SA_DISPATCH_BLOCKING");
+   test_case_add(
+   1, saImmOmDispatch_08,
+   "saImmOmDispatch - SA_AIS_ERR_BAD_HANDLE - invalid handle 
SA_DISPATCH_ALL");
+   test_case_add(
+   1, saImmOmDispatch_09,
+   "saImmOmDispatch - SA_AIS_ERR_BAD_HANDLE - uninitilized handle 
SA_DISPATCH_ALL");
+   test_case_add(
+   1, saImmOmDispatch_10,
+   "saImmOmDispatch - SA_AIS_ERR_BAD_HANDLE - finalized handle 
SA_DISPATCH_ALL");
+   test_case_add(
+   1, saImmOmDispatch_11,
+   "saImmOmDispatch - SA_AIS_ERR_BAD_HANDLE - invalid handle 
SA_DISPATCH_BLOCKING");
+   test_case_add(
+ 

Re: [devel] [PATCH 1/1] imm: fix osafimmnd coredump genereted during sanity test [#2947]

2018-11-01 Thread Hans Nordebäck
Ack, review only/Thanks HansN

-Original Message-
From: Vu Minh Nguyen  
Sent: den 29 oktober 2018 10:15
To: Hans Nordebäck ; Lennart Lund 
; Gary Lee 
Cc: opensaf-devel@lists.sourceforge.net; Vu Minh Nguyen 

Subject: [PATCH 1/1] imm: fix osafimmnd coredump genereted during sanity test 
[#2947]

The coredump is generated in the context of processing the message type 
"IMMND_EVT_D2ND_IMPLDELETE" because the memory is corrupted at the time of 
decoding that message.

It allocated 'size' bytes of memory with the boundary in range [0 - 'size - 
1'], but modified - added null terminated, the memory at the index of `size` 
which was out of that range.

This patch fixes such issue. The memory should be allocated with `size + 1` 
bytes in length.
---
 src/imm/common/immsv_evt.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/imm/common/immsv_evt.c b/src/imm/common/immsv_evt.c index 
03a7f8125..c93f82a0f 100644
--- a/src/imm/common/immsv_evt.c
+++ b/src/imm/common/immsv_evt.c
@@ -2898,7 +2898,7 @@ static uint32_t immsv_evt_dec_sublevels(NCS_UBAID *i_ub, 
IMMSV_EVT *o_evt)
implNameList[i].size = ncs_decode_32bit();
ncs_dec_skip_space(i_ub, 4);
 
-   implNameList[i].buf = (char 
*)malloc(implNameList[i].size);
+   implNameList[i].buf = (char 
*)malloc(implNameList[i].size + 1);
if (implNameList[i].buf == NULL ||

ncs_decode_n_octets_from_uba(i_ub,
(uint8_t 
*)implNameList[i].buf,
--
2.18.0



___
Opensaf-devel mailing list
Opensaf-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-devel


[devel] [PATCH 1/1] amf: active amfd should check nodes after reinit with imm [#2949]

2018-11-01 Thread thuan.tran
- When AMFD got IMM BAD_HANDLE, it will try to finalize current OI
and reinit new OI, it make some callbacks are removed without execution.
Try to dispatch OI before finalize it to reinit.
- After reinit OI, check node db to find out node which is not exist
in IMM (in case ccb apply delete node miss execution) then cleanup
SU/COMP relate to the node and delete the node.
---
 src/amf/amfd/imm.cc  |  4 +++
 src/amf/amfd/node.cc | 89 +++-
 src/amf/amfd/node.h  |  1 +
 src/amf/amfd/su.cc   | 79 +-
 4 files changed, 81 insertions(+), 92 deletions(-)

diff --git a/src/amf/amfd/imm.cc b/src/amf/amfd/imm.cc
index 82d2b13..1b14383 100644
--- a/src/amf/amfd/imm.cc
+++ b/src/amf/amfd/imm.cc
@@ -41,6 +41,7 @@
 #include "amf/common/amf_defs.h"
 #include "amf/amfd/imm.h"
 #include "amf/amfd/cluster.h"
+#include "amf/amfd/node.h"
 #include "amf/amfd/app.h"
 #include "amf/amfd/sgtype.h"
 #include "amf/amfd/sg.h"
@@ -2132,6 +2133,8 @@ static void *avd_imm_reinit_bg_thread(void *_cb) {
 
   immutilWrapperProfile.errorsAreFatal = 0;
 
+  /* Try to dispatch imm cb if any, e.g: apply cb, before finalize OI */
+  (void)saImmOiDispatch(avd_cb->immOiHandle, SA_DISPATCH_ALL);
   while (++no_of_retries < MAX_NO_RETRIES) {
 (void)saImmOiFinalize(avd_cb->immOiHandle);
 
@@ -2167,6 +2170,7 @@ static void *avd_imm_reinit_bg_thread(void *_cb) {
 osaf_mutex_unlock_ordie(_reinit_mutex);
 exit(EXIT_FAILURE);
   }
+  avd_check_nodes_after_renit_imm();
 } else {
   /* become applier and re-read the config */
   rc = avd_imm_applier_set();
diff --git a/src/amf/amfd/node.cc b/src/amf/amfd/node.cc
index 201f1fc..eef0a8b 100644
--- a/src/amf/amfd/node.cc
+++ b/src/amf/amfd/node.cc
@@ -153,57 +153,23 @@ AVD_AVND *avd_node_new(const std::string ) {
 void avd_node_delete(AVD_AVND *node) {
   TRACE_ENTER();
   osafassert(node->pg_csi_list.n_nodes == 0);
-  if (node->node_info.nodeId) avd_node_delete_nodeid(node);
-  /* Check if the SUs and related objects are still left. This can
- happen on Standby Amfd when it has just read the configuration
- and before it becomes applier, Act Amfd deletes SUs. Those SUs
- will be left out at Standby Amfd. Though this could be rare.*/
-  if (avd_cb->avail_state_avd != SA_AMF_HA_ACTIVE) {
-if (node->list_of_su.empty() != true) {
-  std::set su_list;
-  std::set comp_list;
-  for (const auto  : node->list_of_su) su_list.insert(su->name);
-  for (std::set::const_iterator iter = su_list.begin();
-   iter != su_list.end(); ++iter) {
-AVD_SU *su = su_db->find(*iter);
-TRACE("Standby Amfd, su '%s' not deleted", su->name.c_str());
-for (const auto  : su->list_of_comp)
-  comp_list.insert(Amf::to_string(>comp_info.name));
-for (std::set::const_iterator iter1 = comp_list.begin();
- iter1 != comp_list.end(); ++iter1) {
-  AVD_COMP *comp = comp_db->find(*iter1);
-  TRACE("Standby Amfd, comp '%s' not deleted",
-osaf_extended_name_borrow(>comp_info.name));
-
-  std::map::iterator it =
-  compcstype_db->begin();
-  while (it != compcstype_db->end()) {
-AVD_COMPCS_TYPE *compcstype = it->second;
-if (compcstype->comp == comp) {
-  TRACE("Standby Amfd, compcstype '%s' not deleted",
-compcstype->name.c_str());
-  it = compcstype_db->erase(it);
-  delete compcstype;
-} else
-  ++it;
-  }
+  if (node->node_info.nodeId) {
+avd_node_delete_nodeid(node);
+  }
 
-  /* Delete the Comp. */
-  struct CcbUtilOperationData opdata;
-  osaf_extended_name_alloc(
-  osaf_extended_name_borrow(>comp_info.name),
-  );
-  comp_ccb_apply_delete_hdlr();
-}
-comp_list.clear();
-/* Delete the SU. */
-struct CcbUtilOperationData opdata;
-opdata.userData = su;
-su_ccb_apply_delete_hdlr();
-  }
-  su_list.clear();
-}
+  std::set su_list;
+  for (const auto  : node->list_of_ncs_su) su_list.insert(su->name);
+  for (const auto  : node->list_of_su) su_list.insert(su->name);
+  for (std::set::const_iterator iter = su_list.begin();
+   iter != su_list.end(); ++iter) {
+AVD_SU *su = su_db->find(*iter);
+LOG_WA("su '%s' not deleted, delete it", su->name.c_str());
+struct CcbUtilOperationData opdata;
+opdata.userData = su;
+su_ccb_apply_delete_hdlr();
   }
+  su_list.clear();
+
   m_AVSV_SEND_CKPT_UPDT_ASYNC_RMV(avd_cb, node, AVSV_CKPT_AVD_NODE_CONFIG);
   node_name_db->erase(node->name);
   delete node;
@@ -1678,3 +1644,28 @@ bool AVD_AVND::is_campaign_set_for_all_sus() const {
 return false;
   }
 }
+
+void avd_check_nodes_after_renit_imm() {
+  TRACE_ENTER();
+  SaImmAccessorHandleT accessorHandle;
+