/srv/irclogs.ubuntu.com/2010/08/16/#launchpad-dev.txt

jelmermwhudson: unfortunately they don't get propagated00:00
mwhudsonjelmer: oh really?00:00
mwhudsonhow completely useless00:00
jelmermwhudson: I discussed them with some git developers at LCA, and we came to the conclusion that git notes wouldn't be useful for this sort of thing.00:01
mwhudsonoh ok, i got the idea somehow that they were a new thing00:01
jelmerThey are relatively new, only about a year I think.00:01
jelmerI ended up implementing bzr-git roundtripping using extra metadata in commit messages (revision properties, revision id) and a file-id table in the tree.00:02
mwhudsonah ok00:02
=== almaisan-away is now known as al-maisan
=== al-maisan is now known as almaisan-away
lifelessjelmer: so00:12
lifeless/home/robertc/launchpad/lp-branches/working/lib/lp/scripts/utilities/importfascist.py:187: DeprecationWarning: please use 'debian' instead of 'debian_bundle'00:12
lifeless  module = original_import(name, globals, locals, fromlist, level)00:12
lifelessjelmer: when is that getting stabbed ?00:12
mwhudsonjelmer: i see the kdebase import failed :/00:12
poolielifeless: yes that is nice to separate the policy bits of testresources from the mechanism00:12
jelmerlifeless: I thought I already head00:13
jelmer*had00:13
lifelessjelmer: I00:14
lifeless'm on latest devel00:14
lifelesslatest sourcedeps, upgraded my packages00:14
lifelesshmm, I'll hit apt harder there were some hold- backs00:14
jelmerlifeless: it doesn't tell you where that DeprecationWarning is coming from?00:15
jelmermwhudson: yeah :-(00:15
lifelessjelmer: no, its a little opaque00:15
mwhudsonjelmer: any idea on this one?00:16
jelmerlifeless: Have you run update-sourcecode recently?00:16
lifelessjelmer: never ?00:16
mwhudsonseems that it's some kind of remote server problem00:16
jelmermwhudson: yeah, it's the same one as the len(tview) != len_tview one00:16
mwhudsonjelmer: oh ok00:17
lifelesspoolie: small request for you00:17
lifelesspoolie: I'd like to put a rule in the feature flags ruleset on production00:18
poolieok00:18
lifelesswhich will say 'beta users team membership means is_edge should evaluate true'00:18
poolieby all means00:18
poolieso keeping the same behaviour, but changing the guts to use the flags mechanism rather than being hardcoded?00:19
lifelessyeah00:19
poolieyes i was thinking of doing that soon too00:19
lifelessfor now is_edge (and is_lpnet) need to union the two things00:19
lifelessas a transition, I think.00:19
lifelesse.g.00:19
lifelessif the appserver is configured as edge00:20
lifelessthen is_edge is true and is_lpnet is false00:20
lifelessif the appserver is configured as lpnet00:20
poolieso last thursday00:20
lifelessthen the flags rule can override that00:20
pooliewhich seems like a long time ago00:20
pooliei got a readonly web view of them00:20
lifelessto say 'actually, this is edge, nyarh'00:20
poolieand i was trying to work out a nice way to make them editable00:20
lifelesspoolie: I quite like what sinzui has organised for jabber ids with bac00:21
lifelesswhich is, you can add or delete, but not edit in place; it makes it kindof simple00:21
lifelessI dunno - we can have something pretty crude - even a big textfield you parse and diff would do :). I don't know this part of the LP machinery as yet.00:22
poolieyeah, something like that00:26
jelmermwhudson: getting that particular bug fixed is high on my todo list, but it's non-trivial00:27
poolieit wasn't a blocker, that was just what i got up to before i stopped00:27
mwhudsonjelmer: it's fixable on the bzr-svn end?00:27
jelmermwhudson: yeah, it's a bzr-svn bug00:27
mwhudsonoh ok00:28
jelmermwhudson: the problem is that because of odd operations in the repo bzr-svn ends up with an invalid base text to apply the delta it receives from the server against00:28
mwhudsonjelmer: is it like the hash reconstruction fun you had with bzr-git?00:28
jelmermwhudson: It's just for the file fulltext, doesn't depend on the particular serialization that bzr-svn uses00:28
mwhudsonoh ok00:29
mwhudsonsounds like fun :)00:29
jelmers/bzr-svn/svn/00:29
lifelessjelmer: still up ?01:54
lifelessor StevenK  ?01:54
lifelessI have this happening :01:54
lifelessrobertc   6840  0.0  0.2  26224  4276 pts/1    T    10:52   0:00          \_ /usr/bin/perl -w /usr/bin/debuild --no-conf -S -k0x5D14754701:55
lifelessrobertc   6868  0.0  0.0   5572   772 pts/1    T    10:52   0:00              \_ tee ../biscuit_1.0-4_source.build01:55
lifelessrobertc   6929  0.0  0.0  19404  1920 pts/1    T    10:52   0:00              \_ /bin/bash /usr/bin/debsign -k0x5D147547 biscuit_1.0-4_source.changes01:55
lifelessrobertc   6968  0.0  0.0   5596   772 pts/1    T    10:52   0:00                  \_ stty 400:1:bf:a20:3:1c:7f:15:4:0:1:0:11:13:1a:0:12:f:17:16:0:0:0:0:0:0:0:0:0:0:0:0:0:0:0:001:55
lifeless^ hung test01:55
lifelessjelmer: the stty is looping:02:21
lifelessioctl(0, SNDCTL_TMR_STOP or TCSETSW, {B38400 opost isig icanon echo ...}) = ? ERESTARTSYS (To be restarted)02:21
lifeless--- SIGTTOU (Stopped (tty output)) @ 0 (0) ---02:21
lifeless-forever-02:21
lifeless--- SIGTTOU (Stopped (tty output)) @ 0 (0) ---02:21
lifelessman, my vim in this vm is _borked_02:35
lifelessits the cause, whatever is going on.02:35
lifelessmwhudson: did you have any thoughts on https://bugs.edge.launchpad.net/launchpad-foundations/+bug/618019 ?03:17
_mup_Bug #618019: OOPS may be underrepresenting storm/sql time <Launchpad Foundations:New> <https://launchpad.net/bugs/618019>03:17
mwhudsonlifeless: not particularly03:19
mwhudsonlifeless: i know that object construction time can be significant03:19
mwhudsoncalling it 'sql time' doesn't seem quite fair though03:19
lifelesswell, I'm saying we don't know03:20
lifelessI'd like to be able to say ORM time and sql time03:20
lifelessbut I have a sinking feeling tha time spent getting stuff out of the sql socket is being accrued as nonsql time03:20
lifelessmwhudson: ould factory.makePerson be reusing Person db id's ?03:35
mwhudsonlifeless: no03:35
lifelessI have a -weird- interaction then03:35
mwhudsonthere might be db-non marked dirty issues03:35
mwhudsonlifeless: details++ pls ;)03:35
lifelessyes03:35
lifelesstyping03:35
lifelesslp/registry/browser/tests/coc-views.txt03:35
lifelessline 3703:35
lifelessmakes a new person03:36
lifelessgrabs a view03:36
lifelessand checks that the instructions are show03:36
lifelessn03:36
lifelessI'm seeing03:36
lifeless    - 1. Register an OpenPGP key.03:36
lifeless    - 2. Download the current Code of Conduct.03:36
lifeless    - 3. Sign it!03:36
lifelesswhich means the view things the principle has signed the coc03:36
lifelessI think03:36
wgrantlifeless: Wouldn't that suggest the opposite?03:38
lifelesswgrant: the - means the line is missing03:38
wgrantOh.03:39
wgrantNot a bullet.03:39
wgrantI see.03:39
lifelessnow, for hilarity03:39
lifelessI can't find those instructions in the source03:39
wgrantWhat are the changes in your branch?03:39
lifelesswgrant: its the registry branch03:39
wgrantThe one where you're caching that field?03:40
lifelessyes03:40
mwhudsonlifeless: the instructions are in codeofconduct-list.pt03:40
lifelessnothing obvious in a preview merge03:40
lifelessoh, the </a> threw my gre out03:40
lifelessmwhudson: thanks03:41
lifelessit also seems to think that they have registered an openpgpg key03:41
lifelesswhich is -really weird- as I didn't cache that03:42
lifelessah no, its all in the not: is_ubuntu_coc_signer clause03:42
lifelessso the symptoms are 'a new person from factory.makePerson has their is_ubuntu_coc_signer set true03:42
lifelessyes, I added a print of the is_ubuntu_coc_signer right after makePerson03:47
lifeless-> True03:47
wgrantlifeless: Is it caching (eg. does it work in make harness), or is your query broken?03:48
lifelessmy query ?03:48
lifelesswgrant: this isn't going through _all_members03:48
lifelesswgrant: thats a -very- explicit code path;03:48
wgrantlifeless: But you refactored the property itself.03:48
lifelessyes03:48
lifelesswgrant: oh, right, I see what you're asking. Thanks.03:49
wgrantI haven't seen this AND thing before.03:49
lifelessthats easy to tes03:49
wgrantAh.03:49
wgrantThere's the problem.03:49
wgrantYou're not constraining the Person...03:49
wgrantYou're just saying Person.id.03:50
lifelessyeah, its the calculation itself03:50
wgrantYou mean self.id.03:50
wgrantAh, except that it's static.03:50
lifelessyeah, the refactoring is borked03:51
lifelessvery good catch03:51
lifelessin both cases in fact.03:53
lifelessnot enough attention to detail; fixing.03:53
wgrantHah.03:53
lifelessit needs to LeftJoin on the _all_members case03:53
lifelessto be fair though, it was the second attribute, I was still figuring things out ;)03:53
wgrantHm, is the _all_members case really broken?03:54
lifelessyes03:54
wgrantI'm not sure how Storm will SQLify that.03:54
wgrantOK.03:54
lifelesspeople that haven't signed a coc at all will be excluded03:54
lifelessbecause their columns would be NULL03:54
wgrantBut it's in an Exists...03:54
lifelessoh03:54
lifelessI think I need more caffeine. This isn't me :)03:54
lifelessright. square one.03:55
wgrantHeh.03:55
lifelessthe _all_members case does look right.03:55
wgrantI think it's OK, yes.03:55
lifelessthe property is naffed03:55
lifelesswe can't use Person.id there03:55
lifelessso03:55
wgrantYou can.03:55
wgrantYou just have to constrain it in the property itself.03:55
lifelesswe're not querying on the Person table03:56
lifelessand querying both tables would be nuts03:56
wgrantTrue.03:56
wgrantbrb.03:56
lifelessmwhudson: wgrant: thank you for your help.03:58
lifelesstaking a break; -> new house stuff and talking to bigjools late tonight04:04
lifelessif you need me, SMS/ring the aussie mobile04:04
lifelessgetting there with this branch07:07
wgrantThe cache-the-world one?07:11
lifelesscache person07:15
lifelessgot some wtf failures in soyuz tests07:15
lifelessalso in my cachedproperty branch which I'm using as a prereq now07:16
lifelesswgrant: for instance07:37
lifelessFile "lib/lp/soyuz/browser/tests/archive-views.txt", line 1279, in archive-views.txt07:37
lifelessFailed example:07:37
lifeless    view = create_initialized_view(07:37
lifeless        ubuntu_team.archive, name="+copy-packages",07:37
lifeless        form={07:37
lifeless            'field.destination_archive': '',07:37
lifeless            'field.destination_series': '',07:37
lifeless            })07:37
lifeless...07:37
lifeless        raise ComponentLookupError(objects, interface, name)07:37
lifeless    ComponentLookupError: ((None, <canonical.launchpad.webapp.servers.LaunchpadTestRequest instance URL=http://127.0.0.1>), <InterfaceClass zope.interface.Interface>, '+copy-packages')07:37
lifelesshas me scratching07:38
StevenKlifeless: I'm also seeing a hanging test, FWIW08:07
lifelessStevenK: in soyuz? same symptoms? how are you running it ?08:07
StevenKlifeless: I threw a branch at ec2 land08:07
StevenKec2test@domU-12-31-39-0E-60-31:~$ tail -n 1 /var/www/current_test.log && date08:07
StevenKtime: 2010-08-16 05:14:30.759898Z08:07
StevenKMon Aug 16 07:07:44 UTC 201008:08
StevenKlifeless: strace is being as unhelpful as I feared08:08
lifeless\o/08:08
lifelessso08:09
lifelesswhat does ps tell you ?08:09
lifelesse.g. ps fux08:09
StevenKAll that shows is the shell, the ps process and the librarian08:09
lifelesshmm, what user are you :)08:10
lifelessoh, no terminal08:10
StevenKec2test08:10
lifelessps faux ?08:10
lifelessthe stty process is what was hurting me08:10
lifeless(and its a known 'feature' of stty08:10
StevenKNo stty process08:10
lifelesswhat do you have?08:11
StevenKlifeless: http://pastebin.ubuntu.com/478711/08:12
StevenKI'm suspecting the test runner has fallen over08:12
lifelesswell08:12
lifelessdid you see the patch from maris08:12
lifelessshutdown stomps on shutdown08:13
lifelessso falling over is possible08:13
lifelessfinishing and not shutting down is also possible08:13
StevenKI seriously doubt the test suite finished08:13
lifelesssubunit-ls < test.log08:14
lifelesssorry08:14
StevenKMinusing the last test ran versus what time the instance started is 80 minutes.08:14
StevenKWe're not that quick :-)08:14
lifelesssubunit-stats < test.log08:15
lifelesstrue08:15
StevenKIt only ran 1744 tests08:15
StevenKOne did fail, though, which is odd08:16
lifelessmay be interrupted08:18
lifelessif the test kills the runner thats how it shows up08:18
StevenKerror: lp.soyuz.tests.test_buildpackagejob.TestBuildPackageJob.test_providesInterfaces [08:18
StevenK_StringException: lost connection during test 'lp.soyuz.tests.test_buildpackagejob.TestBuildPackageJob.test_providesInterfaces'08:18
StevenKlifeless: Like so, from subunit-filter ?08:18
lifelessyes08:19
lifelessthat tells you what nuked things08:19
lifelessassuming no buffering08:19
StevenKIndeed08:19
lifeless[which is false - I *know* we have buggering in place in the test supervisor]08:20
* StevenK smirks08:20
lifelesss/gg/ff/08:20
StevenKlifeless: So, what do you suggest? Kill the test runner and run make check by hand on the instance?08:21
lifelesswell08:22
lifelessis it repeatable?08:22
StevenKThis branch has done this twice, but I don't know which test killed it the first time since I was sleeping08:23
lifelessrunning the tests while watching isn't a silly idea08:24
lifelessyou could try running just that test08:25
StevenKRunning just that test locally doesn't fail08:28
StevenKBut, like you say, I think buffering is screwing us08:28
lifelessyou can run it and the next 2008:29
lifelessgrab any previous ec2 result08:29
lifelessand use subunit-ls to get a list of the tests08:29
lifelesspick that one and 20 or 30 after08:29
lifelessput them in a file and use bin/test --load-list filename08:29
StevenKThe ordering doesn't change?08:29
lifelessits tolerably stable08:30
lifelessbtw08:31
lifeless1500 line text files are not 'tests'08:31
lifelessjust saying08:31
StevenKWha?08:32
* StevenK is missing contextg08:32
StevenKs/g$//08:32
lifelesstests/archive-views.txt08:33
lifelessits blowing up, spectacularly, for me08:33
lifeless      File "/home/robertc/launchpad/lp-sourcedeps/eggs/zope.component-3.9.3-py2.6.egg/zope/component/_api.py", line 111, in getMultiAdapter08:34
lifeless        raise ComponentLookupError(objects, interface, name)08:34
lifeless    ComponentLookupError: ((None, <canonical.launchpad.webapp.servers.LaunchpadTestRequest instance URL=http://127.0.0.1>), <InterfaceClass zope.interface.Interface>, '+copy-packages')08:34
lifelessline 127908:34
StevenKlifeless: That test predates me by a while08:34
lifelesssure08:35
lifelessnot blaming you :)08:35
lifelesshas anyone seen one of these sorts of failures before08:35
lifelessand can suggest how to debug the thing ?08:35
StevenKHe can!08:35
StevenKUm, I have, but I can't remember what I did08:35
noodles775lifeless: normally you see that kind of error when ZCA hasn't been initialised properly... I'm assuming you've not modified the test so you haven't changed the layer it runs with?08:36
* StevenK grumbles at the letter he just got from Medibank Private08:36
lifelessnoodles775: no, I haven't changed anything in soyuz08:36
lifelessnoodles775: this is my registry branch, which adds some caching to Person (and only Person)08:37
bigjoolshullo08:37
lifelesshey bigjools08:37
noodles775lifeless: ah, so it's only failing in your branch? I'll take a look at the MP.08:37
bigjoolshey lifeless, epic fail at getting up early I'm afraid08:37
lifelessbigjools: thats ok08:38
StevenKbigjools: Still flu-ey?08:38
StevenKbigjools: Read as, "Did the weekend help?"08:38
bigjoolsnot quite full strength but better, thanks08:38
lifelessnoodles775: I'm pushing the latest now, but the shape is unchanged08:38
lifelessnoodles775: https://code.edge.launchpad.net/~lifeless/launchpad/registry/+merge/3206708:39
noodles775Ta.08:40
lifelessits pushing now (bit slow because Lynne is eating all the wifi slots with a machine migration)08:40
noodles775no worries... I'm just running the doc firstbefore merging anyway.08:40
noodles775*sigh* and need to run make schema first.08:41
lifelessthe cachedproperty changes are from a different branch08:41
lifelesswhich is approved and ec2ing itself08:41
* StevenK stares at bin/test --load-list on his instance08:42
=== almaisan-away is now known as al-maisan
=== henninge_ is now known as henninge
StevenKlifeless: Your suggestion was to run bin/test --load-list <filename>. That has set up the layers and then done nothing else08:51
lifelessyou probably want -vv there too :)08:52
StevenKIt just spat out 'Killed', so I'm now *very* curious what is going on08:53
StevenKlifeless: Probably :-)08:55
noodles775lifeless: the cache you've added on IPerson.archive is changing the test: http://pastebin.ubuntu.com/478724/08:56
noodles775(sorry, doc :) L.08:56
lifelessnoodles775: thanks08:56
noodles775np.08:57
lifeless(waiting for pakcets to look at the pastebin)08:57
StevenKec2test@domU-12-31-39-0E-60-31:~$ dmesg | grep -c 'oom-killer'08:57
StevenK608:57
StevenKlifeless: ^08:57
lifeless-epic- packet loss on local wifi :(08:57
StevenKThe plot thins :-(08:57
lifelesshah08:57
StevenK 8693 ec2test   20   0 3575m 3.2g  11m R  100 45.1   4:35.38 /usr/bin/python08:58
StevenKFuuuuuuuuuun08:58
lifelessthats less that optimal08:58
StevenKbin/test is blaming buildd-slavescanner.txt08:58
lifelessnoodles775: so what does it /mean/ ?  'no archive found when one should be found' ?08:58
noodles775lifeless: I'm guessing it means that ubuntu_team.archive was accessed before the doc added an archive for them, so the value of None is cached...08:59
noodles775The line of the error you see is where it tries to adapt ubuntu_team.archive (which is None) and fails.09:00
noodles775As the paste shows, the archive is found if you kill the cache (and the initialized view returned as expected)09:00
noodles775So, convert it to a unit test and the problem goes away :)09:01
lifelessnoodles775: yeah, I need to find where though - so that I can fix the code to invalidate automatically (there are many more failures, this is just the first bit of fallout that was completly bizarre)09:07
lifelessbigjools: so09:09
StevenKRight, Python got to 6.7g resident before the oom-killer stepped in09:09
lifelessbigjools: I don't konw what bits needed expansion in the incident report09:10
mrevellHello all09:10
lifelessbigjools: so I suggest you ask me stuff ;)09:10
bigjoolslifeless: so an explanation of how you reached your conclusion would be a good start09:10
lifelessnoodles775: ArchiveSet.new() caches the value09:10
lifelessbigjools: which conclusion ?09:10
noodles775lifeless: aha.09:10
lifelessnoodles775: yes, aha indeed.09:11
bigjoolslifeless: "Soyuz went into a busy loop on the 'bohrium' builder"09:11
lifelessnoodles775: I suspect its this : if purpose == ArchivePurpose.PPA and owner.archive is not None:09:11
noodles775lifeless: yep. Isn't this why we don't normally cache model attributes? (sorry, I've probably not caught up on some email discussion saying why what you're doing is ok).09:13
lifelessbigjools: wgrant and cody talked about that.09:13
lifelessbigjools: cody looked at the log on devpad and saw multi-times-per-second logged events saying that bohrium was being disabled09:14
lifelessbigjools: I thought I linked the example log entry in the report09:14
bigjoolslifeless: that's just one snippet, it doesn't show repeated attempts at anything09:14
lifelessnoodles775: see several threads of mine about this on the list :) short story: caching is *a* way to get 'things that look cheap are cheap' more widespread, and bigger picture solutions require r&d09:15
lifelessbigjools: it was spitting that out a lot, or so I was told09:15
bigjoolsok09:16
lifelessbigjools: other evidence about a busy loop on bohrium is that attempts to update it from both psql and the lp webapp and airlock all failed09:16
* wgrant was just working on what Cody said was hoppening in the logs.09:16
bigjoolslifeless: in the traceback it's calling "requestAbort"09:16
lifelessspecificaly just update builder set thing=False where name=bohrium got stuck waiting for a lock09:16
lifelessthat was a sign that *something* was busy updating that row....and updating the row.... and updating the row09:17
lifelesswe *don't know* if it was one long transaction, or many short ones.09:17
wgrantbigjools: That codepath then immediately sets builderok=false, then commits. With no other options.09:17
lifelessnoodles775: pm09:18
bigjoolswgrant: nope, it calls slave.abort()09:18
wgrantbigjools: True. Which fails, then invokes the exception handler which prints the log message.09:18
bigjoolswhich is why we get an XMLRPC fault09:18
wgrantWhich sets builderok=false, which commits.09:18
wgrantMissed the exception handler bit, sorry.09:18
bigjoolsah ok09:18
wgrantBut we know that the handler was called, since the log entry is there.09:18
lifelessnoodles775: does that pasted thing look reasonable to you ?09:19
lifelessit makes that entire doctest pass09:19
wgrantIn fact, I think that's just about all we *know* happened.09:19
lifelesswe also knew that other builds were not happening09:20
wgrantTrue.09:20
lifeless(or were being updated/processed so slowly that it was equivalent to not happening)09:20
wgrantNow, I haven't seen the logs, but from what I heard there was nothing about the commit failing.09:20
wgrantSo possible something kept setting builderok=true again, or the Twisted evil is swallowing exceptions.09:21
bigjoolslifeless: so what that means is that we never got back into the reactor, so there was a loop somewhere09:21
bigjoolslifeless: was the log spewing stuff or stuck on that line?09:21
noodles775lifeless: hrm... it looks like, yes, it would get the doctest passing, but it's adding a dependence elsewhere on the knowledge that a property is cached... would something like @cachedproperty(unless_equal=None) be silly? Hrm09:22
lifelessbigjools: I didn't look : when I got here it had been plausibly analysed > 1 hour before, without escalation: so I discussed enough to determine that it needed (IMO) escalation, and handed off to elmo09:22
lifelessnoodles775: yes, because it would mean that /participants of a team with many people without PPAs would trigger lots of tiny queries09:23
noodles775lifeless: Right.09:23
noodles775lifeless: So I can't think of any other solution immediately than what you've pasted.09:23
lifelessarchive.txt does this09:24
* StevenK tries to figure out why a doctest is causing python to eat 6.8g of RAM09:24
lifelessmm, does something similar09:24
bigjoolslifeless: ok so I am looking at the log now, it's repeating that log section over and over09:24
bigjoolslifeless: I have a suspiscion that it happened when the Enablement guys yanked it from the pool09:26
bigjoolsassuming they did so on a Saturday09:26
bigjoolsactually, Friday night09:26
lifelessyou say potato, I say pohtahto09:26
bigjoolsb-m was stuck in this loop from 22:17 to 08:4709:27
bigjoolsno you don't :)09:27
lifelessI mean tz issues :)09:27
bigjoolsthat's UTC09:28
lifelessyeah09:28
lifelessso 10am sat09:28
bigjoolstherefore it was Friday night everywhere ;)09:28
wgrantOho. @write_transaction retries....09:28
bigjoolsforever?09:28
wgrantOnly three times, apparently.09:28
bigjoolswas gonna say ...09:28
wgrantBut it's still utterly wrong to use it.09:28
bigjools?09:29
wgrantWhat with the whole talking to the builder thing.09:29
lifelesswhat do you guys think of the idea of making the buildd manager an API client09:29
bigjoolsyou need to expand on that09:29
bigjoolslifeless: CRACK09:29
lifelessand removing its DB usage.09:29
bigjoolstotal crack09:29
lifelesswhy ?09:29
wgrantbigjools: Retrying transactions that have external effects seems... unwise.09:29
bigjools...09:29
wgrantAlthough it's probably OK enough here.09:29
bigjoolslifeless: the API is S L O W09:30
lifelessbigjools: not in any way that matters for the buildd manager09:30
bigjoolsdude09:30
bigjoolsno09:30
bigjoolsit does matter09:31
lifelessof coure performance matters09:31
bigjoolsyou're just making things twice as hard for yourself and putting load on appservers for no good reason09:31
lifelessbut nothing the buildd manager *does* has any reason to be slow with the API as it stands today.09:31
lifelessno, I'm running an idea up the flagpole09:31
lifelessif its a bad idea, fine.09:31
bigjoolsthe b-m is *very* busy issuing queries09:31
lifelessbut I want to understand *why*09:31
bigjoolsfirst of all, you need to justify why you think it would be better with the API09:32
lifelesssure09:32
lifelessyou've got a highly concurrent task09:33
lifelesswhich twisted is great at09:33
lifelessbut you're doing transactions, which will - unless you are _very_ careful - last the length of a conceptual task like 'check on builder Y'09:33
lifelessthe longer transactions are, the more contention you put on busy rows in the DB, like the builder table.09:34
lifelesssecondly09:34
bigjoolsfirst one easily fixed by moving transaction boundaries09:34
bigjools(it already does partial commits)09:35
lifelessour *entire* stack above the storm layer is built on the model of global, magical, transaction objects which lookup information in thread locals09:35
lifeless[it may  be easy to fix, but it needs to be done and maintained with care: using the API you'd have that for free, so its less effort *in that regard*]09:35
lifelessback to the second angle09:35
lifelesstwisted runs everything in the reactor thread09:35
lifelessso you have to play silly buggers with our stack to move transaction objects out of context and back in, and also, because the stores and transactions are tied to model objets, possibly do that to the model objects too09:36
lifelessif you don't, you run a high risk of bugs where you do unrelated things in a single transaction09:37
lifelessnote that moving transaction boundaries won't work well if you want to use our regular model objects for flow control or anything like that.09:38
bigjoolslifeless: I don't see why things are moving around as you suggest09:40
lifelessI think that those two things together make the job of writing the buildd manager in twistd harder than if it was an API client. Of course, I'm not the one writing it: I'm expressing an opinion and asking what you think.09:40
bigjoolsthe b-m would bring the appservers to their knees09:40
lifelesswhy?09:41
lifelessI'm not trying to be silly or difficult - I really don't see why it would.09:41
bigjoolsbecause it issues shitloads of queries09:41
bigjoolsask stub about the load it generates09:41
lifelesswhat is it doing with these queries ?09:41
bigjoolsseeing if there's a new build on each builder, checking status of each builder etc etc09:42
bigjoolsif the webservice were a thin, performant agile layer I would consider agreeing with you, but it's not09:42
bigjoolseven if it were you'd still be putting tremendous load on the appservers09:43
bigjoolsand I think we should use those to service external requests, not DC ones09:43
lifelessso, in terms of its performance; I've been looking and its bad in a couple of specific ways09:43
lifelessit batches stuff we shouldn't batch : but clients have control over that, so we can easily avoid it.09:44
lifelessand it potato programs as you traverse objects (the exact same terrible pattern that makes some pages (and some API calls) extremely slow)09:44
lifelessthe former issue would be avoidable; the latter issue is nearly entirely irrelevant in the DC (particularly for a long lived process like the buildd manager)09:45
lifelessin terms of appserver load09:45
lifelesscompletely separately from this discussion09:46
lifelessI want to separate out APIs and WebUI appservers09:46
lifelessI don't think its good or appropriate to mix up human-facing work with machine-driven work: makes servicing humans well in times of overload harder.09:47
lifelessthis idea is raw: I haven't run it up the flagpole and had it examined it; its an open-concept09:47
bigjoolsok09:47
lifelessanyhow, if that were done, the load on the appservers might be huge, but it wouldn't affect browser using users.09:47
bigjoolsanyway I am trying to see reasons why the b-m would be stuck in a slave.abort() loop09:49
bigjoolsit's not exiting from the Deferred at all, otherwise we'd see other builds getting dispatched in the log09:50
lifelessAnyhow, this is a diversion: I asked your opinion, which is that its a bad idea because it would be harder to make it perform well, and even if done to perform well it has a high risk of adversely affecting the API appservers.09:50
lifelessI may come back to this concept in the future, but I have what I wanted for now:)09:50
lifelessnoodles775: actually, hah, it didn't fix it - I've got some more digging to do.09:51
lifelesswhat happens if you removeSecurityProxy on a non proxies object ?09:54
lifelessah, pass though. nice09:54
lifelessright, scatter removeSecurityProxy into the caching layer, and its good.09:58
lifelessbigjools: is there anything else I can tell you about saturday to help10:01
lifelessdanilos: hi10:01
daniloslifeless, hi10:01
lifelessis there anything I can do you help with your page performance analysis ? your plea for help was rather heartfelt :)10:02
daniloslifeless, heh, thanks for the offer :) not sure right now, but I just wanted to indicate a few issues that seem as if they are staying under your radar :)10:03
daniloslifeless, it's basically: "here's a few things we are having problems with, I know different people are working on it, but I am sure you are the best person to keep that all in mind"10:03
lifelessdanilos: I've filed a bug - thats related - https://bugs.edge.launchpad.net/launchpad-foundations/+bug/61801910:04
_mup_Bug #618019: OOPS may be underrepresenting storm/sql time <Launchpad Foundations:New> <https://launchpad.net/bugs/618019>10:04
lifeless\o/ I think my registry branch will pass now10:04
lifelessdanilos: I think this is related because if we're undercounting DB time, it would certainly explain some things ;)10:04
wgrantlifeless: Doesn't mean it won't break anything :/10:05
daniloslifeless, right, but this particular case doesn't seem to be that10:05
lifelessdanilos: do you have a profile for it ?10:05
daniloslifeless, for instance, we get long rendering time on local instances with that many objects where DB time is very stable (i.e. we just add 2000 rows to the DB)10:05
daniloslifeless, no, sorry, it's the next step we've got to take10:05
lifelessno worries10:06
lifelesslosa ping10:06
lifeless:)10:06
daniloslifeless, (I've got KCacheGrind email tagged as "important" :)10:06
lifeless:(10:06
lifelessbah10:06
lifeless:) is what I meant10:06
danilosheh10:06
lifelessdanilos: if it is python time, there are a few things we can do to fix it, but which one will make sense will need the data for where the time is going10:07
daniloslifeless, also, our first suspicion was storm "objectification", but that turned out to be pretty quick10:07
daniloslifeless, of course, we haven't done anything other than get a gut feel about the situation10:07
lifeless(we could do a C extension, we can cut some fat out, we can rearrange the layers)10:07
lifelesswgrant: of course it will break something.10:07
daniloslifeless, gary was mentioning switching to chameleon (as a faster TAL renderer), looking into fmt:url and why it takes so long (it was around 2ms per call for us), etc. anyway, I don't want to make another guess without profiling first :)10:09
lifeless\o/ data10:10
lifelessbigjools: ok, I'm going to go do family time and stuff10:10
lifelessbigjools: if there are other things I can answer to help, or if you want me to start looking at the code as another of eyeballs, just shout.10:11
bigjoolslifeless: sorry was on a call10:11
bigjoolslifeless: if you could eyeball the code that would be great.  It's getting  stuck inside a Deferred somehow10:12
bigjoolsI don't know why it would be repeatedly calling slave.abort10:12
bigjoolswell, it's calling builder.rescueIfLost()10:12
wgrantThe log says it's also repeatedly calling Builder.updateStatus...10:12
wgrantAnd there's only one place that's called :/10:12
bigjoolswgrant: I only see it calling rescueIfLost10:13
wgrantbigjools: The traceback sucks. But grep for the error text.10:13
bigjoolswgrant: updateStatus is not in the traceback10:13
bigjoolshttp://pastebin.ubuntu.com/477761/10:14
wgrantbigjools: updateStatus delegates to updateBuilderStatus.10:14
wgrantWhich is right at the top.10:14
bigjoolsd'oh10:14
wgrantNFI why the traceback stops there, though.10:14
bigjoolsright10:14
bigjoolsI still feel it's something to do with Enablement yanking the builder10:15
wgrantVery probably.10:15
wgrantBut even DB contention doesn't explain this entirely.10:15
wgrantIt explains three calls.10:15
wgrantNot thousands.10:15
wgrantUnless they're both mutually timing each other out.10:15
bigjoolslifeless: you said that Builder:+edit is slow, I can't find an oops on bohrium in the oops reports10:16
lifelessit was on sat10:17
lifelessonly three requests, and I think they were all elmo10:18
bigjoolslifeless: yeah I looked in the reports and I can only find one Unauthorized response10:18
StevenKCan someone run the buildd-slavescanner.txt test on devel and see if python starts taking up gobs and gobs of RAM?10:18
lifelessbigjools: how did you look - grep or something else ?10:18
bigjoolssince I'm a buildd admin I'll play later10:18
bigjoolslifeless: I used my email client to search my OOPS reports emails10:19
lifelessbigjools: they only report the top 2510:19
lifelessby volume10:19
bigjoolslifeless: ok then I leave it up to you to put the OOPS on that bug :)10:20
lifelesshmm, elmo linked it10:20
lifelesssec10:20
bigjoolsah cool10:20
lifelessbigjools: OOPS-1687L750 I think10:21
bigjoolsgot it, ta10:21
wgrantbigjools: Do you have a few minutes to talk ddebs?10:46
bigjoolswgrant: not now, sorry, I'm hellish busy10:46
wgrantHeh, OK.10:46
jmlhello11:14
lifelesshello11:15
bigjoolshello11:16
jmllifeless, regarding the deprecation warning you were seeing earlier11:19
jmllifeless, I spent some time trying to fix the opacity of the message.11:19
jmllifeless, and then gave up. import handlers and warn-on-import warnings are tricky beasts.11:20
wgrantIs the legendary lazr.importguardian any better in this respect?11:23
jmlwgrant, I'd be surprised if it was.11:24
jmlwere.11:25
wgrant:(11:25
jmlas far as I can tell, to do it right you'd have to monkeypatch warning.warn and a couple of other methods and change the stacklevel argument11:26
jmlOR11:26
jmljust do stack introspection in the warninghandler11:26
wgrantYay.11:27
jmlbut I'm increasingly unsure what our warning handler actually wins us.11:27
gmblifeless, So, are feature flags available to use now? I appear to have missed the news on this one.11:39
lifelessgmb: yes [caveats may apply]11:41
gmblifeless, !caveats ;)11:42
lifelessgmb: the caveats are that there is no UI for admining them yet, and little polish - not many scope types etc11:42
lifelessgmb: but that doesn't matter much11:42
gmblifeless, Righto. Thanks. Good to know.11:42
lifelessgmb: as a consumer of flags, you just write your code guarded by a flag11:42
lifelessthe admin stuff that is missing will affect QA and production only11:42
lifelessQA to see how your patch looks on/off11:42
gmbOkay.11:43
lifelessproduction to configure the rules you request (which you can do anytime: because it defaults off you can land your patch, tweak some more, land that, and then ask losas to turn on the feature flag)11:44
gmbRight11:48
=== lifeless changed the topic of #launchpad-dev to: Launchpad Development Channel | week 1 of 10.09 | PQM is OPEN | firefighting: - | https://dev.launchpad.net/ | Get the code: https://dev.launchpad.net/Getting | On-call review in irc://irc.freenode.net/#launchpad-reviews
bigjoolsanyone familiar with ARM know how many architecture variations there are, roughly?11:49
lifelessdo you mean specific SoC's ?11:49
bigjoolsthat sort of thing yeah - they each need a separate distroarchseries11:49
jmllots, I reckon.11:50
bigjoolsand I heard that our current set of supported architectures will balloon11:50
jml#linaro might be a better place to ask.11:50
bigjoolsjml: yes, that's my approx guess too :)11:50
* bigjools was not aware of that channel, aha11:50
lifelessyes, 'lots' is definitely the answer11:51
lifeless1 or more per silicon vendor AIUI11:51
bigjoolsthe reason I ask is because people want arch checkboxes on the "register a distroseries" page but that's probably not possible11:55
lifelessthere is a big effort going on11:56
lifelessto make the kernel and libc (IIUC) the only things that vary, so that it would be more pocket-like, or something.11:56
lifelessand by vary I mean 'loadable modules'11:56
lifelessjml: I haven't landed your patches yet.11:58
lifelessjml: however I did release a new project :P11:58
jmllifeless, I had noticed both things.11:58
lifelessjml: and your patches are now very high up the pile11:59
jmllifeless, grats on the new project. I'm looking forward to giving it a try.11:59
lifelessI appreciate your patience and regret the time its taken to get to them11:59
jmllifeless, np :)12:00
deryckMorning, all12:00
lifelesshi deryck12:00
jmlderyck, good morning12:08
=== al-maisan is now known as almaisan-away
=== jelmer_ is now known as jelmer
lifelessStevenK: you should email the list about this memory problem12:56
lifelessStevenK: I'm seeing the same death on my ec2 land calls12:56
lifelessso we're essentially in stop-the-line mode12:56
lifelessor someone should12:57
lifelessec2 instances dying at 1744 tests run in the log, memory epxlosion and OOM killing12:57
lifelesshowever, its mightnight, so me, I'm-a-sleeping12:57
lifelessjml: tag, you're it. ^ :)12:57
jmlhmm ok.12:59
=== mrevell is now known as mrevell-lunch
StevenKjml: I have tracked it down, and I can share notes, if you wish13:16
jmlStevenK, that'd be great, thanks.13:17
pooliehi13:17
StevenKjml: The troublesome test is lib/lp/soyuz/doc/buildd-slavescanner.txt, the troublesome line in the test is 51, and I have a traceback: http://paste.ubuntu.com/478766/13:18
StevenKjml: Evidently, I did kill the test horribly to get that traceback, so it might not help much13:18
jmlStevenK, what happens when you run it locally?13:19
jmlpoolie, hello13:19
poolie(just saying hi)13:19
StevenKjml: It consumes gobs of memory before I get sufficently nervous and kill it13:20
wgrantYou know, that's interesting. It's almost the same place the hang happened over the weekend.13:20
jmlwell, that's a good sign.13:20
jml(Imagine how much worse this would be if it behaved nicely locally)13:21
jmlmy first hunch is that it's a bug in z.testing.testrunner.13:23
marsjml, + for testr failing --list13:28
marsjml, any progress on the suite OOM error?  Why do you suspect zc.testing.testrunner?13:29
jmlStevenK, I don't see the error when running on stable.13:29
jmlmars, because of the traceback.13:29
marsI think you hacked on that code for subunit.  At least it should be familiar territory13:30
jmlnot the traceback formatter.13:31
jmlbut familiar enough.13:31
jmloddly enough, this interrupts me during some fairly deep surgery on ec2test/remote.py13:31
StevenKjml: I've posted to -dev about it, so you can follow up when you wish13:32
marsjml, StevenK, can you reproduce this on a local copy of devel?13:32
StevenKmars: I can13:32
jmlmars, I'm trying that right now.13:32
jmlmars, but I always try stable first.13:33
StevenKI get a lot more nervous on my desktop than a random EC2 instance13:33
marshehe13:33
marsoh, awakening the OOM serial killer bit13:33
jmlStevenK, computers are for burning!13:33
marsbrowsers and editors beware13:33
StevenKFor instance, I let Python consume 6.8GiB of RAM before the oom-killer stepped in, but on my desktop, I killed it myself after 2.1GiB13:34
jmlI *can* reproduce this on devel, it seems.13:34
StevenKjml: Says you :-P13:34
=== matsubara-afk is now known as matsubara
jmlalthough please forgive me while my desktop grinds :)13:35
jmlthis is good news!13:36
marsargh - zope testrunner explicitly forbids running under PDB.  PDB would catch the original exception before formatException() got to it.13:36
marsjml ?13:36
jmlwell, it means the problem is in http://paste.ubuntu.com/478825/13:36
jmland if I were a betting man, I'd say in r1134513:37
StevenKI have to agree13:37
* jml verifies13:37
wgrant.........13:38
wgrantAha.13:38
jmlfwiw, this is the stack trace I got when I interrupted.13:38
jmlhttp://paste.ubuntu.com/478827/13:38
wgrantThat would explain *everything*.13:38
wgrantAnd why I couldn't work out what was happening over the weekend.13:39
wgrantTaking that CP into account, the problem is obvious...13:39
wgrantbigjools: ^^13:39
poolieStevenK: you know about ulimit?13:39
jml... and science verifies it is indeed that revision.13:40
jmlwgrant, it's not obvious to me (other than "signals are hard")13:41
marsheh13:41
wgrantjml: Note that one of the cases results in an infinite loop.13:41
wgrantIt might not be the problem that's causing the excessive memory usage. But it is what caused the crisis over the weekend.13:41
* jml looks atthe diff13:41
=== mrevell-lunch is now known as mrevell
wgrantIf you stick a try/except in a 'while True' loop, you want to ensure that all the paths have a way to escape...13:42
jmlI seem to remember recommending not to use an infinite loop.13:42
StevenKpoolie: I do13:43
* bigjools did not use an infinite loop13:43
jmlahh.13:43
wgrantbigjools: Why is there an infinite loop, then?13:43
bigjoolsfuck nose13:43
wgrantHeh.13:43
jmlbigjools, I'm looking at the code. It's clear that the intent is not to be an infinite loop13:44
bigjoolshas this revision passed buildbot yet?13:44
jmlbut you know what they say about good intentions.13:44
jmlbigjools, no.13:44
bigjoolsooookay then13:44
bigjoolsthat explains the buildbot failures13:44
jmlso, the memory thing is because builder.failBuilder(str(reason)) is appending stuff to a list?13:44
bigjoolssigh13:44
bigjoolsso, where's the loop coming from13:45
wgrantI don't think it appends stuff to a list.13:45
wgrantbigjools: The codepath that was problematic over the weekend.13:45
wgrantAfter calling failBuilder... it logs, then returns to the top of the loop.13:46
bigjoolswgrant: that is now obvious13:46
marsbigjools, ah, this is why two buildbot slaves fell over from Friday onwards, eh?13:46
bigjoolsbut how is it returning to the top of the loop13:46
wgrantbigjools: How not?13:46
jmlbigjools, it just continues after the except13:46
bigjoolsthere's a "return"13:46
wgrantbigjools: Only the second except and the else have a return.13:46
jmlbigjools, not in the failBuilder clause.13:46
bigjoolsooooooooooooooo ffffffffffffffuuuuuuuuuuuuuuuuuuuuuck13:47
wgrantHaha.13:47
jmlfwiw, the loop could be written as 'for i in range(MAX_EINTR_RETRIES)'13:47
bigjoolsjml: please feel free to do that.  I tried and the code became less readable.13:47
jmlbigjools, I'll have a stab.13:47
bigjoolscheers13:47
bigjoolsjml: in the meantime I'll land a fix13:47
wgrantThis explains why a look at db-devel yielded no reasonable explanation for the weekend's behaviour.13:48
bigjoolsyes :/13:48
bigjoolsgod DAMN13:48
wgrantjml: It's possible that the logging goes to a StringIO... that's probably likely, in fact.13:49
marsbigjools, so you will have to land a roll-back revision before we can restart the builders then13:49
jmlwgrant, that would make sense.13:50
bigjoolsmars: eh?13:50
marsbigjools, I assume the tests in the revision caused the OOM errors?  And the OOM killed our CI build farm.  So the revision needs to be backed out.13:51
jmlbigjools, http://paste.ubuntu.com/478837/13:51
bigjoolsmars: why can't I just submit a fix?13:51
marsbigjools, or that, if you think it is fast to do13:52
bigjoolsI do!13:52
bigjoolsjml: thanks13:52
jmlbigjools, I can land that now, if you'd like.13:52
jml(it also has the return fix)13:52
bigjoolsjml: I'll do it13:52
bigjoolsI need to CP this branch as well13:53
jmlok13:53
bigjoolseasier if I do the whole thing13:53
jmlno arguments from me :)13:53
wgrantIs there a good reason not to just have a single return at the end?13:53
jmlwgrant, I reckon that would be better, yes.13:54
wgrantSlightly less explicit. But also slightly less likely to destroy everything.13:54
marsdepends how close you want to keep the returns to the code that depends on them13:54
marsfor readability13:54
jmlmars, the readability issue here is that the control flow is jumpy13:55
marsyep13:55
bigjoolsso I can see exactly what happened on Saturday now13:56
bigjoolswe got a xmlrpclib.Fault when an Enablement machine was pulled13:56
bigjoolsand the loop ensued :/13:56
jmlbigjools, fwiw, the test passes locally with the fix.13:57
wgrantIt's somewhat more complicated than that, I think. Since it tried to abort.13:57
bigjoolsyeah13:57
wgrantBut that's the main bit of it.13:57
bigjoolsyup13:57
wgrantNow I don't have to go insane wondering what I missed :)13:58
jmlperhaps ec2 test should run against stable by default, rather than devel.13:58
bigjoolsjml: http://pastebin.ubuntu.com/478840/13:58
marssalgado, don't worry about deactivating the Lucid EC2 AMI.  The OOM test failures were unrelated to the Lucid upgrade.13:58
bigjoolsjml: however with that change, test_updateBuilderStatus_catches_repeated_EINTR fails13:58
salgadomars, yeah, just saw the backlog. :)13:59
jmlmeh. I shouldn't have been so quick to delete my branch with that change :)13:59
bigjoolsjml: I see why.  This is why I didn't use range() :)14:02
jmlbigjools, why?14:03
bigjoolsjml: it's not running the code at the bottom of the exception any more14:03
bigjoolsexcept in the case of reason[0] != errno.EINTR:14:03
jmlbigjools, the bottom of which exception?14:03
bigjoolsexcept socket.error14:03
jmloh, you mean in the case where MAX_EINTR_RETRIES is actually reached14:04
bigjoolsyes14:04
* jml tries a fix14:05
jmlhttp://pastebin.ubuntu.com/478842/ works14:05
bigjoolsjml: do you see my point about it being less readable now?14:08
jmlbut maybe http://pastebin.ubuntu.com/478843/ really is the patch with the best cleanness / robustness trade-off.14:08
bigjoolsjml: that has the same problem14:09
jmlbigjools, there are so many problems, which one do you mean?14:10
bigjoolsjml: the one where it doesn't run handleTimeout() when we hit MAX_EINTR_RETRIES14:10
jmlbigjools, it does. run the tests :)14:10
bigjoolsjml: oh sorry I can't read14:10
bigjoolsjml: ok I'll land that with your blessing?14:14
jmlbigjools, please.14:14
bigjoolsand we need to cowboy cesium until the CP goes in14:14
jmllast iteration: http://pastebin.ubuntu.com/478848/14:19
bigjoolsjml: land that afterwards if you wouldn't mind, I'm already mid-process for the other change14:27
bigjoolsok buildd-manager was restarted with the patch14:33
jmlbigjools, sure thing.14:34
barryEdwinGrubbs: btw, whatever happened with that ml oops?15:12
=== almaisan-away is now known as al-maisan
EdwinGrubbsbarry: well, it was just spam, so I am now looking at adding the full text of the email to the oops, so that we don't have to track down a losa to see it.15:37
barryEdwinGrubbs: +1.  i also suggest that we track down that rt and try to work with IS to improve the incoming mta (exim i believe) anit-spam defenses.  really, stuff like this should rarely if ever actually hit lp15:38
barrys/anit/anti/15:39
EdwinGrubbsbarry: I tried searching rt for requests concerning spam or filtering for mailman, but no luck. Do you have any other information before I create a new request?15:54
barryEdwinGrubbs: unfortunately no.  i'm sure i no longer have a link to the rt.  probably can't hurt to just open a new issue15:55
EdwinGrubbsok15:55
marsbigjools, jml, I see your change landed on devel - so are we good to restart the buildbot farm?15:59
bigjoolsmars: yep, thanks15:59
* bigjools dons brown paper bag15:59
marslosa ping, could we please restart the buildmaster and the downed slaves?16:00
marslosas, I have no idea what state the lucid buildslaves are in - they probably need a process tree cleanup :/16:01
jmlmars, fwiw, I've split TestOnMergeRunner into three different classes16:01
mthaddonmars: erm, you mean lpbuildbot (buildmaster is the PPA/archive build master)16:01
marsjml, wow, 3?16:01
marsmthaddon, yep!  Thanks16:01
sinzuijml, mumble?16:01
jmlmars, yeah. one to handle running generic stuff in a daemon; one as an object that represents the merge request; one as the thing that knows how to run tests and gather results16:02
jmlthat middle object simplified a lot of stuff, I think.16:02
jmlsinzui, sure.16:02
marsmthaddon, the lpbuildbot farm has a buildmaster as well - wonderful confusion :)16:02
bigjoolsmars: I often get confused by this nomenclature16:08
bigjoolsI clicked on a graph earlier on and it took me 10 seconds to realised why the thing didn't make sense16:08
marslol16:08
marswe should just call it the bbmaster or something16:09
marsbbmaster, bbslaves16:09
EdwinGrubbsjelmer: ping16:16
jelmerEdwinGrubbs, pong16:18
EdwinGrubbsjelmer: I was wondering if you had a chance to use the feature on edge that lets you create project from a source package. I was starting to QA it but I see there are a lot of meta packages and packages where ubuntu is the upstream, so they don't need a project.16:21
EdwinGrubbsjelmer: I'm also curious, what is the biggest benefit you get after you link a project to a package?16:23
jelmerEdwinGrubbs: Because of the way the sorting in the needs-packaging list works all of the packages that can be linked at the beginning of the list already have been, that's why there are so many native packages there.16:23
jelmerIf you skip a few pages in the list there should be some more packages that don't have an upstream project registered.16:24
* jelmer looks for one16:24
jelmere.g. https://edge.launchpad.net/ubuntu/maverick/+source/soprano16:24
jmlsinzui, http://www.jjg.net/elements/pdf/elements.pdf16:25
EdwinGrubbsjelmer: what's the first thing you do with a project after it has been linked to take advantage of it?16:25
jelmerEdwinGrubbs: usually I register the upstream branch, and sometimes I add the homepage.16:26
EdwinGrubbsjelmer: and do you use the upstream branch to automate some of the package building process?16:26
jelmerEdwinGrubbs: not necessarily, usually it's just so I can get a local copy of the upstream source code or perhaps work on a patch against upstream16:28
EdwinGrubbsjelmer: so, it just makes it easier to get the project in bzr, instead of switching to git or svn to work on a patch? Sorry if this is a lot of questions. I'm trying to improve my understanding of the process.16:30
jelmerEdwinGrubbs: Yep, exactly. It gives me an easy way to track all of my in-progress patches (since they're all nicely listed on my branches page) independent of what project it's for.16:31
EdwinGrubbsahhh16:32
jelmerEdwinGrubbs: No problem; this is just how I use it though, I imagine it's quite different for other people.16:32
EdwinGrubbsjelmer: who else would be good to talk to?16:32
jelmerEdwinGrubbs: Specifically in relation to linking upstream projects and Ubuntu source packages?16:34
EdwinGrubbsjelmer: yes16:35
jelmerEdwinGrubbs: Ubuntu developers that use bug watches (as registering the upstream bug tracker is required to do bug watching IIUC) and forward bugs from ubuntu to upstream.16:35
EdwinGrubbsok16:35
jelmerEdwinGrubbs: The early adopters of daily build packages might also be good candidates, as they need both the upstream source branches and ubuntu packaging branches to build their packages.16:36
jelmerI'm not sure if the actual link between the upstream and the ubuntu source package is of benefit to them though, just that they use both the upstream project and the packaging in ubuntu.16:37
Ursinhasinzui, hi, is the partial fix for bug 607879 really testable, or should we mark it as qa-untestable for now?16:37
_mup_Bug #607879: ~person/+participation timeouts <qa-ok> <timeout> <Launchpad Registry:In Progress by jcsackett> <https://launchpad.net/bugs/607879>16:38
sinzuiUrsinha, it only reduced the query count16:38
Ursinhasinzui, so not really testable16:39
sinzuiYes, We can only see query counts go down.16:40
EdwinGrubbsjelmer: thanks for the info16:42
Ursinhasinzui, I'll change the bug tag then. Thanks16:43
sinzuithanks16:43
=== salgado is now known as salgado-lunch
=== Ursinha is now known as Ursinha-brb
EdwinGrubbsrockstar: does sourceforge let us mirror their branches? I remember this being a problem a long time ago, but I can't remember if it was resolved.17:18
rockstarEdwinGrubbs, I believe so.17:18
=== matsubara is now known as matsubara-lunch
=== Ursinha-brb is now known as Ursinha
=== salgado-lunch is now known as salgado
* jml hates writing tests after writing the code18:17
=== matsubara-lunch is now known as matsubara
jelmerEdwinGrubbs: I think in the case of irda-utils you probably wanted to import /trunk rather than the root of the repository.18:30
sinzuibenji, ping19:00
sinzuibenji (or gary_poster), jtv has been working on a fake librarian for testing.  He registers it using zope.component.provideUtility, but (simply by unregistering the utility it provides) fails to restore the original ILibraryFileAliasSet utility19:02
sinzuiI got stuck on this a few months ago and change my implementation since I could not solve the deregistration issue19:03
gary_posterjtv was just trying to talk to me about this when his connection died19:03
gary_postersinzui, talking to jtv about it in private message19:06
jtvsinzui: thanks… sorry for dropping out there; pidgin died19:06
EdwinGrubbsjelmer: oops19:08
lifelessmoin19:12
=== EdwinGrubbs is now known as Edwin-lunch
lifelessis the issue StevenK reported with ec2 runs OOMing fixed ?19:17
salgadolifeless, yes19:19
lifelesshas it landed in devel - if I just ec2 land, will my stuff go through (assuming my bits are good)19:20
salgadoyes, mine just went thrrough19:21
lifeless\o/19:21
lifelesstime to fire up the engines boys!19:21
jmlhello what19:23
jmllifeless, the fix has yet to reach stable, according to lpbuildbot.19:23
jmlI have just added a new option: "ec2 test --dont"19:24
lifelessjml: long as its in devel19:24
marsjml, 'ec2 test --dont' ?19:25
jmlmars, yeah. it sets up the instance ready to run the test suite, and then it doesn't.19:25
marsjml, heh, I've been instructing people to run 'ec2 demo'19:25
jmlmars, yeah, but that does more stuff.19:26
marsor "ec2 test -o '-t somejunk'"19:26
mars"ec2 test --postmortem -o '-t somejunk'"19:26
marsthat leaves the instance running19:26
jmlmars, also, it doesn't conveniently tell you the command that ec2 would run if it were going to run the tests.19:27
marstrue19:27
marsjml, ec2 test --not-really  :)19:27
jmlyeah. I might rename it.19:27
mars--setup-only works too19:30
marsjml, in your list mail about the OOM problem, what do you mean by "Test suite failures often really do mean production failures" ?19:30
marsno one has mentioned a cowboy or production issues in the thread19:31
jmlmars, oh. well, there was both :)19:31
jmlthe sequence went something like:19:32
jml  * critical production issue A19:32
jml  * cowboy fix for issue A19:32
jml * land fix for issue A19:33
jml * critical production issue B caused by fix for issue A; critical test suite failure caused by fix for issue A19:33
jmland then you can pick up the rest from there.19:34
marsnice19:34
marsimpressive - that one block of code knocked out production and our development pipeline19:36
marsI don't think that has happened before19:36
Ursinharockstar, hi, is https://lp-oops.canonical.com/oops.py/?oopsid=OOPS-1686EA3556 really supposed to be an oops?19:38
rockstarUrsinha, yes.  If we're not catching it, then there's a bug there.19:40
Ursinharockstar, I mean, is that supposed to fail as an oops or just be caught to display a nice error message to the user?19:40
rockstarUrsinha, the latter.  The bug is that we're not catching it.19:40
Ursinharockstar, right. mind if I file a bug for that?19:41
jmlmars, well, by far the most common pattern is to run tests before applying a change to production.19:45
marsjml, heh, I was just writing a reply asking about that.  So why did we not do so this time?19:45
marsjml, and could we have just run '-m lp.soyuz' and felt confident enough with that?19:46
jmlmars, I don't know exactly. If I had to guess I'd say that it would have taken too long.19:46
jmlmars, I'm not 100% sure that would have caught the failure.19:47
marsI am just wondering if there is a natural suite partition there19:47
jmlmars, do you mean as code currently stands now, or as it ought to be?19:48
marsas it ought to be19:48
jmlmars, probably.19:48
marsthere is no way to run 'soyuz-not-app-server-code', or 'soyuz-just-the-app-server', but we can run 'soyuz'19:49
marswhich should be much faster that 'soyuz+bugs+code+..."19:49
marsI'll try timing it, see what happens19:49
jmlmars, I'm not sure if you know, but lots of the code that runs that particular production system lives in paths that do not have 'soyuz' in them at all.19:50
marsjml, I did not know that19:50
jmllp.buildmaster being the one that I'm most certain about.19:51
marsyes, was just looking at that19:52
=== al-maisan is now known as almaisan-away
jmldammit. testing this refactoring shows that I am basically incapable of writing Python without unit tests.19:54
lifelessjml: :)19:57
jmlI just fixed my fourth simple name error.19:57
marsjml, pyflakes?19:57
jmlmars, doesn't help with instance variables.19:58
lifelessjml: interestingly I suggested a range() approach too, back when reviewing the EINTR change20:02
jmllifeless, well, a little paranoia is healthy, and all that20:04
jmllifeless, I notice that Twisted & bzrlib both have until_no_eintr-style helpers and that both use infinite loops20:04
lifelessyeah20:04
lifelessI haven't read your mail yet20:04
jmlI grant that the likelihood of a call generating eintr forever is pretty small20:05
lifelessin a call with the isd guys about logging & stuff20:05
lifelessjml: lamont argues that forever is the right answer20:05
jmlbut something in me bristles all the same20:05
jmllifeless, for the moment, I disagree. Everything needs a circuit breaker.20:07
jmlalso, it somehow became 8pm.20:07
jmlone more test run...20:08
lifelessjml: I suggested that perhaps the buildd manager become an API client20:11
lifelessjml: bigjools felt that this was a terrible idea20:11
jmllifeless, I don't think it's a terrible idea, but I'm not sure how it would help.20:12
jmllifeless, or rather, the first thing that needs to happen to the buildd manager is to clean up a bunch of needlessly complex code.20:12
lifelessjml: it would have meant that there wasn't a deadlock on the builder row in the DB, so the disabling would have worked; the b-m might still have broken, but less cascade would have happened20:13
lifelessI worry about the thread-locals model of zope with the context model of twisted20:13
jmllifeless, oh huh.20:13
jmllifeless, we managed to get it quite stable with the old authserver20:13
jmllifeless, but it was a trial.20:13
jmllifeless, switching to internal xmlrpc helped a lot.20:14
lifelessperhaps its only a worry20:14
lifelessbut I would be happier with the scheduler being just a thing that talks to webservices and local processes20:14
jmltwo thoughts20:16
jml1. there are no good twisted clients for the API20:16
lifelessdidn't jamesw make one?20:16
jmllifeless, it's a prototype20:16
lifeless<wry>aren't they all?</wry>20:17
jml2. having some kind of deferred-returning calls for the db stuff makes integration points _really_ obvious, which is nice.20:17
lifelessone of the problems is this20:17
lifelessmodel objects know they are in a transaction20:17
lifelessbut we don't want long lived transactions20:18
lifelessanyhow20:18
* jml is off.20:18
jmlg'night.20:18
lifelessgnight20:18
=== lifeless changed the topic of #launchpad-dev to: Launchpad Development Channel | Performance tuesday! | Week 1 of 10.09 | PQM is OPEN | firefighting: - | https://dev.launchpad.net/ | Get the code: https://dev.launchpad.net/Getting | On-call review in irc://irc.freenode.net/#launchpad-reviews
Ursinhasinzui, I see that bug 612408 is marked as Fix Released but I still see occurrences of that OOPS on lpnet20:39
sinzuiIt is not fix released...20:43
sinzuidamn it, the branch was marked fix committed when we knew we needed several branches to fix this.20:44
sinzuiUrsinha, it is in progress. We are waiting for jcsackett's branch to land20:44
sinzuiI updated the status and milestone20:44
Ursinhasinzui, right. So, if you want to avoid QA bot to change this bug, just add the [incr] tag to your commit msg, or if using ec2 land, there's the --incremental option20:45
Ursinhasinzui, so it won't close your bug until you land a fix without the incremental tag20:45
jcsackettUrsinha: i think that's info more directed at me, and my apologies if i screwed up QA process.20:46
lifelessderyck: sorry about the wrong project, the back-link seemed to leave project-wide bug filing state all confused :)20:46
jcsackettUrsinha: thanks for mentioned the incr tag.20:46
Ursinhajcsackett, ah, no, my fault I haven't announced that properly, I'm afraid20:46
derycklifeless, dude, no worries.  Just doing CHR duties today.20:46
jcsackettUrsinha: either way, thanks for the info. :-)20:46
Ursinhajcsackett, my pleasure :)20:46
=== matsubara is now known as matsubara-afk
lifelessderyck: have we had any feedback on +filebug ?20:48
lifelessanyone come and loved us or hated us ?20:48
derycklifeless, not that I know of.  No feedback at all.  Neither for or against.20:49
deryckno news is good news, I hope.20:49
lifelesswell thats something20:49
lifelesscertainly no noose is good nes20:49
lifeless(gotta love mel brooks)20:50
Ursinhasinzui, did you update the bug? I can't see it here...20:50
Ursinhaah, just showed up20:51
Ursinhasinzui, jcsackett, thanks20:51
sinzuiUrsinha, https://bugs.edge.launchpad.net/launchpad-registry/+bug/61240820:51
Ursinhasinzui, thanks, it just updated here. don't know why it took so long, though20:51
sinzuiI see In progress, 10.09, oops qa-bad20:52
Ursinhasinzui, now I see the same  too20:53
lifelessUrsinha: farming the oops reports ?20:54
Ursinhalifeless, yes sir20:54
lifelessUrsinha: how are we placed for the merge workflow ?20:54
lifelessUrsinha: anything I can help with ?20:55
lifelesswhich reminds me, time to check the rt ticket status20:55
Ursinhalifeless, sure, you can take the rollback part if you want. I had no time to tackle that last week, am working on writing more tests to it20:55
lifelessI won't today, because its performance day, but lets talk about that ~ this time tomorrow, and I'll likely make the same offer again :- but actually do it :)20:56
Ursinhalifeless, thanks20:56
lifelesswe're only waiting on the tagger and rt 40482:live-schema staging environment20:57
lifelessAFAIK20:57
lifelessflacoste: hi21:03
flacostehi lifeless21:04
lifelesswe're on, I think ?21:04
flacostelifeless: we are!21:04
deryckLater on, all.21:07
=== almaisan-away is now known as al-maisan
=== Edwin-lunch is now known as EdwinGrubbs
lifelesssinzui: ping21:41
lifelesssinzui: I need a slow milestones url page or bug # please :)21:41
lifelessflacoste says landscape/+milestones ?21:42
sinzuilifeless, yes, that is often a good one *if* you can see all their private bugs21:44
sinzuiproject groups are a little different that projects and distros.21:44
lifelessflacoste: https://devpad.canonical.com/~stub/ppr/lpnet/latest-daily-timeout-candidates.html21:44
lifelesssinzui: I will arrange to be able to :)21:45
lifelessjkakar: ping21:45
mwhudsonmorning21:50
flacostelifeless: https://wiki.canonical.com/Launchpad/Sprints/BugJamDecember201022:05
=== Ursinha is now known as Ursinha-afk
=== Ursinha-afk is now known as Ursinha
lifelesssinzui: do you have an oops report for the landscape one ?22:11
lifelesssinzui: or a bug number ?22:11
jkakarlifeless: Hiya.22:11
lifelesssinzui: performance day, flacoste thought that looking at this pain point might make you happy :)22:11
lifelessjkakar: hiya22:11
lifelessjkakar: going to be doing some performance work on milestone views, and apparently the landscape private bugs are a contributing factor in its pain-level22:12
mwhudsonflacoste: 2010-12-13 to 2010-12-24 is a bit more than a week22:12
lifelessjkakar: but I'd need to be able to see them to see the issues22:12
lifelessjkakar: so, I was wondering, if I'm not already, if I could be in the relevant group for a week or two22:12
jkakarlifeless: I'm happy to add you to the landscape team, but unfortunately you'll get a lot of mail.22:13
lifelessjkakar: thats ok, I'll treat it the same way I treat launchpad bugs :)22:14
jkakarlifeless: Added.22:14
lifelessthanks22:15
jkakarlifeless: And by "same way I treat launchpad bugs" that means we should expect merge proposals from you, right? ;b22:15
lifelessperhaps...22:15
jkakarHehe22:16
=== salgado is now known as salgado-afk
lifelesshttps://lp-oops.canonical.com/oops.py/?oopsid=OOPS-1689EB3060 is a sample from https://edge.launchpad.net/landscape-project/+milestones22:24
lifeless305 16ms statments22:24
lifeless190.0ms for the longest statement22:25
lifelessI think I can do something for this22:25
pooliehello, happy performance day22:31
lifelessthank you22:33
sinzuilifeless, there is no current bug number for the Milestone timeout. It reappeared last week after the cache was removed.22:35
EdwinGrubbsmatsubara-afk: ping22:38
sinzuilifeless, this is the bug that was tracking milestones with lots of private bugs: https://bugs.edge.launchpad.net/launchpad-registry/+bug/44741822:39
sinzui^ it was closed after the oopses disappeared. I had changed the security on the bugs to lp.View after verify them once.22:40
lifelesssinzui: thanks22:43
sinzuilifeless, this is also the bug where I discovered the number of assigned users is also a factor. We format links to them. Ubuntu has a lot of assignees :(22:44
lifelesssinzui: I will look, journal what I find, and see if I can help22:45
sinzuithanks22:45
lifelesswould you like me to edit that bug22:45
lifelessor make a new one ?22:45
sinzuiLets reopen it since it has made a few occurrences this week22:46
lifelessok, I'll do so22:46
sinzuilifeless, was pondering creating a memcached rule for person/pillar link formatters. 250 assignees is a lot of icon lookups22:48
lifelessdamn, a failur ein cacheproperty branch >< ah well, ec2 knows best :)22:49
lifelesssinzui: What does an icon lookup entail ?22:49
sinzuilibrarian calls22:49
lifelesswha?22:49
lifelesswe render them on the appserver?22:49
sinzuiwe look for an icon, then insert a link to the librarian icon for the link22:50
lifelessthats just a query then22:50
sinzuiyes22:50
lifelessany reason we can't prepopulate it ?22:50
sinzuiSince we link to users on every page, should all assignees, bug/branch/question commenters be prepopulated?22:51
lifelessI suspect so22:53
sinzuionly teams have icons, only teams can be private (not rendered). Teams do not change their icons very often.22:53
lifelesssure22:53
lifelessat the lowest level though, a lookup is a lookup, and postgresql is as good as memcache at doing those very quickly22:53
sinzuiSince we would need a separate memchache mechanism, we could build once with a knowable key that we can invalidate on change22:53
lifelessbut unlike memcache we can do them all at once, whereas with memcache we have a serialised interface (due to our appserver structure)22:54
lifelessso it will be faster to do this in postgresql22:54
lifeless(I think)22:55
wgrantmemcached is really slow when making lots of requests.22:55
sinzuioh, that reminds me. Last time I looked at the bugtask badge decoration code, we were looking for a mentoring icon. We should stop that22:55
lifelessyeah this page is definitely death by sql22:55
sinzuiIt is faster than lots of pg requests I am told22:56
lifelessSQL time: 7505 ms22:56
lifelessNon-sql time: 7849 ms22:56
lifelessTotal time: 15354 ms22:56
lifelessStatement Count: 39022:56
wgrantsinzui: Yes, but so is a snail.22:56
lifelesssinzui: single-pg-request < many memcache requests < many pgsql requests22:56
sinzuiI have not yet set my email outlining the death by many menus I am see hiding in our oopese22:56
lifelessooh, interesting22:56
lifelessso wgrant, going to join in performance tuesday today ?22:57
wgrantIf beat-my-project-team-into-doing-work doesn't take up too much time.22:58
lifelesswgrant: \o/22:58
lifelesswgrant: I can fedex a bat from a local friend, if needed ?22:58
wgrantDid the buildd-manager stuff get sorted out last night?22:58
wgrantHeh.22:58
lifelessyes22:58
sinzuilifeless, I need to start a dinner. I promised my team I would send an email outlining to cost of using the existing menu implementation with a suggest of how to address it.22:59
lifelesssinzui: start your dinner then :)22:59
wgrantI'm a little concerned that a rev seems to have been CPd without making it through the test suite. But I guess it was urgent enough that it may have been cowboyed.22:59
lifelesswgrant: it was22:59
wgrantAh, good.23:00
lifelessso, https://edge.launchpad.net/launchpad-foundations/+milestone/10.08 seems to be a regular milestone page with all the features present23:04
=== al-maisan is now known as almaisan-away
lifelessdoes create_initialized_view process the template etc?23:09
thumperlifeless: what do you mean?23:11
thumperlifeless: it creates the view and initializes it23:12
wgrantCan someone check buildd-manager logs? It's been stalled for a few minutes.23:12
lifelessI don't know what 'initializes it' entails23:12
lifelessI want to make sure that I capture all the SQL done by the view & template rendering23:12
lifelesswhats the most tasteful way to do that.23:12
thumperlifeless: it calls the initialize method23:12
thumperlifeless: which sets up any fields and widgets23:12
thumperlifeless: it does not render the view23:13
lifelessok23:13
lifelessso what should I do accomplish my goal23:13
thumperlifeless: that is either __call__ or render23:13
thumpernot sure which is the best way23:13
thumperprobably to use a browser test case23:13
thumperand get the test browser to load the page23:13
lifelessok23:14
wgrantSo, we now have two or three untested buildd-manager CPs, and it appears to have fallen over.23:15
lifelesslosa ping23:15
wgrantWell, someone could check the logs.23:15
lifelessyes23:16
lifelesssomeone experienced, who knows that bit, and who can act to fix it, would be best, no ?23:16
wgrantTrue, but LOSAs are unlikely...23:16
wgrantOh, I guess some might be back.23:16
lifelessI know some are back :)23:17
wgrantWell, apparently not.23:35
lifelesswgrant: I have one in a private channel - sorry. But they are feeling flat-out - multiple issues at once etc23:37
wgrantAh.23:38
mbarnettwgrant: trying to figure out what is going on with the builders23:41
mbarnettwgrant: i was led to believe you might have a working theory?23:41
wgrantmbarnett: No idea. What are the logs saying?23:42
mbarnettwgrant: still poking around.  last i saw was a "no route to host error"23:44
mbarnetttrying to get more info now23:44
mbarnetti think the buildd-master may be well and truly hung23:44
mbarnettit is logging nothing, and the running process doesn't seems to be actually doing a single thing.23:45
mbarnettGonna give it another minute and see if it wakes up.  If not, it will be time to hit it with things.23:45
wgrantlifeless: What's the best course of action to debug that? strace, then SIGINT and hope we get a traceback?23:46
lifelessstrace23:46
lifelesswell23:46
lifelessps first23:46
lifelesssee what state the process is in23:46
lifelessthen strace, which may 'fix' it23:46
mbarnettstrace gives NOTHING23:47
lifelessif that doesn't, attach gdb and get a backtrace23:47
mbarnettlp_buildd@cesium:/srv/launchpad.net/production-logs$ strace -p 1068023:47
mbarnettProcess 10680 attached - interrupt to quit23:47
mbarnettselect(39, [9 38], [], [], NULL23:47
lifelessthat probably means its dropped the ball on a deferred23:47
mbarnettthere was an error in the logs when the process hung23:47
wgrant:( All the CPs are tested.23:47
mbarnett"no route to host"23:47
wgrantmbarnett: What was the full line?23:47
mbarnettwgrant: the full line from the strace?23:48
wgrantmbarnett: From the 'no route to host' line.23:48
mbarnetthttp://pastebin.ubuntu.com/479111/23:49
mbarnettwgrant: ^23:49
wgrantWell.,23:49
wgrantThis is the same codepath that died last time.23:49
wgrantThere's nothing after that log entry?23:49
mbarnettawesomesauce23:49
mbarnettnope23:49
mbarnettthat's it23:49
wgrantWTF.23:49
wgrantDoes that still have the two cowboys, or is it properly CPd now?23:50
mbarnettCP'd23:50
mbarnettactually, let me verify23:50
wgrantSo, we have replaced an infinite loop with a hang. Awesome.23:50
mbarnettnope, it is cowboy'd23:51
mbarnettwith http://pastebin.ubuntu.com/478843/23:51
wgrantThat's the only cowboy?23:51
mbarnettthere is another that is not listed on the production status page23:52
wgrantShould be to the same piece of code.23:52
* wgrant tries to reproduce locally.23:52
mbarnetthttp://pastebin.ubuntu.com/479112/23:53
mbarnettthat is also on there23:53
* mbarnett goes to update the production status page23:53
wgrantOh, wait, it isn't quite the same codepath as last time. But it's right next to it.23:53
thumper\o/23:54
wgrantHm, there's only a test diff?23:54
thumperit isn't the code tests breaking the translation tests23:54
wgrantNothing in lib/lp/buildmaster/model/builder.py itself?23:54
* thumper confirms by running the other half23:55
mwhudsoni completely don't see how a failure there should hang the buildd-manager23:56
mwhudsonit might stop that builder from working forever more23:57
mbarnettwgrant: 478843 is a cowboy to builder.py23:57
wgrant478843?23:57
mwhudsonwgrant: http://pastebin.ubuntu.com/478843/23:57
wgrantmwhudson: Of course it shouldn't.23:57
wgrantOh.23:57
wgrantBut this is buildd-manager.23:58
wgrantWell, I can't see what's going on. May be good to gdb out a backtrace.23:58
wgrant(and this time I think I'm actually taking all the cowboys into account...)23:59

Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!