I have reviewed the changeset made in the MNG-3004 branch. I don't know if the community will accept my review, but I'll make a stab at it anyway.
I think the implementation overall looks really good. My only real question is about the session cloning and session merging. What's the deal with that ? I have worked some more on the basic implementation of the code. I did not change anything significant, but I improved the testability significantly and I also wrote a quite comprehensive unit test. (My patch basically creates a stronger separation between concurrency dependency analysis and task execution. The dependency analysis has been separated into a separate class call ConcurrencyDependencyGraph with its own unit-test, ConcurrencyDependencyGraphTest.) As for further perspectives, I see that the current implementation does not advance-load external dependencies for non-schedulable builds. This certainly seems like a nice future possibility, but I think it is good judgment to leave this for a future version; this stuff is going to create enough stir ;) This implementation is clean and does not close this option for the future in any way. Compatibility with non-threaded version seems to be retained nicely by simply using a (mostly) separate branch of execution, with minimal code duplication. In one of the patches I supplied on MNG-3004 I also resurrected the StringSearchModelInterpolatorTest from the 2.2.X branch, and added a failing test related to demonstrating the concurrency fix I reported last week. It was not immediately clear/obvious to me if all of the tests in that base class AbstractModelInterpolatorTest were still relevant, and someone has to take a look at them. They were failing. There is is still the issue of handling snapshot artifacts, but the patch has been tested on a highly concurrent build server for some time now, and seems stable for a build without any snapshot artifacts. Regards, Kristian Rosenvold --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
