osaf/services/saf/immsv/immnd/ImmModel.cc | 9 ++-------
osaf/services/saf/immsv/immnd/immnd_evt.c | 18 ++++++------------
2 files changed, 8 insertions(+), 19 deletions(-)
If an CCB is aborted, and the ERR_FAILED_OPERATION is returned to the client.
diff --git a/osaf/services/saf/immsv/immnd/ImmModel.cc
b/osaf/services/saf/immsv/immnd/ImmModel.cc
--- a/osaf/services/saf/immsv/immnd/ImmModel.cc
+++ b/osaf/services/saf/immsv/immnd/ImmModel.cc
@@ -5629,10 +5629,8 @@ ImmModel::ccbAbort(SaUint32T ccbId, Conn
}
}
- if (ccb->mVeto == SA_AIS_ERR_TIMEOUT) {
- *nodeId = ccb->mOriginatingNode;
- *client = ccb->mOriginatingConn;
- }
+ *nodeId = ccb->mOriginatingNode;
+ *client = ccb->mOriginatingConn;
ccb->mState = IMM_CCB_ABORTED;
ccb->mVeto = SA_AIS_ERR_FAILED_OPERATION;
@@ -12502,11 +12500,8 @@ ImmModel::cleanTheBasement(InvocVector&
(*i3)->mPbeRestartId, (*i3)->mId);
} else if(now - (*i3)->mWaitStartTime >= (int)max_oi_timeout) {
oi_timeout = 0;
- (*i3)->mVeto = SA_AIS_ERR_TIMEOUT;
TRACE_5("CCB %u timeout while waiting on implementer
reply",
(*i3)->mId);
- setCcbErrorString(*i3, "Resource Error: CCB timeout while "
- "waiting on implementer reply");
}
if((*i3)->mState == IMM_CCB_CRITICAL) {
diff --git a/osaf/services/saf/immsv/immnd/immnd_evt.c
b/osaf/services/saf/immsv/immnd/immnd_evt.c
--- a/osaf/services/saf/immsv/immnd/immnd_evt.c
+++ b/osaf/services/saf/immsv/immnd/immnd_evt.c
@@ -6620,8 +6620,9 @@ static void immnd_evt_ccb_abort(IMMND_CB
dummyClient = 0; /* dont reply to client here*/
}
- if (nodeId) {
+ if (nodeId && cb->node_id == dummynodeId) {
*nodeId = dummynodeId;
+ TRACE_2("ccb:%u is originated from this node", ccbId);
}
if (arrSize) {
@@ -7350,10 +7351,9 @@ static void immnd_evt_proc_ccb_finalize(
osafassert(evt);
immnd_evt_ccb_abort(cb, evt->info.ccbId, &client, &nodeId);
- if (nodeId && err == SA_AIS_OK) {
- /* nodeId will be set only when OI ccb timeout happens. An OI
timeout on
- a ccb callback will always abort the CCB. so, any reply
forwarded towards
- the OM CCB client should be an ERR_FAILED_OPERATION and not
ERR_TIMEOUT.
+ if (nodeId && err == SA_AIS_OK && !originatedAtThisNd) {
+ /* nodeId will be set when CCB is originated from this node.The
CCB is aborted,
+ and the error response forwarded to client will be
ERR_FAILED_OPERATION.
*/
originatedAtThisNd = SA_TRUE;
@@ -7382,13 +7382,7 @@ static void immnd_evt_proc_ccb_finalize(
memset(&send_evt, '\0', sizeof(IMMSV_EVT));
send_evt.type = IMMSV_EVT_TYPE_IMMA;
- send_evt.info.imma.info.errRsp.errStrings =
immModel_ccbGrabErrStrings(cb, evt->info.ccbId);
- if(send_evt.info.imma.info.errRsp.errStrings) {
- send_evt.info.imma.type = IMMA_EVT_ND2A_IMM_ERROR_2;
- } else {
- send_evt.info.imma.type = IMMA_EVT_ND2A_IMM_ERROR;
- }
-
+ send_evt.info.imma.type = IMMA_EVT_ND2A_IMM_ERROR;
send_evt.info.imma.info.errRsp.error = err;
TRACE_2("SENDRSP %u", err);
------------------------------------------------------------------------------
BPM Camp - Free Virtual Workshop May 6th at 10am PDT/1PM EDT
Develop your own process in accordance with the BPMN 2 standard
Learn Process modeling best practices with Bonita BPM through live exercises
http://www.bonitasoft.com/be-part-of-it/events/bpm-camp-virtual- event?utm_
source=Sourceforge_BPM_Camp_5_6_15&utm_medium=email&utm_campaign=VA_SF
_______________________________________________
Opensaf-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/opensaf-devel