User:Rhelmer/AUS channel changing
From MozillaWiki
21:00 <@rhelmer> catlee: hello, just working on this channel changing aus feature and wanted to confirm some things 21:01 <@rhelmer> catlee: do we want it to basically behave like nightlies, where no matter what version you are on you'll get the latest complete for your OS/locale/etc ? 21:01 <@rhelmer> I have been assuming you don't want to have to generate any snippet files for this... 21:03 < catlee> rhelmer: yeah, we don't want ot generate extra snippets 21:04 <@rhelmer> catlee: hmm so for users on release channel going to nightly that'd be easy, for nightlies going to beta/release it'll be trickier I think... 21:04 < catlee> rhelmer: yeah 21:04 <@rhelmer> since we don't have any logic in place to discover the latest release/beta/etc. 21:04 <@rhelmer> latest non-nightly, I guess I should say 21:05 < catlee> rhelmer: for release to nightly, you can swap out the channel name with the target name, and continue on 21:05 <@rhelmer> catlee: right, that's what I started to do, until I considered the nightly->release case :) 21:06 <@rhelmer> I think we just need to introduce logic to discover the latest release 21:06 <@rhelmer> sorting our version number scheme is non-trivial unfortunately 21:06 <@rhelmer> although maybe with channels it is not as hard, need to refresh my memory on how that is all set up right now 21:07 < catlee> rhelmer: nthomas and I had it figured out 21:08 < catlee> you need another version of getLatestCompleteBuild 21:08 < catlee> that has another foreach loop that loops through the versions 21:11 < catlee> rhelmer: and then modify findPatch to take $newChannel or something 21:13 <@rhelmer> catlee: hmm ok that all makes sense; but how do we decide which version is the newest? it seems like we either need to sort the version numbers, or just pick the highest buildid (which is how getLatestCompleteBuild does it for nightlies if I am reading this correctly) 21:13 <@rhelmer> this would be a lot easier with a database :) 21:14 < catlee> yeah 21:14 < catlee> aus3! 21:24 <@rhelmer> catlee: hrm so what about the case where a user is on say 4.x nightly channel, and want to jump to release, but 5.x is out? do they get latest 4.x release or latest 5.x release? 21:25 <@rhelmer> we don't do any kind of "major update" for nightlies now, right? 21:27 < catlee> rhelmer: leave 4.x out of it 21:29 <@rhelmer> catlee: yeah so I think we're down to sorting the version numbers, which needs a specialized sort (AMO and socorro have their own implementations afaik) 21:29 <@rhelmer> hm 21:30 < catlee> hm 21:30 < catlee> maybe largest buildid works? 21:31 < catlee> although you'd want to avoid scanning ALL the release directories 21:31 <@rhelmer> yeah 21:31 <@rhelmer> catlee: well if you did that in Firefox right now, you'd get 3.5.18 as the latest-by-buildid :) 21:31 <@rhelmer> it's actually not too bad I don't think 21:31 <@rhelmer> something like 21:31 <@rhelmer> ls -latr /opt/aus2/incoming/3/Firefox/*/WINNT_x86-msvc/*/en-US/release/complete.txt | sort -t\/ -k 9 21:32 <@rhelmer> I think restricting to branch might make sense 21:32 <@rhelmer> well hmm 21:32 < catlee> branch will be the same 21:32 <@rhelmer> not sure if that makes it any easier actually 21:32 <@rhelmer> yeah 21:33 <@rhelmer> the layout for the nightly snippets makes a lot more sense for this... 21:33 < catlee> yeah 21:34 < catlee> I wonder if telling AUS which release version was "latest" would be too painful 21:34 <@rhelmer> i don't think so, could be done via config or via snippets 21:34 <@rhelmer> might as well be config tbh 21:34 < catlee> just means more churn 21:35 <@rhelmer> right just another little thing 21:35 < catlee> $LATEST_RELEASE = "5.0"; 21:35 < catlee> or somesuch 21:35 <@rhelmer> ok so the way nightlies are treated is interesting... so according to AUS the channel is always nightly, right? but what we colloquially call channels such as mozilla-aurora, mozilla-central, tracemonkey, are actually branches; is that right? 21:36 < catlee> and then restrict your searching to /opt/aus2/incoming/3/Firefox/$LATEST_RELEASE 21:36 < catlee> doesn't sound right 21:36 <@rhelmer> hmm 21:36 <@rhelmer> then I am confused at the variables being used in the code 21:36 <@rhelmer> are there example AUS strings somewhere? 21:36 <@rhelmer> AUS request URLs I mean 21:37 < catlee> an aurora build will identify itself on the aurora channel 21:38 <@rhelmer> ok in getLatestCompleteBuild it says $dir = SOURCE_DIR.'/2/'.$product.'/'.$branchVersion.'/'.$platform; 21:38 <@rhelmer> the path looks like 21:38 <@rhelmer> /opt/aus2/incoming/2/Firefox/mozilla-aurora/WINNT_x86-msvc/20110413090644/en-US/complete.txt 21:39 < catlee> right 21:39 < catlee> that's what the mapping in config-dist.php is for 21:39 < catlee> changes aurora channel name to mozilla-aurora on disk 21:40 <@rhelmer> ah $productBranchVersions 21:40 <@rhelmer> ok that's interesting 21:47 <@rhelmer> catlee: ok thanks, this is clearer now... I think if we can stand $LATEST_RELEASE it would make our lives easier... 21:47 <@rhelmer> we can traverse and then sort-by-buildid to get the latest 21:47 <@rhelmer> it'll increase IO but memcache should help hopefully 21:48 < catlee> I think it'll be a relatively uncommon request 21:49 <@rhelmer> true 21:49 <@rhelmer> yeah it must be user-initiated, we won't get automatic checks or anything 21:50 * rhelmer is going to dump this info into a bug comment for reference