/srv/irclogs.ubuntu.com/2010/09/20/#launchpad-dev.txt

* thumper has lost pyflakes00:23
lifelessits nice when one index cuts 50% time off of things00:30
thumperlifeless: like what?00:31
lifelessthumper: https://bugs.edge.launchpad.net/malone/+bug/61839600:33
lifelessit won't help with the count(*) blow-out which happens from time to time, but it will shift the whole page performance down bu 1.4seconds or so00:34
thumperwallyworld: you are very quiet in your corner there00:56
thumperwallyworld: how are things going?00:56
wallyworldthumper: head down, tail up00:56
thumperwallyworld: what are you looking at now?00:56
lifelesshis navel, by that description00:56
thumpermwhudson: can I have a quick pre-impl with you about branch-distro?00:57
wallyworldi've landed 3 branches of late and am finishing up the default reviewer test cases prior to doing a mp00:57
wallyworldafter that i was wanting to have a catch up00:57
mwhudsonthumper: ok, one sec00:57
thumperwallyworld: sounds good01:00
thumperwallyworld: I want to head to lunch after a quick chat to mwhudson01:00
thumperit should be very quick :)01:00
wallyworldthumper: ok, do you want to call me when you are free01:00
thumperwallyworld: sure01:01
mwhudsonthumper: ok01:01
lifelesshmm, thats 4 ec2 lands I have running at once.01:01
mwhudsonah, helps if i launch skype01:01
thumperwallyworld: I'll call you after lunch01:01
lifelessNeed moar to do01:01
wallyworldthumper: ack01:01
lifelessStevenK:01:01
lifelessStevenK: ping01:01
lifelessspm: also when you, oh, three minutes or so I need help QAing a patch on staging.01:02
lifelessof course that need staging running01:02
spmyes, one would tend to follow the other :-)01:05
lifelesshttps://bugs.edge.launchpad.net/launchpad-foundations/+bug/634342/comments/3 is what I'll need your help with01:07
lifelessoh, also01:09
lifeless'garbo-daily' didn't run. Not that you need more queued items to look at :)01:09
spmyou guys get the logs for those too, fwiw. :-)01:10
lifelesswhere?01:11
spmsodium: locate 'garbo' | grep log | head ==> /x/launchpad.net-logs/scripts/loganberry/garbo-daily.log01:12
spmbleh, still doing the session prod fail thing01:13
lifeless$ less /x/launchpad.net-logs/scripts/loganberry/garbo-daily.log01:13
lifeless/x/launchpad.net-logs/scripts/loganberry/garbo-daily.log: No such file or directory01:13
lifelessah, date suffixes01:15
spmwell locate is always older; yarp01:15
lifelessit would  be very interesting to say 'no increased LOC outside of tests.'01:16
lifelessI wonder if that would fly.01:17
mwhudsonaaaaaaaaaaaaaaargh01:31
* mwhudson is splitting up a doctest and man, sample data sucks01:32
mwhudsonas do hidden parameters01:39
lifelessyou have my sympathy01:41
lifelesspoolie: I'd just *love* it if you were to do some more on the UI for flags01:46
poolieah, this week i'm feeling you might be lucky01:46
lifeless\o/01:47
lifelessStevenK: Yo01:53
lifelessedge was happy over the weekend01:56
lifeless38 Time Outs01:56
lifelesspossibly time to lower it again.01:56
lifeless112 /  236  CodeImportSchedulerApplication:CodeImportSchedulerAPI has reached #101:57
lifeless104 /  218  BugTask:+index01:58
lifeless      44 /   33  RootObject:+login01:58
lifeless      40 /   56  DistributionSourcePackage:+filebug01:58
lifeless      37 /   12  Distribution:+search01:58
jelmerlifeless: hi02:04
pooliehi jelmer02:04
lifelesshi jelmer02:05
lifelessjelmer: if you're actually around now, theres a soyuz patch blocking further migrations of bugfixes to production02:05
lifelessjelmer: its what I was pinging about the other day02:05
lifelessstub: hi02:12
lifelessstub: can we talk indexes for a minute?02:12
jelmerlifeless: Which patch is that?02:12
stublifeless: ok - gimme a minute to finish this coffee02:13
lifelessjelmer: rev 1155602:13
lifelessstub: take your time02:13
lifelesshttps://code.edge.launchpad.net/~lifeless/launchpad/bug-121363/+merge/35971 and https://code.edge.launchpad.net/~lifeless/launchpad/bug-618396/+merge/3597002:13
jelmerlifeless: I'm seeing some similar errors to the OOPS one you fixed earlier. The OOPS ID in the job runner test that you fixed is off now.02:14
lifelessjelmer: ECONTEXTFAIL02:14
jelmerlifeless: sorry02:14
stuby02:16
stubo02:16
lifelessjelmer: https://devpad.canonical.com/~lpqateam/qa_reports/launchpad-stable-deployment.txt is the thing I look at for things to deploy.02:16
lifelessstub: hey02:17
lifelessstub: so I was looking at a timeout with bug searching and noticed that importance isn't indexed.02:17
lifelessstub: there was a similar issue already reported with date_closed; I've used a slightly unusual index syntax to get the (foo desc, id) ordering working02:17
lifelessstub: wondered if you're ok with this (and if so, can we add these indexes w/o downtime)02:18
lifelessstub: spm added the importance one to staging for me for testing02:18
spmyo stub02:18
lifelessjelmer: so, some context and I can understand what you're talking about :)02:19
stubSo with PG 8.2 we would never use the index on importance. We might now if it is there. Did you test any example queries to see if they made use of the index on staging?02:20
lifelessyes02:20
lifeless3500ms -> 1800ms02:20
lifelessthe key thing is the ordering of the second field02:20
stubOk. Adding both of those indexes makes sense, and we can create them live.02:20
lifelesscool02:20
stubWe have a date_closed index - UNQUE (date_closed, id) WHERE status = 3002:21
lifelessyes, it won't be used02:21
lifelessoh, bah, I missed the unique and partial aspects02:22
lifelessanyhow it needs to be '(date_closed, id desc nulls first)'02:22
lifelessto be used.02:22
stubThe index would be used if you are limiting the search to FIXRELEASED bugs.02:22
jelmerlifeless: sorry, looking at that revision now02:22
lifelessstub: no, due to the query being "order by date_closed desc, id"02:23
lifelesshttp://www.postgresql.org/docs/8.3/static/indexes-ordering.html02:23
stubRight. So we should drop that index then I think.02:24
lifelessjelmer: great, please do: if you can qa it as ok to deploy, or incomplete (can just remove the qa-* tags I think in that case), we can deploy more stuff02:24
stub(the existing one that is less useful than the one we are creating)02:24
lifelessstub: I can't see that UNIQUE status=30 index02:25
lifelessstub: in launchpad_dev02:25
stub    "bugtask__date_closed__id__idx" UNIQUE, btree (date_closed, id) WHERE status = 3002:25
lifeless    "bugtask__date_closed__id__idx" btree (date_closed, id DESC)02:25
lifelessstub: anyhow, my patch drops it02:26
lifelessoh foo02:26
lifelessI've applied my patch02:26
lifelessanyhow, my patch drops that index and adds bugtask__date_closed__id__idx2 (does that first so there is no point without an index)02:26
lifelessstub: should my new one also be partial?02:27
stubI need to split it in two anyway if we want the indexes built live - dropping indexes has to wait until the next db update.02:27
lifelessstub: interesting. I'm curious why it needs to wait ?02:27
stubIt needs to grab an exclusive lock on the table for a short period, and that will never happen on the live system.02:27
lifelessah, but adding doesn't ?02:28
stubCREATE INDEX CONCURRENTLY - special syntax.02:28
lifelessok02:28
lifelesswhat should I do to my patch.02:28
lifelessa) make it partial?02:28
lifelessb) make there be two patch files?02:28
stubCan I see your patch as it stands?02:29
lifelesshttps://code.edge.launchpad.net/~lifeless/launchpad/bug-121363/+merge/3597102:30
lifelessseparate one for importance : https://code.edge.launchpad.net/~lifeless/launchpad/bug-618396/+merge/3597002:30
stubI'm unsure on the partial thing - it will be smaller, which makes things using it faster. But we have to be sure that our test queries still make use of it (ie. for all queries we want to use it we have to specify STATUS=30 in the WHERE clause, and confirm PG is smart enough to realise this matches the index and it can be used - fine for simple queries, but want to test more complex stuff to make sure that info doesn't get lost).02:31
lifelessabout 50% of bugs are closed IIRC02:32
lifelessso its not going to be masssively smaller - not even a single height difference in any decent sized btree02:33
jelmerlifeless: I don't think I'll be able to get to it today (I'm on leave), perhaps StevenK is around to have a look?02:34
lifelessjelmer: sure, I'll naggify him02:35
lifelessjelmer: its sunday, of course you're on leave.02:35
lifelessjelmer: whats the OOPS thing about02:35
jelmerlifeless: I'm on leave this week as well (I'm in CA)02:36
lifelessah!02:36
lifelessjelmer: have fun!02:36
jelmerlifeless: I'm trying to land my final branches for the buildd master performance improvements, and jml and bigjools are sprinting on some incremental stuff for that this week02:37
jelmerlifeless: but one final test (the one you fixed up some stuff in last week wrt OOPSes) is still failing. The OOPS ID the test is expecting is off by one.02:38
jelmerlifeless: any idea what might be going wrong? It's definitely another test isolation issue.02:43
lifelesswhat do you mean 'off by one'02:48
lifelesspastebin the test perhaps, and the error02:48
lifelessstub: so I think it shouldn't be partial02:48
stublifeless: yup02:48
lifelessstub: ok, and you want two patch files ?02:48
stubI'll just do the review with patch numbers02:49
lifelessthanks02:49
thumperwallyworld: if you are working in branch foo, and have devel at the same depth in the directory02:49
thumperwallyworld: go `bzr merge --preview -d ../devel .`02:49
stublifeless: Is the bugtask.importance index being applied live too?02:49
lifelessstub: please02:49
jelmerlifeless: http://pastebin.ubuntu.com/496781/02:50
thumperlifeless: oops 1723XMLP312 :((02:53
stubI guess including id in the indexes is necessary now, as batch jobs can set date_closed in bulk. Previously id was only there to keep the test suite happy.02:54
thumper# SQL time: 14 ms02:54
thumper# Non-sql time: 34074 ms02:54
lifelessstub: do we need the UNIQUE ?02:54
lifelessjelmer: where is the test code?02:55
lifelessjelmer: oh, I see, unmodified02:55
jelmerlifeless: yes, the test is unmodified so it's a test isolation problem. I have (obviously) changed other parts of the tree.02:55
jelmerThe test doesn't fail when run by itself, only on ec2 as part of a full test run.02:56
lifelessjelmer: and what do you mean by off by one ?02:56
stublifeless: It doesn't make any practical difference. In this case, I'd say not. But that is a pretty arbitrary call.02:57
jelmerIf you look at the last line, you'll see that the assertIn fails because the string that we look for has a slightly different OOPS ID02:57
lifelessstub: ok, I was wondering if there was a practical issue here02:57
stublifeless: Maybe in some future version of PG02:57
thumperlifeless: it is worth looking at oopses 1723XMLP307 1723XMLP308 1723XMLP309 1723XMLP310 as well02:57
jelmerlifeless: OOPS-1721T6 vs OOPS-1721T702:57
lifeless\o/ next CP passed ec2 now to wait for bb02:57
wgrantUp to where?02:59
lifelesswgrant: the soyuz thing03:00
lifelessStevenK: yo!03:00
mwhudsontalking of hidden parameters earlier03:00
mwhudsonnow i'm reading a shell script03:00
mwhudson:(03:00
wgrantmwhudson: buildd?03:00
wgrantOr something less sinister?03:01
lifelessthumper: thats -special-03:01
thumperlifeless: I'm going to talk to spm to see if we can see what else was going on at the time03:01
lifelessgl03:01
lifelesswe've got a single-threaded appserver setup on the way03:02
mwhudsonwgrant: do you know what lexbuilder is?03:02
wgrantmwhudson: A ha ha.03:02
wgrantI have heard about it.03:02
mwhudsoni guess it03:02
mwhudsoni guess it's kinda like buildd, but based around live-helper, not sbuild03:03
lifelessstub: can you give me a shout when those indices are up, I want to see how much of a difference it makes to the overall feeling03:11
poolieheh, so part of the reason dkim is not working completely is a lack of DRP03:12
poolieDRY03:12
lifelessdo repeat yourself?03:12
poolieiow a higher level doesn't ask "is it authenticated" but "does it have a gpg signature"03:12
stublifeless: You are landing those branches?03:12
lifelessstub: they are queued in https://pqm.launchpad.net/03:14
lifelessjelmer: ok thats a reasonable clue03:14
lifelessjelmer: for some reason the unique file namer is reusing an older OOPS id03:14
poolieurk03:14
stublifeless: Land them now. There is no point me kicking of the index builds yet as they will block until the daily backup has completed (CREATE INDEX CONCURRENTLY has to wait on all existing transactions to complete at one point of the process)03:14
lifelessprobably a missing +1 somewhere.03:15
lifelessstub: yes, they are landing ;)03:15
stubAnd I'm typing slow03:15
lifelessstub: there are three branches is in pqm is all03:15
lifeless:>03:15
stublifeless: So unless you want me to kill the daily backup, we are waiting 5 hours.03:16
stub(8 hours! Geez...)03:17
stub(Death to BranchRevision!)03:17
lifelessstub: it wouldn't worry me03:18
lifelessstub: we have redundant copies of the data anyway; is that backup offsite?03:19
stubI'm told the backups get copied somewhere, but I haven't seen the rsync scripts or know the final destination - that is IS magic.03:20
lifelessspm: yo, mr IS.03:21
lifeless^03:21
stubThere is an antique RT trying to get confirmation on this, as I wanted to confirm that everything being backed up is what I think is being backed up (inspired by a call for disaster recovery a year or three ago)03:21
lifelessheh, yes, I see that RT every time I go look at RFWTAD progress ;)03:22
lifelessstub: would you be up for a learn-cassandra sprint early next year, in principle?03:22
lifelesslearn/evaluate that is03:22
pooliei would be03:22
poolie:)03:22
stublifeless: If the timing is good and it is in an exciting location ;)03:23
lifelesspoolie: I'll keep that in mind03:23
lifelessstub: can you let me and statik know what timings are bad for you then ?>03:23
lifelessstub: as for the location, nowhere is as exciting as bangkok03:23
lifelesssorry.03:23
stublifeless: Any time is good really. Late march early april would be best for my visa purposes, but that is my problem really ;) Bangkok is fine! Come on over! But before April as that would be the preferred timing for the next lot of mass protests or coup.03:25
lifelessstub: possibly jan - U1 want to really evaluate cassandra03:25
poolielifeless: just invite people til the centre of gravity converges on your prefered location :)03:25
stub(They like to hold these events on long weekends so everyone can participate, and the Songran holiday is the longest weekend)03:25
poolieif that's "dunedin" it may be difficult :)03:25
lifelesstheir sharding story is not as nice as they'd like.03:26
lifelessin all seriousness I'd be expecting e.g. florida or something03:26
stubDunedin is fine if there is skiing. Jan doubles up with the LP sprint in Dallas.03:26
pooliei might try to poke dkim along a bit first, then do flags03:26
mwhudsoneven in dunedin i don't think there will be much snow in january03:36
stubProbably more than AU in high season though.03:41
lifeless0 > 0 == False03:43
ajmitchyay for precedence?03:44
poolieheh gotta love python03:45
pooliei'm sure that seemed like a cute idea at the time03:45
poolie1 > 0 == False ====> True03:46
mwhudsonoh it's chaining, isn't it03:46
stubIf you aren't using brackets for clarity you deserve what you get.03:47
stubPitty the language doesn't enforce it.03:48
poolieit's not just precedence03:49
pooliethe problem is that it transforms to03:49
poolie(1 > 0) and (0 == False)03:49
mwhudsonhttp://python.net/~mwh/blog/nb.cgi/view/weblog/2006/05/1503:49
poolieit seems like such a small win at a price of being inconsistent with everytihng else03:50
pooliemaybe not perl?03:50
pooliemwhudson: because 'XXX', 'in' and 'progress' might later turn out to be defined?03:50
pooliethat's pretty cute03:50
poolieoh wow03:51
mwhudsonpoolie: well03:51
mwhudson'in' is a keyword03:51
stubTaipei! It was all 'everyone should get to Taipei to see the amazing stuff being done there' and then we kept having sprints in N.America.03:51
mwhudsonbut otherwise yeah03:51
mwhudsonit was a mistake of course, the - was meant to be #03:51
poolie"a == 2 or fucked-up"03:52
lifelessstub: ok, so in 6 hours I should ask agian ?03:59
stubor 5 hours04:00
lifelessstub: yeah, but you need time to add them :P04:00
stubI might need to be reminded too ;)04:00
lifelessok, 8pm04:00
lifelessStevenK: ping . Surely you're not _still_ asleep at 1pm04:01
spmnote to self. LPIA != PA-RISC. wgrant, that builder is now lpia (again)04:05
wgrantspm: Which builder?04:08
wgrantAh, in the question.04:09
wgrantThanks.04:09
wgrantLooks good.04:09
spmoh. sorry, yes. rehinium or similar spelling04:10
lifelessstub: 44 /   33  RootObject:+login - I think thats the OAuthNonce thing, 3rd highest oops count atm04:12
wgrantis there a good reason for OAuthNonce to be in the DB, rather than memcache?04:13
stubWe actually make use of the transactional integrity it gives us for some edge cases04:17
stubI had a branch that moved it to memcache, which is when I picked up on this.04:17
wgrantDoes a request retry try to perform the authentication again?04:18
stubI don't know why +login is messing with OAuthNonce - oauth is a different authentication system to +login which is OpenId (I don't think they make use of the same views?)04:18
stubwgrant: Yes - the whole request is tried again04:19
wgrantAh.04:19
StevenKlifeless: No, I was afk. Hm?04:21
lifelessStevenK: can you please qa rev 11556?04:23
StevenKlifeless: Fix an OOPS when an archive admin uses the +queue page to04:25
StevenK        accept uploads that close private bugs.?04:25
lifelessStevenK: there are two linked bugs on that patch04:26
lifelessboth need to be qa'd04:26
lifelessI'm told dogfood is involved.04:26
lifelesswgrant reported them and can probably advise.04:26
lifelessStevenK: if they aren't qa'd, its a team wide pipeline stall :- qa matters :P04:27
wgrantI'm pretty sure that one of them isn't fixed, but it's easy enough to QA.04:27
lifelessif its not fixed, but no worse, tag it qa-ok, set the status back to triaged.04:27
wgrantIf you can't work out details, give me a yell.04:27
lifelessStevenK: the bugs are linked from the commit message.04:28
StevenKWell, duh04:28
StevenKlifeless: Can you give me a few minutes to actually get state rather than jumping and asking "Is it QA'd yet? How about now? Now?"04:29
lifelessStevenK: Sure, I was simply meaning to give context for assessing priority.04:29
lifelessI realise that qaing it may take time04:29
lifelessStevenK: also, I forgot to tell you this last week; statik is ok with funding your hudson experiments on ec2.04:30
lifelessStevenK: just expense it while its in the current ballpark; if it starts to really go up in $$$ let me know and we'll recheck.04:30
StevenKlifeless: My EC2 usage is currently ~ $85US for the month04:31
lifelessyes04:31
lifelessthe linode is dedicate to hudson too right ?04:31
StevenKIt is04:31
lifelessso, 160 - long as it stays under 200 I'm sure statik will have no concerns; if its going to go over, ping me04:32
StevenKTo be completly honest, I think that's another 2 days of test running.04:32
lifelesswho do your expense claims get sent to ? bigjools or vlumper?04:32
StevenKlifeless: Julian04:33
spivvlumper, our transylvanian code team lead?04:33
lifelessspiv: virtual flacoste :P04:33
wgrantHe's still flumper to me.04:34
lifelessmailed04:36
StevenKwgrant: So, create an upload to dogfood that closes a private bug, and see if it goes bang when I accept it. If not, bug 564491 is qa-ok.04:38
wgrantStevenK: not when you accept it -- it needs to be a non-admin.04:39
StevenKI can fix that04:39
wgrantTrue.04:39
StevenKI think I've dropped my duck on dogfood04:39
lifelessStevenK: the short story is : do not stress about the bill. Don't drain the bank account, but don't stress.04:40
lifelesslol. 'dropped the duck'04:40
StevenKwgrant: And for bug 566339, create an upload that uses a private e-mail address for Changed-By, same deal.04:40
wgrantStevenK: I think 566339 is probably not fixed, but yes.04:40
lifelessthank you guys04:41
StevenKYes, but I'd like to confirm it, so I can pull lifeless off my back and onto someone elses. :-P04:41
wgrantHeh.04:41
* StevenK looks for a private bug04:42
poolie    ZopeXMLConfigurationError: File "/home/mbp/launchpad/lp-branches/dkim/lib/canonical/launchpad/webapp/configure.zcml", line 204.4-209.1004:43
poolie    ImportError: cannot import name SAFE_INSTRUCTIONS04:43
pooliedoes that mean anything?04:43
mwhudsonpoolie: run utilities/update-sourcecode04:43
wgrantpoolie: update-sourcecode04:43
pooliethanks04:43
wgrantYour bzr-builder is out of date.04:43
mwhudsonwgrant: is http://williamgrant.id.au/f/1/2009/soyuzness.html still vaguely current?04:44
wgrantmwhudson: No.04:45
wgrantThere's a wiki page04:45
wgranthttps://dev.launchpad.net/Soyuz/HowToUseSoyuzLocally04:45
wgrantIt is an evolved version of the original.04:45
mwhudsonthanks04:45
* mwhudson is going to try to set up his beagle board xm as a local builder, sounds like a fun waste of time04:49
lifelessalso you may need to delete lib/mailman and run 'make04:49
lifeless'04:49
wgrantmwhudson: Are beagleboards ARMv7?04:50
mwhudsonyes04:50
wgrantYou'll need a bit of tweaking to get the buildd to work remotely.04:50
mwhudsonfairly sure, at least04:50
wgrantBut it isn't difficult.04:50
mwhudsonok04:50
wgrant(because they need librarian access)04:50
StevenKAh ha. I suspect the Lucid upgrade has broken dogfood.04:51
lifeless<type 'exceptions.TypeError'>: cannot concatenate 'str' and 'NoneType' objects04:51
lifelessyay buildbot. I hates you/04:51
StevenKlifeless: I can't QA this on dogfood at least04:52
wgrantWhat's up with it?04:52
StevenKException-Value: could not access file "$libdir/plpython": No such file or direc04:52
StevenKtory04:52
wgrantAh, awesome.04:52
StevenKAnd staging is down04:52
wgrantEasily fixed, at least.04:52
StevenKlifeless: Dropped04:52
persiamwhudson, Take care: performance is such on those that I don't even use raw sbuild, let alone anything else.04:53
lifelessdropped ?04:53
persia(although the XM might be faster)04:53
StevenKlifeless: I can't QA those two bugs; dogfood is broken, and staging is down for a code update04:53
mwhudsonpersia: it's just for testing, i'm not actually interested in building anything non-trivia;04:53
mwhudsonpersia: the xm has 512 megs of ram at least04:53
lifelessStevenK: wgrant seems to think that dogfood is easily fixed.04:54
wgrantlifeless: By a sysadmin.04:54
StevenKI thought it required at least a GSA04:54
lifelesswgrant: here's one I prepared earlier.04:54
StevenKAh, see ... :-)04:54
wgrantI didn't know LOSAs did DF04:54
lifelesswgrant: its lp; we start there.04:54
StevenKThey don't04:54
lifelessStevenK: why not?04:55
lifelessanyhow, digression, if we need a sysadmin04:55
StevenKBecause we manage it, not them04:55
lifelessStevenK: thats kindof a statement of the status, not a rationaile.04:55
lifelessI so want buildbot to say 'transubstantiating', not just 'substantiating'04:56
StevenKlifeless: Then please ask mthaddon or bigjools, obviously I can't recall correctly04:56
lifelessI've pinged vanguard in is04:57
StevenKlifeless: Hold on, I'm still checking04:57
lifelesspjdc: may be easier to discuss here.04:57
pjdcrighto04:58
lifelesspjdc: the upgrade to lucid has probably jiggled the pg plpython packages around04:58
wgrantYou probably need postgresql-plpython-8.304:58
wgrantUnless it's running 8.4 already.04:58
lifelessalso staging is just -down-, its been down all day AFAIR04:59
StevenKIt's running 8.404:59
StevenKlifeless: I'm not even sure if the database has made it one piece to be fair05:01
StevenK\dT psql launchpad_dogfood does not tell a pretty story05:01
StevenKAh ha, dogfood is running both.05:04
StevenKpjdc: Yes, please install postgresql-plpython-8.3 on mawson05:04
pjdcStevenK: hmm, it doesn't seem to be available in lucid05:05
wgrantIt's not.05:06
wgrantIt's probably in the PPA.05:06
wgrantOtherwise karmic.05:06
pjdcit doesn't look like mawson had karmic or ppa sources before the upgrade05:07
wgrantIt wouldn't have. karmic has 8.3 natively, whereas lucid just has 8.4.05:07
pjdcwell, mawson went hardy -> lucid05:08
wgrantOh, it was hardy before. Right.05:08
wgrantMy point stands.05:08
pjdclooks like it was a vanilla hardy version, so i guess let's see if that will install05:08
StevenKWe should probably transistion dogfood to 8.4, but that will take about two days. (Sadly, I'm not kidding)05:09
pjdcStevenK: postgresql-plpython-8.3 is installed (as are its dependencies python2.5 and python2.5-minimal)05:13
poolieok it seems like dkim works but not for the case of mail to new@05:13
wgrantIt's not using 8.4 instead?05:13
StevenKpjdc: Many thanks05:13
StevenKwgrant: Like I said, it's running both, and psql is still talking to 8.305:14
pjdcStevenK: you're welcome!05:16
pjdcStevenK: if you could ping a GSA when that can be removed again, that'd be super :)05:16
StevenKpjdc: Was indeed already my plan -- I'll talk to Julian on our stand-up about moving mawson to 8.405:16
pjdcexcellent05:17
thumperah poo05:20
thumperwhat "special" things to I need to do to run tests on maverick?05:20
wgrantDowngrade python-psycopg2 to Lucid's version.05:20
thumperis it just the database library?05:20
wgrantWe need to work out how best to fix that.05:21
wgrantOur code is sort of broken.05:21
thumperwgrant: happen to remember the command to do that off the top of your head?05:21
thumperthat it is05:21
wgrantthumper: wget http://launchpad.net/ubuntu/+archive/primary/+files/python-psycopg2_2.0.13-2ubuntu2_i386.deb05:22
wgrantsudo dpkg -i python-psycopg2_2.0.13-2ubuntu2_i386.deb05:22
wgrantReplace i386 with amd64 if you are one of them.05:22
* thumper is 64 bit05:22
thumperwgrant: ta05:23
wgrant(the problem is that we use strs when constructing some queries that want unicodes)05:23
wgranteg. lots of places do getUtility(IDistributionSet)['ubuntu'] or similar.05:24
* thumper nods05:24
wgrantAnd the celebrity descriptors suffer the same problem.05:24
lifelesswgrant: the db library is being stupid05:24
wgrantlifeless: I'd say we are...05:24
lifelesswgrant: python2.x is -not- suitable for strict u'' enforcement05:24
wgrantStorm is strict about it.05:25
wgrantAs it should be.05:25
wgrantpsycopg2 is now too.05:25
lifelesswhich is a bad idea to do without a new major release05:25
lifelessI guarantee nearly every single nontrivial db app will be broken by this05:25
lifelessI'm not denying the semantic clarity it brings05:25
lifelessbut hell05:26
lifelesseven simple things like traceback objects and Exception are not unicode safe in 2.x05:26
lifelessI suspect we want to put a patch up to be SRU'd to make this sane again.05:26
lifelessby sane I mean 'works with the status quo'05:26
* thumper frowns05:28
thumperI've still got problems05:28
lifelessspm: sorry to interrupt you, but lpbuildbot seems buggered for lp_prod05:28
lifelessthumper: we know :P05:28
thumpercanonical.testing.layers.MemcachedLayer setup05:28
lifelessthumper: oh sorry, you mean with maverick ?05:28
thumperlayer setup05:29
lifelessbacktrace?05:29
thumperNo such file or directory05:29
wgrantWhat's it whining about?05:29
thumperwhat a useful error05:29
wgrantDo you still have memcached installed?05:29
thumperno path given05:29
* thumper wonders05:29
wgrantIt's not left some stupid pid around like the librarian does?05:29
thumperwhat is c?05:30
lifelesspoolie: cool05:30
lifelessthumper: 299,792,458 metres per second05:30
pooliei just filed three consecutive bugs05:31
persiaDepends where you are, really.  Might be a bit faster up a mountain, or a bit slower in a valley.05:31
poolieit must be a quiet day05:31
pooliereally?05:31
spmlifeless: le sigh. that's a full stab to recover I suspect... but trying master only.05:32
lifelesspersia: only if you're the smartest mathematician on the disc05:32
spmcud cud cud cud05:32
persialifeless, I'm thinking atmospheric excitement influenced by current density vs. influence of turtles05:33
lifelesspersia: but do you have 4 stomachs ?05:33
thumperwgrant: apparently memcached was uninstalled as I upgraded05:33
* persia is not nearly that capable a mathematician05:34
mwhudsonwgrant: where in https://dev.launchpad.net/Soyuz/HowToUseSoyuzLocally does bob the builder get created?05:34
wgrantmwhudson: Sampledata.05:34
wgrantOthers, /builders/+new05:34
mwhudsonas n utilities/soyuz-sampledata-setup.py?05:34
wgrantmwhudson: No, it's been in the sampledata since 2005.05:34
lifelessspm: let me guess. You stabbed, but forgot the first aid kit.?05:35
mwhudsonah, i'm not authorized05:35
wgrantmwhudson: Are you bootstrapping from nothing?05:35
mwhudsonwgrant: sorry for the noise05:35
mwhudsonwgrant: no05:35
wgrantThat gets a bit messier.05:36
wgrantSo good.05:36
mwhudsonhah05:38
mwhudsonthere doesn't seem to be an armel processor in the sample data?05:38
wgrantThere should be a family.05:39
wgrantmaybe not a processor.05:39
wgrantIndeed not.05:39
spmlifeless: more like didn't stabb enough05:39
mwhudsonwgrant: is there a ui for that?05:39
wgrantmwhudson: No.05:39
wgrantYou can use the factory, or good old psql.05:39
wgrantThen you need to add a DAS.05:39
wgrantFor that there is UI.05:40
wgrantNot sure if it's linked, though -- DistroSeries:+addport, IIRC.05:40
spmsigh. no. full stabb coming up.05:41
=== almaisan-away is now known as al-maisan
mwhudsonwgrant: thanks05:44
mwhudsonsome impressive warnings on that page :)05:44
wgrantYes.05:44
wgrantThe ZCML also says to poke sabdfl before changing any of the values.05:44
poolielifeless: no rush, but you could comment some time on https://bugs.edge.launchpad.net/launchpad-foundations/+bug/643224 as to where the configuration ought to go05:45
lifelesspoolie: I did05:46
lifelesspoolie: or did you want a more detailed sketch ?05:47
lifelessspm: I only ask because 502's05:48
lifelesswgrant: you might want to patch that to instead mention roles.05:49
wgrantlifeless: Hm?05:49
lifeless16:44 < wgrant> The ZCML also says to poke sabdfl before changing any of the values.05:49
lifelessI'm pretty sure thats delegated now05:50
wgrantHeh, probably.05:50
lifelessspm: thanks05:51
spmsigh. tho one slave is still being levels of stubborn.05:52
lifelessspm: looks all yellow now05:54
lifelessI really have to patch bb05:54
lifelesshttp://en.wikipedia.org/wiki/Transubstantiation would be a much cooler message05:55
lifelessnup, db_lp fail05:55
=== al-maisan is now known as almaisan-away
=== almaisan-away is now known as al-maisan
thumperwallyworld: got those questions?05:58
wallyworldthumper: skype?05:58
spmlifeless: well. for varying values of "yellow"05:58
thumperwallyworld: aye05:58
lifelessStevenK: are you unblocked for qaing?06:00
mwhudsonwgrant: i uploaded something and ran process-upload -- and now nothing is happening06:04
mwhudsonwgrant: where should i be looking?06:04
* poolie loves makeSignedMessage(oh no actually not signed) :)06:09
poolieoh even better that's the default :)06:10
wgrantmwhudson: What did process-upload say?06:11
wgrantDid you run it with -vvv?06:11
pooliei realize it means "potentially signed message"06:11
wgrant(-vv is OK too, but -vvv lets you see its emails, among other details)06:12
mwhudsonwgrant: https://dev.launchpad.net/Soyuz/HowToUseSoyuzLocally doesn't say -vvv so no06:12
wgrantmwhudson: Bah.06:12
wgrant-vvv06:12
wgrantIt may have already moved it to rejected or failed.06:12
wgrantDoes root have mail?06:12
wgrantOh, it's Zopeless, so it probably won't actually send mail.06:13
wgrantSad.06:13
* mwhudson edits the wiki06:13
mwhudsonah06:13
mwhudsonUnable to find hello_2.4.orig.tar.gz in upload or distribution.06:13
wgrantdebuild -S -sa06:13
mwhudsoni guess i need to force a full upload somehow06:13
pooliei think -sa does that06:14
poolienb with bzr builddeb you need 'bzr builddeb -S -- -sa'06:14
poolieiirc06:14
wgrantThat's right.06:14
mwhudsonhttp://launchpad.dev:58080/100/nHOxGYhrhsWKP0SXew1T6tEUh30.txt06:14
mwhudsoner06:14
wgrantYeah, not useful.06:14
mwhudson Cannot build any of the architectures requested: any06:14
wgrantmwhudson: Do you have chroots?06:14
wgrantAh.06:14
mwhudsoni guess because i'm uploading to a ppa06:14
mwhudsonand the builders are both 'official'06:15
wgrantIf you only have an armel chroot, you'll need to mark it unrestricted, or whitelist the PPA.06:15
mwhudsonwgrant: how do i do that?06:16
lifelessspm: Cannot rebuild database. There are 1 open connections.06:16
lifelessspm: https://lpbuildbot.canonical.com/builders/lucid_lp/builds/163/steps/shell_7/logs/stdio06:16
wgrantmwhudson: Go to the PPA's +admin, and check the ARM box.06:16
mwhudsoni presume checking virtualized isn't the thing to do06:16
wgrantThen try uploading again.06:16
lifelessspm: please. apply. signals.06:16
wgrantmwhudson: Ah, you'll need a virt builder if you want it to actually be dispatched, yes.06:17
wgrantYou also need to fill in the VM host with any string.06:17
mwhudsonwgrant: how does it know not to actually try to reset the builder?06:17
wgrantmwhudson: Because the dev config sets it to a dummy command.06:18
mwhudsonwgrant: ah06:18
wgrantOn production it does some ssh magic that I'm not allowed to see yet.06:18
mwhudson2010-09-20 05:18:16 DEBUG   Created armel build of hello 2.4-3ubuntu2 in ubuntu lucid RELEASE [31] in PPA named test-ppa for Ppa-user (2505)06:18
wgrantExcellent.06:18
mwhudsoni don't see where that build has gone though :(06:19
wgrantWhat do buildd-manager logs say?06:19
wgrantProbably not much.06:19
mwhudsonheh, the last entry in /var/tmp/buildd-manager/buildd-manager.log is from may06:20
wgrantNot /var/tmp/development-builddmanager.log06:20
wgrant?06:20
wgrantOr development-buildd-manager.log... I forget which.06:20
wgrantIt changed recently.06:20
mwhudsonah hah06:20
lifelessarrggggghhhh06:20
lifeless  File "/srv/buildbot/slaves/launchpad/production-devel/build/orig_sourcecode/eggs/lazr.restful-0.13.0-py2.5.egg/lazr/restful/_resource.py", line 92406:20
lifeless    except Exception as e:06:20
lifelessspm: hi, how far along are we to 'all-lucid' ?06:21
mwhudsonwgrant: hm, nothing for a couple of hours06:21
mwhudsoni guess i'll try restarting it...06:21
wgrantmwhudson: If it's still not helping, change its logging level from INFO to DEBUG.06:22
wgrantShould be in lib/lp/buildmaster/manager.py06:22
mwhudsonwgrant: 2010-09-20 17:23:36+1200 [-] No build candidates available for builder.06:23
mwhudsonwhich is i guess not surprising as the queue seems to be empty06:24
poolielifeless: does launchpad have something like bzr's overrideAttr?06:24
mwhudson_why_ the queue is empty though...06:24
poolieto monkeypatch something for just one test?06:24
mwhudsonoh, i need to publish the source first?06:24
wgrantmwhudson: Only if it's a private PPA.06:24
mwhudsonok, not that06:25
lifelesspoolie: no, I'd love a feature that does that06:25
lifelesspoolie: you can use bzr testcases in lp, if you don't mind making your own factory06:25
wgrantmwhudson: What's the build status?06:25
wgrantHit 'View build records' on the PPA.06:25
mwhudsonwgrant: hm, pending06:27
wgrantOh.06:27
wgrantIt's possible that the PPA is created non-virt.06:27
wgrantTry un-virting the builder.06:27
mwhudsonhah, it's building06:29
mwhudsonwell not really06:29
mwhudson2010-09-20 17:29:08+1200 [QueryWithTimeoutProtocol,client] <bob:http://10.0.0.46:8221/> response for "ensurepresent": [False, 'Error accessing Librarian: <urlopen error [Errno 111] Connection refused>']06:29
* mwhudson watches the build be dispatched over & over & over again06:29
wgrantAs expected.06:29
wgrantThere is failure counting in db-devel, IIRC.06:30
mwhudsonthe development librarian only listens to the local interface?06:30
lifelessuyes06:30
wgrantI believe so.06:30
wgrantI have done this in a year, though.06:30
wgrantEr.06:30
wgrantHaven't.06:30
mwhudsoni guess i can fix that, or get the slave to talk to this proxy i happen to have running06:30
mwhudsongraaaar06:33
wgrantWelcome to Soyuz :)06:33
wgrantI suppose I can just about validly say that now.06:34
lifelessI want a rubber stamp for testfix on prod-devel06:34
lifelesslast.restful needed a 'Exception as e:' -> 'Exception, e:'06:34
mwhudsonlifeless: sounds ok06:35
* lifeless takes thumpers name in vain as its a fix to the previous +106:36
mwhudsonok, that's actually a little strange, it's the proxy not knowing about hostnames in /etc/hosts06:38
lifelesswhat poxy?06:38
mwhudsonpolipo06:38
mwhudsonah, that's a config setting apparently06:40
mwhudsonit's building!06:41
mwhudsonwell, unpacking the chroot06:41
wgrantGo and have dinner.06:42
wgrantAnd breakfast.06:42
mwhudson:)06:42
spmso buildbot seems to do a good job of firing off an instance; and then losing contact with it. hence db_lp in a questionable state06:42
mwhudsontook 5 minutes on the real builder: https://edge.launchpad.net/ubuntu/+source/hello/2.5-1/+build/172569906:43
lifelessadd to that that the non lucid builders should be failing every time atm06:43
lifelessbecause of lazr.restful 0.13.006:43
mwhudsonand it failes06:45
mwhudsonhttp://archive.launchpad.dev/ubuntu/dists/lucid/main/binary-armel/Packages.gz06:45
wgrantAh, yes.06:46
mwhudsonW: Failed to fetch http://archive.launchpad.dev/ubuntu/dists/lucid/main/binary-armel/Packages.gz  504  Host archive.launchpad.dev lookup failed: Host not found06:46
mwhudsonrather06:46
mwhudsoni guess more /etc/hosts nargery?06:46
wgrantSo you need to fix the resolution, and also './scripts/publish-distro.py -C' to actually create the archive.06:46
lifelessmwhudson: you might like squid06:46
mwhudsonwgrant: what should it resolve to?  same as launchpad.dev?06:47
wgrantmwhudson: It just needs to make it into Apache.06:47
wgrantSo that should do.06:47
wgrantI did add it to the stock Apache config, didn't I?06:48
mwhudsonwgrant: it's 403ing, joy06:50
mwhudsonwhich is a bit strange06:51
wgrantIt is.06:52
wgrantWhat does Apache say about it?06:52
mwhudson[Mon Sep 20 17:51:01 2010] [error] [client 10.0.0.1] client denied by server configuration: /var/tmp/archive/ubuntu/dists/lucid-updates/restricted/binary-armel/Packages.gz06:52
wgrantAh.06:52
wgrantRight.06:52
mwhudsonwhich is a bit less surprising when you look at the config06:52
wgrantForgot that bit.06:52
wgrantYeah, I decided to be safe, I suppose.06:53
mwhudsoni certainly hope i don't take this laptop to a cafe and get a 10.x.x.x ip address for a while...06:54
wgrantOh, yeah, if you have lp-buildd installed you really want a firewall.06:54
mwhudsonwell, that's on the arm board06:56
wgrantTrue.06:56
lifelessstub: ping on the backup :)06:56
lifelessstub: <- optimist06:56
mwhudsonoh what the hell06:57
mwhudsonW: Failed to fetch http://archive.ubuntu.com/ubuntu/dists/maverick/main/binary-armel/Packages.gz  404  Not Found06:57
mwhudsonwell, /yes/ but ...06:57
stublifeless: Is still running06:57
persiamwhudson, ports.u.c/ubuntu-ports/...06:57
mwhudsonpersia: yes yes, but this is 7 layers in06:58
persiaftp.internal is merged.06:58
lifelessstub: thanks06:58
mwhudsonwgrant: any ideas?  is the /etc/sources.list from the chroot mangled somehow?06:58
wgrantmwhudson: Ah. Check the external dependencies on the PPA's +admin.07:01
wgrantThey are set to archive.ubuntu.com by default, because the dev primary archive doesn't actually have any build-deps that packages might want.07:01
mwhudsonwell, this is taking longer to fail at least07:14
wgrantIs it installing build-deps yet?07:16
mwhudsonpast that, it seems07:16
mwhudsonwgrant: this doesn't look very good http://people.canonical.com/~mwh/uhoh.png07:18
mwhudsonwgrant: for several reasons07:18
=== al-maisan is now known as almaisan-away
=== almaisan-away is now known as al-maisan
wgrantmwhudson: Check the build and b-m logs.07:19
wgrantLooks like it was GIVENBACK.07:19
mwhudsoni've retried the same build a few times07:19
mwhudsonthe buildlog looks fine though07:19
wgrantOh, it was successful?07:20
wgrantYou may be running into jelmer's incomplete branch.07:20
wgrantTry merging his IFORGETTHIS-popen-2 branch.07:20
mwhudsonwell07:21
mwhudsonactually i think i'm going to go home07:21
mwhudsonbut i'll try that tomorrow :-)07:21
wgrantThat could work.07:21
mwhudsonwill it just keep on building in the current state?07:21
wgrantI suspect so.07:22
wgrantkill off b-m.07:22
mwhudsonyeah, looks like it07:22
mwhudsonanyway, close enough to success for one day07:22
* mwhudson eods07:23
wgrantI should also head home.07:23
pooliewhat if anyhting is the patch size limit?07:32
lifelessthe review policy asks for patches to be < 800 lines unless you negotiate with your reviewer07:33
lifelesspractically speaking, anything the review finds to awkward/complex/unclear will be pushed back on anyway.07:34
lifelesspersonally I think the limit is bogus and should be tossed away, in favour of asking for single-intent, focused patches; which may be very large and mechanical, or small but subtle.07:34
persiamechanical patches are generally exceedingly large by their very nature07:37
pooliemm07:37
pooliei think there's a fair overhead per landing07:37
pooliewhich pushes people (or at least me) to do bigger ones07:37
lifelessspm: substantiate failed07:42
spmbuildbot?07:43
spmorsum it's effed and died on both ec2 images. sigh.07:43
StevenKCan we switch to Hudson now?07:44
lifelessStevenK: is it ready?07:44
lifelessStevenK: also, how did you go with the qa?07:44
StevenKQA is underway, still. :-/07:44
lifelessStevenK: KK07:44
lifelessStevenK: If there is someway I can help, lemme know.07:45
StevenKlifeless: Hudson is blocked until we can figure out how to get it building from source in a way that IS are comfortable with.07:45
lifelessStevenK: have you asked on the hudson list uet ?07:45
lifelessStevenK: also, I don't see why that blocks it; because there are other things that aren't ready aren't there?07:45
StevenKlifeless: No, but there is a Debian ITP open about it.07:46
poolieok, https://code.edge.launchpad.net/~mbp/launchpad/dkim/+merge/35985 i think fixes a few of those things07:46
StevenKlifeless: To be brutally honest, it seems like only you and me care, and I'm the only one doing things to it.07:46
lifelessStevenK: personally, I wouldn't worry about the deb building aspect.07:47
lifelessits the least of the issues.07:47
StevenKlifeless: IS refuse to use the upstream .deb package07:48
lifelessbut, and I can't stress this enough, its *really important* to talk to upstream about these things.07:48
lifelessStevenK: thats fine; we're not ready to deploy it yet are we?07:48
lifelessStevenK: horses go in front of the carriage.07:48
spmlifeless: unless you have a horseless carriage, in which case the horses are squished into the engine somehow. which may be behind the carriage.07:49
lifelessStevenK: in terms of caring / doing; spm has expressed great passion to get rid of BB, so has maris.07:49
lifelessspm: those are beetles.07:49
lifelessspm: totally different things.07:49
spmLamborgini's!!!!07:49
StevenKlifeless: James Page has commented on the Debian ITP bug, which already has upstream scribbling on it -- I was going to touch base with him07:49
spmmainly as BB is an unreliable .... .... .... ... ....!07:49
lifelessStevenK: why are you worring about the deployment side of it yet though07:50
StevenKspm: And Ferraris, some Audis, every Porsche except one07:50
lifelessfrankly, I'd get everything else totally happy first.07:50
pooliespm, thanks for your patient help, i could have done it without you07:53
pooliebut it would have been harder07:53
poolie(might as well be honest :)07:53
spmpoolie: ha. np07:53
spmbut, you'll crush my feelings saying I'm not necessary to the process07:54
pooliei think i should leave now before something goes wrong07:54
lifelessspm: I think you need a larger weapon08:05
spmoh yes. just dealing with a pri 90; then it's destressing time08:05
StevenKNameError: name 'self' is not defined08:06
StevenKOh, for the love of ...08:06
lifelessStevenK: thats on dogfood ?08:09
* jml waves hello08:09
lifelessStevenK: or local, cause local would let my heart start beating again08:09
lifelesshi jml08:09
StevenKlifeless: No, completly different branch08:10
lifelesswhew08:10
StevenKlifeless: Oh, sorry, I meant production08:10
* StevenK calls for an ambulance to lifeless' house08:10
lifelesswow, either I really messed up OOPS reporting, or the CP this morning has actually helped a lot08:11
lifelesshttps://devpad.canonical.com/~lpqateam/lpnet-oops.html#time-outs08:11
lifelessalso https://lpstats.canonical.com/graphs/OopsLpnetHourly/20100914/20100921/08:11
lifelesshttps://lpbuildbot.canonical.com/one_box_per_builder - it is -completely- confuddled.08:13
StevenKOh bugger. ImportError: No module named cachedproperty08:16
StevenKThat *is* on dogfood08:16
StevenKI'm blaming shipit, since that appears in the traceback08:17
StevenKLooks like you can't use copy_field() when the field you want to copy is in the same class as you are08:17
lifelessStevenK: your shipit is out of date08:26
lifelessutilities/update-sourcedode08:26
StevenKI should run that on dogfood?08:26
lifelessI would08:27
lifelessyou need to make deps just the same as anywhere else08:27
StevenKBleh, it can't check out shipit08:27
lifelessfor prod/staging we run that on devpad (well, we use config-manager, but near enough)08:27
lifelesscould just remove sourcecode/shipit08:27
StevenKlifeless: I don't like that idea08:29
lifelesswhy?08:31
lifelessis there a shipit.dogfood.launchpad.net ?08:31
* lifeless tires08:31
lifelessno, there isn't08:31
lifelessrename it to something else then - mv sourcecode/shipit{,.disabled}08:31
lifelessshipit is optional in the tree - its closed source08:32
StevenKlifeless: shipit disabled, thank you08:34
spmlifeless: buildbot hit with a bigger hammer. thrice.08:38
lifelessspm: thanks08:39
lifelesslets see if it sticks08:39
lifelessgrah what does it take to get out of testfix these days08:46
lifelessspm: bb is building, isn't that meant to take us out of testfix mode?08:49
spmnot sure tbh where the trigger is; at receipt of a fix; or when it fixes.08:49
lifelessAIUI starting a build is the key08:50
lifelessbbs, dinner time08:50
lifeless3.4seconds for 99% of all lp back at the 7th aug.08:56
lifeless3.95seconds for 99% of all lp yesterday08:57
lifelessbah08:57
lifeless2.9508:57
StevenKlifeless: IE, we've lost 0.5 seconds?08:57
lifelessI think so08:57
lifelessdunno how much noise there is in the usage patterns08:57
lifelessinterestingly the mean has moved up 0.06, but the variance has come down more than enough to compensate08:58
adeuringgood morning09:02
mrevellHello09:09
=== mrevell_ is now known as mrevell
StevenKallenap: Hi! Are you available for a call in about 10?09:41
wgrantStevenK: Did you get anywhere with DF?09:42
allenapStevenK: Would 20 be okay?09:42
allenapStevenK: So, about 0900 UTC.09:42
StevenKwgrant: Fighting horribly09:42
wgrantHeh.09:42
StevenKAnd giving up09:43
wgrantThat bad?09:43
lifelessstub: backup finished?09:44
StevenKwgrant: Well, Julian's turned up, and I have other things aside from work to be doing09:45
wgrantAh, right.09:45
wgrantSo it's not defeat.09:45
lifelessbigjools: oh hai!09:46
* StevenK doesn't even have the motivation to insult wgrant, so I must be sick09:47
lifeless:(09:47
lifelessvitamin C time09:47
bigjoolshai09:47
* bigjools is sprinting with jml this week09:47
lifelesscool09:48
wgrantbigjools: Ready for the Twisted overdose?09:48
bigjoolsin body yes, in mind no09:48
lifelesshey, there is a patch - 11556 IIRC - that needs qaing on dogfood; its the blocking patch in the line for doing quicker deployments of a bunch of bugfixes.09:49
lifelessStevenK was trying to qa it, but ran into some stuff.09:49
bigjoolsok09:49
bigjoolsthere's 2 that need DF QA09:49
StevenKwgrant: He probably won't remember it if he drinks heavily enough09:49
jmlhttp://isometric.sixsided.org/strips/twisted_plutonium/09:50
wgrantIs Twisted not itself sufficiently intoxicating?09:50
bigjoolsStevenK: will you be able to do those QA things?09:51
StevenKbigjools: Until when?09:53
bigjoolsa question is not a valid response to a question09:53
StevenKbigjools: Bug 564491 qa-ok09:59
_mup_Bug #564491: Cannot accept package which closes inaccessible bug <boobytrap> <oops> <qa-ok> <queue-page> <ui> <Soyuz:Fix Committed by julian-edwards> <https://launchpad.net/bugs/564491>09:59
StevenKbigjools: Do you think there is any point QA'ing 556339?09:59
bigjoolsbug 55633910:00
_mup_Bug #556339: systray.py crashed with SIGSEGV in vtable for QPaintDevice() <amd64> <apport-crash> <apport-failed-retrace> <lucid> <hplip (Ubuntu):Confirmed> <https://launchpad.net/bugs/556339>10:00
bigjoolsOo10:00
StevenKSorry, 56633910:00
StevenKbug 56633910:01
_mup_Bug #566339: Cannot accept package which would notify private email addresses <boobytrap> <qa-needstesting> <Soyuz:Fix Committed by julian-edwards> <https://launchpad.net/bugs/566339>10:01
bigjoolsStevenK: no, can you set it back to triaged please10:01
bigjoolsand unlink the branch10:01
StevenKDone10:02
bigjoolscheers - and the other one needs a couple of COPY archive builds10:02
bigjoolson a frozen series, which you then mark released10:02
wgrantIs buildd-manager actually functional right now?10:03
wgrantIn devel, that is.10:03
StevenKbigjools: Sorry, you've completly lost me10:03
bigjoolswgrant: why would it not be?10:03
wgrantr1156610:05
wgrantAFAICT it will break successful completion.10:05
bigjoolsStevenK: the bug was that when a series gets released, any COPY archive builds in progress would cause b-m to oops10:05
lifelessbigjools: https://devpad.canonical.com/~lpqateam/qa_reports/launchpad-stable-deployment.txt is the report I'm looking at for deployments btw10:05
wgrantUntil the second part lands.10:05
bigjoolswgrant: jelmer said he was going to land everything on Friday, what do you think is missing?10:05
wgrantI don't think part 2 has landed.10:06
bigjoolswhat's in part2?10:06
lifelessjelmer hit trouble with OOPS10:06
lifelessthe same thing we had last week10:07
bigjoolsFFS10:07
wgrantbuildd-manager no longer destroys the BQ, so the build will be reset as soon as the upload is queued.10:07
bigjoolshttps://code.edge.launchpad.net/~jelmer/launchpad/506256-remove-popen-2/+merge/3541210:08
bigjoolsnot merged :/10:08
wgrantThat's the one.10:08
wgrantIt has an odd test failure.10:08
bigjoolsdo you know how to fix it?10:08
bigjoolsis it even related?10:08
lifelessStevenK: \o/10:08
wgrantI don't know how, no. It's a test isolation error of some sort.10:08
bigjoolslifeless: is it too late for me to push this on to you so I can get on with my sprint?10:08
wgrantNobody seems to know.10:09
lifelessbigjools: the oops thing?10:09
bigjoolslifeless: well whatever is blocking jelmer's branch10:09
lifelessbigjools: its 9pm, I doubt I'll make much traction on it tonight.10:09
bigjoolssince it's also now blocking QA of a different branch10:09
lifelessI spent most of a day staring at it last week.10:09
lifelessand worked around it10:09
lifelessI do however have a little more info now from jelmer, so I'll happily stare at it again.10:10
lifelessbigjools: is wgrant right, that if we deployed r11556 we'd break things?10:10
bigjoolsyes10:10
lifelessok, so it needs to be marked qa-bad10:10
bigjoolsit was a 2-parter10:10
lifelesswith the specific revision. hang a sec and I'll dig it up10:10
bigjoolssplit up for review purposes, but he should have landed them together really10:11
lifelessbigjools: 11556 was your patch10:12
allenapStevenK: http://pastebin.ubuntu.com/496900/10:12
wgrant1156610:12
lifelesswgrant: do you really mean 11556 ?10:12
lifelessah10:12
lifeless11566, coolio.10:12
wgrantThat's what I said, isn't it?10:12
wgrantYes.10:12
lifelessits pretty far back to consider rollingback too. darn.10:12
StevenKallenap: http://pastebin.ubuntu.com/496901/10:13
wgrantlifeless: Howso?10:13
wgrantThat code isn't touched often.10:13
lifelesswgrant: high chance of unrelated fallout from the same oops thing, I bet it would be bad10:14
bigjoolslifeless: there';s nothing wrong with 1155610:14
wgrantAh, right.10:14
lifelessbigjools: ok cool; StevenK was qaing the two bugs - I see one is done.10:14
bigjoolslifeless: I thought you meant jelmer's rev10:14
lifelessthe other is pending?10:14
lifelessbigjools: I was all confused; I'm synced up now.10:14
bigjoolslifeless: yeah one of them is going to get unlinked, the other is QA OK10:14
* bigjools is going to disconnect from IRC in 5 minutes so I can get some work done10:15
lifelessbigjools: https://bugs.edge.launchpad.net/soyuz/+bug/566339 - the second bug on 11556 - isn't qa-ok yet.10:15
_mup_Bug #566339: Cannot accept package which would notify private email addresses <boobytrap> <qa-needstesting> <Soyuz:Triaged by julian-edwards> <https://launchpad.net/bugs/566339>10:15
bigjoolslifeless: that's the one that should be unlinked from the MP10:18
bigjoolsit's not fixed, I should not have linked it10:19
lifelessbigjools: ok, I'll just remove the qa tag from it10:19
bigjoolsgreat10:19
lifelessthat might fix it10:19
bigjoolsfix what?10:19
lifelessif it doesn't, I'll qa-untestable it10:19
lifelessthe deploy script10:19
bigjoolsah that's in action now then10:19
lifelesscandidate-deploy-stuff10:19
lifelessbigjools: the bits are all coming online yes; its output is linked above10:20
* bigjools is going to run tests locally on jelmer's unlanded branch and try and land it10:20
bigjoolsif it still fucks up with this OOPS shit, I am punting to you :)10:20
lifelessbigjools: it will10:20
bigjools:/10:20
lifelessbigjools: I'm looking at it now10:20
bigjoolsok10:20
bigjoolsthanks then10:20
lifelesssave your time; I'll email you when I pass out from exhaustion with a brain dump10:20
bigjoolsok :)10:21
lifelessnot that I can land a fix10:22
lifelessBB shat itself royally.10:22
lifelessand we're in test fix for the next 2.5? hours10:23
bigjoolscan we just kill BB now? :)10:24
lifelessstub: the new index seems to work - https://lp-oops.canonical.com/oops.py/?oopsid=1724ED352 - 1.6 second query rather than the previous 3+10:24
jmllifeless, I think testfix rules have changed such that submitting a testfix branch removes the testfix flag10:25
jmllifeless, can we please have pre-merge testing back?10:25
lifelessjml: +110:25
lifelessjml: I don't know what you mean by that, but the branches are all fine;10:26
bigjoolsbefore we do that, we need a test suite that takes 5 minutes instead of 4 hours10:26
lifelessits all fixed, just waiting for bb to figure that out.10:26
StevenKbigjools: Patches welcome10:26
* bigjools wonders what the Aussie equivalent of a P45 is10:27
jmlbigjools, not true! pqm takes 20 minutes to process a branch, so we are by definition happy with a 20 minute processing time per branch.10:27
jmlbigjools, a slab of beer10:27
bigjoolsjml: FSVO happy10:28
jmlyeah10:28
jmlthe kind of happiness that you drink with ice10:28
lifelessjml: https://bugs.edge.launchpad.net/launchpad-project/+bugs?field.tag=timeout10:29
jmllifeless, what am I looking at?10:29
lifeless7 of the 60 are done, one under way, and I just closed 2 off as fix released.10:30
lifelessjml: Progress10:30
jml\o/10:30
=== bigjools is now known as bigjools-afk
lifelessjelmer: ping10:32
jmllifeless, he's on vacation10:33
jmllifeless, in another tz10:33
lifelessyes, but we was around not so long ago10:34
lifelessthis thing isn't what I was looking at10:34
lifelessbigjools-afk: try this http://pastebin.com/fNKSwyTS10:38
lifelessbigjools-afk: if I'm right it will work10:38
* bigjools-afk is not here10:38
lifelessits 930 at night; I started at 6:30 - I'm not here either :P10:38
lifelessbigjools-afk: takes a full test run to show the problem10:39
lifelessI'll commit this and push it10:40
lifelessstub: thanks for applying those indices10:42
henningejtv, danilos: Here is my current problem: http://paste.ubuntu.com/496907/10:45
henningeThe actual failure is at the end: pofile.currentCount()10:46
henningeI added some output to see what's going on and I see four current messages but currentCount returns 3.10:46
henningewhat am I missing?10:46
jtvhenninge: is pofile an Ubuntu pofile or an upstream pofile?10:47
henninge(its five, actually)10:47
henningejtv: let me look10:47
henningethis is fromp poimport.txt btw10:47
henningejtv: upstream10:48
jtvI'd expect to see 2 current messages there.10:48
henningejtv: so does the test. which ones?10:48
jtvActually, no, I don't see a reason why the last message shouldn't be current.  But it may have a (deliberate) validation error in the plural.10:49
* henninge checks10:49
jtvOr maybe it's even supposed not to count as a current translation because it doesn't translate all forms.10:50
jtvPlurals are nasty.10:50
henningejtv: no, the plurals are complete and correct10:50
henningejtv: ah!10:52
jtv(BTW the code for getTranslationMessages has an oversized line)10:52
jtv?10:52
henningeone of the potmsgsets is obsolete, I think10:52
jtvI was wondering why you weren't filtering for those…10:53
henninge;-)10:53
henningejtv: yes, balloon does not exist in the template that is being imported in the test.10:53
henningejtv: and we create obsolete POTMsgSets for unkown msgids in pofiles, right?10:54
jtvI'm sure we do _somewhere_…10:54
lifelessbigjools-afk: ok10:54
lifelessbigjools-afk: https://code.edge.launchpad.net/~lifeless/launchpad/lessGetLastOops/+merge/35994 - review this10:55
lifelessmerge it into jelmers branch, and then land both.10:55
lifelessjelmer: ^ that should take care of it10:55
jtvCan anyone tell me where this revision came from?  http://bazaar.launchpad.net/~launchpad-pqm/launchpad/devel/revision/1136910:56
jtvIt seems to be related to bug 614404, but it's not in a branch linked to that bug.10:57
_mup_Bug #614404: commit uses system user-id to generate revision-id even when committer id is supplied <Bazaar:Fix Released> <Launchpad Bazaar Integration:Triaged> <https://launchpad.net/bugs/614404>10:57
lifelessjtv: bzr 2.210:57
jtvIt was done _for_ bzr 2.2, but this is a Launchpad branch10:57
lifelesswhich changes versions.cfg10:58
jtv(which is breaking things in production for us atm)10:58
lifelessthat commit brings in bzr 2.2 via versions.cfg10:58
jtvBut it's not bzr that's breaking things; it's an undertested Launchpad change to accommodate the bzr upgrade.10:58
jtv(Well, untested really)10:59
lifelessI'm not sure what tests would be appropriate; its a fairly deep change in assumptions; how would you ensure that all possible cases are caught, in a reasonable time11:00
lifelessanyhow11:00
jtvYes, that's the big question innit.11:00
jtvHere's the problem I'm trying to fix:11:00
jtvdirectbranchcommit now creates a bzr id based on the responsible person's preferred email address,11:00
jtvbut it doesn't check whether that person has a preferred email address.11:01
jtvIn our case, the person is often a team.11:01
lifelessthere's other code that does this.11:01
lifelessPerhaps consolidating it all would be a good idea11:01
jtvVery.11:01
lifeless(for package branches, an email is needed and teams are often the person so a fallback is needed)11:02
jtvSo we want some kind of "get_bzr_id_for_person" function that falls back to something sensible.11:03
lifelessno11:03
lifelessget_email_for_person11:03
lifelessused by11:03
lifelessget_bzr_id_for_person11:03
lifelessthe thing for package branches is used in the .changes file11:04
lifelesswhen building the recipe11:04
jtvWe already have "get email for person" functions.11:04
lifelesswell, just use whichever one is right :)11:04
jtvI think the use case you mention is a different one than mine.11:04
lifelessperhaps; I don't see why the logic would differ11:05
lifelessboth are dealing with:11:05
lifeless - need an email address11:05
jtvIn my case, I need a valid bzr user identity.  The sane fallback would probably be a celebrity.11:05
lifeless - have to handle teams11:05
lifeless - it will be publicly visible11:05
lifelessjtv: thats what the recipe code does.11:05
lifelessdirect address; fallback to owner preferred; fallback to a well known fake address11:06
lifelessfallbacks occur when not set or private-address.11:06
jtvSo that's not the same.11:06
lifelesswhy can't it be11:06
lifeless?11:06
jtvIn our case, fallback to the owner would be misleading.11:06
jtvIn our case the bzr id is not so much for contact purposes as it is for attribution purposes.11:07
lifelessI don't see that its any better or worse; perhaps I'm wrong about the other code.11:07
jtvIf we get too clever, we only make it harder to see that the change is authored by Launchpad.11:07
wgrant(Recipes don't fall back to the owner -- the first attempt is the owner, right?)11:07
lifelessits also for attribution in a .changes file11:07
lifelesswgrant: recipe owners are teams sometimes11:07
lifelesswgrant: I believe - maybe wrongly - that the team owner is the first fallback.11:07
lifelessanyhow.11:07
lifelessa) its late11:07
wgrantOh.11:08
wgrantI don't think so, but possibly.11:08
lifelessb) I don't see any difference in needs so far.11:08
wgrantWe need a solution to this.11:08
wgrantThere are two separate implementations at least.11:08
lifelessc) the recipe code may be wrong, but lets not have two different implementations of the same basic use case.11:08
wgrantAnd I can think of two or three other places that need it.11:08
lifelessjtv: so if your needs are different, please at least minimally use the same function with a knob.11:08
jtvlifeless: I'm not completely stupid, thank you!11:09
lifelesslifeless: hah, sorry if something came out badly.11:09
lifelessI'm really very tired.11:09
jtvMaybe not a good time to discuss this then—it's getting on here as well.11:09
jtv(Of course we do need it fixed, but we can work it through with the American timezones)11:10
lifelessjtv: I don't think you're at all stupid; I think perhaps I got the wrong end of the stick with what you were saying about different needs.11:10
lifelessI'm sure you'll do something sane.11:10
jtvlifeless: I understand—imagine a smiley face there.11:11
lifeless:)11:11
henningejtv: filtered: http://paste.ubuntu.com/496919/11:11
jtvThese are the rabbit holes we stumble over when we're tired.11:11
jtvhenninge: and the "Foo %i" translation should not validate, so that shouldn't become current.11:12
lifelessjtv: I don't know if you saw, but it looks like we've shaved 0.5 seconds off of the 99% threshold systemwide11:12
jtvlifeless: !11:12
jtvlifeless: stub's graphs are great for this11:12
lifelessyup11:12
jtvSeeing the change you've made there is really gratifying.11:12
jtvtestfix :(11:13
lifelessjtv: small steps; and fortunately its not just me :)11:14
lifelessI'm fortunate too having the leeway to focus my coding time on tis11:15
lifelessthis11:15
lifelesstomorrow should see another CP with a bunch of stuff11:15
jtvlifeless: got an interesting effect on the +templates page… the biggest of those went down to about 2 seconds for the normal case, but it still takes >7s sometimes11:15
lifelessjtv: have you captured a ++oops++ for one of the 7 second cases?11:16
jtvYes, but not much to see—there are no queries or blocking actions in the interesting part.11:16
lifelessjtv: so its 'python time' ?11:16
jtvMy current sneaky suspicion is that maybe those templates are usually in storm cache, in which case the page renders in 2s (I could easily shave some more off that but can't justify it right now)11:16
lifelessjtv: we nuke the storm cache at the end of each request.11:17
jtv…but when they aren't, deserializing their header strings (kilobyte-order) can take time.11:17
lifelessjtv: so in prod you won't see a change there.11:17
lifelesstherve has a  branch tuning that if you want to give it a spin11:17
jtvTuning it?  In what way?11:17
lifelessgetting rid of fat11:17
lifelessI filed a bug talking about performance there - saw a page taking 16 seconds to deserialise stuff11:18
jtv<whistle>11:18
lifelessturns out that when a machine is very busy storm performance take s ahuge hit11:18
lifelesspartly its giving up the gil and grabbing it a whole heap11:18
jtvThe problem we feared.11:18
lifelessand so it goes back on the runqueue each time when it calls into python code11:18
lifelessthats -machine- load not -many-python-threads- per se.11:19
lifelessso if the machine is at or beyond 100% cpu, even though the thread has a timeslice permitted, its back trying to grab it rather than going on immediately.11:19
lifelessprod servers aren't run as hard as staging though11:19
lifelessanyhow, there is an RT open to get some instances made single core11:19
lifelessso we can evaluate that.11:19
jtvWhat surprised me for the +templates page was the discrete nature of the delay: sometimes it's 2s, sometimes it's 7s, but there's nothing inbetween.11:20
lifelessthats indeed very interesting.11:20
jtv(Let me reiterate here my call for a performance experiment server)11:20
lifelessI wonder what we can do to get a handle on it.11:20
wgrantIt's not because Ubuntu takes 7s and everything else takes 2s?11:21
lifelessjtv: we can do experiments as needed; as I say there is a single-core one already in the pipeline.11:21
jtvwgrant: no, I routinely get the Ubuntu page in 2s.11:21
jtvBut if you can think of something with more templates…  :)11:21
lifelessjtv: so, one thing I'd do is look at the PPR and see if your feeling about it is real11:21
jtvMaybe it's master/slave, or difference in privilees.11:21
jtv*privileges11:21
lifelessjtv: the ppr graph should show if its 2,7 or around-2, around-7 or whatever11:21
jtvlifeless: that's where I spotted the difference.  Would be useful to get a bigger sample size though, yes.11:22
lifelessjtv: if it is pretty clearly 2 peaks, then the ztrace log should let us figure out more data11:22
lifelessjtv: such as master/slave and so on11:22
* jtv looks up ppr11:22
lifelessUrsinha-afk: I can't see why ;11:25
lifelessRevision 11556 can be deployed: qa-ok11:25
lifelessRevision 11557 can not be deployed: not-ok11:25
lifelessUrsinha-afk: we may need to make the more detailed output visible or something - the summary stuff is only useful if the detailed context above is shown too.11:26
lifelessUrsinha-afk: (for developers). For folk saying 'time to doa deploy, the summary is sufficient, but I don't thinkt hey will mind seeing the rest.11:27
lifelessUrsinha-afk: https://bugs.edge.launchpad.net/malone/+bug/497386 is qa-ok11:27
_mup_Bug #497386: ScopedCollection:CollectionResource:#message-page-resource timeouts for bugs with many messages <api> <qa-ok> <timeout> <Launchpad Bugs:Fix Committed by lifeless> <https://launchpad.net/bugs/497386>11:27
lifelessUrsinha-afk: also we may need a way to say 'this rev fixes bad-commit-12345' other than rollback; for the case when we decide to leave it in and fix it.11:30
gmbHooray for misspelt TestCases11:30
lifelessgnight y'all11:31
jtvhenninge: how's that test doing now?11:32
henningejtv: I don't see updateTranslation doing that. It makes all messages current that don't have a translation conflict.11:37
jtvhenninge: it uses a helper… called validate_translation IIRC11:37
henningeindependent of validation errors.11:37
henningeyes, it does11:38
jtvhenninge: I think it's this line in _makeTranslationMessageCurrent that does it:11:39
jtv        if new_message.validation_status == TranslationValidationStatus.OK:11:39
henningejtv: the test is now failing on pofile.getPOTMsgSetWithErrors11:41
henningewhich does not find any such POTMsgSets (should find 1)11:42
jtvhenninge: in the recife code as it stands, getPOTMsgSetWithErrors is still hard-wired to look only for upstream-current messages.11:43
henningeso what should I do? Fix the test?11:44
jtvWell getPOTMsgSetWithErrors needs fixing, though I'm not sure that's the cause of the test failure.11:45
jtvI think the other thing is that getPOTMsgSetWithErrors should find the message only if it did become current despite the validation error (which normally it shouldn't).11:46
jtvhenninge: does the test make the failed message current by manipulating the flags directly?  If so, see that it matches expectations—getPOTMsgSetWithErrors is wrongly hard-wired to is_current_upstream, the test is wrongly hard-wired to is_current_ubuntu.11:51
henningeyes, in order to change that I will have to make the test use is_current_ubuntu11:52
deryckMorning, all.12:12
persiaGood morning deryk.  I was advised you were the best person to ask for an opinion on 64263712:14
stubAnyone recall what I can use to see if a script my test just ran emitted the expected OOPS reports?12:19
lifelessin-process, self.oopses[-1]12:20
lifelessex-process getLastOopsReport12:20
lifelesswhich is having a little quirky-moment just now, for reasons I haven't dug into.12:20
* lifeless really really is gone now.12:21
stubta12:21
* wgrant resets the "seconds since lifeless last left" timer.12:22
marswgrant, I think your IRC client does that for you ;)12:49
marswell, the server /whois actually12:49
wgrantTrue, true.12:50
persiaTrick is writing the script to distinguish time-since-last-activity from time-since-last-claim-to-depart12:53
=== al-maisan is now known as almaisan-away
maxbNo CHR today?13:16
=== Ursinha-afk is now known as Urisnha
=== Urisnha is now known as Ursinha
allenapbryceh: Hi, I'm looking into your email now. I'm on CHR today, I haven't done it for months, and it's still a complete pita :) Anyway, I'll try and get you an answer soon.13:34
jtvping abentley13:55
abentleyjtv, pong13:55
jtvhi!  Did you see bug 643345?13:55
_mup_Bug #643345: Failing branch exports <Launchpad Translations:In Progress by jtv> <https://launchpad.net/bugs/643345>13:55
jtvThe problem in a nutshell: bzr apparently needs an email address when DirectBranchCommit commits, but the user in question doesn't necessarily have a preferredemail.13:56
jtv(And so our translations-to-branch export script breaks)13:56
abentleyjtv, no, I didn't see it, but I've seen other issues like it.13:59
jtvIt'd be good to have a single solution.13:59
jtvWe run into it with teams in particular.14:00
abentleyjtv, yeah.  It would be nice if everyone had email addresses.  It is 2010, after all.14:00
jtvWhich means that many use twitter for communication.14:00
jtvI wonder if anyone thinks of us as old-fashioned for using email yet.14:01
jtvBut I digress.14:01
jtvThere are many things one _could_ do to find a valid email address in the case of a team, but I think ultimately they would be misleading.14:01
jtvSo my suggestion is: fall back to a celebrity.14:02
jtvI don't know if that should be the same one every time, or whether we could have a global one.14:02
jtvAhem.  Those would be the same option.  Sorry.14:02
abentleyjtv, I don't know about this.  This is an address that people are using to create commits for the world to see.14:03
jtvabentley: that's a good point—there may be other things worth trying in some or all of the cases.14:04
abentleyjtv, bzr users have complained about bzr silently generating an email address without them setting it.14:05
abentleyjtv, because they find out much later, and don't want to have to redo all their previous work just to get the right email address on their commits.14:05
jtvabentley: in our use-case, the best fallback would be some celebrity that stands for "Launchpad committed this."14:05
jtvI have no idea how suitable that would be for any or all of the other use-cases.14:06
abentleyjtv, are you sure that's what users want, not an opportunity to set the email address to the desired one?14:06
abentleyjtv, because in general, bzr users seem to want the latter.14:07
jtvabentley: opportunity is always nice, but "you need to set an email address for this team before translations exports to branches will work" would be highly non-obvious.14:07
jtvNot to mention the potential difficulty in conveying that point to someone without a preferred email address.  :)14:07
abentleyjtv, you mean a warning/error message with that text would not be clear?14:07
jtvWe could write a clear message, but it'd be yet another complication that's hard to foresee or justify through reasoning.14:08
jtv(The preceding one being "you need to push to your branch," for which we also send out emails)14:08
jtvEffectively we'd be letting go of Launchpad as a unified repository of identity: "Launchpad knows who you are but Launchpad Translations can't write to a Launchpad Code branch without your email address."14:10
=== almaisan-away is now known as al-maisan
jtvabentley: I don't suppose we could generate a consistent non-email id along the lines of username@emailless-user.launchpad?14:11
abentleyjtv, we could certainly do that, but do users actually want that behaviour?  Our experience with bzr users suggests they do not.14:12
jtvabentley: I can see that, but the solution after all is "make sure we have a valid email address for you."14:12
jtv(Also, aren't there any hidden problems with exposing these email addresses publicly?)14:13
jtvFor our particular script, I think it'd be fine to have a single celebrity produce all commits.  Nice and recognizable.14:14
abentleyjtv, if we ask users to set an email address to be used as their public identity, I don't think exposing it is a problem at all.14:14
abentleyjtv, In my experience, using a fake email address is something users don't want.14:16
abentleyjtv, Do you have contradictory experience?14:16
jtvabentley: I've seen some pretty hot-headed remarks about public email addresses, but I'm more interested in the question of "using a fake email address is something users don't want given what alternative?"14:17
jtvIf the answer is "if you don't like this, give us an email address to use," I don't think there's much ground for complaint there.14:18
jtvgrounds?14:18
jcsackettdoes anyone know (or is there a place i can check) how long staging is likely to be updating for?14:19
jtvRight now I'm not at all interested in the case where an email address for exactly the right Person (whether user or team) is available.14:19
abentleyjtv, the alternative is to error until users supply an address to use, even if the user-supplied address is fake.14:19
jtvjcsackett: until it's fixed I guess.  It's been that way since my morning AFAIK.14:19
jtvabentley: for what our script does, erroring out would be really unsettling.14:20
jcsackettjtv: thanks.14:20
jtvjcsackett: at the time I heard mention of fixing it, but haven't had time to look closer.14:20
abentleyjtv, the problem is that commits hang around for a long time.  IME, people would rather get it right at the start, and not have bogus identities on the first few commits.14:21
jcsackettjtv: i'll check the lists &c, thanks. it's not a rush thing on my part, just curious when i can test something.14:21
jtvabentley: I'm thinking in the case of our script, it'd be fine to fix that with a celebrity—I just need to pick or create one.  In more interactive use-cases, it'd be different.14:22
jtvabentley: but I should point out that a preferred email address can disappear "spontaneously."14:22
abentleyI don't understand why you keep going back to your celebrity idea.  Do you think that your intuition trumps my experience?14:22
persiaCould one automatically assign every team an address that would match their mailing list address, and when it wasn't enabled, drop it to /dev/null ?14:23
persiaUsers have addresses.14:23
jtvabentley: no, that's just entirely about our specific use-case where picking a person probably isn't a very good idea in the first place.14:23
abentleyjtv, I don't think your use-case is as specific as you think it is.  It produces commits.  They live a long time.  People get emotional about the contents of commits.14:24
jtvabentley: the thing is, the choice of person we have there right now is really a bit arbitrary.  It's a cron job doing the actual committing.14:25
jtvabentley: the branch owner in that script serves as an approximation of whoever enabled the commits, but it picks the current branch owner which isn't necessarily the same person.14:27
jtvabentley: now, _if_ our use-case is different in that sense, then there is no need to let it weigh down the general solution.14:28
abentleyjtv, it's being done on behalf of someone.  If the service didn't exist, some person would have to be committing to get the same result.14:28
abentleyjtv, the Code team doesn't have any use cases involving automated bzr commits.  We have use-cases involving email addresses for source packages, though.14:30
abentleyjtv, e.g. https://bugs.edge.launchpad.net/launchpad-code/+bug/62013714:30
_mup_Bug #620137: allow choice of DEBEMAIL for recipes builds <recipe> <Launchpad Bazaar Integration:Triaged> <https://launchpad.net/bugs/620137>14:30
jtvabentley: but in our case, who exactly is the commit done on behalf of?  The best answer I could give is "all the people who changed the translations."14:32
abentleyjtv, even for source packages generated automatically, even when the email address is valid, users want to specify the *particular* valid address.14:32
abentleyjtv, the commit is done on behalf of the person who enabled exports for that branch.14:32
abentleyjtv, or imports.  Whatever.14:33
jtvWhich is information we don't currently have available with full accuracy.14:33
jtvIn the problem cases we have now, for unrelated reasons, it's rather likely to be inaccurate.14:35
abentleyjtv, limitations of your current data model are not a good justification for planning future behaviour.14:35
jtvabentley: no, but future behaviour that doesn't solve the problem _and_ requires an extension of the data model isn't very relevant to our problem.14:37
abentleyjtv, that's a tautology that can be shortened to "stuff that doesn't solve our problem doesn't solve our problem".14:39
jtvabentley: if you want to leave out relevant conditions, sure.  But storing a different person doesn't solve the problem of not having an email address.  It merely increases the relevance of the email address if we have one.14:40
jtvI would hope that it also increase the chances of having an email address, but it again leaves us with no very good course of action and a non-obvious failure mode when an email address goes away.14:41
abentleyjtv, I don't see how leaving out the conditions changes the truth of the expression.  future behaviour that doesn't solve the problem _and_ *does not* require and extension of the data model isn't very relevant to our problem.14:42
abentleyjtv, what about using the email address of the team owner when the team itself has no email address?14:43
abentleyjtv, for error messages, not for commits.14:43
jtvabentley: when it comes to error messages we might as well notify an entire team.14:45
abentleyjtv, it would be nice, but we are talking about a situation where we don't have contact information for the team, right?14:46
abentleyjtv, I guess you mean contacting each team member individually?14:47
jtvabentley: I thought you could email an entire team, as a collection of individuals with separate email addresses.  But no matter.  What I'm so unhappy about is having the extra error condition in the first place.14:47
abentleyjtv, I think that error condition is due to external requirements.  It's irreducible complexity.  But I think we can make it extremely rare.14:50
jtvabentley: if we can do that, then great.14:51
jtvHow would we go about it for teams?14:51
abentleyjtv, I'm thinking for all Persons, we could have a "public email id" field.  And when someone's configuring imports for a branch, we can require that field to be filled out.14:52
abentleyWe can then use the same email id for source package recipe builds.14:52
jtvabentley: would it be a valid email address?14:53
abentleyjtv, no, it would not be required to be valid.14:53
jtv(Just wondering if there are any abuse risks)14:53
abentleyjtv, it would be hard for that field to accidentally go away, so the error condition would only be hit if the user decided to clear it manually.14:55
jtvabentley: what happens when a user transfers branch ownership?  Would we require the new owner to have a public email id?14:56
abentleyjtv, I don't know if it's possible to transfer branch ownership.14:57
jtvIt is.  But I see the point: if we store who initially set up the exports, that indicates which public email id to use.14:57
abentleyjtv, I guess depending on how we do it, transferring ownership could break imports.14:59
abentleyjtv, I'm not sure whether it makes sense to continue doing imports when transferring a branch.  That way, the branch gets contents that its owner never approved.15:00
abentleyjtv, we could also refuse to change ownership to an owner with no public email id.15:01
jtvabentley: well forgetting admins for the moment, obviously the original branch owner makes the transfer.15:01
jtvAt that point, the original "license" to export to the branch has been given by someone who isn't necessarily an owner of the branch any more, but the new owner receives it with this restriction.15:02
abentleyjtv, right.  So now that the branch is owned by owner-new, should the imports configured by owner-old still apply?15:02
jtvabentley: I think so—it's behaviour our users already use and expect, and it facilitates transfer to a team.15:03
jtvIf the old owner were to become thoroughly distrusted, I think there's worse problems than ongoing translation commits.15:03
jtvAlso, with the commits happening daily, there's little the new owner could do to become dependent on them not happening before they became obvious.15:04
abentleyjtv, true, although in the case of transfer to a team, owner-old is usually a member of owner-new, and so has the right to configure imports for owner-new.15:04
jtvYes.15:04
jtvOf course keeping the email id of the original requester of the daily exports does mean that we could be committing in the name of a user that may have disappeared.15:06
abentleyjtv, My idea was actually that we would use the public email id of the current owner.15:07
jtvOIC15:07
jtvSo then transfers are back on the table as an issue to be resolved.15:07
abentleyjtv, if the common case is that owner-old is a member of owner-new, perhaps we should let owner-old set the public email id of owner-new while transferring the branch.15:10
jtvabentley: you mentioned the possibility of requiring a public email id when transferring a branch… that'd be necessary for what we do, but is it a reasonable thing to ask for other cases?15:10
abentleyjtv, if recipes could be transferred, I think it would be reasonable for that case.15:12
jtvThen there's transition.  What to do about the existing cases?15:13
jtv(Also, it'd be nice to have a better way of making "almost-candidates" clear in pickers: "you could almost transfer ownership to this person, _but_ there's no matching public email id yet")15:14
abentleyjtv, for Persons which currently have imports or source package recipe builds, we set the public email id to the value currently being used, and send a notification.15:14
jtvabentley: I imagine we'd always fall back to a real publicly visible email address when no explicit email id has been set, but I'm thinking especially of the email-less cases.15:15
StevenKallenap: And you were right, getUtility(IDistributionSet) is not what I want15:17
abentleyjtv, maybe I should have said "for Persons which currently have *working* imports or source package recipe builds..."15:17
jtvabentley: I don't mean to be finicky about that—just asking what to do about the current problem cases.15:18
=== Ursinha is now known as Ursinha-brb
abentleyjtv, for the current problem cases, the "no public email id" case applies, and so we use that error handling.15:20
abentleyjtv, send it to the owner, as I suggested, or send it to each member of the team, as you suggested.15:20
jtvabentley: that's a sizable number of people to bother.  :(15:20
abentleyjtv, this is why I suggested only bothering the owner.15:20
jtvI see.15:21
jtvThis also means we have to go through a transition period where an owning team must expose a real email address.15:22
jtvNot saying that's a dealbreaker, just worth addressing if we can.15:23
abentleyjtv, why would an owning team need to expose a real email address?  The public email id need not be real or valid.15:23
jtvabentley: but we don't support those ids yet, or did I misunderstand?15:24
abentleyjtv, we don't.15:24
jamhey guys, is it more appropriate to propose merges into "lp:launchpad" or "lp:launchpad/devel" the former being db-devel seemed less appropriate for non-db patches.15:24
jtvBut we do have production failures going on.15:24
abentleyjam, devel unless it has db patches or depends on new versions of scripts.15:25
abentleyjtv, okay, I figured that was pre-transition.15:26
abentleyjtv, what currently happens when we get these failures?15:26
jamabentley: thanks, that's what I thought, but I'll note that the UI doesn't push you in that direction.15:26
jtvabentley: all depends on perspective I guess… I was thinking of "from what we have now to the situation where we have public email ids"15:26
jtvabentley: the exports to branches simply don't work, and we get oopses15:27
jtv(or at least, logged failures—the oopses turned out not to be working for some reason)15:27
abentleyjam, it's because of the overloading of "development focus" for stacking.  db-devel is the best branch to stack on.15:27
abentleyjtv, so as an immediate fix, you could catch these errors and mail them to the team owner or the team members.15:30
abentleyjtv, I think that having public email ids is the right direction, but perhaps we should get other people involved in the discussion, like sinzui or lifeless or launchpad-dev.15:31
jtvabentley: discussed with lifeless in the afternoon (about 9 hours ago I think), but got too late in the day for him to make it a reasonable demand.  Timezones make this hard.  I think as an interim measure I'll have to contact the affected teams and urge them to set an email address.  However…15:34
jtv…I have one question about that: do teams get a preferredemail address in the same way that users do?15:35
jtvI saw some code earlier that made me wonder.15:35
abentleyjtv, I don't know.15:38
jtvI'm looking into it.15:38
jtvabentley: hum—Person.setPreferredEmail starts out with "assert not self.is_team"15:40
* jtv digs for something more conclusive15:40
StevenKallenap: Changes to db-add-derivedistroseries-api pushed, have a sneaky-peek when you have a chance.15:43
jtvsinzui: are team email addresses maintained completely separately from user emails?  We have a situation where persons are expected to have a preferredemail, for teams that doesn't seem possible.15:48
sinzuijtv, they are not separate because we keep people and team in the same table15:49
sinzuiteams have a contact address, users a preferred address, and we test for .is_team in teamowner in sql15:50
sinzuijtv I have a branch that is dealing with a person/team email address corner-case right now. This is a real nuance.15:51
jtvsinzui: thanks for clarifying that… is there an easy way to get "preferred email or contact address"?15:51
sinzuijtv: in python or sql?15:52
jtvsinzui: python15:52
sinzuino, this is a look before you leap issue15:52
jtvsinzui: great thing to hear after the bus has already gone of the edge :)15:52
* sinzui cheats in SQL <person|team> -> EmailAddress (status = 4)15:53
sinzuijtv, I have long wanted to separate users from teams.15:53
jtvI've long said that users are the cause of by far most of our problems; anything you can take away from them is good.15:54
jtvBut seriously. :)15:54
sinzuiwell, I have argued for a base class and table called agent, and then have three subclasses and tables for robot, user, and team15:55
jtvsinzui: abentley and I had just figured out that we can fix our present production failures by asking teams to register preferred email addresses, but if they can't have preferred email addresses, we need to work on the code to accept contact addresses as well.15:55
sinzuiIf we made everyone robots the users would not be an issue15:56
jtvFour Terminator films and a TV series—it's been tried.  :(15:56
sinzuiexcept for when the rebel and turn themselves into users like all Cyclons do15:56
jtvAll of this has happened before, and all of it will happen again.15:56
sinzuiI bet the fans are reallying hoping for it to happen again15:57
* sinzui got bored with Caprica15:57
* jtv tried and failed to watch the pilot15:58
jtvUnbearably bad.15:58
jtvsinzui: what's the data model for team contact addresses?  Up to 1 validated address?  Pick any validated address?15:59
sinzuijtv no :(15:59
* jtv hopes against reason that sinzui is merely disagreeing with his taste in TV series16:00
sinzuijtv: 1 or 2 address. 1 contact address (status 4) and 1 mailing list address (status 3); or 1 contact address that is also the mailing list address (status 4). The magic is status 4, which is used to select the right one in the implementation16:01
jtvsinzui: isn't status 3 OLD?16:01
sinzuijtv: but since the address may be None, no contact address, but 1 mailing list address (status 3), in which case we lookup the members of the team and send to their addresses16:02
sinzuioh, maybe, then I mean 216:02
jtvThat's VALIDATED.16:02
sinzuiyep, that is what I mean16:02
jtvISTM 2 and 4 are the only usable states an email address can be in, and only 3 (VALIDATED) is applicable to teams…  So I guess that amounts to "up to 2 validated addresses, and a bit of complication for picking the right one."16:03
=== deryck is now known as deryck[lunch]
jtvWait—you're saying a team _can_ have an email address with status PREFERRED.  Maybe it just doesn't get set as such through the normal channels, but ends up working the same otherwise?16:04
jtvOf course if the address is then None, we're still, if I conjugate the Colonial correctly, fruck.16:05
jcsackettsinzui: how would you feel about adding a usage_attribute to a view?16:06
jcsacketti'm sort of reaching through some convolutions to access translations_usage for a product_series, and i think just having the views have their own usage_attribute mirroring whatever is the case on the context might be easier and cleaner.16:06
jcsackettsorry, ProductSeries.16:06
=== Ursinha-brb is now known as Ursinha
jtvjcsackett: in some narrow contexts I dig up a reference to the product-or-distribution, so I can inspect its official_rosetta attribute regardless of what it is.16:08
=== al-maisan is now known as almaisan-away
sinzuijcsackett, yes it is convoluted because ProduceSeries is independent of Product. Any user can setup an automatic import for Ubuntu. henninge, jtv, and danilos can explain the separation and hopefully simplify the issue16:08
jtvsinzui: how is ProductSeries independent of Product?16:08
sinzuijtv: if the project choses unknown, external, (or even does not apply), a user can still setup an automatic import from the series16:09
=== almaisan-away is now known as al-maisan
jtvsinzui: ah, the translations usage per se can change independently from the series…16:10
jcsackettsinzui, jtv: okay, so the translations_usage attribute (which is supplanting official_rosetta, jtv), ProductSeries mirrors Product by using the ProductSeries to Product adapter. i'm looking for an easy way to get at that for templates. are you suggesting that we actually need ProductSeries to have its own, entirely separate translations_usage attr?16:11
sinzuijtv: I think the confusion is that there are many things that can be configured, project, series, and permissions. I think we should have once screen to manage permission and configuring/enable the service for the project. I think enabling series imports need to be clearly explained that is a separate issue on the project and series pages.16:12
jtvPer-series translations usage as we have it now is an emergent property, derived primarily from the presence of (non-deactivated) templates.16:12
sinzuijtv, jcsackett https://translations.edge.launchpad.net/gedit-class-browser is very confusing16:12
jtvYes, some very different things there: setup instructions; import queue; permissions model and translation group.  And no sign of branch synchronization, since that's a per-series setup.16:14
sinzuiHow can the project have open permission if it does not use Lp? Why can I see an import queue if it does not use Lp (well, because the series can be setup). However, if the project sets not applicable, shouldn't the entire page go blank?16:14
jtvsinzui: you typically want to provide templates and set permissions before you start using Rosetta.16:15
jtvAt that state, you may well need or want to see the import queue to see what's going on with your uploads.16:16
jtvWhat's more confusing is that there are 4 access models, but only 2 make sense before you have a translation group—and of course not enabling translation moots them all.16:17
jtvCausality goes something like this:16:17
sinzuijtv, so to choose "In Launchpad", the form should insist that I have imported something. The form could include permission widgets as subordinates of "In Launchpad".16:18
jtvsinzui: I can't answer that without a better understanding of the implications of that setting.16:18
sinzuijtv: how many projects say official translations, but have never imported a template?16:19
jtvsinzui: I don't know; I don't see it mattering much.16:20
sinzuijtv: sure it does. I am trying to locate where translations happen for an upstream project. the project claims it is Lp, but that is not true because they never complete setup16:21
jtvsinzui: internally I don't think we ever thought of official_rosetta as providing that information, useful as it is.16:22
sinzuijtv, jcsackett: I think we also have a sizable number of projects that say they user translations, but their code it not i18n enabled16:22
jtvBut looking at it now, would you believe, the majority of official_rosetta projects have no templates.16:22
sinzuijtv: the bridging the gap goal is includes clearly stating where services/work is done: in lp, in an external service, and in this case, not applicable16:23
jcsackettjtv: i can confirm that official_rosetta isn't in use much; the only place that seems to check it is products. distributions, projectgroups, and series (both distro and product) ignore it on the browser side.16:24
jtvsinzui: in the case of translation, we also have edge cases like "translation is done in Launchpad for these few languages only."16:24
jtvjcsackett: we also check it for external suggestions.16:24
jcsackettjtv: ah yes; missed that.16:24
sinzuijtv: jcsackett I just changed https://translations.edge.launchpad.net/gedit-class-browser to not applicable. the code is not i18n enabled. So I think I should not see the other portlets below the message that clearly states the project has nothing to translate16:25
jtv(Actually the complexity there is set to move to SuggestivePOTemplate)16:25
sinzuijtv: yeah, code has similar edge cases16:25
jtvdoes that team have any good ways of incorporating those in the usage information?16:26
sinzuijtv: jcsackett: I think I am reading that rosetta is implicitly enabled by the setup of templates for a series (code is enabled by a branch linked to a series). Should official_translations be enabled when that state is achieved? Does this mean the project owner cannot choose external or not applicable later?16:31
jcsacketti could see translations_usage on series being a calculated property based on that condition; it does seem like this is less of a case of it following the setting on the related pillar.16:35
jcsackettat least i assume: are we only talking productseries here, or product and distroseries--it seems similar concerns hold for both.16:35
jcsackettjtv, sinzui^16:35
jtvThe permissions model certainly provides an additional "master switch" on the translations…  the only difference IIRC between "Closed" permissions and disabling translations is visibility.16:36
jtvEverything we've done so far has been on the assumption that the considerations for productseries and packages on the one hand are separate from those for products and distributions on the other.16:37
=== Ursinha is now known as Ursinha-lunh
=== Ursinha-lunh is now known as Ursinha-lunch
jtvIt take some re-think to get my head around a different way of doing it; though it seems sensible to avoid duplication of the concerns.16:38
jtvBy the way, templates can be disabled.  This should be tantamount (give or take) to reversible deletion.16:40
=== matsubara is now known as matsubara-lunch
jtvOnly POTemplates with the iscurrent flag set should be counted when it comes to determining whether their owning object uses Translations.16:41
jtvjcsackett: for Products, it's quite possible that people set up a pilot, import translations (possibly even a lot of them), and finally decide not to use Launchpad.  So there, whether a project uses Launchpad is meaningful information (though it can only be the case if there are non-deactivated templates).  For productseries, I think having non-disabled templates is a sufficient condition to conclude that it uses Translations.16:45
jcsackettjtv, sinzui: okay, so clearly the series needs its own attribute to determine this, rather than just piggybacking off the Product.16:47
jcsackettwhich will also ease my initial question, b/c now all contexts hitting the template will have the attribute in question.16:47
jtvjcsackett: actually that's something we already derive from the presence of templates (with iscurrent set)16:47
jcsackettjtv: sure, but given the existence of something called "translations_usage" i would think we want that to tell something meaningful.16:48
jtvjcsackett: yes, I'm talking purely of productseries there.16:48
* jcsackett nods.16:48
jcsackettso, this still raises the question of consistency: i'm a product owner, and i turn off translations for my product. now i have a series of my product that is running independent of my product decision.16:49
jcsacketti suppose in this instance its just a case of "go deactivate everything if you want this off."16:49
jtvjcsackett: well, the "master usage switch" should override usage for the series.16:49
jcsackettjtv: okay, i agree. that's what i was driving at (rather circuitously, i admit)16:50
jtvjcsackett: it's late here, don't use long words.  :)16:50
jcsackettjtv: sorry. :-)16:50
sinzuijcsackett, jtv: I can expound on the question. Should I be able to deactivate the project if it has automatic import enabled?16:50
jtvIn fact, I'd like to wrap up my urgent issue with sinzui and call it a night!16:50
jtvsinzui: you mean import of translations from a branch?16:50
sinzuijtv: jcsackett: this was an excellent conversation. We really appreciate it16:51
sinzuijtv: yes I do mean from a branch16:51
* jcsackett nods. it's helped clear up several things.16:51
jtvsinzui: so far we have taken the position that you may need some time to set things up right before you open up translation16:51
jtv(in fact you may set things up experimentally and then give it a miss)16:52
sinzuijtv: yes, I think I am seeing that situation in projects16:52
sinzuijtv: do you still need my help with email addresses?16:53
jtvImports in particular can take a while.  We can't just say "oh you have templates, you're open for translation" because it could take considerable time to import your existing translations, and you don't want to invite people to do redundant work on translations that you already have coming in anyway.16:53
=== abentley is now known as abentley-lunch
jtvsinzui: yes, I still need help with that—first off: is that branch you have waiting in the wings one that would give us an easy way to get a "preferred email address for user or team" in the short term?16:54
jtvIf not: do you have a design in mind that the design for such a function should or could comply with?16:54
* sinzui was thinking of creating an IContactAddressSet adapter for person|team that works like a cast, and provides a set of address for the person, or team, or team members16:55
jtvsinzui: isn't that going a bit overboard with the adapters?  It sounds like a job for an interface.16:55
=== deryck[lunch] is now known as deryck
sinzuijtv ^ If person, get preferred, if contact address is not None, get contact address, else for member get email address16:56
jtvsinzui: given what abentley-lunch said, it probably makes sense to have a separate function for what bzr needs, because we may end up falling back on a public email-shaped id that need not be an actual email address.16:57
sinzuiah, I was missing context16:57
sinzuijtv: so we want unique identity as a string, and is commonly an email address16:58
jtvIn the short term however we need a way for people to have "the" email address respected regardless of whether it's a team's or a person's.16:58
jtvsinzui: you'd have to ask Code people for the details there; my immediate concern is something that definitely obtains a publicizable email address if one is available.16:58
sinzuiteams cannot hide addresses, so that the issue is teams without an address16:59
jtvWe can work around the current problem in the very short term by asking affected team owners to set up a contact address.  But the existing code only looks for preferred addresses.16:59
jtvYes, that's the issue.16:59
sinzuidoes the address need to work17:00
* sinzui ponders xrds rules for id urls17:00
jtvsinzui: possibly not, though obviously we want to draw a very clear line around ones that might not.17:01
sinzuijtv: does this id need to look like an email address, can we use a url17:01
jtvsinzui: talk to Code people :)17:02
* sinzui looks at membership code for sekret email addresses17:02
=== benji is now known as benji-lunch
=== Ursinha-lunch is now known as Ursinha
=== matsubara-lunch is now known as matsubara
=== salgado is now known as salgado-lunch
jtvsinzui: bugger—ITeamCreation seems to imply that we only allow contact addresses to be set upon team creation.17:31
sinzuino, the team can add them at anytime17:31
sinzuijtv: team use a different view than users17:32
jtvah17:32
sinzuijtv: I am inclined to do think of the future with this issue: "launchpad engineering <1234@launchpad.net>" where the number is Person.id like we do for bugs and questions17:34
=== beuno is now known as beuno-lunch
sinzuijtv: I have not confirmed that address is available, but I can see there are no handlers looking for that address.17:35
jtvsinzui: of course we'd like to avoid making up ids if we can; that's something that apparently has been done in the past and which the code people want to do away with.17:35
sinzuijtv: we use ids because bugs move, and teams change their names17:36
jtvsinzui: apparently people get really unhappy about made-up ids, and so the feeling among Code seems to be that it's better to error out.17:37
sinzuiI have a problem where it is not possible for the team owner to contact his team because of ridiculous rules involving the teams contact address and mailing list. I might be able to solve the issue with an address like that. It would only work for members of the team17:37
jtvYou mean the address would become functional?17:38
jtvIt sounds cool on the one hand, but suspiciously close to re-inventing mailing lists on the other.17:39
sinzuijtv: I think we need a functional address, but the debate on it has driven me to tears17:39
jtvsinzui: I can imagine it vividly17:39
sinzuimailing lists are indeed the problem...a team can have a list, but no members are subscribed...if a tree falls in a forest, and there is not one to hear it, does it make a sound17:40
* sinzui believe all team members must get email from the list17:40
jtvSo far we were thinking: if we can at least give people, possibly as soon as tomorrow, some control over the effective preferredemail of their team, then we're in a position to require one.17:41
sinzuijtv: I bet mailing lists would be successful if they were automatically on. all teams have them, and they just work!17:41
* jtv implemented a system like that once… you got a wiki, a mailing list, an svn repository etc. It was quite nice.17:42
sinzuiprojects have series and code, teams have lists and messages17:42
sinzuijtv: team-name@lists.launchpad.net is could be real for all teams, but that is a new feature17:43
jtvsinzui: it looks as if actually, team.preferredemail should work as it would for user.preferredemail; they're just set in different ways, but setting a team's contact email should produce the effect we're after.17:54
cr3the launchpad python style guide mentions that methods should be initialCamelCase, but how do I integrate that with frameworks expecting to callback methods which use_underscores in a clear way? is there somekind of comment or something I should mention so that people can know to expect one or the other naming convention?17:55
sinzuiyes, they have different rules about the number off addresses17:55
jtvabentley-lunch: ^^ this is good news—means we can ask teams to set contact addresses as an immediate workaround.  Need to verify though.17:55
=== abentley-lunch is now known as abentley
jtvcr3: our """See `IAnInterfaceThisClassImplements`.""" docstring convention.17:57
jtvmay help.17:57
jtvcr3: if there's an interface or base class that declares the method that you're defining, mention it in the docstring in that way.17:58
jtvIf there's no such thing, another nice one (which also happens to fit with our guidelines completely) is:17:58
jtvdef doMyThing(self):17:58
jtv    pass17:58
jtv 17:59
jtvmy_thing = doMyThing17:59
cr3jtv: both make sense, I'll try to limit myself to the first approach then and define the interface in an appropriate module, like someframework.py which would scope all those external expectations in a single location18:00
cr3jtv: the second approach might be nice if I expect the method to be called from within the code base in addition to the framework expecting a certain naming convention. thanks!18:01
jtvhappy hacking18:02
=== jtv is now known as jtv-zzz
=== benji-lunch is now known as benji
=== al-maisan is now known as almaisan-away
EdwinGrubbsabentley: ping18:35
abentleyEdwinGrubbs, pong18:36
=== salgado-lunch is now known as salgado
EdwinGrubbsabentley: I read your response to my email about a generic job queue. I'm not interested in creating an end-all-be-all solution. I just think we don't need a bunch of almost identical cronjobs. The registry is adding a couple of job tables, and it would be nice if anybody else adding a table could just re-use one cronjob.18:40
abentleyEdwin, that was a response to Julian Edwards' email, not yours.  My thoughts on having a single script were covered by thumper.18:42
EdwinGrubbsabentley: I'm wondering if you have any thoughts on how a given class of jobs should opt-in to using a generic job queue. The interface could subclass from a GenericJobSource interface, or for more fine grained control, each implmentation could specify classProvides(GenericJobSource).18:43
EdwinGrubbsabentley: so, in response to thumper, I would like to provide a round-tuit, since you only have square ones.18:44
abentleyEdwinGrubbs, I think that each job should have its own configuration, and should have its own crontab entry, with the particular configuration specified as a commandline parameter.18:45
abentleyEdwinGrubbs, the script itself can then be generic.18:45
abentleyEdwinGrubbs, one thing that's important to the LOSAs is that each task type have its own database ID.18:48
EdwinGrubbsabentley: why do the LOSAs want each job type to have it's own db id? Stub only wanted each cron script to have its own database id.18:49
abentleyEdwinGrubbs, The losas want it so that they have better visibility into resource use problems.  stub only wanted each cron script to have its own database id because each cron script represented a task type.18:50
abentleyEdwinGrubbs, we haven't yet found a way to provide that visibility without database ids, and you say you don't want to do a huge change, so...18:51
EdwinGrubbsabentley: having the generic cron script use a bunch of separate crontab entries for each task seems like it could lead to a dangerous number of parallel processes. Running them sequentially would help prevent that. A single cron process could switch db ids, and the config could just map job types to db ids.18:53
abentleyEdwinGrubbs, Running jobs sequentially would harm responsiveness, potentially quite significantly.18:55
abentleyEdwinGrubbs, I don't agree that the scale we're talking about could lead to a "dangerous" number of parallel processes.18:56
abentleyEdwinGrubbs, I agree that we could switch DB ids in the script if that seems like a good implementation choice.18:56
=== beuno-lunch is now known as beuno
EdwinGrubbsabentley: Even if paralell process won't overload the system, it will improve throughput if the parallel processes can run any job type, so I think I will go that route.19:07
abentleyEdwinGrubbs, in other words, provide the parallelism via the script, not by running several scripts at once?19:08
EdwinGrubbsabentley: well, either the script could be threaded, or there could be multiple crontab entries for the same script, but the crontab entries wouldn't have an argument that limited that process to just one type of job.19:09
abentleyEdwinGrubbs, there will need to be limits on the types of jobs that run on a given machine.  CreateMergeProposalJobs must run on crowberry, for example.19:10
abentleyEdwinGrubbs, MergeProposalJobs are supposed to run on loganberry.  (They could also run on crowberry, but that would waste crowberry's resources.)19:11
EdwinGrubbsabentley: I'm not planning on moving over existing job types. I'm just planning on providing a simple way for a developer to choose to have their job class run on the generic cron script.19:11
abentleyEdwinGrubbs, so when I choose to use that for my latest job type that can only run on loganberry, how will I do that?19:12
=== jcsackett_ is now known as jcsackett
EdwinGrubbsabentley: I wasn't aware of that feature requirement. However, instead of giving the generic cron script a job type argument, the config could specify which servers that a job type can run on, or there could be names for groups of jobs depending on what resources they need. A server's config would just have to specify which groups it can run based on which resources (e.g. external network access, or storage access) it provides.19:17
abentleyEdwinGrubbs, I will be happy if the new system provides control over which hosts the job runs on.19:20
abentleyEdwinGrubbs, I still don't think it's a good idea to run distinct job types sequentially, because they can have radically different performance characteristics.19:21
abentleyEdwinGrubbs, so if you introduce parallelism, I would suggest (at least) one thread/process per job type.19:22
abentleyEdwinGrubbs, you should also look at the TwistedJobRunner, because it has support for parallelism.19:24
EdwinGrubbsabentley: how does someone add a crontab entry anyway? TwistedJobRunner would at least eliminate that step. My main goal is to make it possible to add job types with as little work as possible.19:28
=== salgado is now known as salgado-doctor
abentleyEdwinGrubbs, add a request to https://wiki.canonical.com/InformationInfrastructure/OSA/LaunchpadProductionStatus19:29
lifelessmoin19:44
jelmerlifeless: hi19:44
jelmerlifeless: Thanks very much for that fix yesterday; I crashed shortly after our conversation on IRC.19:45
lifelessno probs, did it work?19:45
lifelessabentley: EdwinGrubbs: I agree that serialised jobs of different sorts is undesirable19:46
jelmerlifeless: From what I've seen it did.19:46
lifelessjelmer: great19:46
* jelmer disappears off to vacation19:47
=== lifeless changed the topic of #launchpad-dev to: Launchpad Development Channel | Performance Tuesday | Week 2 of 10.10 | PQM is open for business | firefighting: - | https:/​/​dev.launchpad.net/​ | Get the code: https:/​/​dev.launchpad.net/​Getting
cr3leonardr: hi there, might you have a moment for advice on decorators for interface methods and attributes?21:31
leonardrcr3, sure, but my latency may be very high21:35
cr3leonardr: ditto :) so, the problem I'm trying to solve is that I have classes that are expected to have methods named with underscores by the framework but I'd like to adhere to the python style guide which uses camelCase instead.21:39
leonardrcr3: you can use export_as to publish a named operation under a name different from the underlying python method name21:39
cr3leonardr: I was thinking it might be cool to have interfaces define methods using camelCase and decorate the methods with something like @compatible_as("uses_undecores"), where the string would be the compatible method name which would be defined by the decorator in the class implementing the interface21:40
cr3leonardr: could I use that even if I don't intend to export the method through lazr?21:40
leonardryou can use it, but nothing will happen21:41
cr3leonardr: in other words, does export_as simply create another alias for the name of the method in the class implementing the interface?21:41
leonardrno, lazr.restful creates a _totally new_ adapter class21:41
EdwinGrubbslosas: I have some non-urgent questions regarding the cronjob setup.21:41
leonardrin which methods have different names21:41
cr3leonardr: ah, so what would you think of @compatible_as("other_name") in this non-lazr context then? does this approach make sense?21:42
leonardrcr3: can you sketch out the interface and its implementation as it would work without the camelCase?21:42
leonardri don't have a picture of what you have now21:43
abentleythumper, how would you ensure that the comments, revisions and incremental diffs appeared in a particular order?21:43
cr3leonardr: https://pastebin.canonical.com/37433/21:46
leonardrcr3: you could get that to work by putting the annotation in the *implementation*21:49
cr3leonardr: get_user = getUser21:49
leonardrif you had it in the interface, you'd need to run grok or something on the interface to do something like "find all the registered implementations and add methods to them"21:50
leonardrbut if you put it in the implementation, you could just do this, with no annotator:21:50
leonardrget_user = getUser21:50
leonardrwhich i guess is what you just said21:50
cr3leonardr: if so, jtv suggested that earlier, but I feel it's tucked away too much21:51
leonardrcr3: tucked away just by virtue of being in the implementation?21:51
cr3leonardr: that's a good way of putting it, I guess it's alright21:52
lifelessgary_poster: hi21:53
gary_posterlifeless, hi21:53
lifelesswould you like to catch up?21:53
leonardrcr3: the problem is that the interface just puts constraints on any possible implementation21:53
leonardryou can specify that any possible implementation must implement both get_user and getUser and that they must do the same thing, but you still have to actually do the work21:54
cr3leonardr: well, @compatible_as would man that any implementation must implement getUser but would also have get_user defined for free21:55
cr3s/man/mean/21:55
gary_posterlifeless: Thank you.  I'll be stepping out in 15 min, and in another conversation now.  Would a very quick catch-up be useful, since the next time we can do so is a whole day away?21:56
cr3leonardr: but, as you said earlier, that would imply something like grok would have to go modify each implementation. I feel that's somewhat cleaner than rely on each implementation having to remember to define get_user as well as getUser21:57
leonardrcr3: problem is you can't do that in an interface. interfaces don't give you anything for free, they just specify the work that must be done21:57
lifelessgary_poster: nothing urgent; was just going to chat over the zope conf stuff; architectural concerns for ajax; apologise for the21:57
lifeless# of bugs I filed while you were gone...21:57
gary_posterlifeless: heh, yeah that's a bit overwhelming.  At least I'm not at a lack of things to do ;-)21:57
lifelesswell still have some spikes in https://lpstats.canonical.com/graphs/OopsLpnetHourly/20100914/20100921/ I need to track down21:58
leonardrcr3: well, that's certainly something grok can do21:59
leonardrit might be a little simpler if you put the grok code in the implementation, though21:59
leonardr@fill_in_methods(IAuth)21:59
leonardrthat way IAuth wouldn't have to find Auth. Auth already knows about IAuth22:00
lifelessUrsinha: hiya22:00
leonardryou could even have @fill_in_methods() call implements()22:00
leonardrand use it instead of implements()22:00
cr3leonardr: interesting, I'll definately consider that22:01
leonardrcr3: what's the framework that wants you to use underscores?22:01
leonardrdjango?22:02
cr3leonardr: and oauth22:02
wallyworldmorning22:03
leonardrcr3: consider calling it @implements_for_django or something22:04
leonardrand then reference django as well in your interface annotations22:04
leonardr@django_name('get_user')22:05
cr3leonardr: I feel this is more generic though, since I've already encountered the problem with two frameworks in the very early stages of a project which has only had three commits so far :)22:05
leonardrcr3: ok, well, make some reference to what is happening22:06
cr3leonardr: also, I was thinking this could also be an intellectual exercise in an attempt to do things right... as long as it's not too long to implement either :)22:06
thumpermorning22:06
leonardrthat the interface being implemented incldes method renames that need to be added22:07
thumperwallyworld: are you around for a standup now?22:07
cr3leonardr: indeed22:07
wallyworldyup22:07
lifelessUrsinha: when you come back, I need a hand with the deployment script22:07
thumperabentley, rockstar: one of you host?22:07
* rockstar realizes it's standup time!22:08
abentleythumper, I will.22:08
gary_posterlifeless: spikes: interesting.22:10
gary_posterzope conf stuff: there's some small things of interest.22:10
gary_posterI mentioned publicly that I wanted to switch to a WSGI front end, and then I would be interested in someone making a WSGI simple openid consumer plugin because I don't see why that can't be shared, and the existing implementation like repoze.who are complex and more flexible than we or many other projects would need.22:11
gary_posterI got two discussions about the WSGI openid plugin within the hour, with one proposed implementation and a review request (from Martin von Löwis) the next day.  Perhaps I didn't clarify sufficiently that we weren't *immediately* ready :-)22:11
gary_posterI mentioned the long poll idea, but it took a long time for people to see the point.  Chris McDonough proposed web3 on the web sig with a mechanism that would have let us do what we want but that was not the intent of the design, so no one responded when I said that it would be nice.  Maybe I didn't explain it well enough...it is awfully close to the use case of passing an iterable (which WSGI supports natively, 22:11
gary_posterthe difference is that the long poll approach needs you to be able to send headers once the deferreds have been processed.22:11
gary_posterAnyway, I think I see how to do that.  The kind of collaboration we need is more on the WSGI or Twisted side.  I think we should just try it and see how it works, seeing if we can get Twisted people to help out.22:11
gary_posterBut now I have to run :-)22:11
lifelessciao22:13
rockstarWhat. The. Hell. My system just shat itself back out to the login screen for no reason at all.22:13
lifelessX crashed22:13
lifelessor something similar.22:13
rockstarlifeless, yeah, the screen went all white or something.22:14
lifelesscheck your X log22:14
mtaylorlifeless: wanna see something weird?22:28
mtaylorlifeless: https://bugs.edge.launchpad.net/drizzle/+bugs?search=Search&field.assignee=mordred <--- there's my drizzle bugs...22:28
mtaylorlifeless: now click on #622576, which is listed as High/Confirmed22:28
_mup_Bug #622576: plugin status vars not working <Drizzle:Confirmed for mordred> <Drizzle dexter:Invalid by mordred> <Drizzle elliott:Invalid by mordred> <https://launchpad.net/bugs/622576>22:28
mtaylorand then you see it's invalid in all of the places I can mark it invalid. :)22:29
lifelessplease file a bug22:30
lifelesslooks like a series / nomination / infestation bug22:31
lifelessthere are three tasks22:31
lifelessone task is project wide22:31
lifelessbut its knobs are hidden22:31
jml<corecode> % bzr branch lp:ubuntu/mdadm22:51
jml bzr: ERROR: Server sent an unexpected error: ('error', '<Fault -1: "Unexpected Zope exception: CannotHaveLinkedBranch: <Distribution \'Ubuntu\' (ubuntu)> cannot have linked branches.">')22:51
jml what am i doing wrong?22:51
jml^^^ thumper, from #ubuntu-devel22:51
thumperit isn't linked most likely22:52
thumperjml: https://code.edge.launchpad.net/ubuntu/+source/mdadm no branches22:53
jmlthumper, it's the wrong error for no branch22:53
thumperjml: yes, there is a bug filed about bad errors22:53
jmlthumper, is it going to be fixed soon?22:54
thumperjml: no one is looking at it right now22:54
jmlthumper, it was introduced by the recent private branches stuff right?22:55
thumperyes22:55
thumperas we pushed the checks deeper22:55
jmlthumper, since it's a regression introduced by a recent change, I reckon it would be a good idea to bump the bug up in the queue22:57
lifelesshmm, time to tackle BugTask:+index methinks23:04
lifelessChex: thanks for CP23:04
Chexlifeless: yes sure, your welcome23:06
mwhudsonis buildbot un****ed yet?23:06
lifelessmwhudson: it was fine last night23:07
mwhudsonok23:07
lifelessmwhudson: yeterdays CP is live now23:07
mwhudsonlp and db_lp are offline, i see23:07
lifelessnow there is a buglet with the qatagger to identify23:07
lifelessmwhudson: they are ec2 slaves23:07
mwhudsonmy branch passed ec2 yesterday but didn't land because of testfix23:07
lifelessmwhudson: so thats not in itself an issue23:07
marsmwhudson, don't worry, the CI system is being a real pain right now, but I plan to work on it.23:22
lifeless'click clack'23:23
mwhudsonmars: \o/23:23
thumperI have a general statement about our buildbot builders, lp and db_lp are failing a lot, if we don't care, we should remove them, if we do care we should fix them23:26
thumperlifeless: what is it to be? ^^^23:26
wgrantWe can't really remove them until Hardy is gone.23:26
thumperso... when are our appservers going lucid23:26
thumper?23:26
elmothey are23:26
elmoonly the DB servers are hardy now23:26
thumperreally?23:27
thumperawesome23:27
thumperso... we can get rid of the hardy builders23:27
marselmo, just the DB?23:27
wgrantThat's convenient.23:27
marswhat thumper just said23:27
wgrantAs long as the Lucid builders aren't running 8.4.23:27
thumperpython 2.5 is dead, long live python 2.623:27
elmothumper: https://wiki.canonical.com/InformationInfrastructure/OSA/Projects/LucidUpgrades23:27
thumperelmo: thanks23:28
marswhoohoo!  When did that get finished?23:28
wgrantAre the Lucid builders using postgres 8.3 or 8.4?23:28
elmomars: last rollout was the last big push23:28
elmoif someone knows their machine names, I can check23:29
marselmo, pilinut23:29
elmopilinut is 8.423:29
wgrantBecause we probably still want the Hardy ones around if they're 8.423:29
elmowe could downgrade them to 8.3 on lucid23:29
marshmm23:30
derycklifeless, ping23:31
marsso we develop on 8.4, EC2 runs 8.4, buildbot runs 8.323:31
lifelessderyck: hey23:31
deryckhey23:31
lifelessthumper: I wrote to the list23:31
derycklifeless, are you building CPs for every rev in stable now that gets qa-ok?23:31
lifelessthumper: we care because it breaks production-devel->production-stable builds if python 2.6 only stuff gets in.23:31
lifelessderyck: hell yeah23:31
deryckawesome23:32
lifelessderyck: but only full merges, not actual cherry picks23:32
lifelessso for instance23:32
lifelesshttps://devpad.canonical.com/~lpqateam/qa_reports/launchpad-stable-deployment.txt23:32
lifelessRevision 11556 can be deployed: qa-ok23:32
lifelessRevision 11557 can not be deployed: not-ok23:32
marselmo, wgrant, unfortunately I do not know enough to say that downgrading to 8.3 would cause much hardship for packaging, dependencies, etc.23:32
lifelessI would do 11556, but not 11558 even if its 'ok', because 11557 isn't ok.23:32
marselmo, wgrant, stub would know though.  And he'll be online in a few hours23:32
lifelessmars: thumper: no we can't get rid of the hardy builders23:33
lifelesssee my mail to the list where I already detailed this.23:33
derycklifeless, ok, cool.  And the upshot is we don't need to build CP merge requests ourselves any longer, right?23:33
thumperlifeless: so we should fix them23:33
thumperlifeless: because right now they aren't23:33
lifelessthumper: yes23:33
lifelessthumper: I totally agree23:33
* thumper cracks the whip23:33
elmomars: I think it's fine - we run sourcherry as lucid but with 8.4 + 8.3 installed and 8.3 is the primary23:33
elmomars: FWIW23:33
lifelesswe also need to make devel->stable promotion require *both*23:34
wgrantmars: We ran 8.3 on Lucid for ages.23:34
wgrantOn every dev system.23:34
wgrantAnd mawson is running it.23:34
lifelessderyck: so, if you want something that is *after* a non-qa'd rev, you can do a few things:23:34
lifeless - help get that non-qa'd rev qa'd23:34
lifeless - do a manual cp around it23:34
lifelesssometimes we'll have  abad rev, like 11566, where we need to wait for the fix to be ready as well and land a wide range of revs.23:35
lifelessthe goal is, obviously, to be doing 1 rev at a time.23:35
mwhudsonlifeless: i guess reverting the bad rev is also an option?23:35
marswgrant, yep.  I am worried about test coverage, and trying to get all systems running the same thing.  Dev is moving to 8.4.23:35
marsor has moved for new setups23:35
wgrantmars: Right, which is why I fear killing off lp and db_lp when they are the only 8.3 we have.23:36
wgrantBesides production.23:36
lifelessmwhudson: yes, in which case the revert is the 'fix' and we still need to land a wide range of revisions.23:36
mwhudsonlifeless: right23:36
lifelessderyck: once mthaddon has the qastaging up and running23:37
lifelessderyck: we can stop deploying to edge w/out qa23:37
lifelessderyck: and this will become a bit simpler - we'll just deploy stable to edge + lpnet, rather than deploying production-stable, or something like that.23:38
wgrantRevs without MPs make me sad.23:38
mwhudsonwgrant, lifeless: btw, do you know if the buildd-manager problem i had yesterday is fixed yet?23:38
derycklifeless, this is awesome.  I don't see an email outlining this is active now.  I see your "always deploy devel" email reminder, but that's it.  What subject is it?23:38
wgrantmwhudson: It should be.23:39
wgrantNot sure how.23:39
wgrantBut the branch landed overnight.23:39
mwhudsonheh23:39
mwhudsoni guess i can find out23:39
mwhudsonwgrant: it was buildd-manager only?  i don't need to reinstall launchpad-buildd?23:39
wgrantNo, it's a master-only change.23:39
mwhudsoncool23:39
wgrantIf you confirm that it no longer exhibits yesterday's problem, I'll update the docs with an extra step that's required to process the uploads.23:40
lifelessderyck: well the overall RFWTAD process documents the end goal23:40
lifelessderyck: I'm just following the existing process for deploying midcycle using the qa tools that have come live from that process to aid me23:40
lifelessderyck: I'm waiting for mars and Ursinha to send their mail about the qatagger.23:41
lifelesswhich was meant to happen last week.23:41
* lifeless eyeballs mars and Ursinha 23:41
derycklifeless, right, I totally get.  And I completely understand we're moving to this.... just meant that since you're patching everything as CPs now, our devs don't need to put single CPs together.  bdmurray just put one up, for example.23:41
marswgrant, I'm just looking up that thread that Robert mentioned.  Otherwise, I wonder why we don't run lucid 8.4 + lucid 8.3.  I would think it would be easier to maintain than lucid 8.4 + hardy 8.3.23:41
mwhudsonwgrant: ok23:41
marslifeless, on the list for today23:42
lifelessderyck: well they do if they want it promptly: we're a week behind on what I'm doing because of (teething problems, things not being qa'd promptly)23:42
wgrantmars: Do we know when 8.4 is happening?23:42
wgrantNot until the next rollout?23:42
* mars shrugs23:42
lifelesswgrant: it will be done rolling AIUI23:42
wgrantEven the master?23:43
lifelesswgrant: same slony version, different pg, replicate, switch master, continue.23:43
wgrantThat seems unlikely, but nice.23:43
wgrantAh, that works?23:43
wgrantHandy.23:43
lifelessAIUI, YMMV, AS23:43
lifelessderyck: so, if something needs CPing - do it. If its near the number in https://devpad.canonical.com/~lpqateam/qa_reports/launchpad-stable-deployment.txt, consider helping that number move up23:44
lifelessderyck: otherwise just CP as normal.23:44
lifelessderyck: which is why I haven't sent a mail about this; its not a reliable service yet )23:44
lifeless:)23:44
wgrantWhy is the Launchpad Credentials Manager going through the webapp with OAuth, rather than using a restricted API?23:45
wgrantThat seems unnecessarily fragile.23:45
lifelesswgrant: its being backed out23:45
wgrantAh.23:46
marslifeless, so I read the thread.  Are you saying we need the hardy builders because the LP packages have to still install on the db machines, which are postgres 8.3 on hardy?23:47
lifelessyes23:47
lifelessotherwise we can't rollout23:47
lifelesswhich would be ... bad23:47
wgrantWhy do the DB servers have LP code on them?23:47
lifelesswgrant: security.py23:47
lifelesswgrant: database/schema/patch*23:47
wgrantWell, that *could* be run remotely.23:47
mwhudsonwgrant: gaarrr23:47
wgrantmwhudson: Hm?23:48
lifelesswgrant: more fragile in the event of network glitches etc.23:48
mwhudsonwgrant: i now have a build thats "Needs building  on Bob The Builder", but buildd-mananager isn't scanning that builder23:48
lifelesswgrant: we choose not to, for now.23:48
derycklifeless, gotcha, thanks23:48
mwhudsoni started the manager before i started the librarian, so the attempt to dispatch the job failed hilariously23:48
* deryck is taking pics of kids in super suits while chatting :-)23:48
mwhudsonthe builder is marked ok and idle though23:49
lifelesswgrant: https://bugs.edge.launchpad.net/soyuz/+bug/641338 - is that a root cause dup?23:49
_mup_Bug #641338: Archive:EntryResource:syncSource timeouts <timeout> <Soyuz:Triaged> <https://launchpad.net/bugs/641338>23:49
mwhudsoni guess i can restart buildd-manager23:49
marslifeless, so if we have a near release window for the DB server updates, then we do not have to fix the lp and db_lp builders.23:49
wgrantmwhudson: buildd-manager isn't scanning the builder, or just isn't dispatching?23:49
mwhudsonwgrant: isn't scanning23:49
marslifeless, if they are upgraded next week, then why go through the trouble?23:49
wgrantmwhudson: Urgh.23:49
wgrantKill it and restart it.23:49
mwhudsonthe attempt to dispatch really did blow up though23:49
mwhudsonthree tracebacks!23:49
wgrantlifeless: Probably not entirely.23:50
wgrantlifeless: The copy checker is awfully slow.23:50
wgrantUnnecessarily so.23:50
mwhudson2010-09-21 10:44:27+1200 [-] canonical.librarian.interfaces.UploadFailed: [localhost:58090]: [Errno 110] Connection timed out23:50
lifelessmars: I can't asnwer that until I know how much trouble is needed.23:50
mwhudson2010-09-21 10:44:35+1200 [-] exceptions.AttributeError: 'BuilderSlave' object has no attribute 'clean'23:50
mwhudson        exceptions.AttributeError: 'NoneType' object has no attribute 'specific_job'23:50
lifelessmars: but its a pipeline stall for 8 hours (two runs) when it breaks.23:50
wgrantmwhudson: WTF? BuilderSlave?23:50
lifelessmars: and I've run into this every second day or so in the last work week23:50
wgrantIt should be a RecordingSlave!23:50
wgrantJULIAN!23:50
marslifeless, yes, I understand, it sucks.23:51
mwhudsonyes, i think it's the failure counting stuff23:51
mwhudsonlet me paste the whole misery23:51
mwhudsonbah23:51
marsneed to go afk, back later23:51
wgrantmwhudson: You could try r1158023:51
mwhudsonnow it's just failing23:51
lifelesswgrant: are you working on that ?23:51
lifelesswgrant: its perf tuesday ;)23:51
wgrant11581 has some buildd-master changes that I don't quite understand, so I can't trust that they're not this breakage.23:51
jmldid you guys see https://code.edge.launchpad.net/~jml/launchpad/buildd-deferred/+merge/36010 and https://code.edge.launchpad.net/~jml/launchpad/buildd-deferred-fo-sho/+merge/36037, btw?23:52
wgrantlifeless: It's also I-have-far-too-many-projects week :(23:52
lifelessmars: will Ursinha be back? or do you know about the qatagger deployment story?23:52
jml(speaking of BuilderSlave)23:52
mwhudsonwgrant: http://pastebin.ubuntu.com/497319/23:52
wgrantjml: That's the change to which I refer.23:52
wgrantI'm currently trying to interpret the diff.23:53
lifelessfor line in lines:23:53
lifeless...23:53
wgrantlifeless: Hm?23:53
mwhudsonand bah, it fails in almost the same way when i restart the buildd-manager23:53
lifelesswgrant: a joke23:53
wgrantAh.23:53
jmlwgrant, my hunch is that it doesn't swap a BuilderSlave for a RecordingSlave anywhere23:54
wgrantjml: It already didn't in some situations.23:54
wgrantWhich caused breakage. But it may no longer cause the same breakage, so I don't recognise it.23:54
jmlwgrant, I mean, the diff doesn't really change call sites23:54
jmlwgrant, if we're talking about buildd-deferred/+merge/3601023:54
jmlwgrant, the breakage is because of the shift away from magic getattr methods23:55
wgrantmwhudson: Is the librarian running?23:55
mwhudsonwgrant: it wasn't then23:55
mwhudsonwgrant: but when i restart with it running, it fails in the same way, except without the first traceback23:56
jmlwgrant, BuilderSlave needs an explicit clean() method that forwards to the xmlrpc proxy23:56
wgrantmwhudson: Pastebin pls.23:56
wgrantBetter tests pls.23:56
wgrantThe fact that buildd-manager has been completely broken in devel twice in the last week hints that we might possibly need better tests, I think.23:56
jmlwgrant, working on it.23:57
wgrantExcellent.23:57
jmlwgrant, see the two diffs I pasted.23:57
lifelesswgrant: presumably 2201  OOPS-1723N1442  Archive:+copy-packages is simillar ? (thats statement counts)23:57
mwhudsonwgrant: http://pastebin.ubuntu.com/497321/23:57
wgrantIt should be easier now that jelmer's branch has removed the Popen crap.23:57
wgrantlifeless: Yes.23:57
jmlmwhudson, http://pastebin.ubuntu.com/497322/ this will address the clean() thing23:57
wgrantYeah, looks like it.23:57
mwhudsonwgrant, jml: it's possible that my playing around yesterday left the db in a strange state23:57
wgrantNot sure about the specific_job thing, though.23:58
wgrantThat's a bug, even if your DB is borked.23:58
jmlmwhudson, soyuz ought to be more robust in the case of... yeah, what wgrant said23:58
wgrant(which it is)23:58
wgrantjml: Not Soyuz any more lalala.23:58
mwhudsonyeah23:58
jmlbuildmaster23:58
jmlsuch a silly name. I'd of called it a chuzwazza23:58
mwhudsonok, it's building now23:58
mwhudson(with jml's patch)23:59
jmlI can add that patch with tests tomorrow, if you'd like23:59
mwhudsonit seems like it would be a good idea23:59

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