commit 310ac5cdf625681c692ab2621d08c42dab80be0e
Author: vijayroy <srinivas.mangip...@oracle.com>
Date:   Tue Nov 14 12:07:54 2017 +0530

    ntfd: fix to avoid ntfimcnd from dumping core dump during massive 
add/delete ops [#2647]



---

** [tickets:#2647] ntfd: ntfimcnd crashed on handling for Object creation 
callback**

**Status:** fixed
**Milestone:** 5.18.01
**Created:** Thu Oct 19, 2017 12:45 PM UTC by Srinivas Siva Mangipudy
**Last Updated:** Tue Nov 14, 2017 06:57 AM UTC
**Owner:** Srinivas Siva Mangipudy


1. Problem 
========================================================================= = 
NTFimcnd crashed while 200k objects was created and the deleted in IMM, the 
classes  associated with these objects were also removed.
 
2. Analysis 
========================================================================= =
A huge number of objects, about 200k objects, were created in IMM with PBE 
disabled. Then these objects were deleted in one CCB (by deleting the root 
object). After deleting the objects, the classes were also removed. Then the 
crash happened.

 
../../../../../../../opensaf/osaf/services/saf/ntfsv/ntfimcnd/ntfimcn_imm.c:167:
 get_rdn_attr_name:  Assertion '0' failed. 

When NTFimcnd created notifications, some information had to be looked up in 
IMM.  
NTFimcnd only asked for class information in case of object creation: 

static SaAisErrorT saImmOiCcbObjectCreateCallback(SaImmOiHandleT immOiHandle,   
                                             SaImmOiCcbIdT ccbId,               
                                 const SaImmClassNameT className,               
                                 const SaNameT *parentName, const 
SaImmAttrValuesT_2 **attr) { … dn_ptr = get_created_dn(className, parentName, 
attr); … } static void saImmOiCcbApplyCallback(SaImmOiHandleT immOiHandle, 
SaImmOiCcbIdT ccbId) {                 …                                        
         switch (ccbUtilOperationData->operationType) {                 case 
CCBUTIL_CREATE:                         rdn_attr_name = get_rdn_attr_name(      
                                   ccbUtilOperationData- 
>param.create.className); 
                        internal_rc = ntfimcn_send_object_create_notification(  
                                       ccbUtilOperationData, rdn_attr_name,     
                                    ccbLast); … }
                        
In this case, NTF was still handling notifications for a big number of created 
objects.  Usually,  NTFimcnd cached the class information.  But because these 
objects belong to many classes, it had to ask IMM for class information. But  
the class was already removed in IMM.  IMM was much faster to create and delete 
the objects and class (with PBE disabled), while NTF  was still processing the 
objects, so the information was not there in IMM anymore, and the  crashed 
happened.


3. Reproduction 
========================================================================= = 
Can be reproduced like below: - Disable PBE 1. Create a huge amount of objects 
with one parent object.  2. In my case, I created 2 root objects of two 
different classes with about 100k  child objects each Delete first root object, 
then delete the class associated with this object. 3. Delete second root 
object, delete the class associated with this object. 


---

Sent from sourceforge.net because opensaf-tickets@lists.sourceforge.net is 
subscribed to https://sourceforge.net/p/opensaf/tickets/

To unsubscribe from further messages, a project admin can change settings at 
https://sourceforge.net/p/opensaf/admin/tickets/options.  Or, if this is a 
mailing list, you can unsubscribe from the mailing list.
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Opensaf-tickets mailing list
Opensaf-tickets@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/opensaf-tickets

Reply via email to