By multiple tests,I have a guess that why this method(getEmptyCas) is
blocked.
Because the latter AE(deployed in remote) doesn't remove CAS from
CasPool in time ,the method doesn't get a free CAS is CasPool,then it
is blocked in a constant time(t seconds).The method check if there is
a free CAS every t seconds.
However, the latter AE removes the CAS every t1 seconds. Time t is
quite longer than t1 that there is a free cas in CasPool,but the method
is still blocked.
So it looks like that the multipler is always busy.
Is the guess right?
To solve the problem,I have 2 suggestions.We can improve the speed
of the latter AE.Or we can reduce the method's time of checking for a
free cas in CasPool.
Is that right?Could you tell me the relationship of casPool size and
casMultiplier poolsize?
My system is described as:
The aggregate AE(assumed as A) contains 3 AEes.The second part assumed
as B is a multiplier which contains a flow controller.B produce a new
cas and drop the original cas.The casPool and casMultiplier poolsize
are:
in A:
casPool=30
casMultiplier = 20
in B(There is one instance):
casPool=5
casMultiplier poolSize= 2 (or 10 you can set)
Other parts in A: casPool<10.
GetEmptyCas() will block until a free CAS is available in the CasPool.
What does the CasPool mean?Is it casMultiplier pool? Or just the casPool in
reply queue?Could you describe the process that B analyzes a cas.Where does
GetEmptyCas() get a free cas and Where does B send the new cas to?
The question seems very troublesome,I am very grateful if you give
me a hand.Thank you.
Best regards.
feixiang