Ack. Thanks, Ramesh.
On 1/19/2017 7:45 PM, Anders Widell wrote: > Ack with minor comment marked AndersW> > > regards, > > Anders Widell > > > On 01/13/2017 10:40 AM, Hans Nordeback wrote: >> src/amf/amfd/ckpt_dec.cc | 2 + >> src/amf/amfd/clm.cc | 2 + >> src/amf/amfd/csi.cc | 7 ++++- >> src/amf/amfd/node.cc | 4 ++- >> src/amf/amfd/nodegroup.cc | 4 ++- >> src/amf/amfd/si_dep.cc | 1 + >> src/amf/amfnd/pgdb.cc | 4 +- >> src/amf/amfnd/su.cc | 2 + >> src/base/logtrace.c | 18 +++++++++--- >> src/base/logtrace.h | 48 >> ++++++++++++++++++++++++++++++++++++ >> src/imm/agent/imma_init.cc | 7 +++- >> src/imm/agent/imma_om_api.cc | 2 - >> src/imm/immnd/ImmModel.cc | 16 ++++++------ >> src/imm/immpbed/immpbe_daemon.cc | 4 ++- >> src/log/logd/lgs_imm_gcfg.cc | 2 + >> src/log/logd/lgs_main.cc | 2 + >> src/log/logd/lgs_mbcsv.cc | 2 + >> src/ntf/ntfd/NtfClient.cc | 2 +- >> src/smf/smfd/SmfCampaignXmlParser.cc | 3 ++ >> src/smf/smfd/SmfUpgradeStep.cc | 3 ++ >> 20 files changed, 111 insertions(+), 24 deletions(-) >> >> >> diff --git a/src/amf/amfd/ckpt_dec.cc b/src/amf/amfd/ckpt_dec.cc >> --- a/src/amf/amfd/ckpt_dec.cc >> +++ b/src/amf/amfd/ckpt_dec.cc >> @@ -370,6 +370,8 @@ static uint32_t dec_app_config(AVD_CL_CB >> uint32_t status = NCSCC_RC_SUCCESS; >> AVD_APP app; >> >> + TRACE_ENTER(); >> + >> osafassert(dec->i_action == NCS_MBCSV_ACT_UPDATE); >> decode_app(&dec->i_uba, &app); >> >> diff --git a/src/amf/amfd/clm.cc b/src/amf/amfd/clm.cc >> --- a/src/amf/amfd/clm.cc >> +++ b/src/amf/amfd/clm.cc >> @@ -83,6 +83,8 @@ static void clm_node_exit_validate(AVD_A >> bool reject = false; >> SaAisErrorT rc = SA_AIS_OK; >> + TRACE_ENTER(); >> + >> /* >> * Reject validate step on self node as this is active controller >> */ >> diff --git a/src/amf/amfd/csi.cc b/src/amf/amfd/csi.cc >> --- a/src/amf/amfd/csi.cc >> +++ b/src/amf/amfd/csi.cc >> @@ -831,6 +831,7 @@ static void ccb_apply_delete_hdlr(CcbUti >> bool first_sisu = true; >> + TRACE_ENTER(); >> if (avd_cb->avail_state_avd != SA_AMF_HA_ACTIVE) { >> /* A double check whether csi has been deleted from DB or >> not and whether pointer stored userData >> is still valid. */ >> @@ -851,7 +852,7 @@ static void ccb_apply_delete_hdlr(CcbUti >> goto done; >> } >> - TRACE_ENTER2("'%s'", csi ? csi->name.c_str() : nullptr); >> + TRACE("'%s'", csi ? csi->name.c_str() : nullptr); >> /* Check whether si has been assigned to any SU. */ >> if ((nullptr != csi->si->list_of_sisu) && >> @@ -992,6 +993,8 @@ static void csi_ccb_apply_modify_hdlr(st >> **************************************************************************/ >> static void csi_ccb_apply_create_hdlr(struct CcbUtilOperationData >> *opdata) >> { >> + TRACE_ENTER(); >> + >> AVD_CSI *csi = nullptr; >> if ((csi = csi_db->find(Amf::to_string(&opdata->objectName))) >> == nullptr) { >> /* this check is added because, some times there is >> @@ -1027,6 +1030,8 @@ SaAisErrorT csi_assign_hdlr(AVD_CSI *csi >> AVD_COMP_CSI_REL *compcsi; >> SaAisErrorT rc = SA_AIS_ERR_NO_OP; >> + TRACE_ENTER(); >> + >> /* Check whether csi assignment is already in progress and if >> yes, then return. >> This csi will be assigned after the undergoing csi >> assignment gets over.*/ >> if (csi->si->list_of_sisu != nullptr) { >> diff --git a/src/amf/amfd/node.cc b/src/amf/amfd/node.cc >> --- a/src/amf/amfd/node.cc >> +++ b/src/amf/amfd/node.cc >> @@ -891,7 +891,9 @@ static void node_ccb_apply_cb(CcbUtilOpe >> void node_admin_state_set(AVD_AVND *node, SaAmfAdminStateT >> admin_state) >> { >> SaAmfAdminStateT old_state = node->saAmfNodeAdminState; >> - >> + >> + TRACE_ENTER(); >> + >> if (old_state == admin_state) >> return; >> osafassert(admin_state <= SA_AMF_ADMIN_SHUTTING_DOWN); >> diff --git a/src/amf/amfd/nodegroup.cc b/src/amf/amfd/nodegroup.cc >> --- a/src/amf/amfd/nodegroup.cc >> +++ b/src/amf/amfd/nodegroup.cc >> @@ -467,13 +467,15 @@ static SaAisErrorT ng_ccb_completed_dele >> AVD_AVND *node; >> AVD_AMF_NG *ng = avd_ng_get(Amf::to_string(&opdata->objectName)); >> + TRACE_ENTER(); >> + >> if (ng == nullptr) { >> LOG_WA("Could not find %s in nodegroup_db", >> osaf_extended_name_borrow(&opdata->objectName)); >> TRACE_LEAVE(); >> return SA_AIS_OK; >> } >> - TRACE_ENTER2("%u", ng->number_nodes()); >> + TRACE("%u", ng->number_nodes()); >> std::set<std::string>::const_iterator iter; >> if ((ng->saAmfNGAdminState != SA_AMF_ADMIN_LOCKED) && >> (ng->saAmfNGAdminState != SA_AMF_ADMIN_UNLOCKED) && >> diff --git a/src/amf/amfd/si_dep.cc b/src/amf/amfd/si_dep.cc >> --- a/src/amf/amfd/si_dep.cc >> +++ b/src/amf/amfd/si_dep.cc >> @@ -1426,6 +1426,7 @@ void avd_sidep_start_tolerance_timer_for >> { >> AVD_SI_DEP *si_dep_rec; >> + TRACE_ENTER(); >> TRACE("dep_si:%s >> spons_si:%s",dep_si->name.c_str(),spons_si->name.c_str()); >> si_dep_rec = sidep_db_find(spons_si->name, dep_si->name); >> diff --git a/src/amf/amfnd/pgdb.cc b/src/amf/amfnd/pgdb.cc >> --- a/src/amf/amfnd/pgdb.cc >> +++ b/src/amf/amfnd/pgdb.cc >> @@ -385,7 +385,7 @@ AVND_PG_MEM *avnd_pgdb_mem_rec_rmv(AVND_ >> void avnd_pgdb_mem_rec_del(AVND_CB *cb, AVND_PG *pg, const >> std::string& comp_name) >> { >> AVND_PG_MEM *pg_mem = 0; >> - TRACE_LEAVE(); >> + TRACE_ENTER(); >> /* remove the pg mem record */ >> pg_mem = avnd_pgdb_mem_rec_rmv(cb, pg, comp_name); >> @@ -415,7 +415,7 @@ void avnd_pgdb_mem_rec_del(AVND_CB *cb, >> void avnd_pgdb_mem_rec_del_all(AVND_CB *cb, AVND_PG *pg) >> { >> AVND_PG_MEM *curr = 0; >> - TRACE_LEAVE(); >> + TRACE_ENTER(); >> while (0 != (curr = (AVND_PG_MEM >> *)m_NCS_DBLIST_FIND_FIRST(&pg->mem_list))) >> avnd_pgdb_mem_rec_del(cb, pg, >> Amf::to_string(&curr->info.member.compName)); >> diff --git a/src/amf/amfnd/su.cc b/src/amf/amfnd/su.cc >> --- a/src/amf/amfnd/su.cc >> +++ b/src/amf/amfnd/su.cc >> @@ -907,6 +907,8 @@ static uint32_t avnd_process_comp_csi_ms >> uint32_t rc = NCSCC_RC_SUCCESS; >> std::map<MDS_DEST, MDS_SVC_PVT_SUB_PART_VER>::iterator iter; >> + TRACE_ENTER(); >> + >> /* >> Callback is sent in the following cases: >> -a PI comp: CSI is assigned to this component. >> diff --git a/src/base/logtrace.c b/src/base/logtrace.c >> --- a/src/base/logtrace.c >> +++ b/src/base/logtrace.c >> @@ -80,7 +80,7 @@ static void sighup_handler(int sig) >> setlogmask(logmask); >> } >> -static void output(const char *file, unsigned int line, int >> priority, int category, const char *format, va_list ap) >> +void output_(const char *file, unsigned int line, int priority, int >> category, const char *format, va_list ap) >> { >> int i; >> struct timeval tv; >> @@ -162,23 +162,31 @@ void _logtrace_log(const char *file, uns >> if (!(category_mask & (1 << CAT_LOG))) >> goto done; >> - output(file, line, priority, CAT_LOG, format, ap2); >> + output_(file, line, priority, CAT_LOG, format, ap2); >> done: >> va_end(ap); >> va_end(ap2); >> } >> +bool is_trace_enabled_(unsigned int category) >> +{ >> + /* Filter on category */ >> + if (!(category_mask & (1 << category))) >> + return false; >> + else >> + return true; >> +} >> + > > AndersW> The above if-statement can be simplified by replacing it with: > > return (category_mask & (1 << category)) != 0; >> void _logtrace_trace(const char *file, unsigned int line, unsigned >> int category, const char *format, ...) >> { >> va_list ap; >> - /* Filter on category */ >> - if (!(category_mask & (1 << category))) >> + if (is_trace_enabled_(category) == false) >> return; >> va_start(ap, format); >> - output(file, line, LOG_DEBUG, category, format, ap); >> + output_(file, line, LOG_DEBUG, category, format, ap); >> va_end(ap); >> } >> diff --git a/src/base/logtrace.h b/src/base/logtrace.h >> --- a/src/base/logtrace.h >> +++ b/src/base/logtrace.h >> @@ -34,6 +34,7 @@ >> #define BASE_LOGTRACE_H_ >> #include <syslog.h> >> +#include <stdarg.h> >> #include "base/ncsgl_defs.h" >> #ifdef __cplusplus >> extern "C" { >> @@ -122,6 +123,9 @@ extern void _logtrace_log(const char *fi >> extern void _logtrace_trace(const char *file, unsigned int line, >> unsigned int category, >> const char *format, ...) __attribute__ >> ((format(printf, 4, 5))); >> +extern bool is_trace_enabled_(unsigned int category); >> +extern void output_(const char *file, unsigned int line, int >> priority, int category, const char *format, va_list ap); >> + >> /* LOG API. Use same levels as syslog */ >> #define LOG_EM(format, args...) _logtrace_log(__FILE__, __LINE__, >> LOG_EMERG, (format), ##args) >> #define LOG_AL(format, args...) _logtrace_log(__FILE__, __LINE__, >> LOG_ALERT, (format), ##args) >> @@ -141,10 +145,54 @@ extern void _logtrace_trace(const char * >> #define TRACE_6(format, args...) _logtrace_trace(__FILE__, >> __LINE__, CAT_TRACE6, (format), ##args) >> #define TRACE_7(format, args...) _logtrace_trace(__FILE__, >> __LINE__, CAT_TRACE7, (format), ##args) >> #define TRACE_8(format, args...) _logtrace_trace(__FILE__, >> __LINE__, CAT_TRACE8, (format), ##args) >> + >> +#ifdef __cplusplus >> +class Trace { >> + public: >> + Trace() {} >> + ~Trace() { >> + if (!trace_leave_called && is_trace_enabled_(CAT_TRACE_LEAVE)) { >> + va_list ap; >> + output_(file_, 0, LOG_DEBUG, CAT_TRACE_LEAVE, function_, ap); >> + } >> + } >> + void trace(const char *file, const char *function, unsigned int >> line, unsigned int category, const char *format, ...) { >> + va_list ap; >> + if (is_trace_enabled_(category)) { >> + file_ = file; >> + function_ = function; >> + va_start(ap, format); >> + output_(file, line, LOG_DEBUG, category, format, ap); >> + va_end(ap); >> + } >> + } >> + >> + void trace_leave(const char *file, unsigned int line, unsigned int >> category, const char *format, ...) { >> + va_list ap; >> + if (is_trace_enabled_(category)) { >> + va_start(ap, format); >> + trace_leave_called = true; >> + output_(file, line, LOG_DEBUG, category, format, ap); >> + va_end(ap); >> + } >> + } >> + private: >> + bool trace_leave_called {false}; >> + const char* file_{nullptr}; >> + const char* function_{nullptr}; >> +}; >> + >> +#define TRACE_ENTER() Trace t_; t_.trace(__FILE__, >> __FUNCTION__, __LINE__, CAT_TRACE_ENTER, "%s ", __FUNCTION__) >> +#define TRACE_ENTER2(format, args...) Trace t_; t_.trace(__FILE__, >> __FUNCTION__, __LINE__, CAT_TRACE_ENTER, "%s: " format, __FUNCTION__, >> ##args) >> + >> +#define TRACE_LEAVE() t_.trace_leave(__FILE__, >> __LINE__, CAT_TRACE_LEAVE, "%s ", __FUNCTION__) >> +#define TRACE_LEAVE2(format, args...) t_.trace_leave(__FILE__, >> __LINE__, CAT_TRACE_LEAVE, "%s: " format, __FUNCTION__, ##args) >> +#else >> #define TRACE_ENTER() _logtrace_trace(__FILE__, __LINE__, >> CAT_TRACE_ENTER, "%s ", __FUNCTION__) >> #define TRACE_ENTER2(format, args...) _logtrace_trace(__FILE__, >> __LINE__, CAT_TRACE_ENTER, "%s: " format, __FUNCTION__, ##args) >> #define TRACE_LEAVE() _logtrace_trace(__FILE__, __LINE__, >> CAT_TRACE_LEAVE, "%s ", __FUNCTION__) >> #define TRACE_LEAVE2(format, args...) _logtrace_trace(__FILE__, >> __LINE__, CAT_TRACE_LEAVE, "%s: " format, __FUNCTION__, ##args) >> +#endif >> #ifdef __cplusplus >> } >> diff --git a/src/imm/agent/imma_init.cc b/src/imm/agent/imma_init.cc >> --- a/src/imm/agent/imma_init.cc >> +++ b/src/imm/agent/imma_init.cc >> @@ -261,6 +261,8 @@ unsigned int imma_startup(NCSMDS_SVC_ID >> { >> unsigned int rc = NCSCC_RC_SUCCESS; >> + TRACE_ENTER(); >> + >> int pt_err = pthread_mutex_lock(&imma_agent_lock); >> if(pt_err) { >> TRACE_4("Could not obtain mutex lock error(%u):%s", >> @@ -269,7 +271,7 @@ unsigned int imma_startup(NCSMDS_SVC_ID >> goto done_nolock; >> } >> - TRACE_ENTER2("use count %u", imma_use_count); >> + TRACE("use count %u", imma_use_count); >> if (imma_use_count > 0) { >> /* Already created, so just increment the use_count */ >> @@ -321,6 +323,7 @@ unsigned int imma_shutdown(NCSMDS_SVC_ID >> { >> uint32_t rc = NCSCC_RC_SUCCESS; >> + TRACE_ENTER(); >> int pt_err = pthread_mutex_lock(&imma_agent_lock); >> if(pt_err) { >> TRACE_4("Could not obtain mutex lock error(%u):%s", >> @@ -329,7 +332,7 @@ unsigned int imma_shutdown(NCSMDS_SVC_ID >> goto done_nolock; >> } >> - TRACE_ENTER2("use count %u", imma_use_count); >> + TRACE("use count %u", imma_use_count); >> if (imma_use_count > 1) { >> /* Users still exist, just decrement the use count */ >> diff --git a/src/imm/agent/imma_om_api.cc b/src/imm/agent/imma_om_api.cc >> --- a/src/imm/agent/imma_om_api.cc >> +++ b/src/imm/agent/imma_om_api.cc >> @@ -4989,7 +4989,6 @@ SaAisErrorT saImmOmClassDescriptionGet_2 >> IMMSV_EVT *out_evt = NULL; >> IMMA_CLIENT_NODE *cl_node = NULL; >> SaTimeT timeout = 0; >> - TRACE_ENTER(); >> if (cb->sv_id == 0) { >> TRACE_2("ERR_BAD_HANDLE: No initialized handle exists!"); >> @@ -9375,7 +9374,6 @@ SaAisErrorT saImmOmCcbGetErrorStrings(Sa >> IMMA_CCB_NODE *ccb_node = NULL; >> SaImmHandleT immHandle=0LL; >> IMMA_CLIENT_NODE *cl_node = NULL; >> - TRACE_ENTER(); >> if (cb->sv_id == 0) { >> TRACE_2("ERR_BAD_HANDLE: No initialized handle exists!"); >> diff --git a/src/imm/immnd/ImmModel.cc b/src/imm/immnd/ImmModel.cc >> --- a/src/imm/immnd/ImmModel.cc >> +++ b/src/imm/immnd/ImmModel.cc >> @@ -3898,7 +3898,7 @@ ImmModel::oneSafe2PBEAllowed() >> //TRACE_ENTER(); >> ObjectMap::iterator oi = sObjectMap.find(immObjectDn); >> if(oi == sObjectMap.end()) { >> - TRACE_LEAVE(); >> + //TRACE_LEAVE(); >> return false; >> } >> @@ -3920,7 +3920,7 @@ ImmModel::protocol43Allowed() >> //TRACE_ENTER(); >> ObjectMap::iterator oi = sObjectMap.find(immObjectDn); >> if(oi == sObjectMap.end()) { >> - TRACE_LEAVE(); >> + //TRACE_LEAVE(); >> return false; >> } >> @@ -3942,7 +3942,7 @@ ImmModel::protocol45Allowed() >> //TRACE_ENTER(); >> ObjectMap::iterator oi = sObjectMap.find(immObjectDn); >> if(oi == sObjectMap.end()) { >> - TRACE_LEAVE(); >> + //TRACE_LEAVE(); >> return false; >> } >> @@ -3964,7 +3964,7 @@ ImmModel::protocol46Allowed() >> //TRACE_ENTER(); >> ObjectMap::iterator oi = sObjectMap.find(immObjectDn); >> if(oi == sObjectMap.end()) { >> - TRACE_LEAVE(); >> + //TRACE_LEAVE(); >> return false; >> } >> @@ -3986,7 +3986,7 @@ ImmModel::protocol47Allowed() >> //TRACE_ENTER(); >> ObjectMap::iterator oi = sObjectMap.find(immObjectDn); >> if(oi == sObjectMap.end()) { >> - TRACE_LEAVE(); >> + //TRACE_LEAVE(); >> return false; >> } >> @@ -4012,7 +4012,7 @@ ImmModel::protocol50Allowed() >> } >> ObjectMap::iterator oi = sObjectMap.find(immObjectDn); >> if(oi == sObjectMap.end()) { >> - TRACE_LEAVE(); >> + //TRACE_LEAVE(); >> return false; >> } >> @@ -4039,7 +4039,7 @@ ImmModel::protocol51Allowed() >> } >> ObjectMap::iterator oi = sObjectMap.find(immObjectDn); >> if(oi == sObjectMap.end()) { >> - TRACE_LEAVE(); >> + //TRACE_LEAVE(); >> return false; >> } >> @@ -4062,7 +4062,7 @@ ImmModel::protocol41Allowed() >> //TRACE_ENTER(); >> ObjectMap::iterator oi = sObjectMap.find(immObjectDn); >> if(oi == sObjectMap.end()) { >> - TRACE_LEAVE(); >> + //TRACE_LEAVE(); >> return false; >> } >> diff --git a/src/imm/immpbed/immpbe_daemon.cc >> b/src/imm/immpbed/immpbe_daemon.cc >> --- a/src/imm/immpbed/immpbe_daemon.cc >> +++ b/src/imm/immpbed/immpbe_daemon.cc >> @@ -1561,6 +1561,8 @@ static SaAisErrorT saImmOiCcbObjectCreat >> unsigned int msecs_waited = 0; >> std::string objectDn; >> + TRACE_ENTER(); >> + >> if(parentName != NULL && >> !osaf_is_extended_name_empty(parentName)) { >> TRACE_ENTER2("CREATE CALLBACK CCB:%llu class:%s parent:%s", >> ccbId, className, osaf_extended_name_borrow(parentName)); >> } else { >> @@ -2219,7 +2221,7 @@ void pbeDaemon(SaImmHandleT immHandle, v >> immutilWrapperProfile.retryInterval = 400; >> immutilWrapperProfile.nTries = 5; >> - >> + TRACE_ENTER(); >> LOG_NO("pbeDaemon starting with obj-count:%u", sObjCount); >> /* Restore also sClassCount. */ >> diff --git a/src/log/logd/lgs_imm_gcfg.cc b/src/log/logd/lgs_imm_gcfg.cc >> --- a/src/log/logd/lgs_imm_gcfg.cc >> +++ b/src/log/logd/lgs_imm_gcfg.cc >> @@ -531,6 +531,8 @@ static const SaImmOiCallbacksT_2 callbac >> static void save_network_name(char* new_name) { >> uint32_t name_len = 0; >> + TRACE_ENTER(); >> + >> osaf_mutex_lock_ordie(&lgs_gcfg_applier_mutex); >> /* Delete old name */ >> diff --git a/src/log/logd/lgs_main.cc b/src/log/logd/lgs_main.cc >> --- a/src/log/logd/lgs_main.cc >> +++ b/src/log/logd/lgs_main.cc >> @@ -480,6 +480,8 @@ int main(int argc, char *argv[]) { >> */ >> const time_t CLEAN_TIMEOUT = 600; /* 10 min */ >> + TRACE_ENTER(); >> + >> daemonize(argc, argv); >> if (setenv("SA_ENABLE_EXTENDED_NAMES", "1", 1) != 0 ) { >> diff --git a/src/log/logd/lgs_mbcsv.cc b/src/log/logd/lgs_mbcsv.cc >> --- a/src/log/logd/lgs_mbcsv.cc >> +++ b/src/log/logd/lgs_mbcsv.cc >> @@ -2176,6 +2176,8 @@ uint32_t lgs_ckpt_send_async(lgs_cb_t *c >> NCS_MBCSV_ARG mbcsv_arg; >> lgsv_ckpt_msg_type_t ckpt_rec_type; >> + TRACE_ENTER(); >> + >> if (lgs_is_peer_v5()) { >> lgsv_ckpt_msg_v5_t *ckpt_rec_v5 = >> static_cast<lgsv_ckpt_msg_v5_t *>(ckpt_rec); >> ckpt_rec_type = ckpt_rec_v5->header.ckpt_rec_type; >> diff --git a/src/ntf/ntfd/NtfClient.cc b/src/ntf/ntfd/NtfClient.cc >> --- a/src/ntf/ntfd/NtfClient.cc >> +++ b/src/ntf/ntfd/NtfClient.cc >> @@ -350,7 +350,7 @@ void NtfClient::readNextResponse(SaAisEr >> } else { >> read_next_res_lib(*error, NULL, mdsDest_, mdsCtxt); >> } >> - TRACE_ENTER(); >> + TRACE_LEAVE(); >> } >> void NtfClient::deleteReaderResponse(SaAisErrorT* error, >> diff --git a/src/smf/smfd/SmfCampaignXmlParser.cc >> b/src/smf/smfd/SmfCampaignXmlParser.cc >> --- a/src/smf/smfd/SmfCampaignXmlParser.cc >> +++ b/src/smf/smfd/SmfCampaignXmlParser.cc >> @@ -2016,6 +2016,7 @@ SmfCampaignXmlParser::parseAppType( >> { >> xmlNsPtr ns = 0; >> std::string dn; >> + TRACE_ENTER(); >> SmfImmCreateOperation* ico = prepareCreateOperation(parent, >> "SaAmfAppType", i_node, "safVersion", dn); >> if (ico == NULL) { >> LOG_NO("SmfCampaignXmlParser::parseAppType: Fail to prepare >> create IMM Create Operation"); >> @@ -2083,6 +2084,7 @@ SmfCampaignXmlParser::parseSGType( >> { >> xmlNsPtr ns = 0; >> std::string dn; >> + TRACE_ENTER(); >> SmfImmCreateOperation* ico = prepareCreateOperation(parent, >> "SaAmfSGType", i_node, "safVersion", dn); >> if (ico == NULL) { >> LOG_NO("SmfCampaignXmlParser::parseSGType: Fail to prepare >> create IMM Create Operation"); >> @@ -2154,6 +2156,7 @@ SmfCampaignXmlParser::parseSUType( >> { >> xmlNsPtr ns = 0; >> std::string dn; >> + TRACE_ENTER(); >> SmfImmCreateOperation* ico = prepareCreateOperation(parent, >> "SaAmfSUType", i_node, "safVersion", dn); >> if (ico == NULL) { >> LOG_NO("SmfCampaignXmlParser::parseSUType: Fail to prepare >> create IMM Create Operation"); >> diff --git a/src/smf/smfd/SmfUpgradeStep.cc >> b/src/smf/smfd/SmfUpgradeStep.cc >> --- a/src/smf/smfd/SmfUpgradeStep.cc >> +++ b/src/smf/smfd/SmfUpgradeStep.cc >> @@ -2574,6 +2574,9 @@ bool SmfUpgradeStep::checkAndInvokeCallb >> SaAisErrorT rc = SA_AIS_OK; >> std::vector < SmfUpgradeStep * >::const_iterator iter; >> + >> + TRACE_ENTER(); >> + >> const std::vector <SmfUpgradeStep *>& procSteps = >> m_procedure->getProcSteps(); >> cbkiter = callbackList.begin(); > ------------------------------------------------------------------------------ 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 Opensaf-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/opensaf-devel