On 12/20/2013 1:25 AM, Dan Creswell wrote:
...
And "serious flaw" - really? How might you judge that as the case? Have we
got a serious service-startup problem? Jini 2.x doesn't seem to have such
an issue even with the "serious flaw" you claim? Perhaps this "serious
flaw" has come into being because of all the other work you've done since
Jini 2.x (and I'm not saying the work isn't valuable)? If that is so,
perhaps that is because you have changed the contract against which a
service is written? If so, I would suggest you would be having a vote on
modifying the contract not adding an interface.

...

I think there is a big picture question that underlies all this. There
are two, potentially complementary, approaches to thread safety,
experiment and theory. Each has advantages and disadvantages.

In the pure experimental approach, the only thread safety issues that
require change are those that manifest as bugs in some known test. The
upside is that one can do strictly test driven development, where every
change fixes a test failure. The downside is that the resulting code can
be fragile - an apparently irrelevant change can shift a latent bug to
causing a test failure. The code may run fine on small, lightly loaded
systems, but fail on larger systems especially if there is contention
for processors and/or memory.

In a theory driven approach, the objective is to make the code
thread-safe by design. It requires changes to conform, in the case of
Java, to the JMM, regardless of whether the issue manifests as a test
failure. The upside is that the resulting code should be more robust -
mere timing changes, or shifts in the locations of page and cache line
boundaries, cannot cause failures. The downside is that it requires
changes that are not necessarily supported by a failing test case.

My own reading of River code convinced me that it was largely in an
experimental state, with multi-thread issues that were not being fixed
because they did not cause known test failures. Comments like `Jini 2.x
doesn't seem to have such an issue even with the "serious flaw" you
claim?` are typical of an experimental approach.

As I understand the big picture, Peter is pushing a change to a more
theory-based approach.

Shifting the balance from experimental towards theory involves a risk of
cascading problems because making one change that affects the
relationships between threads can open up a sequence of events that
triggers an apparently unrelated bug.

I think the PMC should discuss and decide on whether to make the change
to the theory based approach. If I were still a PMC member I would be
strongly in favor, but it is not up to me. A lot of decisions, including
this vote, would be obvious and non-controversial in the light of a
definite policy, either way, on that issue.

Patricia

Reply via email to