/srv/irclogs.ubuntu.com/2011/12/20/#launchpad-dev.txt

jelmerhmm, a branch name from StevenK that doesn't make me go "WTF?"00:06
* jelmer is disappointed00:06
StevenKjelmer: Which one?00:06
jelmerStevenK: refactor-imports-redux00:07
StevenKIf it doesn't make you go WTF, Diff against target: 11295 lines (+1298/-1451) 531 files modified will00:07
wgrantsinzui: Hm, so just launchpadstatistic, librarian, logintoken and temporaryblobstorage left.00:08
lifelesspoolie: we do more than 1M pages a day, we'd blow past their taster-account in no time ;)00:08
wgrantsinzui: I have a branch from a couple of weeks back for temporaryblobstorage.00:08
StevenKwgrant: sinzui was going to tackle logintoken00:08
poolielifeless, how can i get the raw form of an oops?00:23
poolieor anyone00:23
lifelessfrom where00:33
StevenKwallyworld__: O hai. https://code.launchpad.net/~stevenk/launchpad/productset-all-lies/+merge/8631401:17
wallyworld__StevenK: looking now01:17
wallyworld__StevenK: any tests to amend?01:19
StevenKNot that I could see01:19
wallyworld__ec2 will tell us i guess01:19
StevenKTempted to just -vvm registry01:19
lifelesssure there is a test to add ?01:19
StevenKI'd be surprised if ProductSet:+all wasn't tested by some doctest01:20
* StevenK runs registry tests01:20
wallyworld__StevenK: i've +1'ed it but it would be cool if there were a doc test that could be added to01:20
wallyworld__or whatever01:20
lifelesspoolie: :/01:59
poolielifeless, ?02:31
pooliei found it on disk on devpad02:31
pooliewhy the frownie?02:31
lifelessI may have misinterpreted your answer to my reply to your advert for bson-dump02:32
lifelessELONGCONTEXT02:33
poolieoh02:33
pooliei agree it would be good to do02:33
pooliei don't know why i didn't put it elsewhere in the first place02:33
poolieit was a while ago02:33
poolieperhaps all the external oops stuff seemed too much in flux?02:33
poolieor there were too many options for where to put it, so i took a lame default02:33
lifelessI felt, apparently wrongly, that you were being a bit uhm, 'well I've done, nyar'.02:34
lifelessthe perils of low bandwidth comms02:35
poolieah, not really02:35
lifelesspoolie: I'd really like to delete utilities/*02:35
pooliefeeling a bit "omg so few days before holidays etc"02:35
poolieif you tell me a specific place to move it to that will help02:35
lifelessheh, fair enough.02:35
pooliei guess, something that knows about bson encoding and will be installed for all developers02:36
pooliei think splitting stuff is good but a minor consequence is that 'where do i do this' gets a bit harder02:36
lifelessI'd put it either in oops-datedir-repo or oops-tools itself02:36
lifelessits not urgent to move it02:39
lifelessif you're busy with other stuff in the holiday lead up, just ignore it.02:40
pooliei'll move it to oops-tools03:00
StevenKfrom bzrlib.plugins.builder.recipe import RecipeParseError03:22
StevenK    ImportError: No module named builder.recipe03:22
* StevenK peers03:22
jtvStevenK, wgrant: I'm sorry to hear that I broke buildmaster again.  Never expected there'd be no missed spots at all, but didn't expect this many either.03:30
StevenKDid Gavin land the fix?03:30
StevenKjtv: The test coverage of buildd-master is just *horrid*.03:31
StevenKAh, reverted in r14552.03:32
StevenKBut marked with the bugs, and not incr. Sigh.03:32
jtvShould that be incr?03:32
jtvI completely forgot about that tag.03:33
StevenKjtv: You're rolling back the code, so I guess the next step is fix the three bugs and land it again.03:33
jtvWell I'm not rolling anything back personally; I have to go back to clearing out the house.03:34
jtvBut yes, I'm afraid that's the process.03:34
StevenKjtv: If so, our process says the 3 bugs should be closed. Except they won't be fixed.03:34
jtvOh.03:35
wgrantSo, PQM's been whinging about a conflict for 6 hours now.03:35
StevenKjtv: The qa-tagger will tag them needstesting, they'll get marked untestable, and rolled out.03:35
wgrantIs someone going to fix that at some point?03:35
StevenKI'm trying to sort out ImportError: No module named builder.recipe03:36
jtvStevenK: the bit you said about qa-tagger is what will happen regardless, no?03:36
StevenKjtv: Yes, but if was marked incr, the qa-tagger won't slam the bugs to Fix Committed.03:36
jtvAh, now the pieces come together.03:37
jtvBut I thought you said the rollback should be [incr], not the fixes themselves?03:38
StevenKjtv: Right. The rollback will be marked 'as part of this bugs fix', and then when the fixes land properly, the bugs should hit Fix Committed.03:39
jtvBut you said the 3 bugs should be closed, withing being fixed..?03:39
StevenKjtv: No, I said that what was likely to happen due to the lack of incr.03:42
jtv1StevenK: you said "if so, the process says the 3 bugs should be closed."  What was the "if so" referring to?03:45
StevenKjtv1: I can see we are talking past each other. I explained what would likely happen, and then shifted to talking about what should have happened instead.03:46
jtv1Ah, I think I get it now.  Thanks.03:47
StevenKIs checkwatches safe to run on qas?04:01
wgrantStevenK: Not really, no.04:04
wgrantStevenK: And it wouldn't be a very useful test anyway.04:04
StevenKwgrant: Okay. Safer to qa-untestable my checkwatches branch?04:05
wgrantI think so.04:05
StevenKwgrant: Looking at db-devel versus stable04:10
poolielifeless, hm putting this in with the daemon seems not quite right04:17
StevenKwgrant: PQM silenced. Hopefully.04:20
pooliei'll put it in python-oops04:28
wgrantpoolie: Doesn't it belong in oops-datedir-repo?04:31
wgrantI didn't think python-oops knew about BSON.04:31
poolieit mentions it in the docs but it doesn't use it in the code04:32
wgrantIt doesn't depend on bson.04:32
wgrantThat's all in datedir-repo/amqp04:33
pooliebut it does not seem like you should need the repo code to inspect an oops file04:33
pooliei could make a new package04:33
wgrantWhy not?04:33
wgrantpython-oops doesn't do serialisation.04:33
poolieit seems like overkill for what is basically one line of code04:33
wgrant"oops file" is a concept that's only part of datedir-repo.04:33
pooliethere are two potentially separate aspects04:34
poolieserializing as bson04:34
poolieand writing into per-date directories04:34
poolieyou could reasonably have the first without the second04:34
poolieindeed if you just download one oops you probably will04:35
wgrantSure, but python-oops deliberately doesn't know about serialisation like that.04:35
wgrantThat's left to the repository implementations: datedir-repo and amqp.04:35
poolieamqp has its own separate serialization?04:36
wgrantIt's BSON. I believe it uses datedir-repo's BSON serializer.04:37
pooliefoo04:37
wgrantAll roads lead to datedir-repo :)04:37
pooliepython-oops says in the readme it defines a serialization04:37
pooliethough i suppose it is ambiguous what 'the oops project' means04:38
poolieso that's why i just put it in utilities/.04:39
wgrantI think python-oops' docs are out of date.04:39
wgrantdatedir-repo was extracted in r904:39
pooliehm, so04:43
pooliei don't know04:44
pooliehaving the format be separate from the serialization seems good04:44
pooliehaving no comment at all about what serialization seems dumb04:44
pooliein practice multiple trees assume it is bson04:44
wgrantNo.04:44
wgrantMultiple repository implementations use BSON.04:45
wgrantdatedir-repo has an option to write out rfc822 as well.04:45
wgrantAnd it will read it perfectly happily.04:45
wgrantamqp could be changed to use pickles if you were sufficiently misguided, without affecting datedir-repo.04:46
poolietrue04:46
poolieso there's no reason this should live in one of them rather than the other04:46
wgrantWell.04:46
wgrantI think it makes sense in datedir-repo.04:46
wgrantSince amqp's bson doesn't ever hit the disk as a file.04:46
wgrantIt's purely encoding as it goes into rabbit, and decoding as it comes out.04:47
wgrant(it's then usually handed off to datedir-repo, where it's reencoded and written out into a file)04:47
poolieyeah i see04:47
wgrantSo I think this script belongs in datedir-repo.04:47
poolieand if python-oops-tools offered an option to download it, it would get reserialized again there04:48
wgrantPossibly.04:48
wgrantBut maybe not.04:48
wgrantI think oops-tools is pretty tied to datedir-repo.04:48
wgrantWhereas amqp/datedir-repo/oops are very nicely separated.04:49
wgrantThey actually have sensible interfaces, and work within them!04:49
poolieyou know what, i'll just make it separate04:50
wgrantI think datedir-repo :) But ok.04:51
wgrantStevenK: Did you run that through ec2?04:53
StevenKwgrant: Which? The imports branch?04:53
wgrantYes.04:53
StevenKYeah, I did04:53
wgrantHm.04:53
StevenKWhy?04:53
wgrantA naive global format-imports should have broken stuff unless you were very lucky.04:54
wgrantDue to lp.codehosting's side-effects.04:54
wgrantAlthough I guess it is alphabetically early.04:54
StevenKThere were 4 failures on ec2, which I fixed before lp-landing04:54
wgrantSo it may be OK.04:54
StevenKwgrant: Still nervous?04:59
wgrantStevenK: Slightly.05:00
StevenKwgrant: I can forward you the failure mail if it will ally your concerns.05:01
poolieand there are at least two different python modules called 'bson'05:08
wgrantpoolie: Yes :/05:08
wgrantAnd at least one of them is very buggy.05:08
wgrant(the one we use)05:08
poolie:)05:12
pooliewgrant, lifeless, https://code.launchpad.net/~mbp/python-oops-datedir-repo/bsondump/+merge/8633805:29
bigjoolsgood morning09:08
AutoStaticGood morning09:09
danhgMorning all09:11
=== almaisan-away is now known as al-maisan
AutoStaticSome colleagues have asked me if I could set up an in-house Launchpad server so they could use it for their projects. They're probably only going to use the bugtrack, blueprint and repository functionality. I'm wondering though if Launchpad isn't a bit overkill then. What's your advise? I already set up a bugtracker for them (MantisBT), a Wiki for their blueprints and setting up a repo is not much work either.09:22
StevenKbigjools: Hai. Will you have a chance to do your QA today?09:23
bigjoolsStevenK: hopefully! I got a bit blindsided yesterday09:24
StevenKYes, that's why I didn't bug you then. :-)09:24
bigjoolsI have a theory about poppy09:24
StevenKIt is horribly, horribly broken and needs to die?09:25
bigjoolswell you wrote it :)09:25
* bigjools just hacked on the FTP bit09:25
StevenKBetter than continuing to use Zope's horrible excuse for an FTP server.09:26
StevenKbigjools: What is your theory?09:26
bigjoolsStevenK: the ssh checks connect to the appservers to get the authorisation09:27
bigjoolswhen we have FDT, the XMLRPC connection fails09:28
bigjoolsafter that, it continues to fail forever until restarted09:28
bigjoolsnot sure why, but meh, Twisted09:28
bigjoolsthe swap death was caused by someone using a loop to connect09:28
=== gmb changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: gmb | Firefighting: - | Critical bugtasks: 3*10^2
jmlanyone developing on precise?10:54
jmlAutoStatic: I'd recommend *not* running Launchpad locally.10:54
AutoStaticjml: Yeah, we figured that out too: https://answers.launchpad.net/launchpad/+faq/92010:55
jmlAutoStatic: it's pretty huge and the operational cost is non-trivial, even at low scale.10:55
bigjoolsallenap: in the tests in your branch, it's probably worth refactoring the bit that sets properties on objects in a r/w transaction10:56
jmlAutoStatic: cool.10:56
allenapbigjools: Erm, which bit?10:56
jmlAutoStatic: so, I'm not 100% sure what your question is then :)10:56
allenapbigjools: Like in test_handleStatus_OK_sets_build_log?10:57
bigjoolsallenap: line 72/83 of the diff10:57
bigjoolsallenap: I suspect we'll need to do that a lot more in the future10:57
allenapbigjools: I don't know what a better way would be. I could instead enter read-only mode in each test individually (via a fixture) I guess.10:58
bigjoolsallenap: I was thinking just a test helper10:58
bigjoolslike setattr10:58
bigjoolsbut does the whole transactionny thing10:58
allenapbigjools: With the removeSecurityProxy thing too I assume.10:59
bigjoolsallenap: no, the caller can do that10:59
AutoStaticjml: Well, I got an instance running locally here and my question was more or less a stepping stone to some other questions10:59
allenapbigjools: Okay, I think I have a cool way to do that.11:00
bigjoolsallenap: of course :)  cheers11:00
AutoStaticjml: So I'm going to wipe out that local launchpad and convince my colleagues that they should look for something else11:01
jmlAutoStatic: ok.11:02
=== matsubara-afk is now known as matsubara
jmlbwahahaha11:08
jmlPython 2.611:09
jmlsorry.11:09
jmlgood luck with that.11:09
gmbArgh. My connection drops out for ten minutes and when I get back bigjools has done the review I was doing. It's going to be one of those someone-else-does-all-the-work OCR days, is it?11:16
gmb(Also, he did a better job of it)11:17
gmb(Which galls)11:17
allenapjml: I've had a bash at getting Launchpad built on Precise, but I lost interest (it was late). Seems like the cool kids are using a schroot (which I am) or an LXC.11:18
allenap(running Lucid)11:18
bigjoolsgmb: shurely shome mishtake :)11:19
nigelbWhat's the firefighting section about?11:20
nigelb(in the topic)11:20
bigjoolsif we're in the middle of an incident11:21
nigelbah. It makes topic. Nice.11:21
* bigjools just added a million people on G+ and may live to regret it11:21
* nigelb just searched on G+ for "bigjools"11:23
nigelbDammit.11:23
allenapbigjools, gmb: Thank you both for the reviews :)11:23
bigjoolsnae prob11:24
allenapbigjools: Fwiw, this is what I did to factor out the things you suggested: http://paste.ubuntu.com/776193/11:35
bigjoolsallenap: not so much as a refactoring as a rewriting :)11:37
allenapbigjools: Well, I'm already using it in my next branch, and will probably in the one after that :)11:38
bigjoolsheh11:38
jmlallenap: I'm not suggesting you should actually make this change now, but it might be more re-usable as a Fixture.11:39
allenapbigjools: How do I go about QAing the revert I did? Or do we just say it's fine because it's approximately already on cesium.11:40
allenap?11:40
allenapjml: Yeah, you're right. If it causes enough friction I'll change it.11:41
bigjoolsallenap: untestable11:41
allenapbigjools: Cool.11:42
cjwatsongmb: any further thoughts on my QA suggestions for https://code.launchpad.net/~mvo/launchpad/maintenance-check-precise/+merge/82125 ?11:47
gmbcjwatson: No, no further thoughts (sorry, meant to reply the other day but forgot after a reboot). Could you take care of QAing if for me? I'll make sure it lands today or tomorrow.11:49
cjwatsonmodulo holiday, yes I can11:49
gmbExcellent, thanks.11:49
rick_h__./topic11:52
jmlhmm.12:21
jmlso I have a clean lucid schroot for building packages. Can I somehow leverage that to make an schroot dedicated to hacking on Launchpad?12:22
cjwatsonyou could copy the source directory and add a new entry in /etc/schroot/chroot.d/ for it12:40
cjwatsonand drop the unioniness12:41
cjwatsonI use a 'lucid-lp' schroot12:41
jmlcjwatson: thanks.12:42
jml(also, my next laptop will have an SSD)12:42
jmlhmm. I should probably do something like this for each Canonical-deployed project I work on.12:56
jmlbzrlib.errors.ConnectionReset: Connection closed: Unexpected end of message. Please check connectivity and permissions, and report a bug if problems persist.13:49
jmlgot this trying to fetch bzr-git w/ update-sourcecode13:49
jmlnever mind.13:50
al-maisanjml: the /etc/resolv.conf in your chroot might be out of date..?14:00
rick_h__gmb: got a sec for review? https://code.launchpad.net/~rharding/launchpad/sort_labels_894744/+merge/8628714:01
al-maisanjml: try "sudo cp /etc/resolv.conf <path-to-chroot>/etc/resolv.conf" and see whether that helps14:01
cjwatsonbenji: I noticed that in the three branches of mine you reviewed yesterday, you left an Approved comment but didn't set the MP to Approved; was that deliberate?14:01
benjicjwatson: generally the MP initiator sets it to approved, sometimes they might be getting a DB review too or a UI approval14:02
benjiI set the other one to approved because I was landing it and the machinery won't land unapproved branches.14:03
cjwatsonoh, I didn't know that, my reviewer's always done it for me before14:03
cjwatsonprobably because I've always explicitly asked for landings :)14:03
cjwatsonbenji: ah, and I can't set the MP to Approved because I'm not in ~launchpad14:07
cjwatsonbenji: any chance of landings for always-index-d-i and sign-installer, then, if you have a chance?  It might be best to leave new-python-apt for a bit as it collides with https://code.launchpad.net/~mvo/launchpad/maintenance-check-precise/+merge/82125 and this way I do the merge rather than making somebody else do it14:07
benjiheh, well that would make it harder14:07
benjicjwatson: sure, I'll start the landing of those in a bit14:09
cjwatsongreat, thank you14:10
gmbrick_h__: Sure thing; looking now.14:13
rick_h__gmb: ty much14:13
=== frankban_ is now known as frankban
gmbrick_h__: Approved.14:40
rick_h__gmb: awesome, thanks14:46
=== al-maisa` is now known as almaisan-away
=== aldeka_ is now known as aldeka
=== matsubara is now known as matsubara-lunch
=== almaisan-away is now known as al-maisan
=== gmb changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: - | Firefighting: - | Critical bugtasks: 3*10^2
=== matsubara-lunch is now known as matsubara
benjiI'd appreciate it if some kind soul would review this branch: https://code.launchpad.net/~benji/launchpad/bug-903532/+merge/8642616:30
benjiif that kind soul has some translations knowledge, it would be even better16:30
=== al-maisan is now known as almaisan-away
sinzuibenji, I ca take it16:49
benjisinzui: cool, thanks16:50
sinzuibenji, r=me16:52
benjisinzui: thanks16:53
=== cjwatson_ is now known as cjwatson
=== matsubara_ is now known as matsubara
=== matsubara is now known as matsubara-afk
=== almaisan-away is now known as al-maisan
=== al-maisan is now known as almaisan-away
lifelessgary_poster: I'm around for a bit if you want to talk oopses more20:42
gary_posterthanks lifeless on call20:43
wallyworldsinzui: jcsackett: can we mumble now?21:44
sinzuiyes21:44
wallyworldsinzui: fucking mumble is doing it's thing again where it consumes all my cpu. i have to reboot21:45
james_wanyone want to take a look at https://code.launchpad.net/~james-w/launchpad/bpph-binary-file-urls/+merge/86470 ?22:04
poolieo/ james_w22:10
pooliehi all22:10
james_whi poolie22:11
dobeyhey poolie22:38
huwshimiOn the deployable revisions page it says "Revision 14556 can be deployed: orphaned". Does that mean I can't qa it?22:53
lifelesseither it has no bug linked, or the bug has been closed already22:58
lifelessif its the latter, you can reopen the bug22:58
huwshimilifeless: Will it get picked up by the qa tagger etc. then?23:14
huwshimilifeless: Should it be Fix Committed or will any status other than  Fix Released do?23:15
poolieok now i've played with juju it is annoying me that launchpad doesn't use it23:21
jelmerpoolie: :)23:23
pooliejelmer, i just talked to flacoste about bug 79502523:26
_mup_Bug #795025: no way to gracefully disconnect clients and shut down the bzr server <canonical-losa-lp> <hpss> <launchpad> <ssh> <Bazaar:Fix Released by jameinel> <Launchpad itself:Triaged> < https://launchpad.net/bugs/795025 >23:26
poolieistm there is a safer way to do it23:26
pooliewhich is to have a signal to tell the processes to just stop listening23:26
pooliethen we can start a new one23:26
jelmerpoolie: will that work with haproxy?23:34
pooliei think so?23:34
pooliehaproxy will detect that it's down?23:34
jelmerI haven't looked at it, so not exactly sure how it's communication with services works23:34
jelmerah, so... so we shut the existing one down and then when haproxy starts another one that's using the new code?23:35
pooliei think it's some combination of: seeing if the port is listening, plus pinging a separate http port that reports on the status23:35
pooliemore precisely:23:35
pooliewe tell the existing one "stop accepting connections", and it closes its listening socket23:36
poolieand then haproxy notices it's down, i guess23:36
jelmerthat makes sense23:36
poolieand then we start a new instance listening on the same port, which will be running the new code23:37
pooliethen the old process can either exit by itself when all the connections are done23:37
poolieor the sysadmins can kill it if they want23:37
lifelesspoolie: uhm, thats not sufficient23:44
pooliebecause?23:44
lifelessbecause having the old code running for several weeks will play havoc with things like upgrading xmlrpc verbs23:45
poolie..?23:45
poolielike, removing old verbs on internal xmlrpc that the old code uses?23:45
lifelessyes, or rearranging things; things that you would normally do a server change, change client, cleanup old code sequence23:46
lifelessthis depends on being confident that the client is deployed23:46
pooliemm23:46
lifelessnot to mention that we would like to free disk space from old deploys.23:47
poolieso to have loose coupling we would want to not have those things required to happen in too short of a time window23:47
poolieanyhow, after that time, we can just kill the old procesess23:47
pooliethe client should cope23:47
lifelessright, we can allow a few hours for the old processes to gracefully go away, which is what the current plan aims at23:48
lifelesswe don't want to interrupt someones 6 hour epic initial push, after all.23:48
poolieright23:48
poolieso my plan is23:49
lifelesswe don't want idle heavyweight processes hanging around indefinitely either, which means a way of killing them while idle, which implies the client coping23:49
pooliei think we can do this in two steps23:49
poolie1- move new connections on to the new process23:49
poolieor rather, accept new connections from the new process23:50
poolie2- boot off existing clients23:50
poolie2 is a bit messy becaues23:50
pooliesome clients won't cope well23:50
poolieand it will take unbounded time to get there23:50
poolieand it's just generally more risky23:50
lifelessmmm23:50
lifelessremember we have some fixed paths on disk for the front-forking IPC calls, and we also have N front-end and N forking services to restart23:51
lifelessdoing 1 without waiting for 2 is more complex and doesn't really buy us anything23:51
lifelesswe're still not done-done until 2 has happened23:51
poolieso doing only 1 will let us bump codehosting from every fdt deploy23:52
pooliethat seems highly worthwhile23:52
lifelessno, it won't.23:52
pooliewhy?23:52
lifelesscodehosting isn't in fdt anyhow, its a nodowntime-with-handholding deploy23:53
lifelessthe handholding is because of 223:53
lifelesssolve the handholding problem and it can move to nodowntime23:53
lifelessthe constraints are that we must be safe to delete the deploy directory after the deploy.23:54
lifelesswell, there are probably more, but thats the key one I see.23:54
pooliewhat specifically is the problem23:54
poolieok23:54
lifelessthe problem today is that the nodowntime deploy pauses for hours because we can't interrupt bzr safely, so we wait until there are only a few clients connected then manually check that they are all CI servers and whatnot23:55
lifelessand then interrupt them ungracefully23:55
lifelessthe deploy process is 'upgrade instance 1, upgrade instance 2' - serialised - which gets us no downtime23:56
lifelessduring the deploy, the symlink for the active tree is updated, and after that we assume we can delete the tree at any point23:56
lifelessa few trees are kept around, but when we do multiple deploys in a day, there is no fixed window for when a tree will be deleted23:57
pooliesure23:57
lifelesswe probably need to rejigger a few things, and having a quick-stop-listening step is fine with me as long as we don't set ourselves up for messy failures that we need to ignore / whatever.23:58
poolieso the handholding is that23:58
pooliethey want to delete the tree when the processes using it have finished23:58
pooliehowever, that is always going to take a while, unless we're prepared to just abruptly kill connections23:59

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