Such a fix is ok, as long as there is no risk of a subsequent broadcast *overtaking* a previous multi-unicast when received at some/any node.
/AndersBj -----Original Message----- From: A V Mahesh [mailto:mahesh.va...@oracle.com] Sent: den 13 augusti 2014 12:11 To: Hans Feldt; Neelakanta Reddy; Anders Widell; Anders Björnerstedt Cc: opensaf-devel@lists.sourceforge.net Subject: Re: [devel] [PATCH 0 of 3] Review Request for mds: use TIPC multicast for MDS broadcast [#851] On 8/13/2014 3:30 PM, Hans Feldt wrote: > Why is the finalizesync message so big? > > I think that is a concern if we have a mw that broadcasts big blobs without > any upper limit. I to have the same opinion. > > As a fix now MDS could instead of failing the broadcast send when the message > if greater than 2^16, revert to the old multi-unicast. Ok I will do that . -AVM > > Thanks, > Hans > >> -----Original Message----- >> From: Neelakanta Reddy [mailto:reddy.neelaka...@oracle.com] >> Sent: den 13 augusti 2014 11:34 >> To: mahesh.va...@oracle.com; Hans Feldt; Anders Widell; Anders >> Björnerstedt >> Cc: opensaf-devel@lists.sourceforge.net >> Subject: Re: [devel] [PATCH 0 of 3] Review Request for mds: use TIPC >> multicast for MDS broadcast [#851] >> >> Hi Mahesh, >> >>>> - A single multicast message can accommodate max of MDS_DIRECT_BUF_MAXSIZE >>>> (2^16). >> >> The above limit can be removed, because IMM can send the event with grater >> than (2^16) size. >> >> >> After running multiple regression test and do a failover the following is >> observed: >> >> The testcase is Failover, the problem happened when Faiover node is joining. >> At the end of syncing IMMND co-ordinator sends the finalizesync >> message, which will be sent to IMMD and IMMD broadcast to all IMMNDs. >> The finalizesync meaasage may have the event size more than 64000. >> Since, MDS drops packets with the size greater than 64000 because of >> this there is mismatch in FEVS count and out of order is observed.This will >> lead to cluster re-start. >> >> syslog at co-ordinator node: >> >> Aug 13 10:24:30 SLES-SLOT-2 osafimmnd[17711]: NO NODE STATE-> >> IMM_NODE_R_AVAILABLE Aug 13 10:24:30 SLES-SLOT-2 osafimmd[6462]: NO >> Successfully announced sync. New ruling epoch:19 Aug 13 10:24:30 >> SLES-SLOT-2 osafimmloadd: NO Sync starting Aug 13 10:24:53 >> SLES-SLOT-2 osafimmloadd: IN Synced 421 objects in total Aug 13 >> 10:24:53 SLES-SLOT-2 osafimmnd[17711]: NO NODE STATE-> >> IMM_NODE_FULLY_AVAILABLE 16063 Aug 13 10:24:53 SLES-SLOT-2 >> osafimmloadd: NO Sync ending normally Aug 13 10:24:53 SLES-SLOT-2 >> osafimmd[6462]: NO MDTM: Not possible to send size:94807 TIPC >> multicast to svc_id: 25 Aug 13 10:24:53 SLES-SLOT-2 osafimmd[6462]: >> NO MDTM: Not possible to send size:94807 TIPC multicast to svc_id: 25 >> Aug 13 10:24:53 SLES-SLOT-2 osafimmd[6462]: NO MDTM: Not possible to >> send size:94807 TIPC multicast to svc_id: 25 Aug 13 10:24:53 >> SLES-SLOT-2 osafimmd[6462]: NO MDTM: Not possible to send size:95147 >> TIPC multicast to svc_id: 25 Aug 13 10:26:44 SLES-SLOT-2 >> syslog-ng[1190]: Log statistics; dropped='pipe(/dev/xconsole)=1825', >> dropped='pipe(/dev/tty10)=0', processed='center(queued)=54989', >> processed='center(received)=22910', >> processed='destination(messages)=22908', >> processed='destination(mailinfo)=2', >> processed='destination(mailwarn)=0', >> processed='destination(localmessages)=21235', >> processed='destination(newserr)=0', >> processed='destination(mailerr)=0', >> processed='destination(netmgm)=0', >> processed='destination(warn)=3868', >> processed='destination(console)=3487', >> processed='destination(null)=0', processed='destination(mail)=2', >> processed='destination(xconsole)=3487', >> processed='destination(firewall)=0', >> processed='destination(acpid)=0', >> processed='destination(newscrit)=0', >> processed='destination(newsnotice)=0', processed='source(src)=22910' >> Aug 13 10:32:29 SLES-SLOT-2 osafimmnd[17711]: WA MESSAGE:78692 OUT OF >> ORDER my highest processed:78690, exiting Aug 13 10:32:29 SLES-SLOT-2 >> osafimmpbed: WA PBE lost contact with parent IMMND - Exiting Aug 13 >> 10:32:29 SLES-SLOT-2 osafamfnd[6533]: NO >> 'safSu=SC-2,safSg=NoRed,safApp=OpenSAF' component restart probation >> timer started (timeout: 60000000000 ns) Aug 13 10:32:29 SLES-SLOT-2 >> osafamfnd[6533]: NO Restarting a component of >> 'safSu=SC-2,safSg=NoRed,safApp=OpenSAF' (comp restart count: 1) Aug >> 13 10:32:29 SLES-SLOT-2 osafamfnd[6533]: NO >> 'safComp=IMMND,safSu=SC-2,safSg=NoRed,safApp=OpenSAF' faulted due to >> 'avaDown' : Recovery is 'componentRestart' >> Aug 13 10:32:29 SLES-SLOT-2 osafimmd[6462]: WA IMMND coordinator at >> 2020f apparently crashed => electing new coord Aug 13 10:32:29 >> SLES-SLOT-2 osafimmd[6462]: ER Failed to find candidate for new IMMND >> coordinator Aug 13 10:32:29 SLES-SLOT-2 osafimmd[6462]: ER Active >> IMMD has to restart the IMMSv. All IMMNDs will restart Aug 13 >> 10:32:29 SLES-SLOT-2 osafimmnd[6099]: Started Aug 13 10:32:29 >> SLES-SLOT-2 osafimmnd[6099]: NO Persistent Back-End capability >> configured, Pbe file:imm.db (suffix may get added) Aug 13 10:32:29 >> SLES-SLOT-2 osafimmnd[6099]: NO SERVER STATE: >> IMM_SERVER_ANONYMOUS --> IMM_SERVER_CLUSTER_WAITING Aug 13 10:32:30 >> SLES-SLOT-2 osafimmnd[6099]: NO IMMND received reset order from IMMD, >> but has just restarted - ignoring Aug 13 10:32:30 SLES-SLOT-2 >> osafimmd[6462]: ER IMM RELOAD => ensure cluster restart by IMMD exit >> at both SCs, exiting Aug 13 10:32:30 SLES-SLOT-2 osafamfnd[6533]: NO >> 'safComp=IMMD,safSu=SC-2,safSg=2N,safApp=OpenSAF' faulted due to >> 'avaDown' : Recovery is 'nodeFailfast' >> Aug 13 10:32:30 SLES-SLOT-2 osafamfnd[6533]: ER >> safComp=IMMD,safSu=SC-2,safSg=2N,safApp=OpenSAF Faulted due >> to:avaDown Recovery is:nodeFailfast Aug 13 10:32:30 SLES-SLOT-2 >> osafamfnd[6533]: Rebooting OpenSAF NodeId = >> 131599 EE Name = , Reason: Component faulted: recovery is node >> failfast, OwnNodeId = 131599, SupervisionTime = 60 >> >> >> /Neel. >> >> >> On Thursday 07 August 2014 02:05 PM, mahesh.va...@oracle.com wrote: >>> Summary: mds: use TIPC multicast for MDS broadcast [#851] Review >>> request for Trac Ticket(s): #851 Peer Reviewer(s): >>> Hans/Anders.widell/Anders.bj Pull request to: <<LIST THE PERSON WITH >>> PUSH ACCESS HERE>> Affected branch(es): default Development branch: >>> default >>> >>> -------------------------------- >>> Impacted area Impact y/n >>> -------------------------------- >>> Docs n >>> Build system n >>> RPM/packaging n >>> Configuration files n >>> Startup scripts n >>> SAF services n >>> OpenSAF services n >>> Core libraries y >>> Samples n >>> Tests n >>> Other n >>> >>> >>> Comments (indicate scope for each "y" above): >>> --------------------------------------------- >>> >>> changeset c6de7935bc53f5b96ee0cf604e29d2784c6e4fca >>> Author: A V Mahesh <mahesh.va...@oracle.com> >>> Date: Thu, 07 Aug 2014 12:13:04 +0530 >>> >>> mds: use TIPC multicast for MDS broadcast [#851] Brief note on Multicast >>> Enhancement Ticket: >>> >>> ----------------------------------------------------------------------------- >>> Currently Opensaf Broadcast message was implemented as multiple >>> unicasts (that means Broadcast message was reaching N nodes in T-1 to >>> T-N >>> time based on the number of nodes) ,after the ticket #851 changes , the >>> Opensaf Broadcast message will be utilizing TIPC Multicast , that means >>> message may reach T-1 time irrelevant of number of nodes in the cluster. >>> >>> This Enhancement of TIPC multicast make sure or receives broadcast >>> message >>> at same instant of Time . So this enhancement provides an improvement of >>> node cluster or node cluster should take same bring up time ,and it also >>> eliminate timing issue that were facing because multiple unicasts. >>> >>> But it also improves load time and sync time because of reduced >>> unnecessary >>> load to the sending process. >>> >>> Code changes : >>> >>> -------------------------------------------------------------------- >>> --------- >>> >>> - The Code changes are only effects to MDS TIPC transport , NO Changes >>> in >>> MDS TCP transport .This change are with in-service upgrade support. >>> >>> - Now the MDS TIPC transport sendto() for SENDTYPE BCAST & RBCAST >>> addrtype >>> is TIPC_ADDR_MCAST. >>> >>> - A single multicast message can accommodate max of >>> MDS_DIRECT_BUF_MAXSIZE >>> (2^16). >>> >>> - MDS_SVC_INFO structure has a new variable , which maintains count of >>> previous Opensaf version subscribers count for this service. >>> >>> a subscribe/unsubscribe of previous Opensaf version service for this >>> service. >>> >>> - If the count is ZERO means all are nodes in the cluster has new >>> version >>> Opensaf >>> >>> - If the count is grater than ZERO means nodes in the cluster has both >>> old and new version Opensaf. >>> >>> - If the count is ZERO the SENDTYPE BCAST & RBCAST messages will be sent >>> as TIPC Multicast and this is at service level. >>> >>> - If the count is grater than ZERO SENDTYPE BCAST & RBCAST messages will >>> be sent as previous multiple unicasts and this is at service level. >>> >>> Opensaf Services Code Tuning : >>> >>> ----------------------------------------------------------------------------- >>> While adopting new Multicast messaging I came across following >>> Opensaf integration issue in very complex test cases ,in n normal >>> conditions/use case these issue may not occur. >>> >>> But I have created ticket for all of the so these tickets required to be >>> fixed to Multicast to work with out any issues even in complex >>> conditions. >>> >>> 1. https://sourceforge.net/p/opensaf/tickets/952/ 2. >>> https://sourceforge.net/p/opensaf/tickets/953/ 3. >>> https://sourceforge.net/p/opensaf/tickets/954/ 4. >>> https://sourceforge.net/p/opensaf/tickets/955/ 5. >>> https://sourceforge.net/p/opensaf/tickets/946/ >>> >>> changeset 5f86111a818ccff18f6a9cd93d12ac7b15b3a7d3 >>> Author: A V Mahesh <mahesh.va...@oracle.com> >>> Date: Thu, 07 Aug 2014 12:14:11 +0530 >>> >>> imm: tune imm macros according to mds mcast size [#851] >>> >>> - No functional changes. >>> >>> - The IMM IMMSV_DEFAULT_MAX_SYNC_BATCH_SIZE is limited to 90% >>> MDS_DIRECT_BUF_MAXSIZE (2^16) to accommodate IMM header data. >>> >>> changeset e446a201760b8e1e2674fa022b622af0aa5ce34f >>> Author: A V Mahesh <mahesh.va...@oracle.com> >>> Date: Thu, 07 Aug 2014 13:56:07 +0530 >>> >>> mds: support multicast for n_way configuration [#851] >>> >>> - The existing Opensaf Broadcast message was implemented such that the >>> Bcast >>> messes will be send to only the active subscribers as multiple unicast, >>> assuming that the subscription list may have n_way_active & n_way. >>> >>> - But currently we don't have any n_way configuration in the current >>> Opensaf >>> middle ware , and so far we didn't come across such n_way configuration >>> application. >>> >>> - In case of Multicast Messaging TIPC to send a copy of the message to >>> every >>> port in the sender's cluster irrelevant of role of the subscriber ( >>> assuming application will filter it based on active/standby) >>> >>> - So to match existing Opensaf Broadcast message , i am providing this >>> Option patch as well. >>> >>> - If community thinks this is required we will push this optional patch >>> , >>> otherwise we will attach this to ticket for future use when we will >>> suppor >>> n_way . >>> >>> Code changes : >>> >>> Before sending the Multicast Messaging , query the subscribers for any >>> standby exist (n_way subscribers list) , if (if standby exist) send old >>> type Broadcast message as multiple unicast only to actives , else in the >>> case of n_way_active configuration sends Multicast Message. >>> >>> >>> Complete diffstat: >>> ------------------ >>> osaf/libs/common/immsv/include/immsv_api.h | 6 ++-- >>> osaf/libs/core/mds/include/mds_core.h | 5 ++++ >>> osaf/libs/core/mds/mds_c_api.c | 19 ++++++++++++-- >>> osaf/libs/core/mds/mds_c_db.c | 29 >>> +++++++++++++++++++++++ >>> osaf/libs/core/mds/mds_c_sndrcv.c | 126 >> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- >> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- >> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- >> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- >> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- >> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- >> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- >> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- >> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- >> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- >> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- >> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- >> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- >> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- >> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- >> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-- >> +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- >>> osaf/libs/core/mds/mds_dt_tipc.c | 69 >>> ++++++++++++++++++++++++++++++++++++++++++++++++++---- >>> osaf/libs/core/mds/mds_main.c | 2 +- >>> osaf/services/saf/immsv/immloadd/imm_loader.cc | 8 +++++- >>> 8 files changed, 208 insertions(+), 56 deletions(-) >>> >>> >>> Testing Commands: >>> ----------------- >>> s Patch has improved ~50% of performance >>> >>> I have considered IMM concurrently syncing multiple Payload for >>> measuring Benchmarks of the Multicast Messaging ( this is one of the >>> case where Multicast/Broadcast being used with high frequency ). >>> >>> >>> With Multicast changes ,all restarted Node now joining cluster with >>> in >>> ~42 seconds , which used to take ~74 seconds when One million IMM >>> objects are involved in sync process. >>> >>> >>> Following are the benchmarking figure: >>> >>> >>> OpenSAF 4.5 release ( Default staging) WITH #851 Multicast patch:- >>> -------------------------------------------------------------------- >>> --- Jul 15 15:40:59 SLES-SLOT2 opensafd: Starting OpenSAF Services >>> Jul 15 15:41:43 SLES-SLOT2 opensafd: OpenSAF(4.5.M0 - ) services >>> successfully started <=== 42 Seconds >>> >>> Jul 15 15:40:58 SLES-SLOT3 opensafd: Starting OpenSAF Services Jul >>> 15 15:41:42 SLES-SLOT3 opensafd: OpenSAF(4.5.M0 - ) services >>> successfully started <=== 44 Seconds >>> >>> Jul 15 15:41:30 SLES-SLOT4 opensafd: Starting OpenSAF Services Jul >>> 15 15:42:12 SLES-SLOT4 opensafd: OpenSAF(4.5.M0 - ) services >>> successfully started <=== 42 Seconds >>> -------------------------------------------------------------------- >>> --- >>> >>> >>> OpenSAF 4.5 release ( Default staging) WITH-OUT #851 Multicast >>> patch:- >>> -------------------------------------------------------------------- >>> -- Jul 15 15:21:21 SLES-SLOT2 opensafd: Starting OpenSAF Services >>> Jul 15 15:22:36 SLES-SLOT2 opensafd: OpenSAF(4.5.M0 - ) services >>> successfully started <=== 74 Seconds >>> >>> Jul 15 15:21:20 SLES-SLOT3 opensafd: Starting OpenSAF Services Jul >>> 15 15:22:34 SLES-SLOT3 opensafd: OpenSAF(4.5.M0 - ) services >>> successfully started <=== 74 Seconds >>> >>> Jul 15 15:21:51 SLES-SLOT4 opensafd: Starting OpenSAF Services Jul >>> 15 15:23:05 SLES-SLOT4 opensafd: OpenSAF(4.5.M0 - ) services >>> successfully started <=== 74 Seconds >>> -------------------------------------------------------------------- >>> ---- >>> >>> >>> Note : need to make sure IMMND(s) of each restated node SERVER STATE >>> should be in `IMM_SERVER_SYNC_CLIENT` at same point of time. >>> >>> >>> You can achieve this programmatically by hacking/commenting code >>> `cb->mLostNodes--;` line : 580 of `immnd_proc.c` file. >>> >>> >>> >>> Testing, Expected Results: >>> -------------------------- >>> <<PASTE COMMAND OUTPUTS / TEST RESULTS>> >>> >>> >>> Conditions of Submission: >>> ------------------------- >>> Ack from Reviewer >>> >>> 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 ~/.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. >>> >>> >>> -------------------------------------------------------------------- >>> ---------- >>> Infragistics Professional >>> Build stunning WinForms apps today! >>> Reboot your WinForms applications with our WinForms controls. >>> Build a bridge from your legacy apps to the future. >>> http://pubads.g.doubleclick.net/gampad/clk?id=153845071&iu=/4140/ost >>> g.clktrk _______________________________________________ >>> Opensaf-devel mailing list >>> Opensaf-devel@lists.sourceforge.net >>> https://lists.sourceforge.net/lists/listinfo/opensaf-devel ------------------------------------------------------------------------------ _______________________________________________ Opensaf-devel mailing list Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel