diff --git a/src/ksync/ksync.sandesh b/src/ksync/ksync.sandesh index 87f64d7cdf3..1f0425d9a8d 100644 --- a/src/ksync/ksync.sandesh +++ b/src/ksync/ksync.sandesh @@ -20,3 +20,12 @@ systemlog sandesh VRouterError { 9: string str5; 10: u64 msg_no; } + +/** + * @description: Trace message for KSync Error + * @type: Trace + * @severity: DEBUG + */ +trace sandesh KSyncErrorTrace { + 1: string message; +} diff --git a/src/ksync/ksync_entry.h b/src/ksync/ksync_entry.h index ee8ffcabb4b..b037ff93836 100644 --- a/src/ksync/ksync_entry.h +++ b/src/ksync/ksync_entry.h @@ -9,6 +9,8 @@ #include #include #include +#include +#include #define KSYNC_ERROR(obj, ...)\ do {\ @@ -17,6 +19,13 @@ do {\ SandeshLevel::SYS_DEBUG, __FILE__, __LINE__, ##__VA_ARGS__);\ } while (false);\ +extern SandeshTraceBufferPtr KSyncErrorTraceBuf; +#define KSYNC_ERROR_TRACE(obj, ...) \ +do { \ + KSyncError##obj::TraceMsg(KSyncErrorTraceBuf, \ + __FILE__, __LINE__, __VA_ARGS__); \ +} while (false); + class KSyncObject; class KSyncDBObject; diff --git a/src/ksync/ksync_object.cc b/src/ksync/ksync_object.cc index 8ef8df3731f..8d633e8c7f6 100644 --- a/src/ksync/ksync_object.cc +++ b/src/ksync/ksync_object.cc @@ -28,6 +28,9 @@ #include "ksync_object.h" #include "ksync_types.h" +SandeshTraceBufferPtr KSyncErrorTraceBuf( + SandeshTraceBufferCreate("KSync Error", 5000)); + KSyncObject::FwdRefTree KSyncObject::fwd_ref_tree_; KSyncObject::BackRefTree KSyncObject::back_ref_tree_; KSyncObjectManager *KSyncObjectManager::singleton_ = NULL; @@ -460,10 +463,13 @@ void KSyncEntry::ErrorHandler(int err, uint32_t seq_no) const { ":", error_msg, ">. Object <", ToString(), ">. Operation <", OperationString(), ">. Message number :", seq_no); - LOG(ERROR, "VRouter operation failed. Error <" << err << ":" << - error_msg << ">. Object <" << ToString() << - ">. Operation <" << OperationString() << ">. Message number :" - << seq_no); + + std::stringstream sstr; + sstr << "VRouter operation failed. Error <" << err << ":" << error_msg << + ">. Object <" << ToString() << ">. Operation <" << + OperationString() << ">. Message number :" << seq_no; + KSYNC_ERROR_TRACE(Trace, sstr.str().c_str()); + LOG(ERROR, sstr.str().c_str()); KSYNC_ASSERT(err == 0); } diff --git a/src/vnsw/agent/kstate/kstate.cc b/src/vnsw/agent/kstate/kstate.cc index 1e3ec0d95bc..dd38f92f7e3 100644 --- a/src/vnsw/agent/kstate/kstate.cc +++ b/src/vnsw/agent/kstate/kstate.cc @@ -47,7 +47,8 @@ int KState::VrResponseMsgHandler(vr_response *r) { resp->Response(); st->Release(); - LOG(ERROR, "Error: " << strerror(-code) << " :code: " << -code); + LOG(ERROR, "Error reading kstate: " << strerror(-code) << + " :code: " << -code); return -code; } diff --git a/src/vnsw/agent/vrouter/ksync/sandesh_ksync.cc b/src/vnsw/agent/vrouter/ksync/sandesh_ksync.cc index a996a761169..77bb2d8b963 100644 --- a/src/vnsw/agent/vrouter/ksync/sandesh_ksync.cc +++ b/src/vnsw/agent/vrouter/ksync/sandesh_ksync.cc @@ -37,13 +37,7 @@ void vrouter_ops::Process(SandeshContext *context) { int KSyncSandeshContext::VrResponseMsgHandler(vr_response *r) { response_code_ = r->get_resp_code(); - if (-response_code_ == EEXIST) { - return 0; - } - if (response_code_ < 0) { - LOG(ERROR, "VrResponseMsg Error: " << - KSyncEntry::VrouterErrorToString(-response_code_)); return -response_code_; } diff --git a/src/vnsw/agent/vrouter/stats_collector/agent_stats_sandesh_context.cc b/src/vnsw/agent/vrouter/stats_collector/agent_stats_sandesh_context.cc index 8eb6545d91c..b45a33276be 100644 --- a/src/vnsw/agent/vrouter/stats_collector/agent_stats_sandesh_context.cc +++ b/src/vnsw/agent/vrouter/stats_collector/agent_stats_sandesh_context.cc @@ -37,7 +37,8 @@ int AgentStatsSandeshContext::VrResponseMsgHandler(vr_response *r) { } if (code < 0) { - LOG(ERROR, "Error: " << KSyncEntry::VrouterErrorToString(-code)); + LOG(ERROR, "Error in reading Statistics from vrouter: " << + KSyncEntry::VrouterErrorToString(-code)); return -code; }