Need to correct myself in one of my own review comments. So far I have sent three mails. This is in the first one.' See below.
Anders Bjornerstedt wrote: > Hi Zoran. > Server side patch looks much better :-) > I still have some detail comments though. > Not all of them in this mail, but just to let you process some of them > in parallel with me and Neel continuing > the review, I send you these comments now. > > 1) Please make sure that the commit slogan for these change-sets are > prefixed with 'IMM: ' or 'IMMTOOLS:'. > Also skip starting the slogan proper with a redundant 'IMM': > Example: > IMM: IMM service implementation of NO_DANGLING flag [#49] > should be: > IMM: Service implementation of NO_DANGLING flag [#49] > > It looks almost correct in the review request mail message subject line. > But the patch slogan is sometimes incorrect. > The patch slogan is the more important since it will become part of > the changset history. > --------------------------------------------------------------------------- > > > 2) I think you should inline ImmAttrMultiValue::getNextAttrValue() > same way as ImmAttrValue::empty() const is inline in the .hh file. > > ImmAttrMultiValue* getNextAttrValue() const {return mNext;} > > This call is used in iterating through a multi-values so its lilely to > be in tight loops. > ------------------------------------------------------ > 3) I think we should rename sReverseRefObjectMMap to > sReverseNoDanglingObjectMMap I would now suggest instead: sReverseRefsNoDanglingMMap. It could in principle even be shortened to sReferseRefsNDMMap. But I think it is better to have 'NoDangling' explicit in this top level datastructure. For internal variables anf function names I think we should strive for Refs instead of References and ND instead of NoDangling (except in top level names. It is of course fine to use long explicit names in comments and log/trace printouts. If the trae refers to a variable it should of course use exactly the variable name... The term 'Object' occurs in some places where you actually mean reference or DN (i.e. a string). The term Object is ok when referring to an occurence of the ObjectInfo struct. /AndersBj > > Please also move down the comment explaining this data-structure to be > below the structure, > not before it. This seems to be the dominating convention in this file > and since this comment > appears directly between two data-structures, it becomes unclear which > one is referred to. > The alternative is to have a blank line before the comment and after > the data-structure so that > both become associated by proximity to each other and separation from > the rest. > ----------------------------------------------------------------------------------------- > > > 4) We need to allow NO_DANGLING on RDN attributes. > I suggest we fix this as a separate defect ticket. So in class-create > we need to remove the check > that ends up with: > LOG_NO("ERR_INVALID_PARAM: RDN '%s' cannot have NO_DANGLING flag", > > The reason NO_DANGLING should be allowed on RDN attributes of CONFIG > objects is > to make referential integrity checking possible for association objects. > The other checks are correct though. > Runtime objects cannot have no-dangling and attribute type must be > SaNameT. > In the next OpensAF release we will hopefully be moving away from > SaNameT, replacing it with > SaStringT as the physical type, plus a new IMM_ATTR flag to indicate > that the value is a DN. > When/if that happens, the no-dangling class-create checks need to be > updated to accept that new > kind of "reference" declaration. > ------------------------------------------------------------------------------------------ > > > 5) In ImmModel::notCompatibleAtt > > In the loop specific for no-dangling chjecks, you iterate through the > extent of a class and for each > object this if statement is executed: > ImmAttrValueMap::iterator avmi = > (*osi)->mAttrValueMap.find(attName); > if(avmi == (*osi)->mAttrValueMap.end()) > continue; > > It makes no sense to continue the iteration here. I would suggest > instead an osafassert. > If anattribute exists in a class then in the OpensAF implementation of > the IMM this means > that *all* instances of that class have the attribute defined. Now > this is an upgrade, so > we need to be wary of the case whn an attribute is added in a new > class version. > But this wntire section of code is guarded by > /* "changedAttrs != NULL" ensures that this check is only for > the schema update */ > So we know that the attribute exists in both new and old version. > So replace the if statetement with: > > osafassert(avmi != (*osi)->mAttrValueMap.end()); > ------------------------------------------------------------------------------------ > > > 6) In ImmModel::notCompatibleAtt > This syslog warning: > > LOG_WA("Object has a NO_DANGLING reference to a > non-existing object"); > > I think should rather say: > > LOG_WA("Object %s attribute %s has a reference to a > non-existing object %s " > "schema change to add NO_DANGLING not > possible", .....); > > ------------------------------------------------------------------------------------------------------ > > > 7) Still in notCompatibleAtt > This syslog warning: > > LOG_WA("Object cannot have a NO_DANGLING reference to a > non-persistent runtime object"); > > should provide a bit more info: > > LOG_WA("Object %u attribute %s has a reference to a > non-persistent runtime object %s " > "schema change to add NO_DANGLING not > possible", .....); > ----------------------------------------------------------------------------------------------------------- > > > 8) Stil in notCompatibleAtt > This syslog warning: > LOG_WA("CCB operation on NO_DANGLING > reference is not finished"); > > Should provide more info: > > LOG_WA("CCB in progress operating on object > %s attribute % referenced by object %s being upgraded " > "schema change to add NO_DANGLING not > possible", .....); > ------------------------------------------------------------------------------- > > > > Zoran, I am not finished yet, but I will let you process these > comments for now. > > /AndersBj > > > > Zoran Milinkovic wrote: >> Summary: IMM: Implementation of NO_DANGLING flag [#49] >> Review request for Trac Ticket(s): 49 >> Peer Reviewer(s): Neelakanta, Anders >> Pull request to: Zoran >> Affected branch(es): default(4.4) >> Development branch: default(4.4) >> >> -------------------------------- >> Impacted area Impact y/n >> -------------------------------- >> Docs n >> Build system n >> RPM/packaging n >> Configuration files n >> Startup scripts n >> SAF services y >> OpenSAF services n >> Core libraries n >> Samples n >> Tests n >> Other n >> >> >> Comments (indicate scope for each "y" above): >> --------------------------------------------- >> >> changeset 262748c382d21cb6ec391e1b1fcf4a8a1e6256ae >> Author: Zoran Milinkovic <zoran.milinko...@ericsson.com> >> Date: Thu, 05 Dec 2013 15:56:17 +0100 >> >> IMM: API support for NO_DANGLING flag [#49] >> >> IMM API support for reference integrity (NO_DANGLING flag) >> >> changeset 121f26d8504c86c63643c03bb81840460e66a69b >> Author: Zoran Milinkovic <zoran.milinko...@ericsson.com> >> Date: Thu, 05 Dec 2013 15:57:11 +0100 >> >> IMM: IMM service implementation of NO_DANGLING flag [#49] >> >> Implementation of reference integrity (NO_DANGLING flag) to IMMSV >> >> changeset 68c4e3d7d6b3c3a501c20903fc63d9ba8a125420 >> Author: Zoran Milinkovic <zoran.milinko...@ericsson.com> >> Date: Thu, 05 Dec 2013 15:58:25 +0100 >> >> IMMTOOLS: Add support of NO_DANGLING flag to IMM tools [#49] >> >> Support reference integrity (NO_DANGLING flag) to IMM tools >> >> >> Added Files: >> ------------ >> osaf/libs/saf/include/saImmOm_A_2_13.h >> osaf/services/saf/immsv/schema/SAI-AIS-IMM-XSD-A.02.13.xsd >> >> >> Complete diffstat: >> ------------------ >> osaf/libs/agents/saf/imma/imma_om_api.c | 36 ++++- >> osaf/libs/common/immsv/include/immpbe_dump.hh | 2 +- >> osaf/libs/common/immsv/include/immsv_api.h | 9 + >> osaf/libs/saf/include/Makefile.am | 3 +- >> osaf/libs/saf/include/saImmOm_A_2_12.h | 2 + >> osaf/libs/saf/include/saImmOm_A_2_13.h | 60 >> +++++++++ >> osaf/libs/saf/libSaImm/Makefile.am | 2 +- >> osaf/services/saf/immsv/immloadd/imm_loader.cc | 8 +- >> osaf/services/saf/immsv/immloadd/imm_pbe_load.cc | 2 +- >> osaf/services/saf/immsv/immnd/ImmAttrValue.cc | 6 + >> osaf/services/saf/immsv/immnd/ImmAttrValue.hh | 2 + >> osaf/services/saf/immsv/immnd/ImmModel.cc | 950 >> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------- >> >> >> osaf/services/saf/immsv/immnd/ImmModel.hh | 37 >> +++++- >> osaf/services/saf/immsv/schema/SAI-AIS-IMM-XSD-A.02.13.xsd | 180 >> +++++++++++++++++++++++++++ >> osaf/tools/safimm/immcfg/imm_import.cc | 2 + >> osaf/tools/safimm/immdump/imm_xmlw_dump.cc | 9 + >> osaf/tools/safimm/immlist/imm_list.c | 3 + >> 17 files changed, 1231 insertions(+), 82 deletions(-) >> >> >> Testing Commands: >> ----------------- >> >> >> Testing, Expected Results: >> -------------------------- >> The patches need to support: >> - immload support for NO_DANGLING flag >> - immdump support for NO_DANGLING flag >> - immcfg support for NO_DANGLING flag (immcfg -f) >> - immlist support for NO_DANGLING flag (NO_DANGLING flag is listed) >> - IMM library support for NO_DANGLING (classCreate - basic checks) >> - schema update (adding and removing NO_DANGLING flag) >> - default values >> - create object (NO_DANGLING attributes with and without values) >> - modify object (add, replace and delete) >> - delete object >> - CCB apply >> - CCB abort/terminate >> - support for missing objects, created later within the same CCB >> >> >> Conditions of Submission: >> ------------------------- >> Ack from Neelakanta and Anders >> >> >> Arch Built Started Linux distro >> ------------------------------------------- >> mips n n >> mips64 n n >> x86 n n >> x86_64 n n >> 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 ~/.hgrc file (i.e. username, 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. >> >> >> ------------------------------------------------------------------------------ >> >> >> Sponsored by Intel(R) XDK Develop, test and display web and hybrid >> apps with a single code base. >> Download it for free now! >> http://pubads.g.doubleclick.net/gampad/clk?id=111408631&iu=/4140/ostg.clktrk >> >> _______________________________________________ >> Opensaf-devel mailing list >> Opensaf-devel@lists.sourceforge.net >> https://lists.sourceforge.net/lists/listinfo/opensaf-devel >> > > ------------------------------------------------------------------------------ Rapidly troubleshoot problems before they affect your business. Most IT organizations don't have a clear picture of how application performance affects their revenue. With AppDynamics, you get 100% visibility into your Java,.NET, & PHP application. Start your 15-day FREE TRIAL of AppDynamics Pro! http://pubads.g.doubleclick.net/gampad/clk?id=84349831&iu=/4140/ostg.clktrk _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel