On 2/04/2013 7:51 PM, Dennis Reedy wrote:
On Apr 2, 2013, at 338AM, Peter Firmstone wrote:
The formatting didn't work out, I'll create a Jira issue to discuss.
Patricia's done a great job detailing the dependencies and issues with
TaskManager's Task implementations.
I recall a list discussion from the original Sun developers who had intended to
replace TaskManager, the runAfter method has issues.
Being so prevalent, it's quite possible that TaskManager is causing issues and
it might also explain why as performance improves more issues arise.
If a task completes before another task which it's supposed to runAfter but
isn't present in the queue; that could explain some issues.
I much prefer idempotent code myself.
This could take some effort to fix, any volunteers?
Dennis are you able to continue with your 2.2.1 branch release?
At this point I am unsure what branch to base the 2.2.1 release off of.
The 2.2.0 release, it might benefit from backports of synchronization
fixes that improve correctness, but not performance, if some volunteers
can diff the qa-refactoring branch and the 2.2.0 branch, there are
numerous simple synchronization fixes.
Additionally, what are the steps necessary to create a release?
1. First create a branch of 2.2.0, call it 2.2.1.
2. Developers will need to update their developer keys in the keys file.
3. Backport sensible synchronization fixes for existing classes
(don't get carried away, just essentials).
4. Definitely fix LookupLocator serialization which was accidentally
broken (similar to Levels an additional field was added that
should have been transient), look at the qa-refactoring release
for the fix, which is backward compatible with all releases.
5. Run the rat report tool, there should be a shell script for that,
it checks for licence compliance.
6. Increment version numbers (find 2.2.0 and replace with 2.2.1, but
don't replace all occurrences of 2.2.0, this has to be inspected
manually).
7. Update the release documentation.
8. Post pre release artifacts for wider community testing.
9. Wait about two weeks for feedback.
10. Then vote on the release artifacts.
11. Publish the artifacts.
12. I have some handwritten notes about the release process, they're
about 200km away from where I'm presently working, I should be
able to access them on the weekend.
This release will probably only be supportable on Linux and Solaris,
Windows only passed all tests recently, Windows users will want to wait
until we sort out the concurrency issues (ironically I haven't
reproduced any concurrency test failures on Windows, maybe the Windows
jvm is less aggressive with optimisations, or its the hardware being
tested).
For now I'm going to continue focusing my efforts on the qa-refactoring
branch, as it's been over three years since 2.2.0 was released, I'm
close and don't want to delay 2.3.0 much longer. This is a big release
which has culminated in 3 years of ongoing efforts.
In future I'd like to break River up into separate smaller components
that are far easier to release, I don't think I can do it again for
another 3 years, but we can save that discussion until after we've
released so we don't get distracted. I would like to see a more agile
release process.
Regards,
Peter.