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