Kelly O'Hair's Weblog (blogs.sun.com)

pageicon Monday Oct 29, 2007

OpenJDK Mercurial Wheel

Sorry Dorothy, we aren't in Kansas anymore, and there isn't just one repository anymore. ;^)

The JDK team has been using TeamWare (also a Distributed SCM like Mercurial) for a very long time, and the strategy adopted involves having different teams (usually based on functionality) push changes through specific team areas rather than everyone integrating into one MASTER area. Each team can focus their testing on the changes their team is making, and also protect themselves from regressions made by other teams. It also allows for changes to be "baked" before being pushed into the MASTER area.

There is some overhead here, in that an assigned integrator for each team will need to periodically sync up or merge with the MASTER area, test the merge, and push the resulting merge up to the MASTER area. Sometimes this happens every few days, sometimes every week, and sometimes every two weeks. It depends on many factors. And some of these areas may not push directly to the MASTER area, it's up to the integrator and the team to decide if they want another ply on the wheel (so to speak). For example, the hotspot team has GC, Runtime, Compilers, and Serviceability areas (sometimes called baselines) that those hotspot teams push changes to, and those changes then get pushed to the hotspot area (sometime called "main" or "main/baseline").

And of course, all integrations to the MASTER area are done using a basic reservation model so that the merge and integration is not interrupted or complicated with someone else pushing changes to the MASTER area.

Hopefully this illustration will help.

Given any point in time, every one of these areas could be different in different ways, depends on how often the integrators sync up with the MASTER area. For the most part (with some exceptions) there is little overlap in the actual files changed in these areas, so often the merges are fairly simple, but they can get nasty. So if you need to talk to an integrator, remember, they don't get paid extra for being an integrator, so be nice. ;^)

For anyone considering a change to the OpenJDK, I recommend they go to the OpenJDK email aliases and connect with the appropriate team for the change you are making.

Expect more details on this in the days ahead.

-kto

Comments:

Hi Kelly,

I must confess that I don't know Mercurial nor do I know TeamWare, so perhaps my question may be silly in which case you can simply ignore it.

I just would like to know, how the different revisions of a file show up in the final master area. If a developer "X" for example submits mutliple changes (say 3 consecutive changes to the same file "A') together with some change comments for every change to his baseline area and later these changes (together with other changes of other developers) get integrated into the main baseline area and finally (together with even more other changes, one of developer "Y" which also affects file "A") will be integrated into the master area - than how will the revision history of file "A" in the master area look like.

Will there all of the 4 single changes of file "A" be visible together with their respective change comments, or will they be treated as 2 changes - one taken from the main baseline area of developer "X" and one taken from the main baseline area of developer "Y" or will they show up as a single new revision in the master area that contains all the 4 changes merged together? And what about the 4 change logs, will t hey be automatically visible in the master area, or will the change in the master area contain a new change log which just states that the different main baseline areas have been integrated?

I'm currently using Perforce, where I can always get access to the full revision history of a file. If there have been integrations from different other codelines, I can just follow the revsion history backwards in that specific codelines to see all changes and all change logs for that file.

Posted by Volker Simonis on October 30, 2007 at 10:46 AM PDT #

Hi Kelly,

you are doing a great work on publishing OpenJDK details and information for users and developers like me.

I never had such an inside information of a current Java SDK development than with OpenJDK. I hope SUN is going to continue this new openness in future Java releases.

- Best Regards
Alexander

Posted by alexander schunk on October 30, 2007 at 02:14 PM PDT #

Alexander,

The openness is just starting, expect much more in the coming months and from now on.

-kto

Posted by 192.18.43.225 on October 30, 2007 at 02:24 PM PDT #

Volker,

With Mercurial, the user comments and the changes a user makes create a "changeset". If that user creates 4 changesets or one is up to him. Depending on the order that different users pushed their conflicting changes, one of them will need to pull the others changsets, and create a merge changeset. That merge changeset is yet another changeset and it would include the resolving of any conflicts in source line changes between the changesets. When this second user pushes his changesets, it will also include this merge changeset.

Hope that helps.

-kto

Posted by 192.18.43.225 on October 30, 2007 at 02:29 PM PDT #

[Trackback] Update 6 Build 23 has been promoted, so far there is at least one build bug found (see 6624808 or this openjdk build-dev email). But these sources will be used pretty much 'as is' to start the Mercurial repositories...

Posted by Kelly O'Hair's Blog on November 01, 2007 at 06:20 PM PDT #

Post a Comment:
Comments are closed for this entry.

« October 2008
SunMonTueWedThuFriSat
   
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 
       
Today

Feeds

Search this blog

Links

Weblog menu

Today's referrers

Today's Page Hits: 725