On 12/13/2010 2:24 PM, Peter Firmstone wrote:
Gregg Wonderly wrote:
...
And, of course if we pull out outrigger, as an application/service,
separate from the Jini part of river, we could just say that Outrigger
requires JDK1.5 so that we can move to a different concurrency
implementation if that is needed, using the new memory model.

It seems like a lot of work to fix a package private implementation,
already based on flawed assumptions (Patricia's done a great job
debugging this, she's a real asset, I look forward to learning more
debugging tips). I suspect we'll get a much better result starting from
scratch, utilising Java 6.

Since River is a Jini platform, why don't we start by creating an
independent implementation of outrigger utilising any latest available
java features. Not only will this produce a better implementation, that
will be easier to support, but it might improve our understanding of
what's required for a modular build as well.


I think the big payoff is going to 1.5. I have not yet found the exact bug in FastList but I think the root cause is probably over-complicated concurrency leading to lost nodes.

Although FastList should be the bottleneck in outrigger, because it is where the real work is done, I'm not sure it is. I got faster failures, probably due to a higher transaction rate, when I dropped the QA test that went through the JavaSpaces service in favor of a unit test that directly accesses FastList.

My next plan is to write a FastList replacement that is at least as good as the current one from the point of view of concurrency, but simpler and more maintainable. It will depend on the 1.5 memory model and the corresponding version of java.util and its sub-packages. I will also write additional unit tests in the spirit of the add/remove test that demonstrates the current problem. More maintainable interfaces plus a better unit test will be a good basis if we need to reduce contention between threads by some of the more extreme ideas.

I regard this as a bug fix exercise, but the 1.5 requirement may affect how and when it should be released. Should I create a new package for the 1.5 dependent version of outrigger? Any thoughts?

Patricia




Reply via email to