User:Rhelmer/AUS channel changing

From MozillaWiki
Jump to: navigation, search
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