/srv/irclogs.ubuntu.com/2011/02/16/#launchpad-dev.txt

leonardrin 'beta', a @mutator_for method is a mutator but it's also published as a named operation00:00
leonardrso you can set bug.status or you can invoke transitionToStatus00:00
leonardrpost-'beta', a @mutator_for method is only a mutator00:00
leonardrthere was no way to describe this behavior with annotations, so i had to add a new feature to lazr.restful00:01
lifelessok00:01
leonardri don't know how it might be happening but i have a suspicion that feature is interfering with what we're doing here00:02
lifelessis that because annotations are per export ?00:02
leonardrannotations can make something not be a mutator anymore, but they can't change what it means to *be* a mutator00:02
lifelessok00:08
* leonardr does what he should have done in the first place and looks at lazr.restful unit tests00:08
leonardrthumper: the second @operation_for_version is not necessary. @operation_removed_in_version("1.0") automatically bumps the version counter up to 1.000:14
leonardrby taking that out i can get setRecipeText to show up in 1.0, but if i make it a mutator in devel it disappears from 1.000:20
leonardrso i think there is a lazr.restful bug00:20
leonardrlet me try to duplicate within lazr.restful where it's more convenient00:22
poolieleonardr, i may well be wrong but i thought i saw lp:kanban give me an edge url to create a token00:23
poolieeven though i updated it to request not to use edge00:23
poolieit may be something weird here00:23
leonardrpoolie: i'm happy to take a look, but i'm long past eod already00:23
leonardrand i have this other problem to look into00:23
poolienp just letting you know00:23
leonardrk00:23
poolieif i can reproduce it i'll file a bug00:23
pooliei may well have just had an out of date tree or something00:23
leonardrsounds good00:23
wallyworld_anyone want to claim a code review? https://code.launchpad.net/~wallyworld/launchpad/request-build-popup/+merge/4886400:33
lifelesswgrant: 4 seconds spent doing portlet calculations AFAICT00:40
lifelesswgrant: I think I'm going to disable ilike temporarily, announce that, and then work on the portlet after I finish bugtask:+index landing00:41
pooliewallyworld_, weak +1 on that00:46
wallyworld_poolie: ?00:47
poolieyour mp looks good to me but i'm not very familar with what you're changing00:49
StevenKwallyworld_: Why are you moving from .builds to builds_for_recipe()? That change looks spurious to me.00:49
wallyworld_StevenK: it's needed because there's now 2 places (soon to be 3) that need to call that. and so moving it off SourcePackageRecipeView to a helper method that can be called elsewhere supports that00:51
poolieleonardr, if you're reading scrollback, it was in fact another reference to edge from kanban00:51
leonardrpoolie: you mean you reproduced the problem?00:52
wallyworld_StevenK: SourcePackageRecipeView and SourcePackageRecipeRequestBuildsAjaxView use it00:52
pooliei did, and it's a bug in kanban not lplib00:52
StevenKwallyworld_: Why can't they just use self.context.builds ?00:53
wallyworld_StevenK: self.context is a recipe and the builds() logic is in the view00:54
LPCIBotProject devel build (445): STILL FAILING in 6 hr 26 min: https://hudson.wedontsleep.org/job/devel/445/00:54
StevenKwallyworld_: .builds for a recipe should still DTRT?00:55
wallyworld_StevenK: different requirements. recipe has getBuilds() and getPendingBuilds(). the view builds() calls these in order to show all the pending builds and 1-5 recent builds00:57
StevenKwallyworld_: Hmmmm00:57
wallyworld_StevenK: the logic to construct the contents of the builds table was already there before my mp. i'm just using it to implement a view that returns just the builds table separately instead of the entire recipe index page00:59
wallyworld_StevenK:  so that an ajax call can do stuff and then refresh the builds table with the latest info without needing a page refresh00:59
leonardrthumper: i'm fairly sure there is a lazr.restful bug but i can't reproduce it within lazr.restful01:01
leonardri can come back to this in the morning if that's all right01:02
thumperleonardr: sure01:24
wallyworld_thumper: the request daily build stuff all working but requires js. do we want to just not show the link if js is disabled?01:29
thumperwallyworld_: it should be quite possible to have it working without js too01:30
thumperwallyworld_: pretty trivially even01:31
wallyworld_thumper: ok.01:31
wallyworld_thumper: also, where did you want the link? currently i've put it just below the build schedule field (just below where it says "daily build")01:32
thumperwallyworld_: got a pic?01:33
* wallyworld_ fires up ksnapshot01:33
wallyworld_thumper: http://people.canonical.com/~ianb/request-daily-build.png  (I don't like the + icon)01:36
wgrantCan I suggest s/daily/manual/?01:37
thumperwallyworld_: why do you have a + icon?01:37
wgrantRequesting a daily build doesn't make a huge amount of sense.01:37
thumperwallyworld_: how about (build now)01:37
lifelesshow about 'immediate'01:37
lifelessor now01:37
wgrantyeah.01:37
wgrantThat.01:37
wallyworld_thumper: i wanted to put an icon there but am unsure which one is best. perhaps we don't need an icon at all. i think it looks plain without one. but that's just me01:38
wallyworld_thumper: the + icon is a placeholder01:38
wgrantIt needs an icon. But I don't know of an appropriate one.01:38
thumperwhat build icons do we have?01:38
cody-somervilleugh01:38
wallyworld_wgrant: while i have your attention - want to be release manager for 11.03? :-)01:38
wgrantThe milestone icon is almost right, maybe.01:38
* wallyworld_ looks01:38
thumperwgrant: the clock?01:39
wgrantthumper: Yes.01:39
cody-somervilleClicking 'Find...' next to 'Assign to:' field when filing a bug takes you to https://bugs.launchpad.net/people/ - making you loose your bug report.01:39
thumperseems reasonable01:39
wgrantcody-somerville: I filed that a year or so ago.01:39
thumperwallyworld_: can you try with the clock icon, and the text: Build now01:40
thumperwallyworld_: then lets look at the picture01:40
* cody-somerville just had a funny image of flacoste using a spinner from twister to randomly select teams to assign to bugs.01:41
wallyworld_thumper: i can't see the clock icon in lib/canonical/launchpad/images??? have i missed seeing it or am i looking in the wrong place?01:41
wgrantwallyworld_: milestone.png01:41
* wallyworld_ nods01:41
wgrantIt is not optimal to overload the icon's meaning. It's mostly used for milestones and series at the moment. But it's the most appropriate thing we have.01:42
wgrantAlthough for a lot of daily builds the flame icon might be appropriate...01:44
thumperheh01:44
thumperwgrant: there is the "building" icon01:45
thumperthe animated one01:45
wgrantthumper: But it's animated :(01:46
wgrantand I don't really like it much.01:46
wallyworld_hmmm. icon='milestone' in the Link() constructor doesn't work. still get the + icon01:50
wgrantWhat's the HTML?01:50
thumperwallyworld_: it should end up being an anchor with the class="sprite milestone"01:53
wallyworld_thumper: yeah, still has "sprite add" though. so Link('+request-daily-build', 'Build now', icon='milestone') doesn't seem sufficient01:54
* wallyworld_ tries a make clean01:55
thumperwallyworld_: you need to restart to see view changes01:56
wallyworld_thumper: already tried that :-)01:56
* thumper goes to collect the girls01:58
wgrantOOPS-1872BZR10882101:58
wgrantThat is a lot of OOPSes.01:58
wgrantAnd a strange OOPS.01:58
mwhudsonwgrant: is that from a smart server process?02:00
* StevenK blinks at the oops report for Soyuz02:01
wgrantmwhudson: I presume so.02:05
wgrantStevenK: Hmm, that's a bit concerning.02:05
wgrantdpkg accepted the version...02:05
StevenKPity it doesn't contain any more information.02:05
wgrantI will find the upload.02:06
wgrant2011-02-15 19:40:56 DEBUG   Verifying source file vdr-plugin-xinemediaplayer_.11-1easyVDR1.tar.gz02:07
StevenKNeat02:07
wgrantI'm surprised dpkg-source accepted that.02:07
StevenKSame.02:07
StevenKAt the very least, that also warrants a dpkg bug.02:07
wgrantAlthough maybe not.02:07
wgrantWhy should dpkg-source check the version string?02:08
wgrantOn extraction, that is.02:08
wgrantOn building, maybe.02:08
* wgrant tries.02:08
wgrantThe source package builds fine.02:09
wgrantI wonder if binaries do.02:09
wgrantYup, and dpkg installs them.02:10
wgrantBaaaaaaah02:10
wgrantThe upstream_version may contain only alphanumerics[33] and the characters . + - : ~ (full stop, plus, hyphen, colon, tilde) and should start with a digit.02:10
wgrant"should"02:10
wgrantStevenK: I guess valid_version may want to be fixed. Although we could decide that we don't want to support that, since it's apparently never been done before...02:12
wgrantWhat do you think?02:12
wgrantInteresting.02:13
wgrant.1 > 102:13
wgrantIn fact it seems to be greater than just about anything.02:14
wgrantSo it's probably a good idea to reject it.02:14
wgrant  41 ProtocolError: <ProtocolError for http://downforeveryoneorjustme.com/http://bugs.opencompositing.org/xmlrpc.cgi: 405 Method Not Allowed>02:24
wgrantAwesome.02:24
lifelesserm wtf02:27
wallyworld_thumper: http://people.canonical.com/~ianb/request-daily-build.png02:28
wallyworld_i don't like the green text with that icon02:29
wallyworld_blue would be better imho02:29
wgrantOnce we have pervasive JS that might be good.02:30
wgrantBut we'd need to change globally.02:30
thumperwallyworld_: hmm...02:30
thumperI don't like that icon02:30
wallyworld_what about the copy icon?02:31
thumperwallyworld_: try "yes"02:31
thumperwhich is the copy icon?02:31
thumperdo we have any gear icons?02:32
wgrantthumper: The copy icon is the edit icon.02:33
wgrantIt sucks.02:33
thumperno, that blows02:33
thumpersucks and blows at the same time02:33
wgrantWe have a gear icon. But it flashes.02:33
wallyworld_thumper: hit refresh02:33
wgrantbuild-success-publishing.gif02:33
thumperwallyworld_: that's a maybe02:33
thumperwgrant: which is that?02:34
wgrantIt's used on Archive:+packages to indicate builds that have finished but are not yet published.02:34
lifelessgrr flakey code02:36
* thumper was looking for that page that shows all the images02:39
wgrantthumper: +graphics02:41
wgrantPossibly for the sole purpose of making it ungreppable.02:41
thumperthanks02:41
lifelessyay for race condition bugs02:42
lifelessgoes to show, don't make things faster.02:42
wgrantlifeless: A race on BugTask:+index?02:42
lifelesswgrant: bug message02:42
wgrantAh.02:42
lifelesssee bugcomment.py - group_comments_with_activity02:43
thumperwallyworld_: what about just using the source-package-recipe icon?02:43
lifelessif you have two bug comments in the same datetime - and the test can generate 7 in the same datetime sometimes - then the sort order depends on sorted() being stable02:43
lifelessbut its not guaranteed stable02:43
wgrantHah.02:43
wgrantThat code was changed recently.02:43
wgrantThe window was just added.02:43
lifelessorly?02:44
* wallyworld_ looks02:44
wgrantPreviously it only grouped things at the same second.02:44
lifelesswgrant: I think you misunderstand02:45
lifelesswgrant: bug comments ordering is the question02:45
LPCIBotYippie, build fixed!02:46
LPCIBotProject db-devel build (369): FIXED in 6 hr 28 min: https://hudson.wedontsleep.org/job/db-devel/369/02:46
lifelesswgrant: same datetime - doesn't matter if its per second or per day or per ms grouping02:46
lifelesswgrant: race still exists, need to disambiguate by message.index02:46
lifeless(though of course, thats *wrong* if we don't fix the bugimporter to use the date of import not the date on the remote tracker.02:46
lifelessbut I'll leave that for the next person that comes in and goes wtf.02:47
lifelessanyhow, Iwas getting that one time in 3, but I think I've fixed it02:49
lifelessthe race that is02:49
* wallyworld_ needs to add source-package-recipe entry to style-3-0.css.in02:51
lifelesslp:~lifeless/launchpad/bug-607935 seems to be passing all tests, fingers crossed.02:53
* lifeless waits for diff to update03:06
* thumper shelves current work to wait for LP.client.cache updates03:07
lifelessI can has review? https://code.launchpad.net/~lifeless/launchpad/bug-607935/+merge/4991503:12
wgrantlifeless: https://bugs.launchpad.net/bugs/7217/+watch/6841003:16
_mup_Bug #7217: epiphany-browser: epiphany crashes trying to print <epiphany-browser (Ubuntu):Fix Released by seb128> <epiphany-browser (Debian):Fix Released> < https://launchpad.net/bugs/7217 >03:16
wgrantWe record errors along with their message and the relevant OOPS.03:16
wgrantI think I will clarify the message and drop the OOPS for most known failures.03:17
wgrantPerhaps "clarify" is not the correct term for expanding on "Unknown"03:17
wgrantExcept that most of the exceptions appear at the bugtracker level, not the bugwatch level.03:20
wgrantArgh.03:20
lifelesswgrant: cool03:27
wgrantNo, not cool.03:27
lifelesswgrant: easy answer - show the bugtracker health against the bugwatch03:27
wgrantlifeless: Against all 20000 bugwatches?03:27
lifelesswgrant: when rendering in a bug03:28
lifelessthey are related, no?03:28
wgrantWell, sure. But I was hoping for a solution that didn't require DB changes :)03:28
wgrantBut I need new enum values for bugwatch warnings anyway.03:28
wgrantSo we might as well just do this properly.03:28
lifelesstis always a tradeoff03:29
lifelessyou could squelch the oops, log at info or whatever so there is a record, and file a bug for future improvements.03:29
lifelessright now users are equally badly off in this proposal.03:29
wgrantWe need a new BugTrackerActivity table and BugWatchActivityStatus.WARNING03:29
wgrantOnce we have those we can notify users adequately.03:30
lifelesswhat would the table store ?03:30
wgrantIt would store bugtracker-wide errors.03:30
wgrantBecause of the batch update mechanism, most of the exceptions don't have an associated bugwatch.03:31
wgrantHas the description textarea on +filebug shrunk, or is it just me?03:33
lifelesswgrant: do we know the bugwatch(es) that we're /trying/ to update?03:34
lifelesswgrant: anyhow, such a schema change sounds reasonable03:34
lifelesswgrant: I only suggest a lower key thing to keep in the spirit of maintenance vs features03:34
wgrantlifeless: We don't.03:35
lifelesswgrant: so the api just triggers 'changes since date' or some such?03:36
thumperwallyworld_: how's that image going?03:36
wgrantSomething like that. I forget the details.03:36
wallyworld_thumper: &^!@^!@! make was failing03:36
lifelessseems to me we know then - that case would be 'all bugs'03:37
lifeless[for that tracker]03:37
wgrantlifeless: That is a lot of bugwatchactivities.03:37
wallyworld_thumper: turn out you have to make sprite_image separately or else it all falls in a heap03:37
wgrantwallyworld_: The sourcepackagerecipe icon wasn't already a sprite?03:37
wgrantWait, what is the sourcepackagerecipe icon?03:37
wgrantOh, right. Package with a branch.03:37
wallyworld_wgrant: no. not a sprite already03:38
wallyworld_but why isn't the sprite_image target invoked for a make clean build or even a make build?????03:38
wallyworld_if i commit this change, then others will have the same issue, no?03:38
wgrantThe sprite image is committed to the tree.03:39
wgrantBecause it changes once in a fairly long time.03:39
wallyworld_oh ok03:39
wallyworld_i didn't realise that. surely though commiting binary blobs that are generate from source is bad :-(03:40
wgrantPlus the location calculation is not entirely deterministic.03:40
wgrantYes, it is.03:40
wgrantRather bad.03:40
wallyworld_it's not as if sprite_image takes more than asecond or so to run either03:40
wgrantBut people don't seem to mind including large trees of other people's code in our tree.03:40
wgrantSo what's a small blob? :)03:41
wallyworld_so why the fark don't we just run it as part of make03:41
wallyworld_i just wasted a looong time figuring this out :-(03:41
wallyworld_wgrant: one small blob is a blob too many :-(03:41
wallyworld_thumper: http://people.canonical.com/~ianb/request-daily-build.png03:43
wallyworld_thumper: can we/i fix the !!@%@!^& makefile?03:44
wgrantwallyworld_: You may want to check with a LOSA.03:44
wgrantAlso make the positioning stuff deterministic.03:44
wallyworld_or do you agree with commtting the sprite image blob?03:44
spmhrm?03:44
wgrantWhen I rebuilt it Monday a couple of things changed order.03:44
wallyworld_wgrant: so what did you do to account for the ordering change03:45
wgrantspm: Where is 'make build' done on production?03:45
wgrantwallyworld_: Nothing, because I didn't end up committing my changes.03:45
spmon each prod server03:45
wallyworld_spm: we are committing a binary blob (the sprite image file) when imho it should be built03:45
wgrantwallyworld_: We need to be careful that we don't end up with different files across the frontends, I think.03:45
wgrantOr caching may get a bit odd.03:46
wallyworld_wgrant: so how did you know things changed order?03:46
spmwallyworld_: by sprite - this is a picture?03:46
wgrantwallyworld_: icon-sprites.positioning changed.03:46
wallyworld_spm: yeah, it's a binary blob of all our little icons that are displayed next to links etc - a combination of the individual png files if you like03:47
wallyworld_wgrant: so in that case both files would need to be committed and it should just work03:47
spmso why do you want to build that on each server? it'd be pretty static - build and control it yourself?03:47
wgrantwallyworld_: Which files?03:48
spmesp aiui, this'd only need building on 2 servers - can you get the granularity down such that it *only* builds on 2 of the 30 odd?03:48
wallyworld_spm: committing blobs which are built from source artifacts is imho fundamentally wrong and bad practice03:48
spmbuilding on 30 servers, something needed on 2, is also ... wrong. :-)03:49
wallyworld_spm: make build should do it03:49
wallyworld_it only takes a second03:49
wallyworld_spm: the makefile targets should only build what's required03:49
wallyworld_for each deployment target03:50
spmyesssss. so does every other little build. which is why  a nodowntime rollout takes from 60-90 minutes.03:50
wallyworld_s/target/environment03:50
wallyworld_spm: it could be done before rollout though - part of creating the rollout directory image03:50
wallyworld_oh, you said nodowntime03:51
spmactually - step back a bit here - *what* builds this? what tools are needed?03:51
wallyworld_spm: make sprite_image builds it03:51
spmdoes that need imagemagik or something?03:52
spmI guess - how often do these change?03:52
wallyworld_its a tool in the bin directory which also does other sprite related stuff (css file generation etc)03:52
wgrantIt uses PIL.03:52
wgrantSo it should be fine.03:52
wallyworld_spm: they don't change often03:53
spmjust checking we don't suddenly introduce a bunch of crackful deps to add to prod. :-)03:53
wallyworld_it's more a philosophical thing, plus i just wasted shitloads of time cause i expected make to build what it needed03:53
spmheh03:53
wallyworld_by philosophical, we are talking about what consistutes best practice etc03:54
spmha. don't make me pull out the page on argument fallacies. ;-)03:54
spmI guess in the overall scheme of things, go for it. add it to the makefile.03:54
wallyworld_spm: i likely won't change the makefile, once i build a bridge and get over my frustration03:55
wallyworld_spm: clearly oeple smarter than me did it that way for a reason :-)03:55
spmrules are there so you think about breaking them. not to be followed blindly. :-)03:56
wallyworld_:-)03:56
wallyworld_try telling that to my wife03:57
spmwives are an exception to all rules, except their own. QED.03:57
wallyworld_you are a wise man03:57
pooliehi spm03:57
spmheya poolie03:57
spmwallyworld_: my 2c for something like this: that doesn't change often and all, denormalise - commit the binary blob and wear the overhead there - to get a bigger saving in prod/deploy/build. but each case has exceptions.03:59
wallyworld_spm: fair enough03:59
poolie+1 for naked juggling04:00
wallyworld_poolie: ha de ha ha04:00
spmif it had funky deps on code changes and such? then you make build on each server per normal; but if it's largely standalone. shrug.04:00
wallyworld_poolie: i don't think you really would want to see that04:00
* spm afks to fetch lad from school04:00
wallyworld_thumper: you around?04:03
wgrantDaily builds for this recipe will not occur.04:18
wgrantThere is no PPA.04:18
wgrantThat sounds a little dramatic.04:18
wgrantwallyworld_: Do you know much about the daily build archive widget?04:19
wallyworld_wgrant: depends on what you want to know :-)04:19
wgrantwallyworld_: The picker popup needs spinners.04:20
wgrantThe list takes a while to load, leaving the popup empty for a couple of seconds.04:20
wallyworld_wgrant: because it takes time to load them up?04:20
wgrantThen when you move to another page the number changes immediately, but the contents take a couple of seconds.04:20
wgrantIn both cases I think the contents should be replaced with a spinner.04:20
wgrantOr something like that.04:20
wallyworld_wgrant: yeah, i just wrote a popup form and added a "Loading..." spinner for the same reason04:20
wgrantAlso there is a vast amount of padding at the bottom of the popup.04:21
wgrantAh, because there is an unused footer slot.04:21
wgrantDeleting that makes things marginally more sensible.04:21
wgrantIt seems to be a general picker issue.04:22
wgrantis that lazr-js?04:22
wallyworld_wgrant: i think the best thing is to file a bug so it's in the system04:22
wgrantwallyworld_: Sure, I'm just wondering where to file it.04:22
wgrantIs it LP, is it Code, is it lazr-js?04:22
wallyworld_wgrant: yeah, the base picker.js is in kazr-js from memory04:22
wgrantOtherwise the AJAXyness of SourcePackageRecipe:+index is pretty awesome.04:23
wallyworld_wgrant: i'd file against launchpad since the issue manifests itself in the recipe area. that's imho04:23
wallyworld_wgrant: once my mp lands it will have even more ajax04:24
wallyworld_the request builds link uses a popup form with a no-pageload refresh of the current builds table04:24
wgrantwallyworld_: Ah, other pickers have a search widget where the search icon turns into a spinner.04:24
wgrantThe daily builds ones do not.04:25
wgrantI will file against launchpad.04:25
wallyworld_wgrant: that was my thinking - that the root cuase lay in how the picker was being used, hence a lp issue04:25
wgrantwallyworld_: bug #719785, bug #719788, bug #71979504:40
_mup_Bug #719785: Recipe owner and archive pickers need spinners <recipe> <ui> <Launchpad itself:Triaged> < https://launchpad.net/bugs/719785 >04:40
_mup_Bug #719788: Recipe archive picker has an empty footer <recipe> <ui> <Launchpad itself:Triaged> < https://launchpad.net/bugs/719788 >04:40
_mup_Bug #719795: Recipe archive picker items are twice the required height <recipe> <ui> <Launchpad itself:Triaged> < https://launchpad.net/bugs/719795 >04:40
wallyworld_wgrant: thanks. thumper will be ecstatic :-)04:40
wgrantHeh.04:41
wgrantI also have some suggestions for the builds table, but I think they might cause thumper to leap over the Tasman and strangle me.04:43
thumperhmm....05:10
thumperwgrant: I'm open to suggestions05:11
thumperwgrant: do the pickers not have any spinners?05:11
wgrantthumper: They don't :(05:11
thumperwgrant: that's a problem05:11
=== rockstar` is now known as rockstar
wgrantthumper: I'd prefer the builds table to be more like Archive:+packages. A single row per source, only showing binaries if they are not yet built or have failed.05:12
StevenKwgrant: Hm, do you know off-hand if the sampledata has another account enabled except admin@c.c?05:13
wgrantArchive:+packages' implementation is rather flawed. But you have the opportunity to experiment and improve upon that.05:13
thumperwgrant: not really05:13
thumperwgrant: we are moving off recipes into maintenance shortly05:13
* thumper goes to make dinner05:14
wgrantStevenK: no-priv@canonical.com, carlos@canonical.com, test@canonical.com, cprov@ubuntu.com05:14
wgrantthumper: :(05:14
StevenKwgrant: Thanks05:15
StevenKNot allowed here reproduced for recipes with a disabled archive.05:15
StevenKWhich is a little O.o05:15
StevenKOh, let me guess. The security proxy is such that if the archive is disabled, only the owner can see it?05:16
wgrantThat's right.05:16
* StevenK grumbles05:16
StevenKI'll fiddle the browser code to give us 'Disabled archive' rather than unathorized05:17
lifelesswgrant: are you talking the +dailybuilds thing, or the per-user recipes list?05:21
wgrantlifeless: SourcePackageRecipe:+index05:21
lifelessthumper: will the daily builds page we spoke about get fixed before you rotate off?05:26
wgrantCan I search through OOPSes for a particular exception without grepping through $lots?05:27
lifelessnot yet05:27
wgrantOh, I can see lp:oops-tools now. That is handy.05:32
wgrantAhhhh05:33
wgrantMost of these OOPSes used to be in a warnings subsection of the checkwatches OOPS report.05:34
lifelessstill covered by zop05:34
wgrantShould they be?05:35
wgrantRemember we have UFD and go.05:35
wgrant*co05:35
wgrantOffsiteFormPostError, UnexpectedFormData, InvalidBatchSizeError all OOPS but are in a separate section of the report.05:36
wgrantStill, some of these checkwatches OOPSes record no information beyond what is put in the DB, so they can go.05:36
lifelessunless we're going to take action on it, they shouldn't be logged.05:37
lifelessWe have significan space issues with oops05:37
wgrantOh, do we?05:37
lifelessyes05:37
wgrant:(05:37
lifelessplus rsync overhead, processing on devpad etc05:37
wgrantTrue.05:38
lifelessoops should be things /we/ need to take action on05:38
spm^^ this! :-)05:43
wgrantlifeless: Caps!@05:49
wgrantAlso, bug #28506 is probably not the one you are looking for...05:50
_mup_Bug #28506: It should be possible to install xchat instead of xchat-gnome <ubuntu-meta (Ubuntu):New> < https://launchpad.net/bugs/28506 >05:50
lifelesswgrant: context?05:51
lifelessdo you mean 268508 ?05:51
wgrantlifeless: Your blog post says 2850605:53
lifelessgrah05:53
lifelessedit-fail05:53
lifelessthe right link is earlier05:53
lifelessfixed05:54
lifelesswgrant: thanks05:55
wgrantlifeless: I'd also retitle it something like "Bug searches no longer match target names", I think.05:55
wgrantBut perhaps not.05:55
lifelessthats more accurate and less relevant or understandable IMO - I did consider it05:56
lifelessbut something like 99.9% of multi context searches will be package related05:56
wgrants/target/source package/, then.05:56
lifelessthat would be a lie05:56
wgrantBut caps and short is important.05:56
wgrantThanks.05:59
wgrantIf it didn't show up on https://launchpad.net/ I would not be so pedantic.05:59
pooliewgrant, i agree06:02
poolie'read the blog' is bad style too06:02
lifeless'read the blog'?06:36
wgrantDown the bottom of the recent blog post listing.06:38
wgrantI don't have much of a problem with that, though.06:39
LPCIBotProject devel build (446): STILL FAILING in 5 hr 47 min: https://hudson.wedontsleep.org/job/devel/446/06:41
LPCIBot* Launchpad Patch Queue Manager: [r=jtv][bug=710591] Fix translation import script to use old-style06:41
LPCIBotimports on source packages if no upstream project is configured.06:41
LPCIBot* Launchpad Patch Queue Manager: [r=gmb][no-qa] Split portlet setup for subscriber widgets from06:41
LPCIBotbugtask-index.js.06:41
LPCIBot* Launchpad Patch Queue Manager: [r=jtv][ui=none][bug=716586] Allow converging diverged translation06:41
LPCIBot* Launchpad Patch Queue Manager: [r=gmb][bug=718849] Do not escape revision author if the name and06:41
LPCIBotemail are None.06:41
LPCIBot* Launchpad Patch Queue Manager: [r=leonardr][bug=719162] Make buildd pointer check regexes work on06:41
LPCIBotnatty06:41
lifelessgrrrrah07:58
lifelessseries_buglistings makes me sad07:58
thumperlifeless: probably not...08:01
thumperlifeless: but on the bright side, if it is a timeout, it'll get addressed early08:01
pooliehi jml?08:44
jtvgahmorning folks08:45
pooliehi jtv08:46
henningeHi jtv!08:46
poolieare you in nl?08:46
jtvyes08:46
jtvhi henninge!08:46
lifelessstub: if you have time, would appreciate a review of https://code.launchpad.net/~lifeless/launchpad/bug-607935/+merge/4991508:46
stubk08:46
jtvhey stub08:47
stubjtv: Tell me about your standing desk and where you got it.08:47
=== almaisan-away is now known as al-maisan
pooliei'd like to know that too08:47
stub1) Fly to Bangkok08:47
jtvstub: HomePro—it's not a desk and I've seen the same equipment in other countries.08:47
jtvBasically built myself a rack.08:48
stubAssemble it yourself stuff?08:48
stubOr some sort of stackable shelving?08:48
lifelessdoes anyone know of existing statistics apis within lp ?08:55
StevenKlifeless: As in download statistics? More information?08:55
lifelessas in 'get the open bug counts for all the active series of ubuntu'08:56
lifelessI mean in the source tree, not the json APIs08:56
mrevellHello09:01
pooliehi mrevell09:02
pooliewould you like to have a look over https://dev.launchpad.net/LEP/BuildFromBranchIntoPrimary for me?09:02
mrevellpoolie, Sure. With a view to user testing?09:05
adeuringgood morning09:06
poolieyes, or communication/announcement/etc09:09
pooliewell, more communication09:09
StevenKbigjools, wgrant: I suspect allenap could use a hand to QA r12383.09:11
allenapIndeed. I don't have the foggiest about how to QA that one.09:12
bigjoolswe need to get mup to show commit messages when it sees rNNNNN09:12
allenapWell, apart from saying dogfood.09:13
bigjoolspedigree chum to the rescue09:13
allenapbigjools: Good idea.09:13
mrevellThanks. I'll take a look later  my morning  poolie and email you some proposals.09:13
allenapWho's the mupmaster?09:13
bigjoolsgustavo IIRC09:14
pooliethanks09:14
poolieok i've got to go, may be on again later09:15
bigjoolsallenap: I'm not sure that's QA-able.  I don't recall seeing any weird effects in production from the bug  - although I expect the memory would grow.09:16
wgrantAha.09:16
allenapbigjools: We would need to add builders after starting the buildmaster, then observe how often they're scanned. But that sounds pretty hard to do.09:17
bigjoolsallenap: yes09:17
allenapThe code change is a single line so perhaps we can rely on visual inspection alone.09:17
wgrantIt is not at all hard to do.09:18
wgrantAdd a new virtual builder that does not exist.09:18
wgrantIt will remain enabled.09:18
wgrantDespite the scans failing.09:18
allenapInteresting :)09:18
bigjoolsyou would need to rely on the log output09:19
wgrantIn other news, I have a bzr-sftp locally with 6 fifos opened without connections.09:19
wgrantI may have reproduced the leak.09:19
wgrantYay.09:19
wgrantpoolie: Around?09:19
pooliewgrant, yay, that's greaot09:20
pooliei have to go out now09:20
pooliemay be back in about an hour09:20
poolievila is here09:20
wgrantk09:20
vila*blink*09:22
vilaparamiko leaks ?09:22
wgrantvila: No, I am trying to reproduce the forking service disaster.09:23
vilagot that, and no, paramiko may leak threads, not sockets (IIRC)09:23
vilawhen you say fifo you mean pipes ?09:23
wgrantRight.09:24
vilak, np, just checking09:24
=== gmb` is now known as gmb
vilawgrant: did you check with jam ? I think it was working on it yesterday09:38
wgrantvila: it seems that I may have actually exceeded the FD limit for a moment, so it crashed and failed to close sockets for a few seconds, which I initially missed due to the logs going by so quickly :(09:41
wgrantSo the FD leak was because we were already exhausted.09:41
wgrantStill, we should probably avoid leaking in that case.09:41
vilathat's my understanding yes, the symptom is hitting the FD limit but the cause is the leak09:42
=== al-maisan is now known as almaisan-away
=== almaisan-away is now known as al-maisan
stubbigjools: Where you working on dropping sourcepackagename/binarypackagename links for a few selected cases, or across the board?10:10
bigjoolsstub: otp10:15
bigjoolsone mo10:15
stubnp10:15
bigjoolsallenap: I'll QA that buildd-manager change for you10:22
bigjoolsallenap: although there is a buildd-manager on staging so you could do it with some losa fu10:23
=== danilos changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | firefighting: - | On call reviewer: danilos | https://code.launchpad.net/launchpad-project/+activereviews
danilosstub, hi, is there any better (as in less intrusive) way to change a DB column default value other than with a DB patch?10:54
danilosstub, (I guess I can use the constructor, but that kinda sucks)10:55
stubdanilos: The only way to change the DB column default is with a DB patch. If you are using the constructor, you are doing something different.10:55
danilosstub, right, I understand that, thanks10:56
bigjoolsstub: since changing everything is such a ridicuously massive and invasive change, I was planning on adding a name column to spr/bpr for now, and then gradually migrating certain things10:57
stubIf you put a default value into Python code for some reason, we should update the DEFAULT on the column too or else confusion will happen.10:57
bigjoolswe may never be able to get rid of BPN/SPN because of bug targets10:57
stubbigjools: I thought one or two tables at a time might be best.10:57
stubbigjools: You dropping the foreign key too?10:58
bigjoolswhich FK?10:58
stubbigjools: The existing references to the spn/bpn tables10:58
bigjoolsstub: where possible, yes, I need to analyse10:59
stubbigjools: There is no point having both a TEXT column containing the name, and a foreign key reference to the (hopefully identical) name in spn/bpn.10:59
bigjoolsquite10:59
bigjoolsit depends on what code needs it and how easy it is to fix11:00
stubbigjools: So if there is a db patch adding the new TEXT column and not dropping the old spn/bpn references, open a bug and have XXX's referencing it in the model code.11:00
bigjoolsmais oui11:01
bigjoolsI need to audit all the stuff that uses bpr.name / spr.name11:01
danilosstub, that's why I was asking if there was a less intrusive change, just changing it in python is effective for our tests, but I'd like to fix the default in DB as well11:02
stubDon't consider it intrusive :-)11:03
dpmjtv, would you have some minutes to see how we can recover the en-US.xpi Lucid + Maverick template and reupload it now that the Firefox bug in LP has landed?11:04
jtvdpm: ah yes… can we do that after lunch?11:05
danilosstub, heh, it's intrusive to my development process: I can land entire branch onto devel, and this one little bit (DB patch) has to go to db-devel :)11:05
dpmjtv, sure, I'll ping you later on then11:05
stubdanilos: The db patch doesn't have to be part of the same branch.11:05
stubBut yeah, two branches to land vs. one.11:06
danilosstub, so, can you please take a look at https://code.launchpad.net/~danilo/launchpad/db-bug-718809/+merge/49952 ? :)11:34
stubk11:35
stubdanilos: So what do we do with the 1.3 million entries that have been set to the previous default of True ?11:36
stub(And 131 people have already twiddled their knob)11:38
danilosstub, we want to keep it as is11:39
danilosstub, at least that's my understanding: we do not want to change values for existing users, just for new ones11:40
stubSo existing users keep the original behavior (unless they twiddle the setting), and new users default to no selfgenerated notifications?11:41
danilosstub, and I believe that's pretty explicit in bug 718809 description11:41
_mup_Bug #718809: New users should default to not receiving email for their own actions <story-better-bug-notification> <Launchpad itself:In Progress by danilo> < https://launchpad.net/bugs/718809 >11:41
danilosstub, that's right11:41
=== al-maisan is now known as almaisan-away
stubr=stub11:43
danilosstub, cheers11:44
danilosstub, do you think I should update the sample data before landing?11:44
stubdanilos: I wouldn't. I don't think changing the default for new users warrents changing the sampledata (by definition, contains existing users).11:45
stubMatches production better too ;)11:46
danilosstub, right, but 'make lint' issues a warning already, so I somehow suspect that somebody has failed to update it after running all the DB patches (probably some which migrate data)11:46
danilosstub, so I am only asking if I should re-make sampledata after a clean 'make schema' :)11:47
stubUp to you then. I'm not fussed myself.11:47
danilosstub, cool, I'll just ignore it then and leave it for someone who actually does a more invasive patch :) ta11:47
stubIf you are landing now, go for it to minimize future conflicts.11:47
danilosstub, heh, ok then11:49
danilosstub, actually, the differences seem irrelevant: http://paste.ubuntu.com/567629/11:55
danilosstub, should I file a bug against the schema linter about this?11:55
stubIf you want. Seems benign enough. I don't know what is doing the check or how easy it is to modify.11:56
stubdanilos: Maybe not - we actually do want it to bitch in this case, to ensure devs keep up to date with PG releases and in particular are using the correct major release.11:57
danilosstub, oh, I thought you'd be the one who has implemented the check: the lint warning is very long and kind of annoying as you can see in the MP :)11:58
stub(different releases causing ordering to be different and making diffs huge)11:58
stubNot me :-)11:58
danilosstub, right, but this is a minor rev and that sucks :)11:58
stubThink I run lint? Ha!11:58
* stub runs11:58
danilosstub, haha11:58
danilosnow, how does an OCR find a reviewer? :)12:04
deryckMorning, all.12:06
danilosderyck, good morning :)12:20
bigjoolsdanilos: (or any translations dude), is this valid or a dupe?  https://bugs.edge.launchpad.net/launchpad/+bug/71990312:32
danilosbigjools, it is definitely a bug, but it's likely related to the recent translations work; henninge, do you know if it's a dupe?12:34
danilosderyck, or perhaps you? :)12:34
henningedanilos: dunno, busy atm12:35
* deryck looks at bug12:39
deryckbigjools, danilos -- not a dupe that I know of.12:40
bigjoolsany code people around?  this one's a bit weird https://bugs.edge.launchpad.net/launchpad/+bug/71990112:41
_mup_Bug #719901: No web access to lp:language-selector <Launchpad itself:New> < https://launchpad.net/bugs/719901 >12:41
bigjoolshttps://code.launchpad.net/~ubuntu-core-dev/language-selector is fine but  https://code.launchpad.net/~ubuntu-core-dev/language-selector/ubuntu is not12:41
wgrantbigjools: Probably the private bug.12:48
wgrantI can see it fine.12:48
wgrantBecause I can see apport bugs.12:48
wgrantWhat is the traceback you see?12:49
bigjoolsmeh didn;t think to look down there, yeah it's a bug12:50
bigjoolswgrant: why can you see apport bugs then?12:51
wgrantbigjools: Because I'm in ~ubuntu-dev.12:52
bigjoolsah right12:52
gary_posterCan anyone be my bzr pipeline mentor at the moment? :-)  sync-pipeline didn't work, as Aaron warned me privately it might not since I used reconfigure-pipeline.  I got13:13
gary_posterCreating new pipe at lp:~gary/launchpad/bug164196/.bzr/pipes/bug16419613:13
gary_posterbzr: ERROR: Permission denied: "~gary/launchpad/bug164196/.bzr/pipes/bug164196/": : Cannot create branch at '/~gary/launchpad/bug164196/.bzr/pipes/bug164196'13:13
gary_posterI then tried lp-propose13:13
gary_posterand that seems to want to propose everything for the same push branch13:13
gary_posterwhich doesn't seem to work so well either13:14
gary_posterdanilos, do you happen to have any wisdom for me?  I think you use pipelines13:14
jmleasy documentation branch up for review: https://code.launchpad.net/~jml/launchpad/silence-sphinx-errors-and-warnings/+merge/4996513:16
danilosgary_poster, hum, you can always deal with branches individually, and perhaps even remove the branch from LP (if it has no MPs already) and then re-push (or maybe even just bzr push --overwrite)13:16
gary_posterdanilos, so just bzr push branch 1, then bzr next and bzr push branch 2 to someplace explicitly?13:17
* gary_poster tries13:17
danilosgary_poster, well, you should have separate branches in the repo as well, so you should be able to access them; not sure how it works if you are using a shared repo with working dirs included13:19
danilosjml, I'm taking a look13:19
danilosjml, what does double colon do?13:19
jmldanilos: signals that the indented bit up ahead is quoted text.13:20
jmlhttp://docutils.sourceforge.net/docs/ref/rst/restructuredtext.html#literal-blocks13:20
danilosjml, ok, was it the intention to remove it on line 22?13:20
danilosjml, thanks13:20
jmldanilos: yes, because that's a list.13:21
jmllet me double check the output13:21
jmlyeah, looks right.13:21
danilosjml, r=me, thanks, looks much better like this :)13:23
jmldanilos: thanks.13:23
danilosbigjools, btw, I am somehow guessing your removal of a tag from deryck is unintentional: https://bugs.edge.launchpad.net/launchpad/+bug/719903 :)13:24
=== almaisan-away is now known as al-maisan
bachi mrevell13:26
jmlbuild is broken.13:32
mrevellhi bac13:32
bachi leonardr13:49
leonardrhi bac13:49
bacleonardr: regarding my merge proposal from yesterday, the whole point was simply to add the 3rd party stuff and update the tools.  i should've been more explicit, but after 'make jsbuild' you'll see the gallery-accordion is included in launchpad.js and the accordion CSS is included in combo.css13:50
leonardrbac: ok, r=me13:51
bacthanks leonardr13:52
abentleyderyck, sorry I'm late.  Did I miss the whole meeting?14:06
deryckabentley, yeah.  it was only adeuring and I, since henninge_ is also away momentarily.14:07
abentleyah, okay.  Well, we've got our chat in an hour, right?14:07
deryckabentley, sorry, crashed.  if I missed anything else you said.14:09
abentleyderyck, no worries.  I just said "Well, we've got our chat in an hour, right?"14:10
deryckabentley, yes.  we can catch up then.  Thanks!14:10
bigjoolsdanilos: crossing edits.... we *really* need to fix that :/14:10
wallyworldgary_poster: hey, can you recommend anyone in your squad who i could persuade to be the next release manager? :-)14:15
jmlom nom nom14:16
gary_posterwallyworld, thanks for reminding me.  I was going to actually poll them, after reading your well-penned email of the past 12 hours.  Let me do so...14:16
wallyworldgary_poster: thank you. i lied about being able to ride a unicycle14:17
wallyworldgary_poster: i've asked a few people (not from your squad) already but haven't had any luck so far14:18
bigjoolswallyworld: I can ride a unicycle14:18
wallyworldbigjools: i don't believe you - prove it. go on, i double dare you14:19
bigjoolsheh, shall I sent you a picture?  I need to take it first of course.14:19
wallyworldbigjools: you mean you'll need to google it and the fire up gimp14:20
gary_posterwallyworld, my world is ruined by your lack of unicycle-riding!14:20
wallyworldgary_poster: is there anything else i can do naked to make up for it?14:20
bigjoolswallyworld: I don't need to use gimp of course, google will find everything you ask for :)14:20
gary_posterI've heard of bigjools' vaunted unicycle riding prowess for years now, but it actually has not been proved in my presence, I now realize14:20
bigjoolsheh14:20
gary_posterwallyworld lol no really that's fine :-)14:21
wallyworldhmmm. but he does know how to wield a gun. i've seen it with my own eyes14:21
bigjoolswallyworld: are you threatening to go naked?  I'm sure that'll get a new RM pretty quick actually14:21
wallyworldbigjools: well, i was going to attach a photo but the super macro lens on the camera broke so you couldn't see anything anyway14:22
bigjoolsouch :)14:22
gary_posterwallyworld, benji has gracefully acquiesced to being volunteered.  I don't think he's hoping for any of the naked activities in recompense, but you can clarify that with him directly.14:24
benjito be perfectly clear: "naked activities" void the offer14:24
gary_posterlol14:25
wallyworldbenji: i've never said this to another man when i haven't been drunk, but i love you :-)14:25
benjiheh14:25
benjiI have that effect on people.14:25
* gary_poster enjoys laughing14:25
bigjoolsget a room guys14:25
benji:)14:26
wallyworldbigjools: it's room 216 at the Shady Pines if you're interested14:26
bigjoolsI'll take my cameras out14:26
wallyworldyou have a macro lens then?14:27
bigjoolsI think I'd better stop here before I get into trouble :)14:29
bigjoolssinzui: is it possible to turn a project into a project group?14:30
sinzuiNo14:30
bigjoolsthanks14:30
=== henninge_ is now known as henninge
henningederyck: back ;-)14:31
deryckhi henninge.  wb! :-)14:32
leonardrdanilos, please review https://code.launchpad.net/~leonardr/lazr.restful/promote-write-operation-to-mutator/+merge/4997614:34
leonardri'm here if you have questions14:34
allenapIs the removal of colour on the "Report a bug", "Ask a question", etc. links intentional?14:36
allenapThe "Get Involved" links.14:37
bigjoolsand bug title14:38
bigjoolsas someone said the other day, did someone die? :)14:38
gary_posterflacoste, putting benji as release manager helps out the team, but hurts the squad's feature development.  Should the RM be on a bug rotation squad, or should the decision ignore current rotations?14:39
bigjoolsgary_poster: I had that very discussion with my team this morning14:39
flacostegary_poster: i say ignore rotations14:39
gary_posterok thanks flacoste14:40
flacostei don't think it should come from bug rotation as a rule14:40
jmlallenap: yes.14:40
allenapjml: I was quite fond of the colour :-/14:42
sinzuiallenap: yes14:42
jmlallenap: of which one exactly?14:42
sinzuiallenap: but there is an open discussion about whether to use an official Lp colour for these special links14:42
sinzuiwe do not have any official colours14:43
jmlallenap: in any case, it's a work-in-progress. there was some discussion about this yesterday on either this channel or #launchpad14:43
jmlallenap: I'll ask huwshimi to send an email about it all to the list.14:43
sinzuiallenap: before we return to colour, we want to get the font-sizes corrected. I have a work-in-progress14:43
=== abentley changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | firefighting: - | On call reviewer: danilos, abentley | https://code.launchpad.net/launchpad-project/+activereviews
allenapjml: I was fond of all of them. I just wondered if it was an accident really. If someone has a plan then I don't really want to bikeshed, tempting though it is.14:44
allenapsinzui: Interesting.14:45
jmlalso, the build has been broken for about an hour now.14:45
adeuringhenninge: could you help me with qa for bug 702468?14:48
_mup_Bug #702468: First upstream translation does not replace Ubuntu-only translation <qa-needstesting> <upstream-translations-sharing> <Launchpad itself:Fix Committed by adeuring> < https://launchpad.net/bugs/702468 >14:48
henningeadeuring: I am currently doing something similar for my fix, so I don't think you need to do anything. It requires l o s a help for imports and such.14:49
henningeI will cover that in my QA.14:50
adeuringhenninge: cool, thanks!14:50
danilosleonardr, back from lunch, taking a look now14:56
leonardrtx14:56
gary_posterdanilos and abentley, https://code.launchpad.net/~gary/launchpad/bug164196-1/+merge/49973 https://code.launchpad.net/~gary/launchpad/bug164196-2/+merge/49977 and https://code.launchpad.net/~gary/launchpad/bug164196-3/+merge/49980 are available for review.15:01
gary_posterabentley, thank you for your pipeline help.  I had used reconfigure so I ran into the problem you described with sync.  For now I just pushed individually.  Next time hopefully I'll start without reconfigure15:01
gary_posterThen I can wee what the expected behavior is :-)15:02
abentleygary_poster, you're welcome.15:02
gary_posterheh, see15:02
=== _starbuck is now known as _starbuck-lunch
=== salgado is now known as salgado-lunch
danilosleonardr, I assume there are tests for mutators working correctly otherwise? (since your test only "proves" that it stops providing a method)15:12
leonardrdanilos: yes, there are. a mutator is just a write operation that doesn't show up in lookups15:13
leonardri could add a test that the mutator works in 3.015:14
danilosleonardr, right, thanks15:16
danilosleonardr, if there are already tests for that elsewhere, no need to imho15:16
danilosleonardr, just one more question: is it still possible to keep a method and make it a mutator? (i.e. have set_value keep working in 3.0)15:17
leonardrdanilos: no, because there's no point in having a named operation that duplicates the effects of a mutator15:18
leonardrthe situation we have here is where we made a mistake--this should have been a mutator method all along15:18
leonardrbut we can't change an old version for backwards compatibility reasons15:19
danilosleonardr, well, I can imagine someone wanting to keep both so you don't have to port client code, no?15:19
danilosleonardr, maybe that'd be hidden by things like launchpadlib instead, so I am just wondering15:20
leonardrdanilos: this falls into the category of 'if you don't want to port code, don't use the new version'15:20
leonardrit's an easy change to make15:20
danilosleonardr, ok, as long as it's recognized as being a use-case (or not), I think it's fine; some explicit documentation might be useful, if you agree15:21
danilosleonardr, anyway, with that considered, r=me15:22
leonardrthanks15:22
danilosleonardr, thanks for the fix! :)15:22
danilosleonardr, oh, are you also getting lazr.restful updated for LP as well?15:23
danilosabentley, have you started on any of Gary's branches?15:23
abentleydanilos, no, was on a call.15:24
leonardrdanilos: that's next. i'm going to do a release and thumper will incorporate the new version with his branch that needs the fix15:24
danilosabentley, ok, I am starting with the first one, and I'll make sure to claim the one that I am working on15:24
danilosleonardr, excellent, sounds good15:24
abentleydanilos, cool.15:24
danilosgary_poster, re -1, in lib/lp/bugs/model/bug.py you modify addCommentNotification to add activity parameter, but you don't modify addChange which I believe does a similar thing for non-comment changes — is that intentional or not?15:30
gary_posterdanilos, intentional.  addChange uses change objects, which handle activities themselves.15:31
danilosgary_poster, ok, cool15:31
danilosgary_poster, r=me on the non-DB stuff, and I am guessing stub will give you patch number 45 :)15:35
gary_posterdanilos, cool, thank you :-)15:36
abentleygary_poster, re: your other branch, it seems like you're changing the meaning of date_emailed to be "date_processed".  Did you consider changing that in your patch?15:41
abentleygary_poster, did you consider making is_omitted a "status" enumeration instead?  Values could include PENDING, SENT, SKIPPED.15:43
danilosabentley, whoops, I just claimed that one as well, perhaps gary_poster will have to request another review from you15:44
gary_posterabentley, date_emailed: you are quite right.  I didn't consider it for very long, because I didn't think the win merited the database disruption.  In the abstract, I'd agree 100%, and if stub said that I shouldn't worry about the disruption, I'd be fine with it.15:44
abentleygary_poster, I see.15:44
abentleydanilos, hmm.  You shouldn't have been able to claim the review after I did.  Stale page?15:45
danilosabentley, perhaps15:45
gary_posterdanilos, abentley, atually things are fine.  danilos is on -2 and abentley is on -315:45
danilosgary_poster, ah, ok :)15:46
abentleygary_poster, danilos: confirmed.15:46
gary_posterabentley, enumeration: I didn't, and I suppose this is a "in for a penny, in for a pound" sort of thing.  By that I mean that I questioned the wisdom of including the flag now at all, without proof of its necessity, but I leaned towards wanting it anyway.  An enum would be cleaner, and I'd be fine with that if you wanted to request it.15:48
abentleygary_poster, since we're creating a field either way, I recommend doing a status enum.15:49
gary_posterabentley, cool, +115:50
abentleygary_poster, in the doctest, why are you reversing the order of the notifications?15:54
gary_posterabentley, so that you see them in the order they happened in the doc test15:54
gary_posterwe get the last eiht15:55
gary_postereight15:55
gary_posterbut then they are in reverse chronological order15:55
abentleygary_poster, ah.  Missed the meaning of "-" in "-id".15:55
abentleygary_poster, I think ResultSets support slicing.  If so, getting a ResultSet might be clearer.15:57
jtvhenninge: we've been seeing some problems with the branch approver not approving templates that it can't figure out a decent name for.  How about we let the domain default to the project name?  (The approver will back off when it sees duplicate names anyway)16:02
henningejtv: sounds reasonable16:02
henningejtv: glad you found the reason for those non-approvals.16:03
gary_posterabentley, ok, I agree in principal, and will see if I can figure out what needs to be done.16:03
jtvhenninge: I thought this case was covered somehow, but AFAICT it was simply something we hadn't gotten to yet.16:03
abentleygary_poster, cool.  I don't feel strongly about these changes, so r=me.16:03
gary_posterok, thank you very much abentley16:03
danilosgary_poster, fwiw, the variable name "person_causing_change" was chosen as the most descriptive one, after my reviewer (bac, I think) had trouble following code, so perhaps "actor" is not the best choice :)16:05
gary_posterdanilos :-P :-) ok, I can revert that part16:05
gary_posterit just helped with line length16:06
danilosgary_poster, not necessarily if you think you'd find it obvious who 'actor' is when you first look at the code16:06
bacgary_poster, danilos: i think it changed from "person" so "actor" is still an improvement.16:07
danilosbac, true16:07
danilosgary_poster, bac, it's just hard for me to say if it's clear enough with so much background already16:08
danilosgary_poster, so, I'd say it's up to you16:08
jamvila, wgrant: From what I've been able to piece together, hitting the FD limit causes us to half-create connections, which then leak handles for future connections16:08
gary_posterok, cool, bac, danilos.  I'll see if I can fit the longer version in nicely, and if it is annoying, I'll leave it with "actor".  Thank you16:08
jamso hitting the limit is both a symptom and a cause16:08
benjileonardr: I sent a general email to the -dev list, but I want to bring https://dev.launchpad.net/yellow/JavaScriptAPIAccessDraft to your attention specifically in case you have things to add.16:09
vilajam: but you shouldn't even approach the FD limit or you can't scale right ?16:09
leonardrbenji, will take a look16:09
danilosgary_poster, now, a more relevant question: is there no better way to figure out if a change is of a certain type than process activity.whatchanged? it kind of looks fragile to me16:09
jamvila: well, what I don't understand is why the existing code doesn't have the same problem. However, we can't serve more than 200 concurrent connections from a single process anyway.16:09
vilajam: so I thought you were approaching it *because* you had leaks16:10
jamIt looks like this might be a little bit less16:10
leonardrbenji: it occurs to me that we might be duplicating some work. do you know about blue squad's project to make things more widget- and event-oriented?16:10
jamvila: nope, just more connections than we thought16:10
jamsomebody mentioned that there might be *5* handles per child16:10
jamwhich would only give us 200 max connections, instead of 25016:10
jamand the issue is that if we hit 200 for a second, then we leak a couple of handles16:10
jamso that then our max becomes 18016:10
jamthen 150, then ...16:10
jametc16:10
vilawhat's the point of forking if you don't keep the fd local to the forked process but not in the parent ?16:11
jamvila: wrong fork16:11
jamthere are 3 processes involved16:11
jam1 is the master Conch twisted ssh process16:11
benjileonardr: nope, I wasn't aware.  I was mostly writing down how things are, but I didn't know that a project to improve it was ongoing.16:11
jamwhich handles taking SSH encrypted data over the socket16:11
jamand turns it into stdin/stdout for a child process16:11
jamthis has always been a single process16:11
jamthough it used to "exec" a new bzr child16:12
vilaO_o16:12
jam(subprocess.Popen)16:12
jamwhat seems to have changed16:12
jamsec16:12
jamwhat *I* changed16:12
jamis that instead of "subprocess.Popen()"16:12
jamnow connect to this existing service16:12
jamand ask it to fork16:12
jamso that it already has all the state ready for the response16:12
jamWhat may have also changed16:13
jamis that when we hit the fd limit16:13
jamwe don't fail gracefully16:13
jamand that we may have more handles per-child now16:13
gary_posterdanilos, gmb gave acivities to me as the best way around, if I linked the notifications and activities as I did in the first branch.  whatchanged is the raw source for the (new, computed) attributes "attribute" and "target".  Using them would be more apt, perhaps, but arguing that it was more robust would be...doable but not super strong, IMO.  The argument would have to be that target and attribute were actually16:13
gary_posterwhat we cared about, and by pointing at those two, if there were changes, we'd at least be pointing at the semantically correct values so maybe they would have a higher chance of being robust in the future.  Actually...16:13
jamthough we shouldn't.16:13
leonardrbenji: ok, i'll look at your document, our system will build on top of what you're describing rather than replacing it16:13
jamIf we do, then it is probably a bug for me.16:13
jamvila: And the way we will scale up is by putting more Conch SSH process behind an HAProxy load balancer16:14
jamwhich we want to do anyway16:14
gary_poster...danilos, what I could do is move the normalization of duplicateof into the computed attributes16:14
gary_posterthat would be more correct16:14
gary_posterand then I could rely on target and attribute16:14
gary_posterrather than whatchanged16:14
gary_posterwhich are really one and the same, but, eh, maybe it is better :-)16:14
benjileonardr: is what you're working on similar to the PATCHPlugin?  I.e., it integrates with the YUI widget machinery to let you do REST calls as the result of widget/form operations?16:15
danilosgary_poster, it's just that it kind of seems wrong to me to process data that we have produced based on data we still have (if we still have it)16:15
danilosgary_poster, also, get_key would definitely benefit from having a docstring about what is it really doing :)16:15
leonardrbenji: yes, it uses the PATCHPlugin16:16
vilajam: oh16:16
gary_posterdanilos, not sure I follow "process data that we have produced based on data we still have" in context.  If I do understand you, which I might not, then we do not have that data anywhere other than in these activity objects.16:17
leonardrit will also let you set up a hook function to be run when a certain field of the context changes16:17
gary_posterdanilos: get_key docstring, yeah, I saw that when I was writing the MP, but I was suffering from fatigue ;-)16:17
gary_posterI'll add one16:17
benjileonardr: is your work purely for in-place editing or it it also for forms with ok/cancel buttons16:17
danilosgary_poster, right, my question is basically, do we have it in a form that's more suitable for processing (i.e. as target/attribute)? if not, whatchanged is what we'll have to live with16:17
danilosgary_poster, and fwiw, I wouldn't mind a unit test or two for get_key either16:18
gary_posterdanilos, target/attribute is the closest we can get (as far as I've been told and as far as I've seen myself), and those are computed attributes based off of whatchanged16:18
gary_posterso I think asking me to use target/attribute is reasonable, a good idea, and yet also kind of minor16:19
danilosgary_poster, right, then I guess it's ok as-is16:19
gary_posterok16:19
danilosgary_poster, heh, if it is minor, please do, if not, no worries16:19
gary_posterunit test for get_key, ok :-)16:19
=== salgado-lunch is now known as salgado
gary_posterdanilos, I meant minor as in not that important, but it probably won't be too bad.  I can give it a whirl.16:20
gary_posterrephrase, I meant minor as in not that important, but it probably will be relatively easy.16:21
danilosgary_poster, oh, my only worry is that "whatchanged" will be changed in the future, and our code might be silently broken16:21
danilosgary_poster, so, if we make sure we have parsing in only one place, that reduces the chances of that happening16:22
gary_posterdanilos, I worried about that a bit, which is why I went a bit overboard in the tests for this.  I could go even farther "overboard" and considered it16:22
jamvila: https://bugs.launchpad.net/launchpad/+bug/717345/comments/1416:22
_mup_Bug #717345: Updates to SFTP server leak file handles in use_forking_server mode <Launchpad itself:In Progress by jameinel> < https://launchpad.net/bugs/717345 >16:22
jamsee the last paragraph16:22
gary_posterand would be willing to, as I mentioned in the cover letter16:22
=== _starbuck-lunch is now known as _starbuck
gary_posterdanilos, ok so summarizing so we're clear, here's what I'll do16:23
gary_poster1) add docstring and unittest for get_key16:23
leonardrbenji: for ok/cancel buttons you'll add a custom widget and hook it into this system16:23
benjiinteresting16:24
jcsackettderyck: do you have any idea why diff overlays on lp.dev don't size remotely the same as diff overlays on lp.net? display appears to be YUI related, which is why i'm coming to you.16:24
gary_poster2) move duplicateof code to target computed attribute code, and add test16:24
gary_poster3) change get_key to use target/attribute16:24
gary_posterdanilos, yeah?16:24
danilosgary_poster, yep, sounds good16:24
gary_postercool, on it16:24
danilosgary_poster, great, thanks16:25
gary_posterthank you16:25
jtvhenninge: can you think of any problems with my approach?  po/messages.pot for project Foo will have domain Foo, name foo.16:27
deryckjcsackett, no idea off the top of my head16:29
jcsackettwell darn. :-P16:29
benjileonardr: do you know when your work will be usable by others?16:29
deryckjcsackett, I'm grabbing something to eat before the tl call next hour, but I can help you look it over after all that16:29
deryckdifferent CSS linked in devmode maybe?16:29
* deryck goes to eat now16:29
leonardrbenji: the event-based stuff is still in the theoretical stage16:29
benji-16:30
jcsackettderyck: enjoy, and thanks. :-P16:30
leonardrfor the widget stuff, there's no reason why you can't do it now--you just have to decide to buckle down and consolidate your javascript code into a widget16:30
henningejtv: You will need some name mangling16:35
henningejtv: project "Foo Bar", domain "Foo_Bar", name "foo-bar"16:36
jtvhenninge: selbstverständlich :)_16:36
henningejtv: oh, that was the project name, like in the URL, right?16:36
henningeso that's quite useful already16:36
jtvYes, but even so, I take it the mangling is already there.16:36
henningehm16:37
jtvBecause a filename can contain all the weird stuff that project names can.16:37
henningeright16:37
jtvIf not, well, then I'll add it and we'll have fixed another subtle bug.  :-)16:37
jcsackettsinzui: i have just discovered there will be maintenance folks in my apartment all afternoon, which makes mumbling hard. move to sometime soonish or to tomorrow morning?16:41
=== beuno is now known as beuno-lunch
sinzuijcsackett: can talk in 1.5 hours or after. Any time really. I wanted to talk to you anyway about the UI for seeing feature flag changes16:49
jcsackettsinzui: so like 1:30? should work for me.16:49
lifelessmoin16:50
sinzuijcsackett: okay16:50
danilosgary_poster, I've approved your branch, but if you want, I'd be happy to take a look at incremental diff (as I said in a comment)16:51
danilosabentley, thanks for the review, btw :)16:52
gary_posterdanilos, awesome, thanks.  how much longer are you around today?16:52
abentleydanilos, np.16:52
danilosgary_poster, probably another 30 mins or so16:52
gary_posterdanilos, ok, I won't make it by then.  I'll decide whether to wait for you once I'm done with the revision.  I think you'll be happy with the changes.16:53
danilosgary_poster, yeah, I am confident I will be, but I might stick around for a full hour, so try me :)16:54
gary_posterdanilos :-) ok cool16:54
danilosgary_poster, oh, one more thing, can you please check if the test runner really picks up a unittest.TestCase tests (eg. a TestGetEmailNotifications) from a file with no explicit loadTestsFromName() call (I vaguely remember that not happening in the past, but I am not too sure about it)16:58
gary_postersure danilos16:59
jtvgood night folks!16:59
danilosgary_poster, actually, I've tried it out myself, and it does :)16:59
gary_posterok cool :-)17:00
danilosjtv, good night17:00
gary_posterthank you17:00
jtvzzz17:00
=== jtv is now known as jtv-afk
leonardrbenji: the only feature i know that collection objects have is 1) the 'entries' attribute which has the default page17:00
leonardrand 2)  the 'lp_slice' method, which lets you get stuff off of the default page17:00
=== danilos changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | firefighting: - | On call reviewer: abentley | https://code.launchpad.net/launchpad-project/+activereviews
benjileonardr: thanks, I'll add that17:01
leonardrbut i suspect nobody uses collections, judging from what i've seen17:02
gary_posterleonardr that doesn't mean we shouldn't17:02
benjiyeah, I share your suspicion, that's probably why I couldn't find any examples to learn from17:02
jmlalthough using lp.testing.TestCase is better than unittest.TestCase for a whole heap of reasons.17:09
leonardrbenji: look at lib/lp/code/browser/sourcepackagerecipe.py for an example that uses the InlineEditorPicketWidget17:13
leonardrthe widget itself is tested in lib/lp/app/doc/lazr-js-widgets.txt17:13
leonardrthat's the direction we'd like to move in. it would make the javascript much more comprehensible17:14
jmllifeless: is edge getting less traffic now?17:26
henningedanilos, jtv-afk: Did I hear you complain about queue approval timing out a lot ?17:41
daniloshenninge, it was mostly jtv, the last approvals I did a week or so ago did not time out for me17:43
=== al-maisan is now known as almaisan-away
=== almaisan-away is now known as al-maisan
henningedanilos: I cannot approve a template import on qastaging, it times out in ... POFile.updateStatistics!17:44
henningewhich is in _copyPOFilesFromSharingTemplates17:44
daniloshenninge, that's very interesting, if that's timing out, I would expect different filters on +translate page to time out17:44
daniloshenninge, oh17:44
henningedanilos: do we have a way to exempt a page from the timeout?17:47
daniloshenninge, you can up a timeout per page, I think POFile:+translate already has an exception17:47
henningehow?17:48
daniloshenninge, look at https://launchpad.net/+feature-rules17:48
henningecheers17:48
daniloshenninge, you might need an admin to modify the value though17:48
=== beuno-lunch is now known as beuno
lifelessjml: per appserver yes17:51
lifelessjml: less than it was before? not entirely sure.17:52
lifelessflacoste: got a minute? I want to talk capacity ...17:52
jmllifeless: ok.17:52
flacostelifeless: i've got 10 minutes17:52
jmllifeless: was curious since we are still getting edge crashes.17:52
=== al-maisan is now known as almaisan-away
lifelessjml: thats because we're still using edge17:57
lifelessjml: we can't get rid of it transparently because of some bugs in launchpadlib/wadl17:57
bigjoolsgood night all17:57
jmllifeless: well, yes. Was asking to test a theory. If the crashes are induced by high load and we've got less traffic then I would expect fewer crashes.17:58
jmllifeless: although I didn't know that we can't get rid of edge transparently17:58
jmlthat is a pain.17:58
lifelessjml: indeed17:58
lifelessjml: you can run stats and normalise by appserver17:58
jmllifeless: my curiosity is far more idle than that :)17:59
lifelesssome appservers have crazy configs though; two in particular are configured for 32 threads (they were test instances from the scaling tests, not meant for prod deployment as-is)17:59
jmlhuh17:59
lifelessI have a branch that fixes this as part of the single threaded appserver RT17:59
* deryck goes to finish lunch18:05
=== deryck is now known as deryck[lunch]
* jml goes to get food18:09
lifelessallenap: btw thats a dupe18:09
lifelessallenap: I think if you search for person picker you'll find the original18:09
jcsackettsinzui: mumble? i have had to relocate but think i have found a quietish spot.18:31
jkakarOut of curiosity, is it possible to change the name of project or project group?  I mean the name used in URLs for bugs, branches, etc.18:31
jcsackettor given i have already had to move, we can do the usual time if you would prefer.18:31
sinzuijcsackett: get comfortable, then ping me18:31
abentleyjcsackett, why does your bugs-in-deactivated-pillars branch request reviews from both Robert and Launchpad code reviewers?18:32
dobeyjkakar: i think you have to ping a l-osa to change it18:32
sinzuijkakar: a ~registry member can change the launchpad-id in the url We want to let the owners do it bug we have not solved the case about know when the URL is not permanent18:32
sinzuialmost everyone in this channel can change a project name18:32
jcsackettabentley: lifeless was helping me out with some performance issue, i thought i would solicit comment from him directly, but leave it open to usual review.18:33
jkakarCool, thanks.  Was mostly curious if it was possible/something we did for folks.18:33
sinzuijkakar: we can also provide an alias so that old urls do work eg gaim->pidgin18:33
jkakarsinzui: Ooh, very nice. :)18:33
abentleyjcsackett, ah, cool.  I thought maybe you only wanted a review from Robert, but had requested a second review instead of changing the existing one.18:34
jcsackettabentley: a very reasonable guess.18:34
jcsackettsinzui: ready whenever, assuming mumble is cooperating.18:35
abentleyjcsackett, you're changing model code, but you're testing browser code.  That makes this an integration test, so you still need a unit test IMO.18:37
abentleyjcsackett, I recommend using person_logged_in instead of login/logout, which is already importd.18:40
abentleys/importd/imported.18:40
abentleyjcsackett, I don't understand why you're using both.18:40
=== Ursinha-afk is now known as Ursinha
=== Ursinha is now known as _starbuck
jcsackettabentley: i can agree on the test, and i'll restructure the login/logout bit.18:42
jcsackettlaziness, is the answer, regarding using both. :-P18:43
abentleyjcsackett, you can just change it to a unit test.  I don't think you need an integration test18:43
=== deryck[lunch] is now known as deryck
lifelessjcsackett: looking now18:45
lifelessjcsackett: you've done something different to https://bugs.launchpad.net/launchpad/+bug/421901/comments/1418:49
_mup_Bug #421901: Person:+bugs timeouts <lp-bugs> <timeout> <Launchpad itself:Triaged> < https://launchpad.net/bugs/421901 >18:49
henningeabentley: Your diverged fix looks good, I just QA'd it.18:56
abentleyhenninge: cool, thanks.18:56
henningelifeless: wasn't there some easy way to generate the list of bugs for the Deployments table on LPS?19:00
lifelesshenninge: there is a bug asking for that19:01
henningeoh, ok.19:02
henningeI seem to live in the future, then. ;)19:02
jcsackettlifeless, abentley: i'll respond shortly. otp.19:05
henningederyck: QA done and I requested the deployment.19:16
henningeI will go home now19:16
deryckhenninge, awesome.  many thanks!19:16
deryckhenninge, all the revs before you are qa-ok?19:16
henningederyck: yes, they were Abel's and Aaron's, I QA'ed them, too.19:17
deryckexcellent.  thanks!19:17
deryckhenninge, enjoy your night.  Sorry you had such a long day.19:17
henningeit dragged on a bit ...19:18
jmlis there a way to specify a build-dep w/ buildout?19:24
jmli.e. not install_requires19:24
lifelessjml: I don't think it discriminates between build and run, does it ?19:26
jmllifeless: that's my question.19:26
lifelessheh19:26
jcsackettlifeless: read your comment. the reason for the different join is nothing better than distraction. i'm pushing up changes now--we def want the active flag in the join.19:28
jcsackettabentley: i'm also creating the unit test. i will push that up shortly.19:28
jmlError: Picked: Sphinx = 1.0.7 :(19:34
benjijml: it looks like you need to nail the version by adding "Sphinx = 1.0.7" to versions.cfg20:09
jmlbenji: thanks.20:10
jmlbenji: I'm thinking now that maybe I should just make the test skip if sphinx isn't available.20:11
allenaplifeless: Yeah, someone else has marked it as a dupe now. It struck me that it was probably a dupe, but the dupe finder had no luck, and, as it turns out, the master bug's title doesn't really give enough away to help.20:11
lifelessallenap: well it should be easier to find now20:12
benjiSphinx isn't an onerous dependency, I wouldn't worry about making in required20:12
benjiand it would be good if there is no barrier to an existing LP developer contributing to the docs20:13
jmlbenji: good point.20:14
LPCIBotProject devel build (447): STILL FAILING in 6 hr 19 min: https://hudson.wedontsleep.org/job/devel/447/20:20
flacostejml, lifeless: http://people.canonical.com/~flacoste/lp-bugs-chart/20:23
flacostederyck: an example of YUI charts ^^^20:23
deryckhurrah!20:25
deryckyou lucky link-of-to-yahoo-cdn hacker you!20:25
lifelesshttp://webnumbr.com/launchpad-timeout-bugs#20:25
lifelesshttp://webnumbr.com/launchpad-oops-bugs.all20:26
lifelesshttp://webnumbr.com/launchpad-critical-bugs20:26
flacostei prefer my stacked graphs20:36
flacoste:-)20:36
jambzr st20:36
jammt20:36
benjiflacoste: are the fractional bugs in the first chart the result of bugs that take longer than a week to fix?20:45
flacostebenji: no, they are a workaround for http://yuilibrary.com/projects/yui3/ticket/252997220:46
benjiah20:46
flacostei replace 0 with 0.1 to prevent the graph from being screwed up20:46
benjitoo bad non-zero infinitesimals don't exist20:48
leonardrthumper, i need to leave in a few minutes--can we do a quick mumble?20:57
thumperleonardr: sure20:58
thumperStevenK: we can't hear you21:02
StevenKthumper: Not trying to talk yet21:02
deryckLater on, everyone.21:07
=== salgado is now known as salgado-afk
wallyworld___thumper: https://code.launchpad.net/~wallyworld/launchpad/recipe-build-now/+merge/4996821:15
wallyworld___go /nick wallyworld21:16
=== wallyworld___ is now known as wallyworld
=== matsubara is now known as matsubara-afk
allenapDoes anyone know a neat way to capture log output in a test? Like a context manager or a fixture?21:27
jcsackettself._21:28
jmlallenap: addDetail(), there's an example in lp.testing.TestCase, iirc.21:28
jcsackett...damn clipboard...21:28
allenapjml: Sorry, I meant how to capture log output by, for example, calls to log.debug()?21:29
jmlallenap: oh, you add one of the mock handlers21:31
allenapjml: Ah, yes, like FakeLogger.21:31
jmlallenap: yeah.21:33
allenapThank you :)21:33
pooliehi jml?21:40
jmlpoolie: hello21:44
pooliehey there21:46
pooliesorry it's so late, i had to do some chores here first21:46
jmlthat's ok21:48
wgrantjam: That's what I found, yes.21:53
wgrantjam: So once we hit the FD limit, analysis is useless.21:53
wgrantjam: We need to watch it before it hits :/21:53
jamwgrant: well, I can reproduce here, and I think I have a handle on how to clean up21:53
jamso that it isn't useless21:54
jamI've got 3 patches so far, finishing up the 4th21:54
wgrantI saw it mostly leaking sockets to the forking master.21:54
wgrantWith only a few fifo handles staying around.21:54
pooliejml, shall we talk on the phone?21:54
pooliehi jam, wgrant21:55
jmlpoolie: sure, although skype or mumble are to be preferred21:55
poolielet's try mumble21:55
jmlok21:55
wgrantjam: I was able to stably run hammer_ssh against dev with 120 concurrent connections. But FDs occasionally spiked to over 900, because there were more than 200 ssh processes. Any idea what was going on there?21:58
wgrant150 was too much, but possibly only because hammer_ssh doesn't actually limit properly.21:59
wgrantjam: Do you think we need to retain the master socket and stderr?22:00
jamwgrant: you mean in hammer? or in the Conch service?22:01
jamwe definitely do in the Conch22:01
wgrantjam: In the Conch service.22:01
jambecause it is used22:01
wgrantOh :(22:01
wgrantWe can't just wait for our sockets to close to detect exiting?22:02
jamas for hammer not rate limiting... it spawns another connection once it closes the handles to the spawned ssh22:02
jamwe could have it wait to spawn until the ssh actually exits22:02
jamjust change the line that sasy "if len(pool) < 200" to "if len(pool) + len(stopping) < ..."22:02
wgrantAha.22:02
jamwgrant: fifo's don't exit like that22:02
jamunfortunately22:02
wgrantBah.22:02
jamwhich is why we hold open the socket22:02
jambecause it *does*22:02
jamroughly22:03
jamthat socket is actually connected to the master, which will inform when the child is finally closed22:03
wgrantRight.22:03
wgrantjam: Did you obtain the process listings that I discovered the existence of yesterday?22:04
jamwgrant: yeah, that is patch 1,2 and I think 322:04
wgrantAh, I see you followed the logs.22:04
jamwgrant: Conch asks for a new child, starts connecting but can't finish22:04
jamthen the child sits around waiting forever22:04
jamhttps://code.launchpad.net/~jameinel/launchpad/lp-serve-child-hangup/+merge/5005522:05
jamtells the child to hang up after 2 minutes22:05
wgrantjam: Oh yeah, I worked that out quickly enough.22:05
wgrantjam: I also looked into the log rotation issue late last night.22:05
wgrantIt strongly suggested that we reached exhaustion at 10:29, not 11:01.22:05
wgrantYet the first bad process is from 11:01.22:05
jamwgrant: certainly, at least the first one22:06
wgrantjam: But 117*5 is only 600ish. The base is ~10. So we have 400 handles unaccounted for.22:10
wgrantUnless there were connections staying around with fifos open after the forking service had died?22:10
jamwgrant: we are missing the log that might tell us about other bad children.22:13
jamIf the server cannot process a request but the child doesn't hang around.22:13
wgrantRight.22:14
wgrantI wonder.22:14
wgrantOnce we have it cleaning up, we may also want to bump the FD limit.22:15
wgrantArgh.22:15
wgrantExcept that I tried that, and then select crashed instead.22:15
jamwgrant: interesting. I've certainly been reproducing it by *lowering* the FD limit22:17
jamat 100, I can hammer with 15, but not with 2022:17
jamulimit -n 100, hammer --load=20 starts failing, hammer --load=10 passes just fine22:17
wgrantjam: Well, I was hoping we could get it to stop leaking on failure, then quadruple the failure point so it's safe to run on prod.22:18
wgrantSo we can watch and see if there are any other leaks.22:19
mwhudsonwgrant: probably need to use the poll reactor in that case22:19
wgrantProbably.22:20
mwhudsonprobably should anyway actually22:20
jammwhudson: you mean select.poll vs select.select?22:20
jamor however that translates into Twisted objects22:20
mwhudsonjam: yes, twisted has a few reactors22:21
mwhudsonthe default is select22:21
mwhudsonbut we'd probably want to use the poll or epoll reactors22:21
mwhudsonand have to, if we want to support > 1024 (?) fds22:21
mwhudsonor you can recompile python with MAX_FD lifted or whatever it is :)22:22
poolie   robert tries to correct deryck on his understanding of22:22
poolie   iterations, but fails miserably because deryck is right (or at22:22
poolie   least taking notes and has the last word, muuuuhahhhh!) :-)22:22
poolie:)22:22
mwhudsonyeah, that made me laugh too :)22:24
sinzuiwgrant: mumble?22:31
wgrantjam: Which leaks haven't yet been eliminated?22:42
pooliejam, couldn't we pass the fd across the unix socket?22:43
jampoolie: still takes up a fd22:43
pooliethis seems to be getting complicated22:43
wgrantI think we need to bust the 1024 FD limit.22:44
wgrantWhich means increasing the ulimit and moving to the new reactor.22:44
jamwgrant: or just getting the haproxy stuff working and using 2 services22:44
wgrantTrue.22:44
pooliewell, using poll or similar is probably a good idea anyhow22:44
pooliejam, so it seems like allowing there to be a state where the child bzr process is started, but it's not connected to conch is just giving an opportunity for trouble22:45
poolieso i'm suggesting using fd passing as a way to eliminate that, rather than to reduce the number of fds used22:45
jampoolie: you can still run out of fds while transferring them over the socket.22:46
jamI also don't know how to do the socket transfer stuff, though I can learn22:46
huwshimisinzui: Let me know when you're available to talk about that stuff22:46
jamso you still have the possibility of the child being open because it couldn't transfer the handles22:46
pooliegary_poster, is there any reason your apidoc couldn't move to people.c.c and therefore be public?22:46
mwhudsonpoolie: i think it documents shipit22:46
mwhudsonor something lame like that22:47
wgrantBut the shipit code is basically public anyway :(22:47
sinzuihuwshimi: I expect 2.5 hours. My daughter are providing an itinerary for the next few hours22:47
gary_posterhi poolie.  yeah, it probably does, though that coud be adjusted, if it still worked. :-/22:47
huwshimisinzui: Sure, no problems :)22:47
pooliejam, i would expect you would set up the fds before forking22:47
poolietherefore not start the child at all if something goes wrong22:47
pooliethat's why i say we could avoid the issue of things being half-22:48
pooliestarted22:48
jampoolie: interesting idea, but quite a bit more complex to change the current code. I'm sure it can be done, but it changes a lot of the ordering22:48
pooliegary_poster, maybe we could even just have two copies, one with shipit and one without22:49
pooliebut as you say people can run it up themselves22:50
pooliejam, i wonder if it would be worth it if it's safer22:50
pooliei don't think of using one thread in python to stop another as being a very safe technique22:50
jampoolie: works quite well in my testing, especially since the one is only blocked on an os.open22:51
pooliethe first iteration worked well in your testing too ;-)22:51
jampoolie: true, though I'm also testing under these conditions22:54
jamwith running out of file handles, and seeing the cleanup22:55
jamI'm willing to iterate on this a bit22:55
jambut it is my EOD right now22:55
pooliesure, i'm just saying i think it's inherently safer to avoid this stage, all else being equal22:55
pooliei've used fd passing before22:55
lifelessjam: poolie: we've 3 weeks to get the next iteration prepped, by default22:55
jampoolie: then perhaps you'd like to write a patch?22:55
poolieif i get a chance i will see if it's available in python and how it would fit in22:55
jampoolie: the 3-4 patches I've put up today, I can see that I can force the service to run out of handles, it complains for a while but still serves what it can22:56
jamat the end, everything gets cleaned up22:56
jamand lsof shows it back at pristine state22:56
jampoolie: I don't see 'sendmsg' in the socket documentation: http://docs.python.org/library/socket.html#module-socket22:59
jamAnd "google python sendmsg recvmsg" is a bit lacking22:59
jamhttp://bugs.python.org/issue1194378 seems to be an implementation22:59
jambut looks to only be py 2.7/3.122:59
jamwhich turns out to be a dupe of: http://bugs.python.org/issue656023:00
jamwhich doesn't seem to have a resolution23:00
jamjust a patch23:00
jamanyway, maybe I'll see you guys later tonight.23:00
pooliejam, hm, we might need our own C glue, and perhaps at that point it's not worth it23:04
spivctypes might do.23:05
spivI'm pretty sure I've heard of people doing this in Python before though.23:05
spiv(but perhaps with C glue)23:06
spivThere's http://pypi.python.org/pypi/sendmsg/23:09
poolieas a c extension23:11
* poolie is looking into bug 72040323:11
_mup_Bug #720403: bzr server error: "file exists" while taking lock <code-hosting> <Launchpad itself:Confirmed> < https://launchpad.net/bugs/720403 >23:11
pooliehi spiv23:11
spivRight, but at least it's a C extension you don't have to write from scratch yourself :)23:13
wgrantsinzui: Do you have any suggestions for reducing the DMP spam?23:20
lifelesswgrant: dmp ?23:20
wgrantI think I will stop logging errors as errors, and perhaps increase the check interval.23:20
wgrantlifeless: distribution mirror prober23:20
sinzuimirror prober23:20
lifelessah23:20
sinzuiwgrant: I do not.23:21
lifelessare you talking about oopses from it, or jus tlogging ?23:21
wgrantJust logging.23:21
wgrantIt logs some normal probe errors at warning/error23:21
wgrantAnd sometimes overruns its window.23:21
lifelessit should parallelise23:22
lifelessits heavily driven by mirror speeds23:23
wgrantIt is parallised.23:24
wgrantAlthough not completely.23:24
wallyworldthumper: is there a bug for the "build now" work?23:27

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