Hi

Thanks, I’ve fixed most of the warnings.

I will send out a proper V2 review request, after more comments.

Thanks
Gary

On 17/1/18, 12:02 am, "Anders Widell" <[email protected]> wrote:

    Ok here are my first set of comments. I have run shellcheck, cppcheck 
    and cpplint on the new files. Could you check the result?
    
    Output of shellcheck when run on src/osaf/consensus/plugins/etcd.plugin:
    
    Line 15:
       value=`etcdctl get $key 2>&1`
             ^-- SC2006: Use $(..) instead of legacy `..`.
                          ^-- SC2086: Double quote to prevent globbing and 
    word splitting.
    
    Line 16:
       if [ $? -eq 0 ]; then
            ^-- SC2181: Check exit code directly with e.g. 'if mycmd;', not 
    indirectly with $?.
    
    Line 36:
       etcdctl set $key $value 1>& /dev/null
                        ^-- SC2086: Double quote to prevent globbing and 
    word splitting.
                   ^-- SC2086: Double quote to prevent globbing and word 
    splitting.
    
    Line 37:
       if [ $? -eq 0 ]; then
            ^-- SC2181: Check exit code directly with e.g. 'if mycmd;', not 
    indirectly with $?.
    
    Line 54:
       etcdctl rm $key 1>& /dev/null
                  ^-- SC2086: Double quote to prevent globbing and word 
    splitting.
    
    Line 55:
       if [ $? -eq 0 ]; then
            ^-- SC2181: Check exit code directly with e.g. 'if mycmd;', not 
    indirectly with $?.
    
    Line 74:
       etcdctl mk $keyname $owner --ttl $timeout >& /dev/null
                                        ^-- SC2086: Double quote to prevent 
    globbing and word splitting.
                           ^-- SC2086: Double quote to prevent globbing and 
    word splitting.
    
    Line 75:
       if [ $? -ne 0 ]; then
            ^-- SC2181: Check exit code directly with e.g. 'if mycmd;', not 
    indirectly with $?.
    
    Line 76:
         current_owner=`etcdctl get $keyname`
                       ^-- SC2006: Use $(..) instead of legacy `..`.
    
    Line 111:
       local readonly hostname=$(hostname)
                      ^-- SC2155: Declare and assign separately to avoid 
    masking return values.
    
    Line 115:
         owner=`etcdctl get $keyname 2>&1`
               ^-- SC2006: Use $(..) instead of legacy `..`.
    
    Line 122:
       if [ $? -eq 0 ]; then
            ^-- SC2181: Check exit code directly with e.g. 'if mycmd;', not 
    indirectly with $?.
    
    Line 137:
       local readonly key=$1
             ^-- SC2034: readonly appears unused. Verify it or export it.
    
    Line 139:
       value=`etcdctl watch $key 2>&1`
             ^-- SC2006: Use $(..) instead of legacy `..`.
                            ^-- SC2086: Double quote to prevent globbing and 
    word splitting.
    
    Line 140:
       if [ $? -eq 0 ]; then
            ^-- SC2181: Check exit code directly with e.g. 'if mycmd;', not 
    indirectly with $?.
    
    Line 157:
         get $2
             ^-- SC2086: Double quote to prevent globbing and word splitting.
    
    Line 165:
         set $2 $3
             ^-- SC2086: Double quote to prevent globbing and word splitting.
                ^-- SC2086: Double quote to prevent globbing and word splitting.
    
    Line 173:
         erase $2 ""
               ^-- SC2086: Double quote to prevent globbing and word splitting.
    
    Line 181:
         lock $2 $3
                 ^-- SC2086: Double quote to prevent globbing and word 
    splitting.
              ^-- SC2086: Double quote to prevent globbing and word splitting.
    
    Line 209:
         watch $2
               ^-- SC2086: Double quote to prevent globbing and word splitting.
    
    
    Output of cppcheck when run on src/osaf/consensus:
    
    [src/osaf/consensus/service.h:62]: (performance) Function parameter 
    'node' should be passed by reference.
    [src/osaf/consensus/service.cc:36]: (style) Obsolescent function 
    'usleep' called. It is recommended to use 'nanosleep' or 'setitimer' 
    instead.
    [src/osaf/consensus/service.cc:70]: (style) Obsolescent function 
    'usleep' called. It is recommended to use 'nanosleep' or 'setitimer' 
    instead.
    [src/osaf/consensus/service.cc:89]: (style) Obsolescent function 
    'usleep' called. It is recommended to use 'nanosleep' or 'setitimer' 
    instead.
    [src/osaf/consensus/service.cc:114]: (style) Obsolescent function 
    'usleep' called. It is recommended to use 'nanosleep' or 'setitimer' 
    instead.
    [src/osaf/consensus/service.cc:147]: (style) Obsolescent function 
    'usleep' called. It is recommended to use 'nanosleep' or 'setitimer' 
    instead.
    [src/osaf/consensus/service.cc:162]: (style) Obsolescent function 
    'usleep' called. It is recommended to use 'nanosleep' or 'setitimer' 
    instead.
    [src/osaf/consensus/service.cc:132]: (style) The function 'IsEnabled' is 
    never used.
    
    Output of cpplint when run on src/osaf/consensus:
    
    src/osaf/consensus/service.h:17:  #ifndef header guard has wrong style, 
    please use: OSAF_CONSENSUS_SERVICE_H_  [build/header_guard] [5]
    src/osaf/consensus/service.h:66:  #endif line should be "#endif // 
    OSAF_CONSENSUS_SERVICE_H_"  [build/header_guard] [5]
    src/osaf/consensus/service.h:20:  Include the directory when naming .h 
    files  [build/include] [4]
    src/osaf/consensus/service.h:22:  Found C++ system header after other 
    header. Should be: service.h, c system, c++ system, other. 
    [build/include_order] [4]
    src/osaf/consensus/service.h:25:  public: should be indented +1 space 
    inside class Consensus  [whitespace/indent] [3]
    src/osaf/consensus/service.h:26:  Do not leave a blank line after 
    "public:"  [whitespace/blank_line] [3]
    src/osaf/consensus/service.h:50:  Zero-parameter constructors should not 
    be marked explicit.  [runtime/explicit] [5]
    src/osaf/consensus/service.h:56:  private: should be indented +1 space 
    inside class Consensus  [whitespace/indent] [3]
    src/osaf/consensus/service.h:60:  At least two spaces is best between 
    code and comments  [whitespace/comments] [2]
    src/osaf/consensus/keyvalue.h:17:  #ifndef header guard has wrong style, 
    please use: OSAF_CONSENSUS_KEYVALUE_H_ [build/header_guard] [5]
    src/osaf/consensus/keyvalue.h:57:  #endif line should be "#endif // 
    OSAF_CONSENSUS_KEYVALUE_H_"  [build/header_guard] [5]
    src/osaf/consensus/keyvalue.h:31:  Is this a non-const reference? If so, 
    make const or use a pointer: std::string& value [runtime/references] [2]
    src/osaf/consensus/keyvalue.h:54:  Is this a non-const reference? If so, 
    make const or use a pointer: std::string& output [runtime/references] [2]
    src/osaf/consensus/keyvalue.cc:17:  Include the directory when naming .h 
    files  [build/include] [4]
    src/osaf/consensus/keyvalue.cc:48:  Lines should be <= 80 characters 
    long  [whitespace/line_length] [2]
    src/osaf/consensus/keyvalue.cc:63:  Lines should be <= 80 characters 
    long  [whitespace/line_length] [2]
    src/osaf/consensus/keyvalue.cc:78:  Lines should be <= 80 characters 
    long  [whitespace/line_length] [2]
    src/osaf/consensus/keyvalue.cc:94:  Lines should be <= 80 characters 
    long  [whitespace/line_length] [2]
    src/osaf/consensus/keyvalue.cc:110:  Lines should be <= 80 characters 
    long  [whitespace/line_length] [2]
    src/osaf/consensus/keyvalue.cc:125:  Lines should be <= 80 characters 
    long  [whitespace/line_length] [2]
    src/osaf/consensus/keyvalue.cc:145:  Lines should be <= 80 characters 
    long  [whitespace/line_length] [2]
    src/osaf/consensus/keyvalue.cc:161:  { should almost always be at the 
    end of the previous line  [whitespace/braces] [4]
    src/osaf/consensus/service.cc:17:  Include the directory when naming .h 
    files  [build/include] [4]
    src/osaf/consensus/service.cc:22:  Found C system header after other 
    header. Should be: service.h, c system, c++ system, other. 
    [build/include_order] [4]
    src/osaf/consensus/service.cc:23:  Found C++ system header after other 
    header. Should be: service.h, c system, c++ system, other. 
    [build/include_order] [4]
    src/osaf/consensus/service.cc:79:  { should almost always be at the end 
    of the previous line  [whitespace/braces] [4]
    src/osaf/consensus/service.cc:203:  { should almost always be at the end 
    of the previous line  [whitespace/braces] [4]
    src/osaf/consensus/service.cc:207:  { should almost always be at the end 
    of the previous line  [whitespace/braces] [4]
    src/osaf/consensus/service.cc:224:  { should almost always be at the end 
    of the previous line  [whitespace/braces] [4]
    
    / Anders Widell
    
    On 01/10/2018 06:29 AM, Gary Lee wrote:
    > Summary: Add support for split brain prevention with consensus key-value 
store [#64]
    > Review request for Ticket(s): 64
    > Peer Reviewer(s): Anders, Han, Quyen
    > Pull request to: *** LIST THE PERSON WITH PUSH ACCESS HERE ***
    > Affected branch(es): develop
    > Development branch: ticket-64
    > Base revision: 51e30cbf5f891f2479013bf9ce4289a27c47aa17
    > Personal repository: git://git.code.sf.net/u/userid-2226215/review
    >
    > --------------------------------
    > Impacted area       Impact y/n
    > --------------------------------
    >   Docs                    n
    >   Build system            n
    >   RPM/packaging           n
    >   Configuration files     n
    >   Startup scripts         n
    >   SAF services            y
    >   OpenSAF services        y
    >   Core libraries          n
    >   Samples                 n
    >   Tests                   n
    >   Other                   n
    >
    >
    > Comments (indicate scope for each "y" above):
    > ---------------------------------------------
    >
    > revision 1721faf640efa92950214a516e7f2f33c827c50b
    > Author:   Gary Lee <[email protected]>
    > Date:     Wed, 10 Jan 2018 16:22:19 +1100
    >
    > doc: update README and makefiles [#64]
    >
    >
    >
    > revision 7882b8fcd5ae5415c04345c2a32c3ff1922e70cc
    > Author:   Gary Lee <[email protected]>
    > Date:     Wed, 10 Jan 2018 16:21:48 +1100
    >
    > amfd: update consensus service when performing SI swap [#64]
    >
    >
    >
    > revision 94a032a0583a512909e8619a0f68617fe5b90712
    > Author:   Gary Lee <[email protected]>
    > Date:     Wed, 10 Jan 2018 16:21:21 +1100
    >
    > fmd: update consensus service during controller failover [#64]
    >
    >
    >
    > revision 3378f383490517614903f800e669a1b5a7240d49
    > Author:   Gary Lee <[email protected]>
    > Date:     Wed, 10 Jan 2018 16:20:39 +1100
    >
    > rded: add split brain prevention support [#64]
    >
    > * consult with consensus service before promoting node to active
    > * add watch thread and self-fence if it detects active controller
    >    has been changed
    >
    >
    >
    > revision 0e31d572da8d887ba4d53e828973e0a48e3aaa0a
    > Author:   Gary Lee <[email protected]>
    > Date:     Wed, 10 Jan 2018 16:20:05 +1100
    >
    > osaf: add consensus API [#64]
    >
    >
    >
    > Added Files:
    > ------------
    >   src/osaf/consensus/Makefile
    >   src/osaf/consensus/keyvalue.cc
    >   src/osaf/consensus/keyvalue.h
    >   src/osaf/consensus/plugins/etcd.plugin
    >   src/osaf/consensus/plugins/sample.plugin
    >   src/osaf/consensus/service.cc
    >   src/osaf/consensus/service.h
    >
    >
    > Complete diffstat:
    > ------------------
    >   00-README.conf                           |  43 ++++++
    >   Makefile.am                              |   4 +-
    >   src/amf/amfd/osaf-amfd.in                |   4 +
    >   src/amf/amfd/role.cc                     |  35 ++++-
    >   src/fm/Makefile.am                       |   1 +
    >   src/fm/fmd/fm_main.cc                    |  12 ++
    >   src/fm/fmd/fm_rda.cc                     |  26 ++++
    >   src/fm/fmd/fmd.conf                      |   8 ++
    >   src/osaf/Makefile.am                     |   8 +-
    >   src/osaf/consensus/Makefile              |  18 +++
    >   src/osaf/consensus/keyvalue.cc           | 165 ++++++++++++++++++++++
    >   src/osaf/consensus/keyvalue.h            |  57 ++++++++
    >   src/osaf/consensus/plugins/etcd.plugin   | 217 
+++++++++++++++++++++++++++++
    >   src/osaf/consensus/plugins/sample.plugin | 162 ++++++++++++++++++++++
    >   src/osaf/consensus/service.cc            | 231 
+++++++++++++++++++++++++++++++
    >   src/osaf/consensus/service.h             |  66 +++++++++
    >   src/rde/Makefile.am                      |   3 +-
    >   src/rde/rded/osaf-rded.in                |   4 +
    >   src/rde/rded/rde_cb.h                    |   3 +-
    >   src/rde/rded/rde_main.cc                 |  32 ++++-
    >   src/rde/rded/role.cc                     |  45 +++++-
    >   src/rde/rded/role.h                      |   2 +
    >   22 files changed, 1130 insertions(+), 16 deletions(-)
    >
    >
    > 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     Started    Linux distro
    > -------------------------------------------
    > mips        n          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.
    >
    
    
    



------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel

Reply via email to