Hi Zoran, Thanks, just copying osafimmloadd/osafimmpbed manually to payload resolved the issue, can you Please send the patch to separate Imm tools in to a separate RPM and make part of Payload.
-AVM On 2/17/2016 1:27 PM, Zoran Milinkovic wrote: > > Hi Mahesh, > > The problem is in executing osafimmloadd. Check if the file is > corrupted or is missing, as Hung stated. > > BR, > > Zoran > > *From:*A V Mahesh [mailto:mahesh.va...@oracle.com] > *Sent:* Wednesday, February 17, 2016 6:28 AM > *To:* opensaf-devel@lists.sourceforge.net; Zoran Milinkovic; > reddy.neelaka...@oracle.com > *Subject:* Re: [devel] [PATCH 1 of 5] imm: add common library support > for cloud resilience feature [#1625] > > Hi Zoran/Neel, > > I am still facing the problem , the only difference between other > successful testing and my testing is , > i am using RPMS and others are using `make install` > > > ================================== > Feb 17 10:52:14 SC-1 osafimmd[9450]: NO ACT: New Epoch for IMMND > process at node 2030f old epoch: 20 new epoch:21 > Feb 17 10:52:14 SC-1 osafimmd[9450]: NO Attached Nodes:4 Accepted > nodes:4 KnownVeteran:0 doReply:0 > Feb 17 10:52:14 SC-1 osafimmnd[9461]: NO ABT REQUESTING SYNC > Feb 17 10:52:14 SC-1 osafimmd[9450]: WA IMMND on controller (not > currently coord) requests sync > Feb 17 10:52:14 SC-1 osafimmd[9450]: NO Sc Absence Allowed is > configured (900) => IMMND coord at payload node:2040f dest567416481644548 > Feb 17 10:52:14 SC-1 osafimmd[9450]: NO Node 2010f request sync > sync-pid:9461 epoch:0 > Feb 17 10:52:14 SC-1 osafimmnd[9461]: NO SERVER STATE: > IMM_SERVER_LOADING_PENDING --> IMM_SERVER_SYNC_PENDING > Feb 17 10:52:14 SC-1 osafimmnd[9461]: NO NODE STATE-> IMM_NODE_ISOLATED > Feb 17 10:52:14 SC-1 osafimmd[9450]: WA IMMND on controller (not > currently coord) requests sync > Feb 17 10:52:14 SC-1 osafimmd[9450]: NO Sc Absence Allowed is > configured (900) => IMMND coord at payload node:2040f dest567416481644548 > Feb 17 10:52:14 SC-1 osafimmd[9450]: NO Node 2020f request sync > sync-pid:8283 epoch:0 > Feb 17 10:52:18 SC-1 osafimmd[9450]: NO Successfully announced sync. > New ruling epoch:22 > Feb 17 10:52:18 SC-1 osafimmnd[9461]: NO NODE STATE-> IMM_NODE_W_AVAILABLE > Feb 17 10:52:18 SC-1 osafimmnd[9461]: NO SERVER STATE: > IMM_SERVER_SYNC_PENDING --> IMM_SERVER_SYNC_CLIENT > Feb 17 10:52:18 SC-1 osafimmd[9450]: NO ACT: New Epoch for IMMND > process at node 2040f old epoch: 21 new epoch:22 > Feb 17 10:52:18 SC-1 osafimmd[9450]: NO Attached Nodes:4 Accepted > nodes:4 KnownVeteran:0 doReply:0 > Feb 17 10:52:18 SC-1 osafimmd[9450]: WA Successfully aborted sync. > Epoch:22 > Feb 17 10:52:18 SC-1 osafimmnd[9461]: WA Global ABORT SYNC received > for epoch 22 > Feb 17 10:52:18 SC-1 osafimmnd[9461]: WA SERVER STATE: > IMM_SERVER_SYNC_CLIENT --> IMM_SERVER_LOADING_PENDING (sync aborted) > Feb 17 10:52:18 SC-1 osafimmnd[9461]: NO NODE STATE-> IMM_NODE_UNKNOW 2624 > Feb 17 10:52:18 SC-1 osafimmnd[9461]: NO Abort sync: Discarding synced > objects > Feb 17 10:52:18 SC-1 osafimmnd[9461]: NO Abort sync: Discarding synced > classes > Feb 17 10:52:18 SC-1 osafimmd[9450]: NO ACT: New Epoch for IMMND > process at node 2030f old epoch: 21 new epoch:22 > Feb 17 10:52:18 SC-1 osafimmd[9450]: NO Attached Nodes:4 Accepted > nodes:4 KnownVeteran:0 doReply:0 > Feb 17 10:52:18 SC-1 osafimmnd[9461]: NO ABT REQUESTING SYNC > Feb 17 10:52:18 SC-1 osafimmnd[9461]: NO SERVER STATE: > IMM_SERVER_LOADING_PENDING --> IMM_SERVER_SYNC_PENDING > Feb 17 10:52:18 SC-1 osafimmd[9450]: WA IMMND on controller (not > currently coord) requests sync > Feb 17 10:52:18 SC-1 osafimmnd[9461]: NO NODE STATE-> IMM_NODE_ISOLATED > Feb 17 10:52:18 SC-1 osafimmd[9450]: NO Sc Absence Allowed is > configured (900) => IMMND coord at payload node:2040f dest567416481644548 > Feb 17 10:52:18 SC-1 osafimmd[9450]: NO Node 2010f request sync > sync-pid:9461 epoch:0 > Feb 17 10:52:18 SC-1 osafimmd[9450]: WA IMMND on controller (not > currently coord) requests sync > Feb 17 10:52:18 SC-1 osafimmd[9450]: NO Sc Absence Allowed is > configured (900) => IMMND coord at payload node:2040f dest567416481644548 > Feb 17 10:52:18 SC-1 osafimmd[9450]: NO Node 2020f request sync > sync-pid:8283 epoch:0 > > Feb 17 10:52:04 SC-2 osafimmnd[8283]: NO NODE STATE-> IMM_NODE_W_AVAILABLE > Feb 17 10:52:04 SC-2 osafimmnd[8283]: NO SERVER STATE: > IMM_SERVER_SYNC_PENDING --> IMM_SERVER_SYNC_CLIENT > Feb 17 10:52:04 SC-2 osafimmd[8272]: NO SBY: New Epoch for IMMND > process at node 2040f old epoch: 17 new epoch:18 > Feb 17 10:52:04 SC-2 osafimmd[8272]: NO IMMND coord at 2040f > Feb 17 10:52:04 SC-2 osafimmd[8272]: NO IMMND coord at 2040f > Feb 17 10:52:04 SC-2 osafimmnd[8283]: WA Global ABORT SYNC received > for epoch 18 > Feb 17 10:52:04 SC-2 osafimmnd[8283]: WA SERVER STATE: > IMM_SERVER_SYNC_CLIENT --> IMM_SERVER_LOADING_PENDING (sync aborted) > Feb 17 10:52:04 SC-2 osafimmnd[8283]: NO NODE STATE-> IMM_NODE_UNKNOW 2624 > Feb 17 10:52:04 SC-2 osafimmnd[8283]: NO Abort sync: Discarding synced > objects > Feb 17 10:52:04 SC-2 osafimmnd[8283]: NO Abort sync: Discarding synced > classes > Feb 17 10:52:04 SC-2 osafimmd[8272]: NO SBY: New Epoch for IMMND > process at node 2030f old epoch: 17 new epoch:18 > Feb 17 10:52:04 SC-2 osafimmnd[8283]: NO ABT REQUESTING SYNC > Feb 17 10:52:04 SC-2 osafimmnd[8283]: NO SERVER STATE: > IMM_SERVER_LOADING_PENDING --> IMM_SERVER_SYNC_PENDING > Feb 17 10:52:04 SC-2 osafimmnd[8283]: NO NODE STATE-> IMM_NODE_ISOLATED > Feb 17 10:52:07 SC-2 osafimmd[8272]: NO SBY: Ruling epoch noted as:19 > Feb 17 10:52:07 SC-2 osafimmd[8272]: NO IMMND coord at 2040f > Feb 17 10:52:07 SC-2 osafimmnd[8283]: NO NODE STATE-> IMM_NODE_W_AVAILABLE > Feb 17 10:52:07 SC-2 osafimmnd[8283]: NO SERVER STATE: > IMM_SERVER_SYNC_PENDING --> IMM_SERVER_SYNC_CLIENT > Feb 17 10:52:07 SC-2 osafimmd[8272]: NO SBY: New Epoch for IMMND > process at node 2040f old epoch: 18 new epoch:19 > Feb 17 10:52:07 SC-2 osafimmd[8272]: NO IMMND coord at 2040f > Feb 17 10:52:07 SC-2 osafimmd[8272]: NO IMMND coord at 2040f > Feb 17 10:52:07 SC-2 osafimmnd[8283]: WA Global ABORT SYNC received > for epoch 19 > Feb 17 10:52:07 SC-2 osafimmnd[8283]: WA SERVER STATE: > IMM_SERVER_SYNC_CLIENT --> IMM_SERVER_LOADING_PENDING (sync aborted) > Feb 17 10:52:07 SC-2 osafimmnd[8283]: NO NODE STATE-> IMM_NODE_UNKNOW 2624 > Feb 17 10:52:07 SC-2 osafimmnd[8283]: NO Abort sync: Discarding synced > objects > Feb 17 10:52:07 SC-2 osafimmnd[8283]: NO Abort sync: Discarding synced > classes > Feb 17 10:52:07 SC-2 osafimmd[8272]: NO SBY: New Epoch for IMMND > process at node 2030f old epoch: 18 new epoch:19 > Feb 17 10:52:07 SC-2 osafimmnd[8283]: NO ABT REQUESTING SYNC > Feb 17 10:52:07 SC-2 osafimmnd[8283]: NO SERVER STATE: > IMM_SERVER_LOADING_PENDING --> IMM_SERVER_SYNC_PENDING > Feb 17 10:52:07 SC-2 osafimmnd[8283]: NO NODE STATE-> IMM_NODE_ISOLATED > > > Feb 17 10:51:12 PL-3 osafimmnd[5293]: NO NODE STATE-> > IMM_NODE_FULLY_AVAILABLE (2610) > Feb 17 10:51:17 PL-3 osafimmnd[5293]: NO NODE STATE-> IMM_NODE_R_AVAILABLE > Feb 17 10:51:17 PL-3 osafimmnd[5293]: WA Global ABORT SYNC received > for epoch 7 > Feb 17 10:51:17 PL-3 osafimmnd[5293]: NO Epoch set to 7 in ImmModel > Feb 17 10:51:17 PL-3 osafimmnd[5293]: NO NODE STATE-> > IMM_NODE_FULLY_AVAILABLE (2610) > Feb 17 10:51:21 PL-3 osafimmnd[5293]: NO NODE STATE-> IMM_NODE_R_AVAILABLE > Feb 17 10:51:21 PL-3 osafimmnd[5293]: WA Global ABORT SYNC received > for epoch 8 > Feb 17 10:51:21 PL-3 osafimmnd[5293]: NO Epoch set to 8 in ImmModel > Feb 17 10:51:21 PL-3 osafimmnd[5293]: NO NODE STATE-> > IMM_NODE_FULLY_AVAILABLE (2610) > Feb 17 10:51:25 PL-3 osafimmnd[5293]: NO NODE STATE-> IMM_NODE_R_AVAILABLE > Feb 17 10:51:25 PL-3 osafimmnd[5293]: WA Global ABORT SYNC received > for epoch 9 > Feb 17 10:51:25 PL-3 osafimmnd[5293]: NO Epoch set to 9 in ImmModel > Feb 17 10:51:25 PL-3 osafimmnd[5293]: NO NODE STATE-> > IMM_NODE_FULLY_AVAILABLE (2610) > Feb 17 10:51:30 PL-3 osafimmnd[5293]: NO NODE STATE-> IMM_NODE_R_AVAILABLE > Feb 17 10:51:30 PL-3 osafimmnd[5293]: WA Global ABORT SYNC received > for epoch 10 > Feb 17 10:51:30 PL-3 osafimmnd[5293]: NO Epoch set to 10 in ImmModel > Feb 17 10:51:30 PL-3 osafimmnd[5293]: NO NODE STATE-> > IMM_NODE_FULLY_AVAILABLE (2610) > Feb 17 10:51:34 PL-3 osafimmnd[5293]: NO NODE STATE-> IMM_NODE_R_AVAILABLE > Feb 17 10:51:34 PL-3 osafimmnd[5293]: WA Global ABORT SYNC received > for epoch 11 > Feb 17 10:51:34 PL-3 osafimmnd[5293]: NO Epoch set to 11 in ImmModel > Feb 17 10:51:34 PL-3 osafimmnd[5293]: NO NODE STATE-> > IMM_NODE_FULLY_AVAILABLE (2610) > Feb 17 10:51:38 PL-3 osafimmnd[5293]: NO NODE STATE-> IMM_NODE_R_AVAILABLE > Feb 17 10:51:38 PL-3 osafimmnd[5293]: WA Global ABORT SYNC received > for epoch 12 > Feb 17 10:51:38 PL-3 osafimmnd[5293]: NO Epoch set to 12 in ImmModel > Feb 17 10:51:38 PL-3 osafimmnd[5293]: NO NODE STATE-> > IMM_NODE_FULLY_AVAILABLE (2610) > Feb 17 10:51:43 PL-3 osafimmnd[5293]: NO NODE STATE-> IMM_NODE_R_AVAILABLE > > > > Feb 17 10:51:20 PL-4 osafimmnd[5276]: NO NODE STATE-> IMM_NODE_R_AVAILABLE > Feb 17 10:51:20 PL-4 osafimmnd[5381]: ER osafimmnd failed to exec > sync, error 2, exiting > Feb 17 10:51:20 PL-4 osafimmnd[5276]: ER SYNC APPARENTLY FAILED status:1 > Feb 17 10:51:20 PL-4 osafimmnd[5276]: NO -SERVER STATE: > IMM_SERVER_SYNC_SERVER --> IMM_SERVER_READY > Feb 17 10:51:20 PL-4 osafimmnd[5276]: NO NODE STATE-> > IMM_NODE_FULLY_AVAILABLE (2610) > Feb 17 10:51:20 PL-4 osafimmnd[5276]: NO Epoch set to 8 in ImmModel > Feb 17 10:51:20 PL-4 osafimmnd[5276]: NO Coord broadcasting > ABORT_SYNC, epoch:8 > Feb 17 10:51:20 PL-4 osafimmnd[5276]: WA Global ABORT SYNC received > for epoch 8 > Feb 17 10:51:24 PL-4 osafimmnd[5276]: NO Announce sync, epoch:9 > Feb 17 10:51:24 PL-4 osafimmnd[5276]: NO SERVER STATE: > IMM_SERVER_READY --> IMM_SERVER_SYNC_SERVER > Feb 17 10:51:24 PL-4 osafimmnd[5276]: NO NODE STATE-> IMM_NODE_R_AVAILABLE > Feb 17 10:51:24 PL-4 osafimmnd[5386]: ER osafimmnd failed to exec > sync, error 2, exiting > Feb 17 10:51:25 PL-4 osafimmnd[5276]: ER SYNC APPARENTLY FAILED status:1 > Feb 17 10:51:25 PL-4 osafimmnd[5276]: NO -SERVER STATE: > IMM_SERVER_SYNC_SERVER --> IMM_SERVER_READY > Feb 17 10:51:25 PL-4 osafimmnd[5276]: NO NODE STATE-> > IMM_NODE_FULLY_AVAILABLE (2610) > Feb 17 10:51:25 PL-4 osafimmnd[5276]: NO Epoch set to 9 in ImmModel > Feb 17 10:51:25 PL-4 osafimmnd[5276]: NO Coord broadcasting > ABORT_SYNC, epoch:9 > Feb 17 10:51:25 PL-4 osafimmnd[5276]: WA Global ABORT SYNC received > for epoch 9 > Feb 17 10:51:29 PL-4 osafimmnd[5276]: NO Announce sync, epoch:10 > Feb 17 10:51:29 PL-4 osafimmnd[5276]: NO SERVER STATE: > IMM_SERVER_READY --> IMM_SERVER_SYNC_SERVER > Feb 17 10:51:29 PL-4 osafimmnd[5276]: NO NODE STATE-> IMM_NODE_R_AVAILABLE > Feb 17 10:51:29 PL-4 osafimmnd[5387]: ER osafimmnd failed to exec > sync, error 2, exiting > Feb 17 10:51:29 PL-4 osafimmnd[5276]: ER SYNC APPARENTLY FAILED status:1 > Feb 17 10:51:29 PL-4 osafimmnd[5276]: NO -SERVER STATE: > IMM_SERVER_SYNC_SERVER --> IMM_SERVER_READY > Feb 17 10:51:29 PL-4 osafimmnd[5276]: NO NODE STATE-> > IMM_NODE_FULLY_AVAILABLE (2610) > Feb 17 10:51:29 PL-4 osafimmnd[5276]: NO Epoch set to 10 in ImmModel > Feb 17 10:51:29 PL-4 osafimmnd[5276]: NO Coord broadcasting > ABORT_SYNC, epoch:10 > Feb 17 10:51:29 PL-4 osafimmnd[5276]: WA Global ABORT SYNC received > for epoch 10 > ============================================== > > On 2/12/2016 10:53 AM, A V Mahesh wrote: > > Hi Zoran/Neel, > > As part of reviewing/testing CPSV headless state V2 [#1621] , we > bring down the both SC`s and > bring up both SC`s in reverse order ( old active as new standby , > old standby as new active) > which is piratical case where you cannot control heads joining > sequence, > as a result heads never joined the cluster and cluster went for > reboot. > > I s this supported or not in headless state ? > > ============================================== > Feb 12 10:41:13 SC-2 osafimmnd[30074]: NO SERVER STATE: > IMM_SERVER_SYNC_PENDING --> IMM_SERVER_SYNC_CLIENT > Feb 12 10:41:13 SC-2 osafimmd[29890]: NO SBY: New Epoch for IMMND > process at node 2040f old epoch: 198 new epoch:199 > Feb 12 10:41:13 SC-2 osafimmd[29890]: NO IMMND coord at 2040f > Feb 12 10:41:13 SC-2 osafimmd[29890]: NO IMMND coord at 2040f > Feb 12 10:41:13 SC-2 osafimmnd[30074]: WA Global ABORT SYNC > received for epoch 199 > Feb 12 10:41:13 SC-2 osafimmnd[30074]: WA SERVER STATE: > IMM_SERVER_SYNC_CLIENT --> IMM_SERVER_LOADING_PENDING (sync aborted) > Feb 12 10:41:13 SC-2 osafimmnd[30074]: NO NODE STATE-> > IMM_NODE_UNKNOW 2621 > Feb 12 10:41:13 SC-2 osafimmnd[30074]: NO Abort sync: Discarding > synced objects > Feb 12 10:41:13 SC-2 osafimmnd[30074]: NO Abort sync: Discarding > synced classes > Feb 12 10:41:13 SC-2 osafimmd[29890]: NO SBY: New Epoch for IMMND > process at node 2030f old epoch: 198 new epoch:199 > Feb 12 10:41:13 SC-2 osafimmnd[30074]: NO ABT REQUESTING SYNC > Feb 12 10:41:13 SC-2 osafimmnd[30074]: NO SERVER STATE: > IMM_SERVER_LOADING_PENDING --> IMM_SERVER_SYNC_PENDING > Feb 12 10:41:13 SC-2 osafimmnd[30074]: NO NODE STATE-> > IMM_NODE_ISOLATED > Feb 12 10:41:17 SC-2 kernel: [71593.180556] tipc: Resetting link > <1.1.2:eth2-1.1.3:eth1>, changeover initiated by peer > Feb 12 10:41:17 SC-2 kernel: [71593.180562] tipc: Lost link > <1.1.2:eth2-1.1.3:eth1> on network plane B > Feb 12 10:41:17 SC-2 kernel: [71593.192851] tipc: Resetting link > <1.1.2:eth2-1.1.4:eth2>, changeover initiated by peer > Feb 12 10:41:17 SC-2 kernel: [71593.192857] tipc: Lost link > <1.1.2:eth2-1.1.4:eth2> on network plane B > Feb 12 10:41:19 SC-2 osafimmd[29890]: WA Message count:11144 + 1 > != 11144 > Feb 12 10:41:19 SC-2 kernel: [71595.365041] tipc: Resetting link > <1.1.2:eth3-1.1.3:eth4>, peer not responding > Feb 12 10:41:19 SC-2 kernel: [71595.365047] tipc: Lost link > <1.1.2:eth3-1.1.3:eth4> on network plane A > Feb 12 10:41:19 SC-2 kernel: [71595.365051] tipc: Lost contact > with <1.1.3> > Feb 12 10:41:19 SC-2 kernel: [71595.372092] tipc: Resetting link > <1.1.2:eth3-1.1.4:eth0>, peer not responding > Feb 12 10:41:19 SC-2 kernel: [71595.372100] tipc: Lost link > <1.1.2:eth3-1.1.4:eth0> on network plane A > Feb 12 10:41:19 SC-2 kernel: [71595.372105] tipc: Lost contact > with <1.1.4> > Feb 12 10:41:19 SC-2 osafimmd[29890]: ER Standby IMMD recieved > reset message. All IMMNDs will restart. > Feb 12 10:41:19 SC-2 osafimmd[29890]: ER IMM RELOAD with NO > persistent back end => ensure cluster restart by IMMD exit at both > SCs, exiting > Feb 12 10:41:20 SC-2 osafimmnd[30074]: WA SC Absence IS > allowed:900 IMMD service is DOWN > Feb 12 10:41:20 SC-2 osafimmnd[30074]: WA IMMND was being synced > or loaded (6), has to restart > Feb 12 10:41:20 SC-2 opensafd[29839]: ER Could Not RESPAWN IMMND > Feb 12 10:41:20 SC-2 opensafd[29839]: ER Failed DESC:IMMND > Feb 12 10:41:20 SC-2 opensafd[29839]: ER Trying To RESPAWN > /usr/lib64/opensaf/clc-cli/osaf-immnd attempt #2 > Feb 12 10:41:20 SC-2 opensafd[29839]: ER Sending SIGABRT to IMMND, > pid=30074, (origin parent pid=30068) > Feb 12 10:41:35 SC-2 osafimmnd[30187]: Started > ============================================== > > > > On 2/3/2016 5:05 PM, Hung Nguyen wrote: > > Hi Zoran, > > Please find my comments inline. > > > BR, > > Hung Nguyen - DEK Technologies > > > > -------------------------------------------------------------------------------- > > From: Zoran Milinkovic zoran.milinko...@ericsson.com > <mailto:zoran.milinko...@ericsson.com> > Sent: Tuesday, December 22, 2015 9:14PM > To: Neelakanta Reddy > reddy.neelaka...@oracle.com <mailto:reddy.neelaka...@oracle.com> > Cc: Opensaf-devel > opensaf-devel@lists.sourceforge.net > <mailto:opensaf-devel@lists.sourceforge.net> > Subject: [devel] [PATCH 1 of 5] imm: add common library support > for cloud resilience feature [#1625] > > > osaf/libs/common/immsv/immpbe_dump.cc | 378 > +++++++++++++++++++++++++- > osaf/libs/common/immsv/immsv_evt.c | 43 ++ > osaf/libs/common/immsv/include/immpbe_dump.hh | 2 +- > osaf/libs/common/immsv/include/immsv_api.h | 1 + > osaf/libs/common/immsv/include/immsv_evt.h | 17 +- > 5 files changed, 430 insertions(+), 11 deletions(-) > > > The patch contains IMM common library code for cloud resilience > feature > > diff --git a/osaf/libs/common/immsv/immpbe_dump.cc > b/osaf/libs/common/immsv/immpbe_dump.cc > --- a/osaf/libs/common/immsv/immpbe_dump.cc > +++ b/osaf/libs/common/immsv/immpbe_dump.cc > @@ -1185,6 +1185,359 @@ bailout: > exit(1); > } > +static bool verifyAttributeValuePBE(const char *attrVal, > + SaImmAttrValueT value, SaImmValueTypeT attrType) { > + > + if(!attrVal && !value) { > + return true; > + } > + if(!attrVal || !value) { > + return false; > + } > + > + switch(attrType) { > + case SA_IMM_ATTR_SADOUBLET: { > + char val[50]; > + snprintf(val, 50, "%.15g", *(double *)value); > + return strtod(attrVal, NULL) == strtod(val, NULL); > + } > + > + case SA_IMM_ATTR_SAFLOATT: > + return strtof(attrVal, NULL) == *(float *)value; > + > + case SA_IMM_ATTR_SAUINT32T: > + return strtoul(attrVal, NULL, 10) == *(SaUint32T > *)value; > + > + case SA_IMM_ATTR_SAINT32T: > + return strtol(attrVal, NULL, 10) == *(SaInt32T *)value; > + > + case SA_IMM_ATTR_SAUINT64T: > + return strtoull(attrVal, NULL, 10) == *(SaUint64T > *)value; > + > + case SA_IMM_ATTR_SATIMET: > + case SA_IMM_ATTR_SAINT64T: > + return strtoll(attrVal, NULL, 10) == *(SaInt64T *)value; > + > + case SA_IMM_ATTR_SASTRINGT: > + return strcmp(attrVal, *(SaStringT *)value) == 0; > + > + case SA_IMM_ATTR_SANAMET: > + return strcmp(attrVal, > osaf_extended_name_borrow((SaNameT *)value)) == 0; > + > + case SA_IMM_ATTR_SAANYT: { > + std::ostringstream ost; > + SaAnyT *any = (SaAnyT *)value; > + > + for (unsigned int i = 0; i < any->bufferSize; i++) { > + ost << std::hex > + << (((int)any->bufferAddr[i] < 0x10)? > "0":"") > + << (int)any->bufferAddr[i]; > + } > + > + return strcmp(ost.str().c_str(), attrVal) == 0; > + } > + > + default: > + LOG_ER("UNKNOWN ATTRIBUTE TYPE: %d", attrType); > + abort(); > + } > + > + return false; > +} > + > +static bool verifyObjectAttributePBE(const char *attrVal, > SaImmAttrValuesT_2 *attr) { > + unsigned int i; > + > + if(!attrVal && attr->attrValuesNumber == 0) { > + return true; > + } > + > + for(i=0; i<attr->attrValuesNumber; i++) { > + if(verifyAttributeValuePBE(attrVal, attr->attrValues[i], > attr->attrValueType)) { > + return true; > + } > + } > + > + return false; > +} > + > +static bool verifyClassObjectsPBE(std::string classNameString, > + SaImmHandleT immHandle, > + void* db_handle) > +{ > + sqlite3* dbHandle = (sqlite3 *) db_handle; > + SaImmSearchHandleT searchHandle = 0; > + SaImmSearchParametersT_2 searchParam; > + const char *className = classNameString.c_str(); > + SaAisErrorT err; > + std::string sql; > + char **result = NULL; > + int nrow; > + int ncol; > + char *errmsg; > + int n, c, r, i; > + int attrPos; > + int objectCounter = 0; > + std::map<std::string, int> rdnMap; // <RDN, row in the > result> > + std::map<std::string, int>::iterator rmi; > + SaStringT objectName; > + SaImmAttrValuesT_2 **attributes; > + SaImmAttrDefinitionT_2 **attrDefinitions = NULL; > + SaImmClassCategoryT classCategory; > + int rdnAttrDefIndex = -1; > + bool ok = true; > + int rc; > + > + TRACE_ENTER(); > + > + err = saImmOmClassDescriptionGet_2(immHandle, > (SaImmClassNameT)className, &classCategory, &attrDefinitions); > + if(err != SA_AIS_OK) { > + LOG_ER("Cannot fetch class description for class '%s': > %d", className, err); > + TRACE_LEAVE(); > + return false; > + } > + > + // Skip runtime classes > + if(classCategory == SA_IMM_CLASS_RUNTIME) { > + saImmOmClassDescriptionMemoryFree_2(immHandle, > attrDefinitions); > + TRACE_LEAVE(); > + return true; > + } > + > + for(i=0; attrDefinitions[i]; i++) { > + if(attrDefinitions[i]->attrFlags & SA_IMM_ATTR_RDN) { > + rdnAttrDefIndex = i; > + } > + } > + > + if(attrDefinitions[i]) { > + // This should never happen > + LOG_ER("Cannot find RDN attribute in search result for > class '%s'", className); > + abort(); > + } > + > + searchParam.searchOneAttr.attrName = > (SaImmAttrNameT)"SaImmAttrClassName"; > + searchParam.searchOneAttr.attrValue = &className; > + searchParam.searchOneAttr.attrValueType = SA_IMM_ATTR_SASTRINGT; > + > + err = saImmOmSearchInitialize_2(immHandle, NULL, SA_IMM_SUBTREE, > + SA_IMM_SEARCH_ONE_ATTR | SA_IMM_SEARCH_GET_ALL_ATTR | > SA_IMM_SEARCH_PERSISTENT_ATTRS, > + &searchParam, NULL, &searchHandle); > + if(err != SA_AIS_OK) { > + LOG_ER("Cannot fetch objects of class '%s' from IMM: %d", > className, err); > + goto bailout; > + } > + > + sql = "SELECT o.dn, c.* FROM objects o, "; > + sql.append(className); > + sql.append(" c WHERE o.obj_id = c.obj_id"); > + rc = sqlite3_get_table(dbHandle, sql.c_str(), &result, &nrow, > &ncol, &errmsg); > + if(rc) { > + LOG_ER("SQL statement ('%s') failed. Reason: %s", > sql.c_str(), errmsg); > + goto bailout; > + } > + > + // Map object DNs for fast search > + for(n=1; n<=nrow; n++) { > + rdnMap[result[n * ncol]] = n; > + } > + > + // Iterate through IMM search result and check attributes > + while((err = saImmOmSearchNext_o3(searchHandle, &objectName, > &attributes)) == SA_AIS_OK) { > + // Increase object counter > + objectCounter++; > + > + // Skip checking IMM object > + if(!strcmp(objectName, > "opensafImm=opensafImm,safApp=safImmService") || > + !strcmp(objectName, > "safRdn=immManagement,safApp=safImmService")) { > + continue; > + } > + > + // Find object index in the fetched result > + rmi = rdnMap.find(objectName); > + if(rmi == rdnMap.end()) { > + LOG_ER("IMM object '%s' cannot be found in PBE > database", objectName); > + goto bailout; > + } > + > + // Check each attribute > + for(i=0; attrDefinitions[i]; i++) { > + // Don't check RDN attribute > + if(i == rdnAttrDefIndex) { > + continue; > + } > + > + /* Skip persistent attributes. > + * TODO: Should persistent runtime data be checked ??? > + */ > + if(attrDefinitions[i]->attrFlags & > SA_IMM_ATTR_RUNTIME) { > + continue; > + } > + > + // Skip default attributes > + if(!strcmp(attrDefinitions[i]->attrName, > "SaImmAttrImplementerName") || > + !strcmp(attrDefinitions[i]->attrName, "SaImmAttrClassName") || > + !strcmp(attrDefinitions[i]->attrName, "SaImmAttrAdminOwnerName")) { > + continue; > + } > + > + // Find attribute from the search result > + for(attrPos=0; attributes[attrPos]; attrPos++) { > + if(!strcmp(attributes[attrPos]->attrName, > attrDefinitions[i]->attrName)) { > + break; > + } > + } > + if(!attributes[attrPos]) { > + LOG_ER("Cannot find attribute '%s' in object '%s' > in the search result", > + attrDefinitions[i]->attrName, objectName); > + goto bailout; > + } > + > + if(attrDefinitions[i]->attrFlags & > SA_IMM_ATTR_MULTI_VALUE) { > + // Check multi value attribute > + char **res; > + int nr, nc; // number of rows and columns > + > + // Create SQL statements to fetch multi values > + switch(attrDefinitions[i]->attrValueType) { > + case SA_IMM_ATTR_SADOUBLET: > + case SA_IMM_ATTR_SAFLOATT: > + sql = "SELECT real_val FROM > objects_real_multi WHERE obj_id = "; > + sql.append(result[rmi->second * ncol + 1]); > + sql.append(" AND attr_name = '"); > + sql.append(attrDefinitions[i]->attrName); > + sql.append("'"); > + break; > + > + case SA_IMM_ATTR_SAINT32T: > + case SA_IMM_ATTR_SAINT64T: > + case SA_IMM_ATTR_SAUINT32T: > + case SA_IMM_ATTR_SAUINT64T: > + case SA_IMM_ATTR_SATIMET: > + sql = "SELECT int_val FROM > objects_int_multi WHERE obj_id = "; > + sql.append(result[rmi->second * ncol + 1]); > + sql.append(" AND attr_name = '"); > + sql.append(attrDefinitions[i]->attrName); > + sql.append("'"); > + break; > + > + case SA_IMM_ATTR_SASTRINGT: > + case SA_IMM_ATTR_SANAMET: > + sql = "SELECT text_val FROM > objects_text_multi WHERE obj_id = "; > + sql.append(result[rmi->second * ncol + 1]); > + sql.append(" AND attr_name = '"); > + sql.append(attrDefinitions[i]->attrName); > + sql.append("'"); > + break; > + > + case SA_IMM_ATTR_SAANYT: > + sql = "SELECT real_val FROM > objects_real_multi WHERE obj_id = "; > + sql.append(result[rmi->second * ncol + 1]); > + sql.append(" AND attr_name = '"); > + sql.append(attrDefinitions[i]->attrName); > + sql.append("'"); > + break; > + > + default: > + LOG_ER("UNKOWN attribute type: %d", > attrDefinitions[i]->attrValueType); > + abort(); > + } > + > + // Execute SQL > + if(sqlite3_get_table(dbHandle, sql.c_str(), &res, > &nr, &nc, &errmsg) != SQLITE_OK) { > + LOG_ER("Cannot fetch values for attribute > '%s' in class '%s'. Reason: %s", > + attrDefinitions[i]->attrName, className, errmsg); > + goto bailout; > + } > + > + // First multi value check. Check number of values > + if(nr != > (int)attributes[attrPos]->attrValuesNumber) { > + LOG_ER("Mismatch in number of multi value > attributes in attribute '%s' in object '%s'", > + attributes[attrPos]->attrName, objectName); > + ok = false; > + goto finish; > + } > + > + for(r=1; r<=nr; r++) { > + // First loop. res vs. attributes > + if(!verifyObjectAttributePBE(res[r], > attributes[attrPos])) { > + LOG_ER("Cannot match value for multi > value attribute '%s' in object '%s'", > + attributes[attrPos]->attrName, objectName); > + // Values do not match > + ok = false; > + goto finish; > + } > + // Second loop. attributes vs. res > + for(n=0; n<nr; n++) { > + if(verifyAttributeValuePBE(res[r], > attributes[attrPos]->attrValues[n], > attributes[attrPos]->attrValueType)) { > + // Found value > + break; > + } > + } > + if(n == nr) { > + LOG_ER("Cannot match value for multi > value attribute '%s' in object '%s'.", > + attributes[attrPos]->attrName, objectName); > + // Values didn't match in the second loop > + ok = false; > + goto finish; > + } > + } > + > +finish: > + sqlite3_free_table(res); > + if(!ok) { > + goto bailout; > + } > + } else { // Check non-multi value attribute > + // Find column in 'result' > + for(c=2; c<ncol; c++) { > + if(!strcmp(attrDefinitions[i]->attrName, result[c])) { > + break; > + } > + } > + > + // Verify fetched value against value from the > search result > + if(!verifyObjectAttributePBE(result[rmi->second * ncol + c], > attributes[attrPos])) { > + LOG_ER("Cannot match attribute value for > attribute '%s' in object '%s'", > + attributes[attrPos]->attrName, objectName); > + goto bailout; > + } > + } > + } > + } > + > + saImmOmSearchFinalize(searchHandle); > + sqlite3_free_table(result); > + saImmOmClassDescriptionMemoryFree_2(immHandle, attrDefinitions); > + > + if(objectCounter != nrow) { > + LOG_ER("Mismatch in number of objects between IMM > database and PBE database"); > + TRACE_LEAVE(); > + return false; > + } > + > + TRACE_LEAVE(); > + > + return true; > + > +bailout: > + if(result) { > + sqlite3_free_table(result); > + } > + > + if(searchHandle) { > + saImmOmSearchFinalize(searchHandle); > + } > + > + if(attrDefinitions) { > + saImmOmClassDescriptionMemoryFree_2(immHandle, > attrDefinitions); > + } > + > + TRACE_LEAVE(); > + > + return false; > +} > + > static ClassInfo* verifyClassPBE(std::string classNameString, > SaImmHandleT immHandle, > void* db_handle) > @@ -1199,11 +1552,9 @@ static ClassInfo* verifyClassPBE(std::st > SaImmAttrDefinitionT_2 **attrDefinitions; > SaAisErrorT errorCode; > /* > - This function does very little verification right now. It > should do more. > - Reason is we are re-attaching to a DB file after a gap > during which we do not know > - what has happened to that file. We should at least verify > that the number of classes > - and number of objects match. Each object should really have > a checksum. > - Verification of objects should be a separate function > verifyObjectPBE. > + We are re-attaching to a DB file after a gap during which > we do not know > + what has happened to that file. We should at least verify > that the number > + of classes and number of objects match. > */ > TRACE_ENTER(); > @@ -2509,7 +2860,7 @@ bool dumpClassesToPbe(SaImmHandleT immHa > return false; > } > -int verifyPbeState(SaImmHandleT immHandle, ClassMap > *classIdMap, void* db_handle) > +int verifyPbeState(SaImmHandleT immHandle, ClassMap *classIdMap, > void* db_handle, bool pbeVerifyObjects) > { > /* Function used only when re-connecting to an already > existing DB file. */ > std::list<std::string> classNameList; > @@ -2524,6 +2875,8 @@ int verifyPbeState(SaImmHandleT immHandl > int nrows=0; > int ncols=0; > bool badfile=false; > + bool verified; > + > TRACE_ENTER(); > classNameList = getClassNames(immHandle); > @@ -2542,11 +2895,20 @@ int verifyPbeState(SaImmHandleT immHandl > ClassInfo* cl_info = verifyClassPBE((*it), immHandle, > dbHandle); > if(cl_info) { > (*classIdMap)[(*it)] = cl_info; > - it++; > } else { > badfile=true; > goto bailout; > } > + > + if(pbeVerifyObjects) { > + verified = verifyClassObjectsPBE((*it), immHandle, > dbHandle); > + if(!verified) { > + badfile=true; > + goto bailout; > + } > + } > + > + it++; > } > rc = sqlite3_get_table(dbHandle, sqlQ.c_str(), &result, > &nrows, &ncols, &qErr); > @@ -3816,7 +4178,7 @@ SaAisErrorT getCcbOutcomeFromPbe(void* d > return SA_AIS_ERR_LIBRARY; > } > -int verifyPbeState(SaImmHandleT immHandle, ClassMap > *classIdMap, void* db_handle) > +int verifyPbeState(SaImmHandleT immHandle, ClassMap *classIdMap, > void* db_handle, bool pbeVerifyObjects) > { > abort(); > return 0; > diff --git a/osaf/libs/common/immsv/immsv_evt.c > b/osaf/libs/common/immsv/immsv_evt.c > --- a/osaf/libs/common/immsv/immsv_evt.c > +++ b/osaf/libs/common/immsv/immsv_evt.c > @@ -2908,6 +2908,27 @@ static uint32_t immsv_evt_enc_toplevel(I > ncs_enc_claim_space(o_ub, 4); > /* immdevt->info.ctrl_msg.pbeFile.buf encoded > by sublevel */ > } > + > + if((immdevt->info.ctrl_msg.refresh == 2) && > + (immdevt->type == IMMD_EVT_ND2D_INTRO)) { /* > Intro after IMMD restart. */ > + > + IMMSV_RSRV_SPACE_ASSERT(p8, o_ub, 8); > + ncs_encode_64bit(&p8, > immdevt->info.ctrl_msg.fevs_count); > + ncs_enc_claim_space(o_ub, 8); > + > + IMMSV_RSRV_SPACE_ASSERT(p8, o_ub, 4); > + ncs_encode_32bit(&p8, > immdevt->info.ctrl_msg.admo_id_count); > + ncs_enc_claim_space(o_ub, 4); > + > + IMMSV_RSRV_SPACE_ASSERT(p8, o_ub, 4); > + ncs_encode_32bit(&p8, > immdevt->info.ctrl_msg.ccb_id_count); > + ncs_enc_claim_space(o_ub, 4); > + > + IMMSV_RSRV_SPACE_ASSERT(p8, o_ub, 4); > + ncs_encode_32bit(&p8, > immdevt->info.ctrl_msg.impl_count); > + ncs_enc_claim_space(o_ub, 4); > + } > + > break; > case IMMD_EVT_ND2D_SYNC_FEVS_BASE: > @@ -4283,6 +4304,28 @@ static uint32_t immsv_evt_dec_toplevel(N > ncs_dec_skip_space(i_ub, 4); > /* immdevt->info.ctrl_msg.pbeFile.buf decoded > by sublevel */ > } > + > + > + if((immdevt->info.ctrl_msg.refresh == 2) && > + (immdevt->type == IMMD_EVT_ND2D_INTRO)) { /* > Intro after IMMD restart. */ > + > + IMMSV_FLTN_SPACE_ASSERT(p8, local_data, i_ub, 8); > + immdevt->info.ctrl_msg.fevs_count = > ncs_decode_64bit(&p8); > + ncs_dec_skip_space(i_ub, 8); > + > + IMMSV_FLTN_SPACE_ASSERT(p8, local_data, i_ub, 4); > + immdevt->info.ctrl_msg.admo_id_count = > ncs_decode_32bit(&p8); > + ncs_dec_skip_space(i_ub, 4); > + > + IMMSV_FLTN_SPACE_ASSERT(p8, local_data, i_ub, 4); > + immdevt->info.ctrl_msg.ccb_id_count = > ncs_decode_32bit(&p8); > + ncs_dec_skip_space(i_ub, 4); > + > + IMMSV_FLTN_SPACE_ASSERT(p8, local_data, i_ub, 4); > + immdevt->info.ctrl_msg.impl_count = > ncs_decode_32bit(&p8); > + ncs_dec_skip_space(i_ub, 4); > + } > + > break; > case IMMD_EVT_ND2D_SYNC_FEVS_BASE: > diff --git a/osaf/libs/common/immsv/include/immpbe_dump.hh > b/osaf/libs/common/immsv/include/immpbe_dump.hh > --- a/osaf/libs/common/immsv/include/immpbe_dump.hh > +++ b/osaf/libs/common/immsv/include/immpbe_dump.hh > @@ -81,7 +81,7 @@ void deleteClassToPBE(std::string classN > ClassInfo* theClass); > int verifyPbeState(SaImmHandleT immHandle, ClassMap > *classIdMap, > - void* db_handle); > + void* db_handle, bool pbeVerifyObjects); > int dumpObjectsToPbe(SaImmHandleT immHandle, ClassMap* > classIdMap, > void* db_handle); > diff --git a/osaf/libs/common/immsv/include/immsv_api.h > b/osaf/libs/common/immsv/include/immsv_api.h > --- a/osaf/libs/common/immsv/include/immsv_api.h > +++ b/osaf/libs/common/immsv/include/immsv_api.h > @@ -61,6 +61,7 @@ extern "C" { > #define OPENSAF_IMM_LONG_DNS_ALLOWED "longDnsAllowed" > #define OPENSAF_IMM_ACCESS_CONTROL_MODE "accessControlMode" > #define OPENSAF_IMM_AUTHORIZED_GROUP "authorizedGroup" > +#define OPENSAF_IMM_SC_ABSENCE_ALLOWED "scAbsenceAllowed" > typedef enum { > ACCESS_CONTROL_DISABLED = 0, > diff --git a/osaf/libs/common/immsv/include/immsv_evt.h > b/osaf/libs/common/immsv/include/immsv_evt.h > --- a/osaf/libs/common/immsv/include/immsv_evt.h > +++ b/osaf/libs/common/immsv/include/immsv_evt.h > @@ -412,7 +412,9 @@ typedef struct immsv_d2nd_control { > IMMSV_OCTET_STRING dir; > IMMSV_OCTET_STRING xmlFile; > - IMMSV_OCTET_STRING pbeFile; > + IMMSV_OCTET_STRING pbeFile; > + > + > } IMMSV_D2ND_CONTROL; > > /**************************************************************************** > @@ -422,7 +424,7 @@ typedef struct immsv_d2nd_control { > typedef struct immsv_nd2d_control { > SaUint32T ndExecPid; > SaUint32T epoch; > - uint8_t refresh; //TRUE=> This is a refresh of epoch. > + uint8_t refresh; /* refresh>0 => Refresh of epoch; refresh==2 > => IMMD restart intro.*/ > uint8_t pbeEnabled;/* OpenSaf4.4: > 2:not-enabled-not-configured can be > convertred to 0 in immd. > 3:not-enabled-configured > @@ -435,6 +437,17 @@ typedef struct immsv_nd2d_control { > IMMSV_OCTET_STRING dir; > IMMSV_OCTET_STRING xmlFile; > IMMSV_OCTET_STRING pbeFile; > + > + /* OpenSaf4.6: At restart of IMMD sv-id, IMMND gives > feeedback on: > [Hung] Not OpenSaf4.6 :) > > + - fevs_count > + - admo_id_count > + - ccb_id_count > + - impl_count > + */ > + SaUint64T fevs_count; //Max received at IMMND for Fevs Count > + SaUint32T admo_id_count;//Max received at IMMND for > AdminOwner ID > + SaUint32T ccb_id_count; //Max received at IMMND for CCB ID > + SaUint32T impl_count; //Max received at IMMND for > Implementer ID > } IMMSV_ND2D_CONTROL; > typedef struct immsv_nd2d_2_pbe { > > > ------------------------------------------------------------------------------ > > _______________________________________________ > Opensaf-devel mailing list > Opensaf-devel@lists.sourceforge.net > <mailto:Opensaf-devel@lists.sourceforge.net> > https://lists.sourceforge.net/lists/listinfo/opensaf-devel > > > > ------------------------------------------------------------------------------ > > Site24x7 APM Insight: Get Deep Visibility into Application > Performance > APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month > Monitor end-to-end web transactions and take corrective actions now > Troubleshoot faster and improve end-user experience. Signup Now! > http://pubads.g.doubleclick.net/gampad/clk?id=267308311&iu=/4140 > _______________________________________________ > Opensaf-devel mailing list > Opensaf-devel@lists.sourceforge.net > <mailto:Opensaf-devel@lists.sourceforge.net> > https://lists.sourceforge.net/lists/listinfo/opensaf-devel > ------------------------------------------------------------------------------ Site24x7 APM Insight: Get Deep Visibility into Application Performance APM + Mobile APM + RUM: Monitor 3 App instances at just $35/Month Monitor end-to-end web transactions and take corrective actions now Troubleshoot faster and improve end-user experience. Signup Now! http://pubads.g.doubleclick.net/gampad/clk?id=272487151&iu=/4140 _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel