Hi Filip,

Filip Hanik - Dev Lists schrieb:
Rainer Jung wrote:
<snip>

But I do not only have these very abstract concerns. There is room for improvement and I'll happily help as I did in 2004 for the TC 5.0/5.5 cluster. Examples for improvements:

- monitoring (the old MBeans are gone and there's no good alternative)
ClusterJMXHelper.java in tomcat/trunk, feel free to add more
- Java 5 dispatcher: it doesn't use a queue at the moment,
  instead it uses a thread pool.
huh? Yes, the thread pool uses a queue to queue its jobs. set threads=1, and you have a queued async sender, just like 5.5
  - we need to find out, if threads are to exensive for caching messages
    in case replication gets slow or stuck
not sure what this means
  - We can easily run into ordering problems if we use a separate thread
    for each message. I know there's an ordering interceptor, but
    there's a big diference between you can optionally use it or you
    have to use it to make replication correct.
use dispatcher with a single thread, it becomes automatically ordered, just like 5.5 TC session replication has never really relied on ordering, even in 5.5 you can get unordered messages since they are received using a thread pool. an ordering interceptor is really the only way you could guarantee it.

- documentation: the huge flexibility of HA/Tribes needs for better
  documentation
agreed

sounds little bit like there is a disconnect on the knowledge of what 5.5 provides vs 6.0

That's very likely. But as I wrote, my main concern is of a much more general nature and contained in what you abbreviated with "<snip>".

Although I think that a detailed technical discussion is not the right way to determine the usefulness of OACC, some comments:

- monitoring: your reference to trunk strengthens my argument about maturity of code. Taking trunk code instead of TC 5.5 code is the maximum opposite approach.

- Java 5 dispatcher: I mostly agree. I got lost in the code. The code I thought was responsible was transport/PooledSender.java which uses a fixed pool of threads without queueing. I overlooked somehow the Executor with queue in the Java 5 dispatcher. Nevertheless there's still some discrepancy, because we added some aspects to the queue in 5.5 which are gone now:

  - lock fairness biased to the remover in order to reduce the
    likelyness of lock starvation
  - taking over the whole queue by the remover instead of
    removing item by item (again less lock contention paired with
    less context switching)
  - limited size: Favor prevention of OutOfMemoryError over replication
    correctness in case we run into replication communication problems.
    Priority is always on the primary function, i.e. a working webapp,
    clustering is always a secondary function which should be as
    transparent as possible during normal operations

We could go into detail here, but I would prefer to do this in a separate discussion thread. I don't think that those examples are big problems, and maybe they are not problems at all.

I want to stress once again my own experience, that a huge code base implementing a complex apparatus needs time to mature. Thus I think it's fair to not simply lock up happy TC 5.5 cluster users inside 5.5 and offer OACC as an intermediate step on the way to migrate to HA/Tribes.

Regards,

Rainer

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to