bxc -> bgo: Rough first pass at a brain dump
- From: David Hoover <karma deadmoose com>
- To: bugzilla-devel-list gnome org
- Subject: bxc -> bgo: Rough first pass at a brain dump
- Date: Thu, 22 Jul 2004 18:25:50 -0700
It's nowhere near comprehensive yet, but I managed to get some time
today to mull around some of the details of what all needs to happen for
the bxc -> bgo migration. Attached is a copy of the file so far, so if
people (who all's on this list, anyways? Me, Andrew, Gerardo, &
bugmaster?)
A couple big points (which aren't necessarily in that document) that
I'll bring up explicitly, though:
1. This document (and the eventual scripts that will be written
based on it) should go someplace. If I'm the only person who'll
be doing much active hacking on it, I can just keep it in my own
local cvs repository, but if others will be doing much more than
advising over email, it should probably go into gnome cvs, no?
Also, it'd potentially be handy to keep around someplace real
for the future when something like this is needed again (see
also: lost knowledge of the eazel migration). Anyone's thoughts
on that? If it goes into gnome cvs, someone should come up with
a decent name, and I'll need a gnome cvs account; I've done
patches here & there, but I don't actually have cvs access.
2. On a similar vein, is it worth making a bugzilla product for
this? Again, if I'm more or less the only person hacking on it,
I'm okay managing issues/todo items/etc just in a file. Actual
bugs is probably overkill, but I just want to bring it up now
while it's convenient to do whatever.
3. How about the direct mysql access to the two bugzillas? bgo's
probably the easier of the two to manage that for, but it's
unfortunately the less interesting one to me. Andrew; are you
looking into this at all, or should I? If the latter, could you
give me some names to start harassing?
4. My very first item in the file is fairly important; bgo is
running bugzilla 2.16.5, but can anyone tell me what bxc is?
*crosses fingers for something without drastic table changes*
Those are sort of the big 4 I wanted to bring up first. I'll be mucking
around more with my little TODO file here in the meantime, since there's
still LOTS to write down, but if people could skim over this iteration
when they get a chance & send me feedback, it'd be much appreciated.
--
David Hoover <karma deadmoose com>
Information Gathering:
* Find versions of bugzilla (bgo = 2.16.5, bxc = ?) - If bxc is 2.17, there's
a lot more black magic involved. Here's hoping for very similar versions...
* Find list of products to migrate (Bonobo, Connector, Evolution, EDS, GAL,
GdkPixbuf, Soup, and XST ?)
* See below (in Random Thoughts) re: freezing the bugzillas when we do this
for real
* When this gets done for real, will we have direct mysql access to both
bugzillas? If not, we'll have to structure things drastically differently
in order to do all the reading from bxc on one host, then shovel the data
over to somewhere else where we can munge it and talk to bgo. If that's the
case, what we probably should do is just get a dump of bxc and fire it up
elsewhere for the migration
* Where will this be running for real? What kind of constraints will we have
on CPU usage, memory usage, disk usage, and wall time? (Ideally, I'd like
to make this as logically simple as possible, quite possibly involving
lots of large intermediate files, since spending time optimizing something
that will in essence only get run once seems a waste, and likely to
introduce bugs)
* What is the purpose of bugs.bug_file_loc? Is it actually in use? Do we need
to migrate things pointed to with those?
* Query all the duplicates and see if we have any duplicates referencing
bugs in products that we're not planning to migrate. Hopefully we won't,
but if we do, we need to come up with a plan (possibly just involving manual
appends to the relevent bugs post-migration)
===============================================================================
Random Thoughts:
* How are we going to generate new numbers for things like bugs.bug_id,
components.id, etc? They're autoincrementers so I suppose the right thing
would be to just blindly insert our new things and let it automagically
assign us a new number. Last I checked, that was easier said than done
(you essentially had to insert, then query explicitly looking for what you
just inserted), so my gut feeling is that I'd rather just freeze bgo, find
the highest number from each autoincrement field, and manually create my own
numbers. Depending how long this whole shebang takes to run, though,
freezing bgo might not be feasible...
* Speaking of freezes, how's that going to work? Presumably we'll need to
freeze bxc, since having people adding new bugs while we're doing this would
be ugly (though if we did it right, we wouldn't break, and we'd just have to
look to see if there are any bugs/attachments/etc in the appropriate
products that don't exist in our translation tables once we're done... That
doesn't address people updating info on existing bugs, though, so we probably
WILL need to just freeze it.
* There's a clean way to lock products so new bugs can't get filed, right?
(I'm thinking about how bxc should look once we're done, since we want the
old stuff to still be there, with status MOVED, but we don't want to have to
keep telling people "hey, thanks for filing that bug, um, let's refile it
over here now")
* Is it worth trying to do magic when migrating user profiles over? This is
in regards to user groups, etc. Probably, in general, it's easiest to just
migrate people and then later by hand deal with any special prividges
* When migrating users, are we going to run into a single person using diff
email addresses on bxc & bgo? (i.e. foo ximian com on one and foo gnome org
on the other, or some such) Probably need to just run comparisons and see
how many bxc email addresses exist that don't exist on bgo. If that number
is large enough, we may need to look into human intervention
===============================================================================
Flow:
* Get all relevent entries from profiles table and either create accounts at
bgo, or record pre-existing profiles.userid's
= We now have a mapping of profiles.userid's to the ones on bgo
NOTE: This could be done well in advance of the actual migration
* Get products from bxc, make matching ones in bgo (watch out for duplicates
like bonobo) - Should anything get renamed? (i.e. what's 'connector'
really called, and what SHOULD it be called?)
= We now have a mapping of products.product to new ones. This may be
excessive, since we potentially aren't changing any names, but it's
probably easy enough to implement since we'll be keeping a zillion lookup
tables anyway. Also, it might need to be more magic if bxc is recent
enough to have products.name not products.product
* Get components from bxc, make matching ones in bgo (once again, we might have
weirdness with duplicates like bonobo)
= We now have a mapping of components.id to new ones
* Whole bunch more......
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]