[01:14] sinzui: I have a output log for your script run on staging, not sure if it completed properly or not. Do you want to see the log? [01:45] spm: Has gina been crashing for ~ a week, or is it robust enough to withstand the un-understandable packages which have turned up in the Debian archive? [02:18] that was a weird oopsy crashy thing [02:19] Hm? [02:19] my machine more or less hung [02:19] only more or less though [02:19] i could type into bash [02:19] but the processes i started didn't get anywhere [02:20] Hmm. Disk access was hanging? [02:20] mwhudson: 'dmesg' next time [02:25] lifeless: that was one of the things that didn't do anythign [02:25] and i think it recovered actually, but i was into the reboot by then [02:40] wgrant: I'm not personally aware of any failures - but have been away for a few days... [02:49] EdwinGrubbs: thanks for getting that QA done on staging! Just to confirm, I'm guessing you also qa'd the 'distroseries milestone timeout' there (the CRB page only has the +index page entry as qa'd). Is that right? [02:50] Welcome back spm :) [02:50] noodles775: The previous fix applied to both bugs, and I erroneously thought that new fix did also. it is not timing out on staging, but I don't know why not. [02:53] noodles775: :-) [03:01] noodles775: _surely_ you should be asleep [03:02] It's only 4am! [03:02] mwhudson: normally yes, but I'm just a little keen to see that things go smoothly ;) [03:02] i see [03:03] * mwhudson reminds himself to never volunteer to be RM [03:04] mwhudson: but you had all that experience with BB. You should be poifect for the role! [03:04] spm: itym "have enough mental scar tissue" [03:05] * spm notes that trolling when the other person can't do Punch-In-The-Nose over TCP/IP is perferable [03:05] mwhudson: same same [03:06] Isn't the release ~6 hours away? [03:06] mwhudson: speaking of which, do you know where the two NEEDSTESTING remaining items on the code team testplan. [03:06] I don't see any announcements of it anywhere. [03:07] noodles775: it seems that my fix didn't [03:08] noodles775: I need to try again to work out what the problem is [03:08] wgrant: yes it is, I sent the schedule to lp-dev, I'm not sure whether mrevell has an email prepared... [03:09] mrevell won't be up before the release. [03:09] mwhudson: up for the call? [03:10] thumper: ok, if your certain, move it to BAD (?), and let me know if you plan to get it in a re-roll. [03:10] noodles775: not entirely certain [03:10] noodles775: I'm going to try to reproduce locally [03:10] noodles775: but apparently the revision has been rolled out and the page still oopses [03:10] noodles775: so in that sense it is bad [03:11] thumper: ok [03:12] noodles775: wait though [03:12] noodles775: I think it could be the staging librarian masking it [03:12] :) yay, ok. [03:12] spm: how do we get stuff from the production librarian to the staging librarian? [03:12] spm: what is copied across? [03:13] thumper: istr it's proxied - kinda sorta handwavy. [03:13] hmm... [03:13] http://staging.launchpadlibrarian.net/30419774/mp-unicode.msg [03:13] spm: gets processing failed [03:13] spm: any ideas how or why? [03:14] huh. and the real one works. looking... [03:16] thumper: one sec [03:16] Do you guys know about abentley's entry? bug 436325? [03:16] Bug #436325: Diffstat generation chokes on binaries (and others) [03:18] wgrant: mrevell will be around *for* the release, but I take from what you're saying that there's usually an announcement email sent to LP-users before the release? [03:19] * noodles775 looks through the archive [03:19] thumper: ok call? [03:19] noodles775: Normally sent to launchpad-announce, I think, so that people know that LP will be unavailable. [03:19] gr... I don't even know if I'll have access to send there. Thanks wgrant... checking now. [03:20] mwhudson: yep [03:22] noodles775: They've classically been sent 24-36 hours before. [03:23] However, I hope that lists.c.c announcement lists have a not-after-1am guard enabled. [03:23] wgrant: yeah - I'm not sure why it's not been sent this time, but I'll update the rm-wiki notes to put a check in there. Organising now. [03:24] noodles775: Thanks. [03:24] People get unhappy enough even when it is well announced. [03:24] :/ [03:25] thumper: haha. the staging librarian is down atm; staging rollout in progress. give it another 10-20 and try try again. [03:30] mwhudson: OOPS-1404EB48 [03:31] https://lp-oops.canonical.com/oops.py/?oopsid=1325EA163 [03:45] spm: is the staging librarian up? [03:45] nope. something looks nicely borked... [03:46] mwhudson: http://pastebin.ubuntu.com/309108/ [03:48] thumper: alas. it is still working - the restore is gradually building eggs. perhaps abnother 45 mins wait may be appropriate :-/ [03:49] noodles775: it may be fixed [03:49] noodles775: it certainly works locally [03:50] great! [03:50] noodles775: I clicked on the link in staging which took me to edge, not staging [03:50] and I didn't notice [03:50] :-| [03:50] thumper: do you know about abentley's bug listed there too? [03:51] noodles775: yes, it is bad but not a blocker [03:55] wgrant: ahh. in answer to your Q earlier about gina. I (you probably already know...) present bug 449408 [03:55] Bug #449408: Need scriptactivity monitoring of "gina" [03:56] spm: I've seen that, yes. [03:56] gina is a very special breed of evil. [03:56] wgrant: that means a lot; hearing you say that as in. ;-) [03:57] * spm has visions of gina owning it's own plane of the netherhells [03:57] Heh. [03:58] It'll need a bit of hacking soon :( [03:58] by the sound of; hacking with an axe [03:58] anywas. bbs. school run time. [03:58] Just with some v3 support. [04:08] Is postgresql any faster than mysql? [04:08] random question for the channel :P [04:08] Is that a valid question? [04:08] I don't have any basis for knowing [04:17] https://dev.launchpad.net/Soyuz/Specs/BuilddManagerUploadDecoupling [04:17] https://dev.launchpad.net/Soyuz/Specs/BuilddGeneralisation [04:27] wgrant and others: I've been chatting with flacoste and we've decided to reschedule for Thursday 5th 09.00 UTC due to the lack of announcement. [04:27] noodles775: Probably a good idea. [04:27] potentially 90mins of complete offline (no read access) is too scary - and we still don't have anyone who can send to lp-announce atm. [04:27] But... 5:30am. Ouch. [04:28] Ooh. [04:28] That's bad. [04:28] No read only? [04:28] wgrant: nope - librarian machines are being updated. [04:28] Ah. [04:28] That really does need an announcement. [04:28] yup. [04:29] updating identica now... [04:29] Thanks for working that out. [04:29] ... and thanks for pointing that out :) [04:49] jamesh, got time to help with a nagging problem I've been having that probably involves storm? [04:49] jtv: sure [04:49] great, thanks. [04:49] The problem is this: we have a script that's using up too much memory. [04:50] have you thought of buying more memory? [04:50] It shouldn't be pinning anything in memory across iterations of a particular loop. [04:50] yes, we considered that but I'm Dutch. [04:50] The only class from the Launchpad source tree that it seems to be allocating in great numbers is DBEnumVariable. [04:51] How hard is it to backup a launchpad server if you run everything on a single system? [04:51] jamesh: There are no other LP objects in memory that could explain having so many of those around. [04:52] MTecknology: not very, just back up the database. [04:52] jtv: and file system? [04:52] MTecknology: and... sleepwalking again? :) [04:52] well, you generally get one Variable for each field of each live instance Storm object instance [04:52] And the bzr branches, and the librarian. [04:52] jtv: hm? [04:52] and a few get created during expression compilation, but they shouldn't last long [04:53] MTecknology: oh, that'd be codehosting. I wouldn't know about that part. :/ [04:53] jamesh: this is after transaction.commit() & gc.collect() [04:53] jtv: what code in particular are we talking about? [04:54] just so I've got some idea of what's happening [04:54] jamesh: in the LP tree, lib/lp/translations/scripts/message_sharing_migration.py [04:54] jamesh: in there, look for _mergeTranslationMessages [04:55] * jtv sneezes [04:55] damn this cold weather [04:56] jamesh: that loop looks a lot more complex than it is [04:56] most of it is just ways to avoid pinning ORM-backed objects in memory across iterations [04:57] in essence it's "for potmsgset in potmsgsets: for tm in potmsgset.getAllTranslationMessages(False, prefetch=False): message.shareIfPossible()" [04:58] The rest is just a dance to make it store only objects' ids across iterations. [05:01] jtv: http://paste.ubuntu.com/309149/ <- I haven't tested this code, but it should give you some idea of what objects Storm knows about [05:03] jamesh: that may not tell us much... there's >100× more of these DBEnumVariable objects floating around than there are objects in Store._alive [05:03] (In the dump I have) [05:04] jtv: do you know what's referencing those objects? [05:04] If only I did... [05:04] This is where the storm internals start to matter, I suspect. [05:04] gc.get_referrers() can help [05:04] Oh, I knew about get_referents but not this one [05:05] I don't have any good sample code to play with for it [05:05] no worries, I can slot this right into our debug dumps. [05:06] you sometimes need to use it recursively though [05:06] the reference chain for most instance attributes is instance -> dict -> attr [05:06] The current dumping code is ready to go through 2 levels [05:06] so again no worries there [05:06] I just thought there was only get_referents and not get_referrers [05:07] get_referrers is a fair bit more expensive [05:07] since you essentially need to ask all the container objects whether they reference the one in question [05:08] Anyway, I have in memory: 92 POTMsgSets, 65 Languages. That's about it for the real Launchpad objects. Then, 19K DBEnumVariables, 334 CachedPropertys, 123 DBSchemaEnumCols, 99 PublicPersonChoices, 71 ContextTitles, and change. [05:09] The Language objects may get cached somewhere; I haven't bothered to look. I have no idea why the POTMsgSets would stick in memory unless Storm just likes to keep them in cache across transactions. The rest is a complete mystery. [05:09] how many enum columns are on each of those classes? [05:10] e.g. if POTMsgSet has 5 enum cols, then it would account for 460 DBEnumVariables [05:11] jamesh: might bools be implemented in this way? [05:11] no [05:12] jtv: DBEnumVariable has an _enum attribute pointing at the associated lazr enum [05:12] then judging by the interfaces, there's one enum in Language and one in POTMsgSet. [05:12] might help to see what those variables are for [05:15] https://pastebin.canonical.com/24271/ has counts for non-lp objects too. [05:15] might be an easier way to lay the blame than get_referrers [05:16] (scroll down to the last section for the meaningful results - should have trimmed the earlier sections) [05:16] jamesh: as per stub's clever suggestion we're dumping referrer info for some random samples [05:18] So 108423 storm.variable.IntVariables lying around, most likely buried in tuples or dictionaries along with functions (I suspect validators) [05:19] so, for a storm object you have a dual ObjectInfo that Storm manages behind the scenes [05:19] inside that object there is a tuple of Variable objects representing the primary key [05:19] (We are actually making a list of integer ids rather than some object that can be cast to an integer, aren't we?) [05:20] and a mapping from from columns to variables for the other fields [05:20] stub: good question... I'm just getting [obj.id for obj in result] [05:20] so IntVariable in a 1-tuple would be primary_vars [05:21] Variables as values in a dict are probably other columns [05:23] stub: I pushed a new version of the branch that, for the random samples, dumps referrers instead of referents. [05:23] maybe run again with that? [05:24] k [05:24] Gimme a package ;) [05:26] jtv: Did you tweak the filter? We don't seem to have enough launchpad database objects to account for everything so I suspect we need to turn the object filter off like I did last run [05:26] stub: package: eog [05:27] Gah. What is the branch again btw? Lost my shell history. [05:27] stub: can do... it's a matter of removing the "filter" argument from the dump_mem call [05:27] lp:~jtv/launchpad/debug-mem-2 [05:29] stage 1 underway (using my existing local hacks for no filter and more readable sample, not that the sample turned out to be useful) [05:29] I commented out the filter on my end as wel [05:29] l [05:30] what's the local hack for a more readable sample? [05:31] jtv: https://pastebin.canonical.com/24309/ [05:32] I don't think the exception handling on get_class is needed... hasn't barfed on me yet [05:32] has it barfed on you? [05:34] jtv: It did when I was trying to inspect contents of tuples - some bzrlib late loading stuff. Not needed now I suspect. [05:35] I was trying to categorize the tuples but it was too noisy. [05:36] * stub goes to the fly lice sho [05:36] stub: bong appetit [07:07] Morning :) [07:08] Morning mrevell -- want to announce the downtime? [07:10] wgrant, This is me back after a couple of days holiday. Roll-out downtime looks as though it's on the status page to me. [07:13] mrevell: So that has completely replaced launchpad-announce as the announcement mechanism? There has always been an email to launchpad-announce 24-36 hours before. [07:13] wgrant, I'm just checking to see what's been done and what hasn't... [07:15] wgrant, We're still waiting on definite confirmation of the roll-out time. I'll announce as soon as I have it. [07:16] mrevell: OK, great. This one is particularly important to announce well ahead of time... [07:20] wgrant: http://identi.ca/launchpadstatus [07:21] al-maisan: I know that, but most people don't. [07:21] wgrant: great. [07:22] And people rightly get unhappy when LP goes down for 90 minutes without an announcement. [07:22] wgrant: agreed. [07:26] jamesh: one thing we keep seeing in the random samples of live objects is _break_on_local_diverged, so presumably we've got a lot of those [07:26] that'd be the Reference() caches [07:27] If you have a reference Foo.bar using Foo.bar_id => Bar.id, Storm caches the value of Foo.bar and sets up an event handler to break that connection when Foo.bar_id changes [07:27] (such as happens when you commit the transaction [07:29] So what happens to those event handles when we commit? [07:30] on commit, all alive objects are invalidated [07:30] so non-primary vars are cleared [07:30] You've mentioned primary vars before.. what are they? [07:30] the columns that make up the primary key [07:31] just "id" for pretty much everything in Launchpad, IIRC [07:31] Yes [07:31] the primary vars aren't cleared because that's what is used to tie the Python object to the database row [07:37] jamesh: that begs two questions: why is the Python object still alive? And why so many more of these than live ORM-backed objects? [07:38] With the delay, is 3.1.10 absolutely frozen, or is there a possibility of getting in a trivial fix (in code only used by sync-source.py) to prevent crashes caused by v3 source packages breaking the autosyncer? [07:39] jtv: well, one possibility is that you've hit a bug. [07:39] but I don't really have enough info to say one way or the other [07:41] I also saw one dict that just mapped the string "remote" to a POTMsgSet. Would that be a Storm thing as well? [07:41] https://bugs.edge.launchpad.net/storm/+bug/435962 was reported recently about References from primary keys. I don't suppose that would apply to your situation? [07:41] Bug #435962: Reference can return a cached invalidated object if the local key is the primary key [07:41] that'd be the cache inside the Reference, yes. [07:41] jamesh, jtv: Here is the final log from the eog export: https://pastebin.canonical.com/24314/ [07:41] c/export/merge-job-thingy [07:42] stub: thanks [07:42] we really need better __repr__() on the various Storm classes [07:43] stub, jamesh: note that this dump shows referrers for the random sample, not referents [07:46] Thats a lot of EventSystem instances [07:48] about one per objectinfo, so I'd guess those are the callback hooks for key changes [07:48] about as many "function" objects... are those generated on the fly for each object? [07:50] "frame" is a stack frame, meaning a local variable? [07:51] I think so. If they were frames stored in tracebacks we would see object count for that. [07:52] * stub toys with the idea of disabling the cextensions implementation of EventSystem as a shot in the dark [07:53] jtv: Got another package for me to prepare, running the first two stages? [07:54] I'd be a bit surprised if the EventSystem impl was introducing bugs [07:54] stub: file-roller [07:54] maybe users of the API, but not the actual implementation [07:55] So would I actually (everything else would be exploding too, although this is our most extreme job in the current code base as far as object loading is concerned) [07:59] do we have an easy way to find out how many objects were loaded overall? [08:04] stub: so... are you trying that idea of disabling cextensions? Shot in the dark it may be, but it hits a lot of stuff we can't see. [08:06] I'm running stage 1&2 of fileroller in preparation for whatever we do next. That might be disabling EventSystem from cextensions, better logging of the events so we can see what is holding onto them, or whatever you come up with ;) [08:06] At the moment, I'm reading email. [08:07] stub: I for one am way out of my depth by now [08:08] And wtf would a stack frame be referencing all this stuff? [08:10] you mentioned other ways of referencing frames... could something be holding a whole stack incarnation in memory? [08:10] like maybe a cextension forgetting to unregister something even? [08:21] jamesh: is it possible for a C extension to pin a stack frame in memory, if it forgot to drop a reference or something? [08:22] jtv: I wouldn't think so. Not any more than a Python stack frame [08:22] I mean, could it pin a Python stack frame in memory? [08:23] So many of these objects that should live inside Storm-backed objects seem to be referenced from the stack. [08:24] stub said something interesting earlier: when I do [obj.id for obj in query_result], do I really get ints? Or is there any chance that I might be getting IntVariables or something? [08:25] IIRC tracebacks and exceptions can leak stack frames if not handled correctly, but I don't think we are seeing that. [08:25] obj.id should be returning an integer - it always has in the past [08:27] jtv: well, the only Python stack frames that stick around outside of the C call stack are generators [08:27] all the others are essentially tied to C function calls [08:33] * jtv is grepping for 'yield' [08:34] comprehensions are generators too I think [08:36] you can have references to local variables held in cell objects too when you work with closures [08:36] (i.e. a nested function that uses variables from its parent scope) [08:37] stub: less likely that we're keeping references to those around though [08:38] so that's what those cell objects are... not getting many of those though [08:38] I saw those cell instances but have no idea what they are. [08:39] jamesh: oh, you're saying a cell can hold actual stack frames in memory, as I was suspecting the cextensions of doing? [08:40] no [08:40] a stack frame can hold cells that can hold locals [08:40] (assuming you haven't been storing tracebacks and the like in local variables ...) [08:40] (we haven't) [08:42] the cells don't seem to be doing much in the scheme of things [08:42] So am I correct and the current thinking is we are somehow leaking ObjectInfo instances (ObjectInfo's have a self._event==EventSystem)? [08:43] good morning [08:43] hi adeuring [08:43] hi jtv! [08:44] stub: that's my impression, but the frames seem to be doing it. [08:46] looking at https://pastebin.canonical.com/24314/ random sample 3, there also seems to be an EventSystem referencing an ObjectInfo. [08:46] Through a frame, so the EventSystem seems to be holding a frame in memory. [08:46] None of our code will deal with ObjectInfo directly. [08:47] A Store has an EventSystem, as does each ObjectInfo [08:47] oh, wait, it's a list containing a frame and an EventSystem. [08:48] So we have [frame, EventSystem], where frame holds a weak reference to an ObjectInfo. [08:48] hmm... weak ref shouldn't be the problem though [08:49] but we are seeing lots of that pattern: a list containing a frame and one other reference. [08:50] Is that something that happens in the ObjectInfo? [08:53] Or is it something that python does for generators or closures? [09:04] prelim done [09:04] cool... now to figure out what to do with it [09:04] I notice that there are 5 twisted.Failure objects [09:05] wonder if those might be holding stack frames? It'd be odd for them to hold frames with Storm stuff, I guess [09:09] I have no idea how Twisted would be involved in a script like this... does storm talk to it? [09:10] bigjools: hi [09:11] hey thumper [09:11] bigjools: is it worth us having a call? [09:11] thumper: what do you want to talk about? [09:11] bigjools: have you looked at your email? [09:11] bigjools: I sent something about 4.5 hours ago [09:11] I have a shitload of email! [09:12] and kmail is a PITA, it hangs folder views when resuming >:( [09:12] one sec [09:13] thumper: there's no chance of this working at the end of 3.1.11 [09:13] nor 3.1.12 [09:14] why? [09:14] there's too much work to do, and many of the key people are sprinting in November [09:14] jamesh: we've got 5 Failure objects hanging around Twisted... any idea where those might come from and how we get rid of them? [09:14] I'm not saying we migrate soyus code away [09:15] just make it possible to run jobs in a protected environment [09:15] jtv: I imagine that is just noise from all the component architecture gumph that loads up [09:15] you need a VM for that [09:15] jamesh: or are they just unrelated failures to connect to services that this script isn't using? [09:15] bigjools: and that is how the soyuz code does it? [09:15] jtv: I'm going to drop to a debugger once the object count goes about 1.5 million [09:15] like the PPA VMs - they get totally reset after each PPA build [09:15] yep [09:16] bigjools: what is the setup and teardown time of the vms? [09:16] stub: cool [09:16] thumper: thankfully *very* quick, the IS guys did some great optimisation and it takes about 5 seconds IIRC [09:17] bigjools: do we have some to test with in staging? [09:17] no, just dogfood [09:17] we have one only [09:17] well that's going to be a problem [09:17] yeah [09:17] we have only one vm? [09:18] one builder [09:18] whether it's a VM or not is irrelevant to how we talk to it [09:18] a builder can run multiple vms? [09:18] other than resetting the machine [09:19] the one we have is virtual I think, but yeah we can run many builder VMs on a single box IIRC [09:19] thumper: do you want to jump on a call with me and danilos? [09:19] bigjools: both translations and code will need arbitrary jobs to run in protected environments [09:20] I know :) [09:20] I want to work out how we are going to make this happen [09:20] my problem is it is 22:20 and my brain is fuzzy [09:20] yeah [09:20] I have the same problem and it's only 0920 [09:21] so basically we already have an environment to do this - the problem is that it's built around soyuz [09:21] bigjools: what I want is a flag on the job class that says "run me in a protected env" and have the job runner just do it [09:21] yes [09:21] https://dev.launchpad.net/Soyuz/Specs/BuilddGeneralisation [09:21] * thumper ndos [09:21] and I have a plan --^ [09:22] but there are a number of stumbling blocks - but by the end of this week I will have a big list of smaller issues to tackle to get us to the point where we can get this working for non-soyuz jobs [09:22] bigjools: mwhudson will be looking at this over 3.1.11 [09:23] fabulous [09:23] bigjools: danilo has also offered some resources I think [09:23] so I think the best thing he can work on is to refactor IBuilder [09:23] bigjools: and I gather that foundations may also be able to provide someone [09:23] bigjools: if you can provide some break down of the work [09:23] bigjools: we'll take a look at it [09:23] I will [09:23] ta [09:23] in fact I am [09:24] fantastic even [09:27] thumper: could we have a call about this some time? i'd like to learn more about the current job system, and how you want to extend it. [09:27] BjornT: sure, but not right now :) [09:28] BjornT: abentley is going to be doing some work on it next cycle [09:28] * thumper signs off [09:28] thumper: yeah, i wasn't suggesting to do it now :) [09:28] * thumper smiles [09:28] BjornT: I suggested 2-3h after the TL call [09:30] bigjools: ok, that's probably fine for me [09:50] Hey stub, would you be able to go through and update: https://dev.launchpad.net/FoundationsTestPlan/3.1.10 ? There's quite a bit of QA listed there. [10:00] stub: any luck? [10:01] noodles775: I've moved one item. The other two of mine still need QA (one I'm not sure how to test, the other I don't think I have the resources to test without taking staging down for half a day) [10:01] jtv: So every leaked ObjectInfo I look at is similar to this: [10:01] (Pdb) random.choice([o for o in gc.get_objects() if isinstance(o, ObjectInfo)]) [10:01] {: {'remote': }, 'sequence': 1, : {'remote': }, : {'remote': }} [10:02] Thanks stub. [10:03] jtv: inf.get_obj() returns None, which seems to mean it really has been lost [10:04] stub: and yet it keeps that reference to the POTMsgSet [10:04] jamesh: were the "remote" entries meant to be cleaned up as the objects fell out of cache maybe? [10:04] Would the POTMsgSet be caching any back references I wonder? [10:05] stub: not that I've seen so far [10:05] jtv: they should get cleared out when the key for the reference gets cleared [10:05] they are meant to be strong reference [10:07] stub: and these POTMsgSets were not supposed to be in cache any more, right? [10:08] Pdb) pprint(inf) [10:08] {: {'remote': }, [10:08] : {'remote': }, [10:08] : {'remote': }, [10:08] 'sequence': 1} [10:09] It might well still be in the cache. Why are we interested in the POTMsgSet and not in whatever is holding a reference to this ObjectInfo? [10:10] Referrers are: [10:10] [10:10] [10:10] [10:10] [10:10] [10:10] [10:10] (one of which will include my interactive session) [10:11] So who's holding the tuples and dict? [10:11] (I'm making a wild guess that the builtin_function_or_method is the debugger) [10:20] (Pdb) repr(refs[0]) [10:20] "({: {'remote': }, 'sequence': 1, : {'remote': }, : {'remote': }},)" [10:20] (Pdb) repr(refs[1]) [10:20] "({: {'remote': }, 'sequence': 1, : {'remote': }, : {'remote': }},)" [10:20] (Pdb) repr(refs[2]) [10:20] '' [10:20] (Pdb) repr(refs[3]) [10:20] '' [10:20] (Pdb) repr(refs[4]) [10:20] "({: {'remote': }, 'sequence': 1, : {'remote': }, : {'remote': }},)" === henninge is now known as henninge-bbl [10:21] A twisty maze of tuples, all of them alike. [10:22] Gah... that time of the day when my wireless connection starts dropping out :-P [10:26] jtv: So for that POTMsgSet, there are 229 referrers [10:27] stub: are they (or some) TranslationMessages? [10:28] All dicts, so probably lost ObjectInfos like the above [10:28] * jtv checks how many TMs we had in memory [10:28] ah [10:29] so maybe these are event handlers waiting for _foreign_ keys to be changed? [10:30] Remarkable: we're not leaking _any_ TranslationMessages. [10:30] at this point it'd be nice to have a neat graph plotted of that maze... [10:31] Unfortunately all I have is a pdb shell and a crappy connection ;) [10:31] stub: maybe this is what we need: http://mg.pov.lt/objgraph/ [10:33] Could be good. You can try that locally. [10:33] It's on Launchpad, interestingly enough, but that's not showing up on google. [10:49] stub: missed your message earlier... I'll try objgraph [10:58] hi danilos, there's one translation bug of yours tagged as needs-testing - bug 459132, have you qa'd it, or can you pls if not? Thanks. [10:58] Bug #459132: Clean up existing untranslated credits messages [10:59] noodles775, haven't QAd it yet, won't run the script until it's QAd though, it shouldn't block the release [10:59] danilo_: great, thanks for the update. [11:01] BjornT: when you get a chance, would you be able to either QA or mark as untestable the item at https://dev.launchpad.net/LaunchpadTestPlan/3.1.10 [11:02] Morning, all. [11:08] mthaddon, Hi [11:09] mrevell: howdy [11:21] noodles775: it is OK, but i can't seem to be able to edit the wiki page [11:21] Thanks BjornT - I'll update it. [11:22] BjornT: or not - Type error - I guess the same as you. [11:22] noodles775: yeah === henninge-bbl is now known as henninge === salgado-afk is now known as salgado [11:35] noodles775, hey, when's the actual release being rolled out? [11:35] noodles775, ah, seen the email, never mind :) [11:35] :) [11:56] jamesh, stub: http://rookery.canonical.com/~jtv/objects.png [11:57] probably a bad example because this object has legitimate business being in memory [12:10] jtv: It does? I can generate a new one then ;) [12:11] stub: seems to be the same in your graph, yes... I did have to copy your trick of getting a random pick though. I think get_objects may be in-order. [12:12] stub: see latest version of my branch, it produces the objects.png at the very end [12:12] Why do you think the objects should be there? [12:12] I'm seeing gobs and gobs of ObjectInfo's linked to a lone POTemplate in the top left corner [12:15] oh - you mean on your graph [12:16] well, same on yours: the POTemplates are supposed to be in memory because they're referenced [12:16] there should probably be a potmsgset in the graph somewhere [12:16] Yes - the POTemplates are not the problem. The couple of million ObjectInfo's are. [12:17] I can't see a POTMsgSet - might have been cuttoff [12:17] (the graph took a few mins to generate as it is ;) ) [12:17] you could start plotting from one... mine is smaller & faster, but maybe doing it all the way at the end allows too much leakage to be cleaned up again [12:20] The dubious bit to me is the 'changed' link in my graph. There is a set of 4k objects, one of which the ObjectInfo I'm inspecting (after following a few links) [12:20] actually... why should there be so many ObjectInfos attached to one POTemplate? I thought jamesh said 2 per object. [12:20] "changed" link? [12:20] * jtv really needs that 52" monitor now [12:21] oh, I have it [12:22] So these objects are registered on the 'changed' event on the POTemplate I think, and for whatever reason that isn't cleared over transaction boundaries? [12:22] or maybe they're sets of objects that storm thinks have changed? [12:22] given that committing seems to count as changing the primary key somehow... [12:23] The only dictionary in EventSystem is the hooks to call. So the 'changed' is the key into the _event._hooks dictionary. [12:23] ahok [12:25] so... the event hooks aren't cleaning themselves up? [12:25] Which would indicate that these objects are not unhooking themselves when they drop out of scope I guess? [12:27] stub: we can ask niemeyer on #storm [12:31] Hi salgado ! Could you please take a look at your remaining foundations NEEDSTESTING entries when you get a chance (and possibly others there ;))? [12:32] noodles775, I can take a look, but we don't test our own items in foundations, so I'll ask matsubara to do it [12:32] matsubara, ^. mine have instructions [12:32] salgado: fine - as long as they're updated I'm happy :) [12:32] Thanks! [12:33] salgado, ok === danilo_ is now known as danilos [13:25] wgrant: you need to get r-c for your branch as well [13:26] I think we can get it in the regular rollout [13:26] bigjools: Ah, that would be handy. [13:27] noodles775: Can I please have an r-c for https://code.edge.launchpad.net/~wgrant/launchpad/sync-source-v3-fix/+merge/14417? [13:27] and ultimately I'd love it if this code was not in the LP tree [13:27] NSS! [13:27] *cough* [13:27] on that note, have you looked to see if Gina will blow up with 3.0 formats? [13:27] It will. [13:27] fuck [13:27] Yes. [13:28] well-factored code FTW [13:28] But buildds are higher on my priority list at the moment. [13:28] However, I can't do anything on them until tomorrow morning, so gina-time now. [13:29] It shouldn't be too difficult. [13:30] But I wonder how spectactularly it is blowing up at the moment -- is it crashing entirely, or just failing to import some stuff? [13:32] * wgrant tries to remember how to get this thing running. [13:35] * bigjools -> food [13:41] jtv: Was it the wordpress product or sourcepackage? [13:41] product [13:41] but part of that job is done now, I think? [13:41] jtv: I never attempted wordpress [13:42] I thought you did, early on... [13:42] jtv: I've commented out the gc.collect() and object count stuff. Just reporting memory usage. [13:42] jtv: No - we did a smaller package first and it failed. [13:43] so did you run against the package just now, or the product? [13:43] file-roller sourcepackage [13:45] Of course, there is still a coredump lurking in there somewhere ;) [13:50] oh yes, that too :( [13:50] stub: so wait, you were saying that it was fixed for... file-roller I guess, but not for wordpress, right? [13:51] stub: or did you mean to say "*Now* for that wordpress run"? [13:51] erm... yes. typo ;) [13:53] phew! [13:55] bigjools: OK, great. The fix for gina is simple, and for now it will just skip the package. === abentley1 is now known as abentley === sidnei-away is now known as sidnei [14:16] wgrant: awesome, thanks [14:19] noodles775: The registry is OK to release now [14:20] Thanks sinzui ! [14:21] matsubara: how are you going with the foundations QA? [14:22] noodles775, haven't touched that yet. it's next in my list though [14:22] matsubara: great. [14:27] matsubara: I'll do salgado's items that have instructions now. [14:27] noodles775, I'm doing r9779 feel free to take the next one [14:28] matsubara: yep, taking 9817 [14:29] matsubara: actually, but I think I *need* you anyway - do you have access to staging's mailbox? If so, can you confirm the email as outlined there. [14:30] noodles775, btw, I'm syncing my local mailbox to have the staging email for those login workflows, I'll let you know when I get your email :-) [14:30] taa [14:30] noodles775, it'll take some time since the mailbox is huge [14:31] matsubara: ok, so pls just update that item too (I guess it wasn't so helpful for me to try to do some!) [14:31] noodles775, will do. no worries :-) [14:31] matsubara, is it huge even with the daily cleaning? [14:36] Ursinha, the problem is that my offlineimap cache hasn't been updated in a long time [14:37] matsubara, maybe you should use the regular imap now that the inbox is manageable [14:37] Ursinha, offlineimap is still a lot faster IMO [14:37] matsubara, not for sporadic access, I guess [14:37] but it's a matter of taste :) [14:38] Ursinha, mutt + imap sucks anyway [14:38] Can I grab an r-c for https://code.edge.launchpad.net/~wgrant/launchpad/sync-source-v3-fix/+merge/14417? [14:38] noodles775, ^ [14:38] looking [14:44] Thanks wgrant - rc approved. [14:44] noodles775: Thanks. [14:45] wgrant: is someone already organised to land that? [14:46] noodles775: Not sure. bigjools ^^? [14:46] I am OTP, would you mind landing it noodles775? === sidnei is now known as sidnei-away [14:49] noodles775: If you can, thanks! Happy archive admins are good. [14:49] * wgrant sleeps. [14:49] wgrant, bigjools: yep, no probs. Sleep well wgrant :) [14:49] g'night wgrant === salgado is now known as salgado-lunch [14:56] reviewers, lurkers, beuno and anybody else -> #launchpad-meeting in 5m [15:00] reviewers -> #launchpad-meeting [15:06] sinzui, hi, do you have time to supply those UDS discussion estimates today? [15:07] mpt: no. I am doing them today [15:07] mpt: I can give scale, not time. I may be able to say the number of releases [15:08] sinzui, I'm mainly concerned with making it easy for robbiew to schedule UDS at the moment :-) Estimates for the actual implementation are interesting, but not required for that. [15:10] Oh, time needed to discuss. I really have not idea. Maybe I will when I have this work broken into stories with technical notes. [15:12] sinzui, "not at all" is a possible valid answer for the Launchpad-related topics, if they would be better discussed outside UDS. [15:13] noodles775: ping [15:14] sinzui: hi [15:14] sinzui, but if there are Registry + Soyuz people attending UDS, it would make sense to have face-to-face discussions on them since they'll be higher bandwidth than teleconferences [15:14] noodles775: I think we need another rc https://staging.launchpad.net/bzr/+milestone/2.0.1 [15:14] https://staging.launchpad.net/gdp/trunk/0.2 [15:14] Bug 473738 reports issues that may relate to recent CSS changes [15:14] Bug #473738: milestone page refuses to let me see the bug status (after resizing) [15:15] * noodles775 looks [15:16] noodles775: The issue appears to be the "Download files for this release" table. the page lays out correctly if you remove the release [15:18] or maybe the dual combination or .portlet .full-page-width [15:20] noodles775: I see the issue, The DOM shows the full-page-width is nested inside another. This is a pretty simple fix. [15:21] sinzui: great - we've still time to land on db-devel (especially as you won't need to run the suite if it's just a css change). Let me know when it's ready. Thanks! [15:21] oh, although that would be a template change? still time though. [15:25] the milestone tests are pretty robust. we do not test markup, only content. the class is not tested [15:25] Great. [15:25] matsubara: thanks for clearing the foundations QA! [15:25] noodles775, np :-) [15:25] noodles775: Another course is to add a CSS rule for .full-page-width .full-page-width that disables the width change. [15:26] noodles775, about the one item in the Launchpad itself queue, I already pinged mrevell about it and basically we can't check on staging yet as it's still is one revision behind [15:26] sinzui: did you see my message on your staging script run last nite?? [15:26] sinzui: sounds much safer - and would actually be useful too? [15:27] Chex: I did I would be a nice read [15:27] matsubara, you pinged me about that? I don't see it. [15:27] matsubara: yep, I can do that later - it's easy. [15:27] sinzui: oki-doki, hang on [15:27] abentley: what rev of lp:bzr-pipeline works with bzr 2.0.1? i just updated my plugin and it borkeded [15:27] noodles775: it is safer, and it clearly defines our intent [15:27] mrevell, I pinged you on another channel [15:27] mrevell: just the blog post update... [15:27] noodles775, all ok with it? [15:28] barry: The lp:bzr-pipeline/stable branch works with bzr 2.0.x [15:28] mrevell: yep, should be, we just need to wait for staging to update before we can QA it, that's all. [15:28] abentley: cool, thanks [15:29] barry: np [15:29] sinzui: chinstrap:~stasik/tmp/ === matsubara is now known as matsubara-lunch [16:04] um, is there a bug with the display of MP's? [16:04] https://code.edge.launchpad.net/~matthew.revell/launchpad/whatsnew-3110/+merge/14231 [16:05] The original reviewer is not displayed there, it looks like it's reviewed by jtv, but by the comment seems to be abel. [16:05] noodles775_: I updated its status only [16:05] noodles775_: after the original reviewer voted Approve. [16:05] jtv: ah, *phew*, thanks. [16:06] noodles775_: sorry for the confusion, I just wanted to get it off the "reviews you should be doing RIGHT NOW, slacker!" list [16:06] np... good thing to do! [16:07] Well yes and no... technically one could argue I might not have been qualified to decide whether the Approved vote was enough to approve the whole MP [16:07] yes, I should be doing that when I do the rc right? === danilo_ is now known as danilos [16:08] I'm still confused why abel's not listed as a reviewer - maybe he just didn't select 'Approve' when reviewing it and I didn't notice before? [16:09] noodles775_: I am now weeping. I can see a programming error in the product-release-finder. I am inclined to purse a CP rather than fix it for an RC. [16:10] noodles775_: The CSS fix for the milestone page is simple, but there is something else wrong, the sidebar is in the wrong position. There must be a markup nesting error, but I cannot see it [16:10] * sinzui blows a gasket. [16:10] poor gasket [16:11] sinzui: no stress - I think it's not really critical - it doesn't stop people from seeing the information as you can always scroll. [16:11] sinzui: what do you think? [16:11] yes that is true [16:12] The side bar is at the bottom of the page [16:14] sinzui: can the simple css fix just be landed on its own and leave the side bar issue for later? Up to you. [16:14] absolutely === salgado-lunch is now known as salgado [16:17] noodles775_: FF hates this
changing the markup to use an open and close tag fixes the side bar. [16:18] Great! [16:18] oh there were only two cases in the whole tree [16:19] That that cause the nesting error in the DOM, but the XML checker passed it [16:19] It is same the reviewers meeting is over now [16:20] yeah === EdwinGrubbs is now known as Edwin-lunch [16:37] Ursinha, so, launchpad-2207-00-0.sql is a base database description from one point in time (judging how stub usually names them, that one is from 2.2 LP series from July) [16:37] danilos, go ahead [16:37] Ursinha, the changes you showed me in http://paste.ubuntu.com/309660/ are correct SQL-wise, but you need to make it into an incremental patch we can apply on the live database [16:37] Ursinha, that means using ALTER TABLEs and similar [16:38] Ursinha, look at examples in database/schema/patch-*.sql [16:38] danilos, I'm doing that, creating one with alter table, that is [16:38] I'd like to know if the changes were correct before doing that [16:40] danilos, right, after that what should I do? [16:44] Ursinha, create a patch and name it something like patch-2207-95-0.sql (use a number instead of 95 that is not used by existing patches; do update LaunchpadDatabaseRevision table with the number as well) [16:45] right [16:52] Ursinha, the reason why I am saying you started the wrong way is because you should be able to play with this on launchpad_dev DB, i.e. to construct relevant fields; just do "psql launchpad_dev", and issue ALTER TABLEs there, create new indexes if needed and whatnot [16:53] danilos, oh, I see [16:53] Ursinha, patching launchpad-*.sql is not something you'd ever want to do, at least not until you get promoted to being stub :) [16:53] danilos, haha sure :) [16:53] danilos, not my intention here :) [16:54] Ursinha, also, doing direct modifications in 'psql launchpad_dev' is much faster than re-running make schema a few times [16:55] danilos, indeed it is, but again, I just wanted to check with you if those changes were correct :) [16:55] I couldn't think of other way :) [17:00] danilos, sorry :P [17:02] danilos, this is cool exercise, btw [17:02] Ursinha, I am going back to not knowing anything about it :) [17:02] Ursinha, in a call as well now :) [17:02] danilos, sorry, will disturb you later then :) === matsubara-lunch is now known as matsubara [17:07] matsubara, did we have any problems with summaries generator script? I see no lpnet summary for yesterday [17:09] Ursinha, likely. if the html/txt summary is not in the oops-summaries/ directory, then it wasn't generated. can sort it ou? [17:09] matsubara, ok, I'll try to run that again [17:10] matsubara, thanks [17:13] when are we getting yui3 release code into LP? [17:13] I spent time chasing stuff last night hitting issues by reading online docs [17:14] only to find that our code didn't have it [17:14] the methods I want that is [17:15] Chex: I think the staging reset clobbered the product-release-finder test earlier that I anticipated. Can you run the script now *if* we are not updating the staging? [17:22] sinzui: yes sure, hang on and let me check === deryck is now known as deryck[lunch] [17:27] thumper, I think mars is working on it (and I hope it's done in time for the sprint) === flacoste is now known as flacoste_lunch [17:57] sidnei-away, when you get back, I'd appreciate if you could have a look at bug 474459 and see if you've got any ideas on what could've caused that [17:57] Bug #474459: Text input in the picker's footer can't be focused [18:04] sinzui, robbiew is doing the UDS scheduling this week, so if you think those LP bits would benefit from discussing at UDS at all, I suggest either today or tomorrow :-) [18:05] mpt: I am struggling to get this done. I will try [18:05] thanks [18:30] danilos, ping me when you're available, please :) [18:30] Ursinha, ping [18:31] Ursinha, what's up? :) [18:31] danilos, http://paste.ubuntu.com/309797/ [18:31] see if this is correct, please [18:33] Ursinha, now, that looks much better [18:34] Ursinha, you don't want to use 9 as the number though, at least until stub assigns you one, since it's much more likely you are going to merge with latest db-devel and somebody would have already used that number [18:34] Ursinha, so, go with something like 99 or 92 or 97 or... [18:34] danilos, I see, renaming.. [18:34] Ursinha, and, the next step is to add a field description to comments.sql and you can submit that for DB review [18:35] danilos, ok, I'll do this right now [18:35] Ursinha, basically, the DB patch + comments.sql modification should be all you've got in this branch [18:35] danilos, sorry taking so long, had to figure out the problem with the oops summaries [18:35] danilos, right. [18:35] danilos, should I file an mp or just submit my branch to lp? [18:36] Ursinha, excuses, excuses... it's not like we are releasing tomorrow! [18:36] hehe [18:36] Ursinha, file a new bug for this branch, attach a branch to it, make an MP and ask for stub's review [18:37] danilos, I've filed, will do that [18:37] Ursinha, make an MP against lp:launchpad (not launchpad/devel), and once you get approval and we are good to land stuff, land it on db-devel [18:38] Ursinha, also, in general, you want to start branches like these by branching off db-devel, especially if you are going to land it like that, but it shouldn't be a problem now that you are going to land it after the rollout [18:39] danilos, I see that in the docs it says to name the file patch-xx-99-0.sql, so my file should be named patch-90-99-0.sql? [18:39] danilos, I did that already [18:39] Ursinha, excellent :) [18:39] Ursinha, no [18:39] Ursinha, xx should be 2207 in that case [18:39] oh *stupid* [18:39] sorry [18:39] lack of coffee here [18:39] Ursinha, 99 is the least likely number to have been reached, but anything well far off from the latest number is good :) [18:40] Ursinha, excuses, excuses, it's not like... :P [18:40] danilos, I won't use 99 because it's likely someone had the same idea :P [18:40] Ursinha, it doesn't matter, stub will give you a new number and then you'll bzr mv to that [18:41] Ursinha, if anyone managed to land a patch with -99, you'd better let them know :) [18:43] Ursinha, anyway, after that, the next step is to do the interface/model changes to add translation_focus to IProduct and Product, make it settable from +changetranslators [18:43] Ursinha, and finally, modify primary_translatable to point to the translation_focus if it's defined, similar to what DistroSeries.primary_translatable is doing [18:43] danilos, please, hold on for a moment :) [18:44] Ursinha, I ain't, I am about to split off :) take notes of above, and work on it one step at a time [18:44] Ursinha, don't be surprised if you don't finish it all by the end of the day, but do ask others about how this is done [18:44] Ursinha, this ain't anything others can't help with [18:44] danilos, excuses, excuses... it's not like it's EOD for you already :P [18:45] Ursinha, it's not like it is, it's well beyond it :) [18:45] danilos, :) [18:45] danilos, I took notes, will add the patch to the branch, comment and open and mp [18:45] hopefully will have other changes to discuss tomorrow [18:46] *open an mp [18:46] will bug everyone else to accomplish that :) [18:47] salgado: Chex Do you know if there has been any action on bug 458835 [18:47] Bug #458835: download counters are a few days old [18:48] Ursinha, of course :) thanks for the effort you are putting into it :) [18:48] salgado: Chex: is there a job being setup? is there an RT [18:48] Ursinha, anyway, I am off === danilos is now known as danilo-afk [18:48] danilo-afk, have a nice evening then :) [18:49] sinzui, yes, we now have all logs available for the script to parse but we're missing a config change to point it to the new place. the config change has landed and should be rolled out tomorrow [18:49] salgado: rock. should I mark the bug fix committed? [18:50] sinzui, yeah, I think that's be reasonable === deryck[lunch] is now known as deryck [18:58] salgado: If I have just and SSO account though Ubuntu, can I log into Launchpad *now* and get a profile created automatically? [18:58] sinzui, yes [18:58] * salgado double checks [18:58] salgado: there is a test I can read? [18:59] * sinzui is uncertain because of so many bugs about the transition from account to person [19:01] I wonder why is bzr telling me I cannot push my branch to lp due to uncommitted changes when bzr status shows nothing [19:02] sinzui, tests/test_login.py in lib/c/l/ [19:03] thanks very much === dpm is now known as dpm-afk === flacoste_lunch is now known as flacoste [19:54] * thumper punches javascript in the face [20:12] barry: EdwinGrubbs: I just sent you an annotated summary of the the UDS software discussions about the software center. I need you estimates of the time needed to discuss each item. [20:14] sinzui: k === salgado is now known as salgado-afk === matsubara is now known as matsubara-afk [20:46] * rockstar -> lunch/gym === sidnei-away is now known as sidnei [20:47] salgado-afk: is that with yui 3.0.0? [20:48] salgado-afk: i suspect it might be a zIndex issue, but would have to look closely [21:02] barry: yes soyuz is going to the sprint. The mis-perception is because registry *owns* a package record, is must also know about the actual source package and the built package [21:02] beuno: ping [21:03] barry: I'll ask bigjools about who should attend. === lionel_ is now known as lionel [21:10] rockstar: where is the spinner icon? [21:11] thumper, I believe /@@/spinner [21:11] * rockstar really should go eat lunch now. [21:13] rockstar: I'd like a call with you when you have finished eating [21:15] thumper, okay. I was also hoping to hit the gym, but maybe I'll do that later tonight. [21:17] sinzui: +1 [21:17] thumper, ready. === EdwinGrubbs2 is now known as EdwinGrubbs [22:07] Bug #474593 looks LOSAish. [22:07] Bug #474593: Certain URLs don't redirect to SSL [22:10] wgrant: very odd [22:10] mbarnett: hi, can you look at the bug wgrant just mentioned? [22:11] mwhudson: Rather. [22:12] thumper, hi [22:12] beuno: too late, found my answer [22:13] * mwhudson finds lib/canonical/buildd for the first time [22:13] omg the horror [22:13] wgrant: mwhudson: hi, looking at that bug. [22:13] Chex: cool [22:13] Chex: Thanks. [22:13] * thumper looks at the file too [22:13] mwhudson: RUN AWAY. [22:13] mwhudson: NOW. [22:14] mwhudson: OMG even the directory contents looks scary [22:14] wgrant: sadly i'm not sure that's an option [22:14] if we're luckly maybe rm -rf will be [22:15] heh [22:15] It doesn't quite run properly on Karmic, but can be made to with a bit of patching. [22:15] But to get it to actually build, it needs a bit more. [22:15] some of it looks very similar to code i wrote actually... [22:16] Just remember to ignore all of the docs in there. [22:16] (ProcessMonitorProtocol, to be specific) [22:16] wgrant: heh ok [22:16] Some of them are a little bit correct. [22:16] But most of them are just speculation. [22:17] wgrant: can i ask some basic questions about this code? [22:17] mwhudson: Sure. [22:18] wgrant: aiui the buildd-manager runs from cron and basically looks through the list of builds pending and builders and assigns builds to idle builders [22:18] mwhudson: buildd-manager is a daemon which polls everything every 5 seconds. [22:18] oh ok [22:19] It's possible the old slave-scanner was a cron job, but that was before my time. [22:19] but the second half is correct? [22:19] That's part of its task. [22:19] yeah, i think that changed recently [22:19] so one thing i don't really get is what "assigns builds to idle builders" means [22:19] It also watches builders, and fucks them up if they are not doing what it things they should be. [22:19] And takes binaries from them when they finish. [22:19] What don't you understand about that? [22:20] well i think i know what happens [22:20] but i'm not sure [22:20] so there's a process on the builder that talks xml-rpc [22:20] Right. [22:20] when it is given a job to do, it sets up a chroot/fires up a guest vm > [22:20] That's the beast that lurks in lib/canonical/buildd. [22:20] ? [22:21] Ah, not quite. [22:21] The way the VM stuff works is nothing to do with lp-buildd. [22:21] or is it already running in the chroot/vm [22:21] lp-buildd lives *inside* the VM. [22:21] aah ok [22:21] Before dispatching a build to a virtual builder, buildd-manager will fire a reset trigger to the host over SSH. [22:21] (this part is not public, but I know vaguely how it works) [22:22] so a chroot is involved even when the builder is virtualized? [22:22] The guest, which contains the lp-buildd, then reboots with a fresh image. [22:22] Yes. [22:22] ok [22:22] To ensure a clean environment. [22:22] that's a good thing to learn :) [22:22] So, buildd-manager then tells the builder to get all the files it needs. [22:22] That is, the chroot tarball and all the source files. [22:23] lp-buildd is the thing that runs on the slave? [22:23] (the builder then grabs them from the librarian directly) [22:23] Right. [22:23] aka the builder [22:23] ok [22:23] Once the builder has all the files cached, buildd-manager calls build(), and the builder does its stuff. [22:24] buildd-manager will notice when a builder has finished from its status message. [22:24] the builder runs a subprocess something very vaguely like "chroot /srv/karmic make" ? [22:24] The status message contains the build status (successful, failed, dependency wait, etc.), and names and hashes of all of the built files. [22:24] Very very vaguely, but yes. [22:25] how does the builder find the files? [22:25] (that's the sbuild thing you see there -- it's an ancient unmaintained fork of the standard Debian buildd tool) [22:25] is this where that terrible perl script (sbuild) comes in? [22:25] Hm. Good question. [22:25] I presume sbuild dumps them into a directory that it just lists. [22:25] * wgrant checks. [22:25] barry, you still around? [22:26] jml: yep [22:26] oh so the subprocess is more like "chroot sbuild" ? [22:26] mwhudson: sbuild does the chrooting itself. [22:26] barry, yay [22:26] It runs outside it, but jumps into it to do most of the work. [22:26] barry, I uploaded a patch to reproduce bug 394133 [22:26] Bug #394133: Truncated links in Launchpad mailing lists automatic messages [22:26] wgrant: ok [22:27] lp-buildd actually just calls sbuild-package, which then calls sbuild. [22:27] barry, but I don't know how to fix it. [22:27] jml: sec.. [22:28] mwhudson: So, the sbuild will result in one .changes file, which references the rest of the binary files. The .changes file has a known name, so canonical.buildd.debian.DebianBuildManager.gatherResults can use that to find the rest of the files. [22:29] It then sticks them in the file cache, at which point they can be retrieved by the buildd-manager simply by knowing the SHA1. [22:29] jml: do you want me to take a crack at it? [22:30] sinzui: I'm sorry to bother you, but I'd like your thoughts. I'm triaging and wondering what the heck to do with https://bugs.edge.launchpad.net/launchpad-foundations/+bug/70416 . It seems like a legitimate, important bug, and even importantly tied to our 6-month theme. Do you know of some already-present feature or initiative that would address the problem? If not, I think I'll bring this up on the mailing list as an im [22:30] consider. [22:30] Bug #70416: Gnome menu names not linked to packages [22:30] barry, yes please, or at least give me some guidance on how to fix it [22:31] barry, my last comment on the bug report has a lot of details. [22:31] wgrant: i guess "sbuild does the chrooting" wasn't what i wanted to hear [22:31] wgrant: you know why i'm asking about this? [22:31] mwhudson: is this about building source packages? [22:31] mwhudson: BFB, I presume. [22:32] mwhudson: if so, I have that happening in a schroot for another project, using bzr-builder [22:32] gary_poster: I cannot comprehend what is being asked for [22:32] wgrant, lifeless: more about running jobs where we don't trust the code running [22:32] of which BFB is a particular case yes [22:32] sinzui: you don't know what I am asking of you, or what the bug report describes? [22:32] mwhudson: schroot can do sessions [22:32] its very useful [22:33] gary_poster: Ubuntu does *not* want users to report bugs via launchpad. they should use their desktop [22:33] It's already secure in the VM, but it's probably still good to run it in a chroot inside that. [22:33] But for build cleanliness reasons. [22:33] sinzui: right, so I can close this and say "you should use apport now"? [22:34] that's just crash reports, so not quite the same [22:34] mwhudson: I've sent you a mail [22:34] with some helpers I put together [22:34] I'm not sure there's much point using schroot, since we don't need sessions and need to grab tarballs dynamically. But lifeless' work could well be useful. [22:34] gary_poster: Oh, yes I think it should be closed, but if you hesitate, target to launchpad bugs, because that is only launchpad app involved i this use case [22:34] sinzui: ok, cool. thank you. [22:35] gary_poster: I stole 180 bugs from you a few weeks ago [22:35] I hope you don't miss them [22:35] sinzui: I know and appreciate :-) [22:35] mwhudson: I imagine it will be pretty similar to the current sbuild setup, except without a few thousand lines of Perl. [22:35] Although... hmmm. We need to manage build-deps somehow. [22:35] And that is messy. [22:36] :( [22:37] wgrant: schroot with root user permitted [22:38] or sudo permission in the chroot for a separate user to run apt-get [22:38] mwhudson: you'll also want to see my bugs on bzr-builder filed recently [22:38] lifeless: Permissions are not the problem, sadly. [22:38] while its not bzr-builddeb, I was solving/facing the same issues you're thinking about, I suspect. [22:38] wgrant: oh? [22:39] lifeless: i think first it probably makes sense to focus on rosetta's needs as i think they're a bit less exciting than BDB [22:39] lifeless: Resolving build-deps is a difficult problem. [22:39] BFB [22:39] but maybe that's just because i don't really know what they are [22:39] Although... it's unclear at this point how bzr-bp-time dependencies will be specified. [22:40] data and even you are a LP admin (Foo Bar) you, that field would be read-only. [22:40] dpkg-checkbuilddeps [22:40] Um. [22:40] Oops [22:40] lifeless: That checks. Does not help too much with installing. [22:40] sbuild has its own magic to do this. [22:40] jml: i added some ideas as a comment. i can try them fairly quickly on your branch... [22:41] barry, cool. thanks. [22:41] wgrant: its trivial - you run dpkg-checkbuilddeps, apt-get install the resulting list [22:41] Hmm. [22:41] jml: i don't see a linked branch. are you sure you pushed it? [22:42] barry, harumph.... [22:42] wgrant: its not as simple as apt-get install `dpkg-checkbuilddeps`, but its not much more, really. [22:42] wgrant: you use a chroot session for efficiency [22:42] barry, I pushed it, but apparently the branch linking UI failed me [22:42] ;) [22:42] and thats why I talked about permissions ;) [22:42] Is there a spec for the Rosetta stuff? [22:42] barry, lp:~jml/launchpad/ml-links-bug-394133 [22:43] wgrant: i have the very vague notion that the initial plan is "if you have funny bzr-lp-build time deps your build will fail" [22:43] thx [22:43] james_w would be a better person to ask that though [22:43] mwhudson: That seems unlikely. [22:44] mwhudson: But would make the initial implementation much much easier. [22:46] if you have funny deps for the construction of a source package then your package is buggy [22:46] it's a requirement to specify then in Build-Depends [22:46] so installing those would work [22:46] ah ok [22:46] Ah, so that's how it's working. [22:46] I see. [22:46] * wgrant cries. [22:47] there there [22:47] So. [22:59] rockstar: it seems that the pretty overlay doesn't have an easy way to replace the content [23:00] The slave should be pretty simple: [23:00] 1) Unpack chroot (with existing code) [23:00] 2) Mount chroot (also existing) [23:00] 3) Check out branch [23:00] 4) pbuilder-satisfydepends (or equivalent) [23:00] 5) bzr-buildpackage [23:00] 6) Find changes file [23:00] 7) Done [23:01] Most of the code can be extracted from the existing Debian slave. [23:01] rockstar: or perhaps I'm looking in the wrong place [23:01] Except for like three commands. [23:07] wgrant: the code for steps 1-2 is in perl though, right? [23:07] it doesn't sound too scary though really [23:07] mwhudson: No. Those two bits are lp-buildd-specific shell scripts (mount-chroot and unpack-chroot) [23:07] ah ok [23:07] shell, way better than perl! [23:07] * mwhudson coughs [23:08] They're also only 80 lines in total, not 4000 [23:09] wgrant: i don't suppose you know this for sure, but i guess the lp-buildd inside the vm is started by an @reboot crontab entry or similar? [23:09] mwhudson: The package has an init script. [23:09] I don't know if that's used in production, but I presume so. [23:10] oh right [23:10] * wgrant disappears for a while. [23:11] wgrant: thanks for the input [23:26] thumper, yea, you may have to create it. [23:26] rockstar: working prototype lp:~thumper/launchpad/popup-diff [23:27] rockstar: very ugly right now [23:27] thumper, javascript is pretty ugly. :) [23:27] rockstar: but it has colours, dynamic loading on demand, and only load once [23:27] rockstar: what I want is to have nice scrolling when diff appears, and limiting the visible size of the overlay [23:27] rockstar: ideas? [23:29] rockstar: although, I'll have to wait, I'm afk for a few hours [23:33] thumper, okay. [23:55] mwhudson: Anything else you want to know? [23:59] wgrant: not right now thanks