Ok

I need some time to  re-check the TIPC code , will back to you soon.

-AVM


On 8/19/2016 1:46 PM, Hans Nordebäck wrote:
> Hi Mahesh,
>
> there is a problem that TIPC may silently drop messages at overload 
> situations, as MDS uses the SOCK_RDM option.
>
> At least it has to be logged when messages are dropped. It is allowed 
> in TIPC to set TIPC_DROPPABLE=false and also
>
> use multicast. The concern may be that the send buffer size may also 
> be overloaded at receive buffer full,
>
> as the ancillary message has to be  sent, this case is though very 
> unlikely.
>
> I'll update the patch with the logging of the returned message 
> removed, and only log that a message has been dropped, which
>
> should be enough for debugging purposes.
>
> /Thanks HansN
>
>
>
> On 08/18/2016 11:27 AM, A V Mahesh wrote:
>> Hi HansN,
>>
>> It seem you missed to see below :
>>
>> On 8/12/2016 9:11 AM, A V Mahesh wrote:
>>> Hi HansN,
>>>
>>> We were having ticket for this  raised by  Hans Feldt 
>>> `https://sourceforge.net/p/opensaf/tickets/634/`
>>>
>>> at that time i have give my analysis base the MDS code at that time 
>>> as below please check.
>>>
>>> ================================================================================================
>>>  
>>>
>>>
>>> The Linux TIPC 2.0 Programmer's Guide in section 1.5.7. Multicast 
>>> Message Delivery mention that.
>>>
>>> The TIPC currently does not permit an application to send a 
>>> multicast message with the "destination droppable" setting disabled.
>>> Consequently, TIPC will never try to return an undeliverable 
>>> multicast message to its sender.
>>>
>>> so if we set destination droppable disabled , multicast is not 
>>> permitted
>>> I experimented setting TIPC_DEST_DROPPABLE=off in multicast_demo and 
>>> observed that multicast is working
>>>
>>> As if The Opensaf using multicast , it is not allowed to set 
>>> TIPC_DEST_DROPPABLE=off
>>>
>>> ==========================================================================================
>>>  
>>
>>
>>
>> So the TIPC_DEST_DROPPABLE should be enabled only if 
>> MDS_TIPC_MCAST_ENABLED is disabled,
>> currently  by default TIPC Multicast Messaging Setting  enabled 
>> (MDS_TIPC_MCAST_ENABLED =1 )
>> in /etc/opensaf/nid.conf , if TIPC Multicast Messagingis disabled we 
>> can set  TIPC_DEST_DROPPABLE
>> dynamically.
>>
>> ========================================================================== 
>>
>>
>> # This is valid when above MDS_TRANSPORT is set to TIPC.
>> # Setting MDS_TIPC_MCAST_ENABLED to 1 or 0, allows OpenSAF
>> # to enable or disable TIPC Multicast Messaging.
>> # By Default TIPC  Multicast Messaging is Enabled.
>> # Note: In case of TIPC Multicast Messaging disabled (0), the 
>> performance
>> # of OpenSAF will be considerably lower as compared to Enabled (1).
>> export MDS_TIPC_MCAST_ENABLED=1
>>
>> ========================================================================== 
>>
>>
>> -AVM
>>
>>
>> On 8/18/2016 2:43 PM, Hans Nordeback wrote:
>>>   osaf/libs/core/mds/mds_dt_tipc.c |  32 
>>> +++++++++++++++++++++++++-------
>>>   1 files changed, 25 insertions(+), 7 deletions(-)
>>>
>>>
>>> diff --git a/osaf/libs/core/mds/mds_dt_tipc.c 
>>> b/osaf/libs/core/mds/mds_dt_tipc.c
>>> --- a/osaf/libs/core/mds/mds_dt_tipc.c
>>> +++ b/osaf/libs/core/mds/mds_dt_tipc.c
>>> @@ -320,6 +320,15 @@ uint32_t mdtm_tipc_init(NODE_ID nodeid,
>>>                   m_MDS_LOG_INFO("MDTM: Successfully set default 
>>> socket option TIPC_IMP = %d", TIPCIMPORTANCE);
>>>           }
>>>   +        int droppable = 0;
>>> +        if (setsockopt(tipc_cb.BSRsock, SOL_TIPC, 
>>> TIPC_DEST_DROPPABLE, &droppable, sizeof(droppable)) != 0) {
>>> +                LOG_ER("MDTM: Can't set TIPC_DEST_DROPPABLE to zero 
>>> err :%s\n", strerror(errno));
>>> +                m_MDS_LOG_ERR("MDTM: Can't set TIPC_DEST_DROPPABLE 
>>> to zero err :%s\n", strerror(errno));
>>> +                osafassert(0);
>>> +        } else {
>>> +                m_MDS_LOG_NOTIFY("MDTM: Successfully set 
>>> TIPC_DEST_DROPPABLE to zero");
>>> +        }
>>> +
>>>       return NCSCC_RC_SUCCESS;
>>>   }
>>>   @@ -563,6 +572,8 @@ ssize_t recvfrom_connectionless (int sd,
>>>       unsigned char *cptr;
>>>       int i;
>>>       int has_addr;
>>> +    int anc_data[2];
>>> +
>>>       ssize_t sz;
>>>         has_addr = (from != NULL) && (addrlen != NULL);
>>> @@ -591,19 +602,26 @@ ssize_t recvfrom_connectionless (int sd,
>>>                  if the message was sent using a TIPC name or name 
>>> sequence as the
>>>                  destination rather than a TIPC port ID So abort for 
>>> TIPC_ERRINFO and TIPC_RETDATA*/
>>>               if (anc->cmsg_type == TIPC_ERRINFO) {
>>> -                /* TIPC_ERRINFO - TIPC error code associated with a 
>>> returned data message or a connection termination message  so abort */
>>> -                m_MDS_LOG_CRITICAL("MDTM: undelivered message 
>>> condition ancillary data: TIPC_ERRINFO abort err :%s", 
>>> strerror(errno) );
>>> -                abort();
>>> +                anc_data[0] = *((unsigned int*)(CMSG_DATA(anc) + 0));
>>> +                if (anc_data[0] == TIPC_ERR_OVERLOAD) {
>>> +                    LOG_CR("MDTM: undelivered message condition 
>>> ancillary data: TIPC_ERR_OVERLOAD");
>>> +                    m_MDS_LOG_CRITICAL("MDTM: undelivered message 
>>> condition ancillary data: TIPC_ERR_OVERLOAD");
>>> +                } else {
>>> +                    /* TIPC_ERRINFO - TIPC error code associated 
>>> with a returned data message or a connection termination message  so 
>>> abort */
>>> +                    LOG_CR("MDTM: undelivered message condition 
>>> ancillary data: TIPC_ERRINFO abort err : %d", anc_data[0]);
>>> +                    m_MDS_LOG_CRITICAL("MDTM: undelivered message 
>>> condition ancillary data: TIPC_ERRINFO abort err : %d", anc_data[0]);
>>> +                }
>>>               } else if (anc->cmsg_type == TIPC_RETDATA) {
>>> -                /* If we set TIPC_DEST_DROPPABLE off messge 
>>> (configure TIPC to return rejected messages to the sender )
>>> +                /* If we set TIPC_DEST_DROPPABLE off message 
>>> (configure TIPC to return rejected messages to the sender )
>>>                      we will hit this when we implement MDS 
>>> retransmit lost messages  abort can be replaced with flow control 
>>> logic*/
>>>                   for (i = anc->cmsg_len - sizeof(*anc); i > 0; i--) {
>>> -                    m_MDS_LOG_DBG("MDTM: returned byte 0x%02x\n", 
>>> *cptr);
>>> +                    LOG_CR("MDTM: returned byte 0x%02x\n", *cptr);
>>> +                    m_MDS_LOG_CRITICAL("MDTM: returned byte 
>>> 0x%02x\n", *cptr);
>>>                       cptr++;
>>>                   }
>>>                   /* TIPC_RETDATA -The contents of a returned data 
>>> message  so abort */
>>> -                m_MDS_LOG_CRITICAL("MDTM: undelivered message 
>>> condition ancillary data: TIPC_RETDATA abort err :%s", 
>>> strerror(errno) );
>>> -                abort();
>>> +                LOG_CR("MDTM: undelivered message condition 
>>> ancillary data: TIPC_RETDATA");
>>> +                m_MDS_LOG_CRITICAL("MDTM: undelivered message 
>>> condition ancillary data: TIPC_RETDATA");
>>>               } else if (anc->cmsg_type == TIPC_DESTNAME) {
>>>                   if (sz == 0) {
>>>                       m_MDS_LOG_DBG("MDTM: recd bytes=0 on received 
>>> on sock, abnormal/unknown  condition. Ignoring");
>>
>


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

Reply via email to