Hi Hung,
Thanks for the explaining , still didn't get the advantage of unset the
mIsStale flag for headless case,
can you please clarify below taged with [AVM]
On 6/15/2017 10:03 AM, Hung Nguyen wrote:
Hi Mahesh,
In imma_discard_connection(), we mark the client as stale when having problem
sending messages to IMMD.
That happens when IMMD fails over or the cluster goes to headless.
[AVM] this clear that, up on IMMD unavailability ( fail over transition
or headless) irrelevant of both cases IMMND is marking
client as stale temporarily which are filed to send messages.
In case of failing over, when the new ACTIVE IMMD is available,
imma_discard_stales() is invoked to clean up the stale clients.
In order to re-discard a client that has been marked as stale, we have to unset
the mIsStale flag.
[AVM] this is also clear that , after fail over (on availability of new
IMMD ) IMMND rollbacks the client as stale status to normal , by
sending messages to new IMMD,
this is required because of clients are retained.
In case of headless, all IMMND on all nodes discard the clients locally without
sending any message to IMMD.
Whether the client is stale or not, we're going to discard them all anyway,
so the mIsStale flag must be unset to make sure that it's able to discard the
stale client.
[AVM] But in case of headless either IMMD(s) restored or not , client
are permanently stale , those client are no more usefull
and IMMND will free them permanently itself ( not going to be
retained) , in such case what is the advantage clearing mIsStale flag ?
-AVM
BR,
Hung Nguyen - DEK Technologies
--------------------------------------------------------------------------------
From: Mahesh vallamahesh.va...@oracle.com
Sent: Thursday, June 15, 2017 10:48AM
To: Hung Nguyen, Zoran Milinkovic
hung.d.ngu...@dektech.com.au,zoran.milinko...@ericsson.com
Cc: Opensaf-devel
opensaf-devel@lists.sourceforge.net
Subject: Re: [PATCH 1/1] imm: Allow stale clients to be discarded when going to
headless [#2487]
Hi Hung,
Jut trying to syncup the ligic of unsets the mIsStale flag of the
clients before immnd do invoking immnd_proc_imma_discard_connection() ,
immnd in multiple other cases also invoking
immnd_proc_imma_discard_connection() for exaple immnd_proc_imma_down()
as well, in addition to
immnd_proc_imma_discard_stales() & immnd_proc_discard_other_nodes().
But after this patch immnd is unsets the mIsStale flag of the clients,
olnly immnd_proc_imma_discard_stales() &
immnd_proc_discard_other_nodes(),
so that the clients can be discarded.
I if releate the above logic, that immnd need to unsets the mIsStale
flag of the clients only for
immnd_proc_imma_discard_stales() & immnd_proc_discard_other_nodes() ,
because of these two function being invoked
in HEADLESS case, is my under stating correct?
-AVM
On 6/9/2017 12:10 PM, Hung Nguyen wrote:
Just like immnd_proc_imma_discard_stales(), in
immnd_proc_discard_other_nodes() we should unset the mIsStale flag of
the clients.
So that the clients can be discarded.
---
src/imm/immnd/immnd_proc.c | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/imm/immnd/immnd_proc.c b/src/imm/immnd/immnd_proc.c
index 2bba717..22f8737 100644
--- a/src/imm/immnd/immnd_proc.c
+++ b/src/imm/immnd/immnd_proc.c
@@ -2824,6 +2824,7 @@ void immnd_proc_discard_other_nodes(IMMND_CB *cb)
while (cl_node) {
LOG_NO("Removing client id:%llx sv_id:%u",
cl_node->imm_app_hdl,
cl_node->sv_id);
+ cl_node->mIsStale = false;
osafassert(
immnd_proc_imma_discard_connection(cb, cl_node, true));
osafassert(immnd_client_node_del(cb, cl_node) ==
------------------------------------------------------------------------------
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