/srv/irclogs.ubuntu.com/2011/04/18/#launchpad-dev.txt

thumperok00:00
thumpersort_order is only for iteration00:00
thumperand comparison00:00
thumperinside the enum code itself00:00
thumperused primarily for ordering the enum values inside drop down lists et al00:00
thumpernothing to do with the db queries00:00
thumperor the db_value00:01
lifelessright00:01
lifelessso I think the thing to do then is to change from mid 30's for the INCOMPLETE_WITH_RESPONSE and INCOMPLETE_WITHOUT_RESPONSE00:01
lifelessand insert them adjacent to the existing INCOMPLETE value00:02
thumperah... sure00:02
lifelessthumper: is the default sort order numeric ?00:15
* thumper tries to recall00:16
* thumper looks at the code00:16
thumperlifeless: the enum item has a sortkey value that is numeric00:17
thumperthe sort_order is used to recreate the sortkey values00:17
lifelessso if its absent its numeric00:17
lifelesscool00:17
lifelesshmm00:23
poolie_hi00:27
wallyworldlifeless: i have a test which calls DocTestMatches. It fails if "matchee" is unicode but passes if I encode to utf-8 as in: self.assertThat(markups[1].encode('utf-8'), DocTestMatches(expected_item_1, self.doctest_opts))00:29
wallyworldlifeless: the error is00:29
wallyworld  File "/var/launchpad/tmp/eggs/testtools-0.9.10-py2.6.egg/testtools/matchers.py", line 169, in _with_nl00:29
wallyworld    result = str(actual)00:29
wallyworldUnicodeEncodeError: 'ascii' codec can't encode character u'\u2026' in position 2121: ordinal not in range(128)00:29
wallyworldlifeless: should DocTestMatches be fixed? is it broken? ie should str(actual) be replaced with actual.encode('utf-8')?00:30
wallyworldlifeless: this is an existing test that broke when a change to made to what was rendered on a page. it was not previously being passed a unicode string00:31
lifelesswallyworld: I don't remember if its a doctest limitation or a shallow bug in testtools00:31
lifelessit seems reasonable to me that we'd support self.assertThat(u'fo', DocTestMatches(u'bar'))00:32
wallyworldlifeless: ok. for now i can amend the test with the .encode() and file a testtools bug or look up and existing one and include a XXX in the test?00:32
lifelesscertainly file a test tools bug00:34
wallyworldwill do00:34
lifelessencoding to utf8 is a tolerable workaround, though it will break if someone runs the lp test suite on a cp* or shift-jis system [but it wouldn't be the only thing to break that]00:35
wallyworldunless there's another workaround i can use?00:35
lifelessyou could fix the bug :)00:35
wallyworldlifeless: sure. but i want to get my branch landed without the blockage caused by having to land a testtools update00:37
wallyworldor i guess i could do them together00:37
lifelessIn terms of fixing it, I think something like:00:38
lifelessif type(foo) is unicode:00:38
lifeless ...00:38
lifelesselse:00:38
lifeless  foo = str(foo)00:38
lifeless   ...00:38
lifeless[that is, special case handling of foo]00:38
lifelessit won't be entirely correct unless you also handle both sides being conditionally unicode00:38
wallyworldyes00:39
wallyworldi wish my unicode foo was better00:39
lifelessIts not you, its python.00:40
wgrantPython, and all of the people who refuse to use UTF-8.00:40
wgrantwallyworld: I think we need to disable the YUI tests :(00:40
wallyworldwgrant: i saw another failure :-(00:40
wgrantYeah.00:41
wallyworldwell it was worth a try00:41
wgrantDefinitely.00:41
wgrantit was a useful test.00:41
wallyworldwe need to look at perhaps another harness to run them besides windmill00:42
wgrantwallyworld: YUITestLayer?00:45
wallyworldwgrant: i think so00:45
wgrantWTF00:50
wgrantUnity just went insane.00:50
lifeless‽just ?00:50
wgrantIt all worked fine, except that any window that you clicked on disappeared.00:50
wgrantThen reappeared when I clicked again.00:50
wallyworldKDE is rock solid :-P00:51
lifelessbut you loose 30K pixels. Thats got to hurt.00:52
huwshimiwallyworld: That's irrelevant. So is Gnome, XFCE etc.00:52
wallyworldhuwshimi: i was just stirring00:53
wgranthttps://code.launchpad.net/~wgrant/launchpad/disable-yuitestlayer/+merge/5805801:08
wgrantBug #763604 sounds like a browser bug...01:09
_mup_Bug #763604: Cannot remove attachment when reporting new bug <Launchpad itself:New> < https://launchpad.net/bugs/763604 >01:09
wgrantIsn'01:09
wgrantt most of the point of that widget to not be manipulatable except by the user?01:10
poolie_lifeless: https://bugs.launchpad.net/ubuntu/+source/schroot/+bug/764086 is a slightly interesting example of your task unification thing01:12
_mup_Bug #764086: dchroot.conf parser uses deprecated key "location" <schroot (Ubuntu):New> < https://launchpad.net/bugs/764086 >01:12
poolie_like many bugs it's already fixed in natty but we really want to say, to start with, 'please fix it in lucid-updates'01:13
poolie_and there are two ambiguous ways to do it: nominate for lucid, or target the main task to lucid-updates01:13
lifelessindeed01:23
lifelessso this is something I think a clueful user would reasonably file directly on lucid01:23
poolie_i agree it is something they would want to file directly on lucid01:28
poolie_can you do that in lp today?01:29
wgrantNo.01:30
dobeya script could nominate for release and target milestone to lucid-updates, but you can't do it on the web01:35
dobeyi guess01:35
lifelessinterestingly01:41
lifelessapport tags bugs as01:41
lifelessnatty01:41
lifelessetc01:41
lifelessthe nomination stuff is intended to stop incorrect bugtasks01:41
lifelessmore precisely01:42
lifelesson a frozen series01:42
lifelessdevelopers opt in to having tasks01:42
lifelessand non-priviliged folk can suggest where a task should be using nominations01:42
lifelessthere is an unresolved tension between 'bug exists' and 'task to work on the bug'01:42
poolie_what's the semantic difference between nominating for lucid, and targeting to lucid-updates?01:43
lifelesstheres a few01:43
lifelessfirstly you can't target to lucid-updates, that isn't a series.01:44
lifelessyou can target to lucid, if you have access01:44
lifelessnominating to lucid would write a proposal that it should be targeted against lucid01:44
poolie_there is a milestone called 'lucid-updates' and you can target it01:44
lifelessah01:44
lifelessso 'target' and milestone are different again01:44
poolie_the milestone ui says 'target to milestone' :)01:45
lifelessright01:45
lifeless'bug tasks' have a 'target' field01:45
lifelesswhich is the IBugTarget that the bug is for01:45
lifelessbah01:45
lifelessbugtask is for01:45
poolie_so, in your proposed change01:45
lifelesswhich can be a product/productseries/distro/distrosourcepackagename/distroseries/distroseriessourcepackagename01:45
poolie_the default bugtask target would be the current development series, natty01:46
dobeywhat i find really annoying, is that it is impossible to remove a bugtask from a bug01:46
poolie_and then it would be obviously silly to have a natty series milestone called lucid-updates01:46
lifelessdobey: yes, we're going to do something about that.01:46
dobeyyou can only change the project/package01:46
dobeycool01:46
lifelessdobey: one proposed thing is to hide 'Invalid' status tasks, unless *all* the tasks are invalid.01:47
lifelessdobey: what do you think of that?01:47
poolie_!01:47
poolie_seems like that  would make it hard to undo some changes01:47
lifelesspoolie_: it might; its a discussion point at the moment01:47
dobeylifeless: it's not so much the web ui that bugs me, so much that i continue to get unneccesary e-mail01:47
lifelessdobey: there is a separate bug I filed about that :)01:48
lifelesspoolie_: so the common case is one task per bug01:49
dobeyi would really like to be able to remove a bugtask; but shouldn't be able to if there's only one task on a bug01:49
lifelesspoolie_: in that case, the task would just show as invalid01:49
lifelesspoolie_: not show up by default in searches (thats the current behaviour anyway)01:49
lifelesspoolie_: in there are two tasks, and one is invalid and one is (say) wontfix.01:49
poolie_yeah, i can imagine01:50
poolie_the case i was thinking of is, suppose it's affecting 'bzr (Ubuntu)' and 'bzr'01:50
poolie_and a cosmic-ray commenter changes 'bzr' to invalid01:50
poolie_i suppose you would just click 'also affects project' again01:50
lifelessyou would fix this by saying 'also affects'01:50
lifelessyup01:50
poolie_would that resurrect the existing task?01:50
lifelesssomething equivalent to01:51
poolie_i would like the dates to remain accurate01:51
poolie_such as they are01:51
poolie_rather than actually deleting it01:51
lifelessopen question is whether the dates etc /should/ be preserved or not01:51
poolie_mm01:51
lifelessnote that this question applies whether we reuse invalid to hide, or have a new 'deleted' status.01:51
poolie_anyhow, i can see how it would be a tidy implementation01:51
poolie_right01:51
dobeybut only allow driver/owner/maintainer/whatever to remove tasks, and not arbitrary users01:51
poolie_right, the job of arbitrary users is to _add_ more task lines :)01:52
lifelessthe only time that this question doesn't apply is if we actually delete things - which presupposes that we've concluded the dates not mattering, and that the error rate on deletes would be low enough to not need an undo facility.01:52
poolie_a la http://pad.lv/41040701:52
poolie_hm01:53
poolie_i think of .status as being something like a member variable of the task01:53
poolie_it's pretty much presented that way in the ui and api01:54
poolie_whereas deleting a task, such that you'll need to create a new one later, is more like a method01:54
lifelessthats a display issue01:55
lifelesswe could:01:55
lifeless(agurably a display issue)01:55
lifelesswe could:01:55
lifeless - show a button to delete01:55
lifeless - hide invalid except when there is only one task01:55
poolie_i think it would be weird if, over the api01:58
poolie_bt.status=invalid;bt.lp_save(); bt.status=confirmed01:58
poolie_did not work01:58
lifelessI agree01:59
lifelessI see no reason it wouldn't01:59
lifelesswhat is weird is that bt.lp_delete(); bt.status=confirmed;bt.lp_save() would work.01:59
lifelessif we chose to expose it as a semantic delete.01:59
poolie_why not just delete it?01:59
lifelessdestructive delete is harder to undo02:00
lifelessand users make lots of mistakes02:00
poolie_both true02:02
lifelessthat combined with a 300GB database is a pretty powerful trifecta02:03
lifelesswgrant: https://launchpad.net/ubuntu/+bugtarget-portlet-tags-content (Distribution:+bugtarget-portlet-tags-content)02:04
lifeless       OOPS-1933A810, OOPS-1933J81602:04
lifelessbah02:04
dobeyif delete was restricted to privileged users though, would they really make that many mistakes?02:04
lifelessfail font in chromium, I read that as JB for a second02:04
wgrantdobey: Hahahah02:04
lifelessdobey: privilege correlates to experience not accuracy ;)02:04
dobeycould preserve the history before the delete.02:05
lifelessthats what this proposal does.02:05
dobeylifeless: heck, i'd be happy if it was only available via API even. :)02:05
poolie_well, marking the object 'deleted' or whatever is a classic way to all it to be undone02:05
poolie_i guess you could start by even just hiding invalid tasks from the bug page, or not sending mail about them02:05
poolie_in fact the second case is interesting02:06
poolie_bug is marked invalid, then a person replies to say 'no it really is valid'02:06
poolie_hm, or they change the existing task to point at the project with the invalid task02:06
wgrantPast proposals have suggested that invalid tasks get bugmail when no tasks are valid.02:06
poolie_and otherwise it's the job of whoever is getting the bugmail to make decisions about it?02:07
dobeyproblem is, i don't want the bugmail :)02:09
wgrantpoolie_: Right.02:10
wgrantpoolie_: Just like if the task was retargetted.02:10
wgrantRetargeted meaning having its target changed, not being targeted to a series, or targeted to a milestone.02:10
wgrantlifeless: https://lp-oops.canonical.com/oops.py/?oopsid=OOPS-1933A10802:11
wgrantlifeless: lazr.restful's exception handling is buggy in other ways too :(02:11
lifelessdobey: yes, me too02:11
lifelessdobey: long list of things to fix02:12
lifelesswgrant: thank you so -very very very- much for getting even this much02:12
wgrantlifeless: Erm, the fix isn't landed yet, but yeah.02:12
lifelesswgrant: though that looks pretty ok02:13
wgrantlifeless: This isn't a timeout, so the data is fine.02:13
lifelessoh of course02:13
lifelessmea culpa02:13
wgrantlifeless: But the traceback is obliterated by lazr.restful explicitly reraising the exception object.02:13
lifelessyes02:13
wgrant(in 2.7 this would work fine)02:13
wgrantEr, 3.x.02:13
wgrantNot backported to 2.7, is it...02:13
lifelessworks fine in 2.x if include the backtrace02:13
lifeless3 arg raise02:14
lifelessits just poor python02:14
wgrantYeah.02:15
lifelessGRAH02:17
lifelesswhoever thought a bug couldn't have 1000 actions02:17
* lifeless puts on the positive face02:17
wgrantActions as in BugActivity?02:17
lifelessROM BugActivity02:17
lifelessWHERE BugActivity.bug = 65905202:17
lifelessORDER BY BugActivity.id LIMIT 100102:17
lifelessthats whats triggering the shortlimit02:17
wgrantwhat.02:18
wgrantAt least there was shortlist() there to warn.02:18
lifelessI think it is02:18
lifelesslets check02:18
lifelessyup02:20
jtvhi wgrant02:45
wgrantHi jtv.02:45
jtvHad a chance to look at the updated publish-ftpmaster script?02:46
wgrantNot enough.02:46
jtvWhich, on a sidenote, I found may actually have been slower than it needed to be all this time.02:46
wgrantOh?02:46
jtvI tried not to work during the holidays, honest.02:46
jtvYou see, it tries to update these two directories from each other using hardlinks.02:47
jtvFar as I can tell, it does that by passing rsync the -H option.02:47
jtvWhich says "try to figure out whether there are any hardlinks within the source, and recreate those in the destination."02:47
jtvWhereas what I think is really wanted is --link-dest.02:47
wgrantHmmm, -H makes sense, but I'm not sure --link-dest is what we want.02:48
wgrant-H is there to not undo fdupes.02:48
wgrantIt's possible that --link-dest would be faster than what we have now, bit it really depends.02:48
jtvOh, so there are "meaningful" hardlinks in the publishing directory?02:49
wgrants/bit/but/02:49
jtv(Besides faster, it'd also be much more space-efficient of course)02:49
wgrantSaving about a megabyte, I believe, yes.02:49
wgrantRight.02:49
jtvThere's only a megabyte in the dists directories?02:49
wgrantNo, I mean the current hardlinking done by dsync link-dupes saves about a megabyte.02:50
jtvOh02:51
jtvBut are the hardlinks significant?  Or are they still just a space-saving measure?02:51
wgrantNot significant AFAIK.02:51
wgrantTotal space saved by merging 28.1kb. 577 files affected.02:51
wgrantOooh yeah.02:51
wgrantI guess it saves inodes and a trivial amount of space.02:52
jtvwgrant: it sounds pretty insignificant compared to what we could save on not duplicating the dists directory itself.02:57
wgrantjtv: Indeed.02:58
wgrantAlthough the rsync only takes 23 seconds.02:58
jtvIn that case, why do we go to all the trouble of re-using that directory?02:59
wgrantCopying the whole thing would take much longer.02:59
wgrantHard-linking maybe not so much.02:59
jtvExactly.03:00
jtvIt'd even save the time of reading files.03:00
wgrantYeah. But we have to hope that nobody uses O_APPEND :)03:01
jtvI guess03:01
jtvExcept03:01
jtvno03:01
jtvAll the risks are from re-using the directory.03:02
jtvHmm03:02
wgrantNo...03:02
jtvIt depends on when, I guess.03:03
jtvChanging a hardlinked file and then rolling back the publication would cause trouble.03:03
wgrantIf they're hard-linked and someone writes a file without first unlinking it, your archive is borked.03:03
jtvSo the risk is that publish-distro or one of the publish-distro plugin scripts might modify a file.03:03
wgrants/might/probably do/03:03
wgrantIn lots of places.03:04
jtvOh03:04
jtvWell never mind that then.03:04
wgrantJust about nothing explicitly unlinks first...03:04
lifelesspop quiz03:04
lifelessnvm03:05
lifelesswe already expose it ;003:05
wgrantjtv: Release file generation, for example.03:05
wgrant        f = open(os.path.join(03:05
wgrant            self._config.distsroot, suite, "Release"), "w")03:05
wgrantBye.03:05
jtvWell never mind that then.03:05
lifelessactually03:06
lifelesshere is a question03:06
lifelessshould we still expose an unqualified 'incomplete'03:06
wgrantYes.03:06
lifelesswhere ?03:07
wgrantNeeded for backwards compatibility.03:07
wgrantAnd stuff does use it.03:07
wgrant(good luck with that)03:07
lifelesswgrant: outside of migration support03:08
lifelesswhere do you you think we should expose it?03:08
wgrantI personally think that s/New/Unconfirmed/ and merge "Incomplete with response03:08
wgrant" into that.03:08
wgrantThere's very little useful distinction.03:08
lifelesswgrant: while I'm pro that thats a larger discussion to do03:09
lifelesswhat I'm doing is materialising an inferred status03:09
wgrantWe're going to need to break API clients at least once.03:09
lifelessso that we can aggregate it sensible.03:09
wgrantLet's do it only once.03:09
lifelessseparate problem03:10
lifelessI'm hoping not to break anything at all03:10
wgrantAh.03:10
wgrantOK.03:10
lifelessI'm talking about UI03:10
lifelesslike03:10
lifelessshow 'incomplete' but set to incomplete-without-response03:11
lifelessthats a place I think showing incomplete is useful03:11
lifelessbut03:11
lifelessa bug that is incomplete03:11
lifelesscannot be asked for more input without toggling to new and back to incomplete.03:11
lifelessthis is nuts03:11
lifelessso if we show the bug status as incomplete-with-reponse and show incomplete in the list03:12
wgrantI guess. I am fairly strongly against making any UI changes without fixing it properly, though.03:12
lifelessfolk can trivially set it back to incomplete-without-response [by choosing incomplete]03:12
wgrantSince this is just going to be awkward.03:12
lifelessone option is to not change the ui at all03:12
wgrantThat would be my preference.03:13
wgrantYour proposal is less awkward than the status quo, but the change is probably more awkward.03:13
lifelessis getInitialValuesFromSearchParams dead code ?03:14
lifelessplease-say-yes-please-say-yes-please-say-yes03:14
wgrantIt seems to be... but that's very odd.03:15
lifeless\o/03:15
lifelessI'd kind of like to expose the actual status03:18
lifelesswhy do you say a change would be awkwards03:18
lifelessI wonder how many folk set 'incomplete' and *then* make a comment using ajax saying 'please tell us more'03:20
lifelessthus defeating the incomplete-without-response entirely.03:20
wgrantlifeless: Change to a bad solution is awkward, even if the solution is better than what we have now.03:28
wgrantParticularly since we're planning to change this again in the next 12 months.03:28
lifelesswhy is it awkward though?03:36
wgrantWe have a status field that doesn't show the status.03:36
lifelessthats what we have now03:38
wgrantIt has the same idea of 'status' as most of the rest of the UI.03:38
lifelessthe bug search form shows two incomplete statuses03:40
lifelessthe drop down widget to change a bug status shows one03:40
wgrantThe with/without reponse statuses only show up on the search form.03:41
lifelessand the bug portlet exposes that there are two in yet another way by doing incomplete(can expire) but searching for a variant again03:41
wgrantOn the advanced search form, even.03:41
lifelessbug expiry discusses this in the various bits of help03:41
lifelessso I don't know that I accept your assertion about most of the ui pretending their is one such status03:42
lifelesss/their/there/03:42
wgrantMmm.03:44
wgrantWell, it's a terrible mess at the moment.03:44
lifelessagreed.03:45
lifelessI want to understand what is awkward about reducing the amount of inconsistent UI here - by accepting that we have two incompletes and starting to propogate them.03:46
lifelesswe can do a totally hidden thing, I'm sure.03:46
wgrantAaaa03:46
wgrantaaaaaaaaaaaaaaaaa03:46
lifelessECAT ?03:47
wgrantprocess-accepted is crap.03:47
wgrantIt goes through all pending uploads.03:47
wgrantprocessing them.03:47
wgrantlogging errors if they fail.03:47
wgrantThat sort of thing.03:47
wgrantBut it doesn't do any transaction stuff.03:47
lifeless\o/03:47
wgrantSo a failed upload gets the partial state left uncommitted, so it gets committed at the end.03:47
wgrant(and library files created in early uploads aren't accessible to later ones)03:48
wgrantThis is the sort of thing that you *really really* want to be transactional :/03:50
lifelessheaddesk04:01
lifelessBug.permits_expiration04:01
=== poolie__ is now known as poolie
wgrantHmmmmmm.04:35
wgrantOur Referer parsing sucks.04:35
wgrantOOPS-1934A8304:36
wgrantGrar.04:41
wgrantWeb browsers suck.04:41
wgrantBackslashes are not legal URI characters, please don't send them.04:41
* wgrant stabs Chromium in the eye.04:45
wgrantAnd Firefox.04:45
wgrantStop autocorrecting my backslashes to slashes.04:45
lifelesswgrant: which browser ?04:46
wgrantlifeless: Chromium and Firefox appear to both happily send backslashes in URLs.04:47
wgrantDespite RFC2396 excluding them.04:48
wgrantWhy don't people follow specs :(04:48
wgrantAnd why does Chromium insist on treating URLs as non-opaque entities to be autocorrected unoverridably?04:48
wgrantHuh.04:52
wgrantFirefox encodes it correctly if it's in the path, but not if it's in the query string.04:53
wgrantYeah, that's pretty clearly illegal.04:54
wgrantGah.04:54
wgrantCan we please delete the Web and start over?04:57
lifelessoh yay05:00
lifelessunwise turns up exactly twice in 239605:01
wgrantlifeless: It's only documenting the rationale for the exclusions.05:01
lifelessyeah05:01
lifelessbut its really strange to use a BNF rule to do that05:02
wgrantIt is.05:02
lifelessand then not reference that elsewhere05:02
wgrantOh hmm.05:03
lifelessquery = *uric05:03
lifelessuric = reserved | unreserved | escaped05:03
lifelessreserved      = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" |05:03
lifeless                      "$" | ","05:03
lifeless      unreserved    = alphanum | mark05:03
lifeless      mark          = "-" | "_" | "." | "!" | "~" | "*" | "'" |05:03
lifeless                      "(" | ")"05:03
wgrantYes.05:03
lifelessso yues05:04
lifelessclearly FUBAR05:04
wgrantIn this case the URL actually comes from apport, not generated from a form.05:04
wgrantHowever, it still sends bad stuff if you type it in the address bar :/05:04
lifelessuser input cannot be trusted.05:05
lifelessThats like rule 1 of programming, right ?05:05
lifelesswhich reminds me05:05
lifelessneed to talk to pitti about apport + privacy.05:05
lifelessbut now, grocery shopping05:05
wgrantExcept apport generates the URL with the backslash urlencoded.05:07
lifelessare you sure we aren't double decoding somewhere ?05:11
lifeless-> gone05:12
wgrantOther stuff is still encoded.05:13
16WAAA4BVStevenK: i have 2 mp's to fix the failing windmill tests if you are interested...05:19
16WAAA4BVhttps://code.launchpad.net/~wallyworld/launchpad/picker-textfield-plugin/+merge/5781905:19
16WAAA4BVhttps://code.launchpad.net/~wallyworld/launchpad/fix-windmill-tests/+merge/5806605:19
StevenK16WAAA4BV: Have you seen your nick? :-)05:20
16WAAA4BVyes, just now :-/05:20
16WAAA4BVStevenK: sadly, those windmill tests, if run, would have prevented a ui regression :-(05:20
16WAAA4BVand it's not letting me change my nick back05:21
StevenK16WAAA4BV: The windmill tests are run on Jenkins? Do you check the results?05:21
16WAAA4BVlooks like wallyworld is known as '16WAAA4BV' :-)05:21
16WAAA4BVStevenK: i did today, but because they are not in-process, stuff got landed and merged without the failure being noticed05:22
16WAAA4BVand if i had checked earlier, it would not have prevented the bad landing05:22
StevenK16WAAA4BV: Identify to NickServ as wallyworld and then release05:22
16WAAA4BVwe gotta get these tests reliable05:23
StevenK16WAAA4BV: I'm not comfortable enough with my JS to approve the first one, but r=me for the second.05:23
16WAAA4BVStevenK: ok. i'll get someone to look at the first one later tonight. that's the real bad one which breaks the picker :-(05:25
StevenK16WAAA4BV: You could ask lifeless or wgrant to review it?05:25
StevenKOr thumper if he's unbusy05:25
16WAAA4BVstill trying to figure out how to fix my nick05:25
16WAAA4BVstupid quassel05:26
=== 16WAAA4BV is now known as wallyworld1
StevenKwallyworld1: What error do you get if you try to change to wallyworld?05:27
wallyworld1no error it just doesn't accept it. but let me try something else05:27
StevenKwallyworld1: If you get the nick is in use, I daresay services has taken over your nick and you need to instruct it to release its lockout05:27
wallyworld1StevenK: how do i do that?05:28
wgrantStevenK: What?05:28
StevenKwallyworld1: Open a query window to Nickserv and identify to it by "identify wallyworld <your password>" and then "release"05:28
wgrantOh, if you've got that extra protection on, right.05:28
StevenKwgrant: And I'm not comfortable with my JS for https://code.launchpad.net/~wallyworld/launchpad/picker-textfield-plugin/+merge/5781905:29
* wallyworld has the right nick again05:38
StevenKwallyworld: \o/05:44
wallyworldStevenK: thanks for the help. i've registered it this time too :-)05:44
=== almaisan-away is now known as al-maisan
StevenKwallyworld: You should have registered it quite some time ago :-)05:57
wallyworldStevenK: yes, such a noob that i didn't know i had too05:57
StevenKRegistered : Oct 28 14:46:18 2000 (1005:57
StevenK          years, 24 weeks, 5 days, 14:11:07 ago)05:57
StevenKBloody hell05:57
wallyworldwtf? 10 years.05:58
StevenKThat's mine05:58
wallyworldrealise that :-)05:58
StevenKI've been around free software for a long while05:58
wallyworldStevenK: you don't look that old :-)05:59
StevenKHm, I think that's the era that #debian-devel was still on this network05:59
ajmitchStevenK: not bad05:59
StevenKI was ... 19.06:00
StevenKwgrant still beats me, since he was 12.06:00
ajmitchStevenK: funnily enough, my nick was registered 3 weeks later than yours06:00
wgrantStevenK: 14 :(06:00
wgrantlifeless: Aha.06:01
StevenKwgrant: Which was what, 2008? :-P06:01
wgrantlifeless: I grepped appserver logs.06:01
StevenKajmitch: Heh, nice.06:02
ajmitchbug 434244 annoys me :(06:02
_mup_Bug #434244: No search method on bugs collection in API <lp-bugs> <Launchpad itself:Triaged> < https://launchpad.net/bugs/434244 >06:02
spmmy first patches accepted were in 1990. I had no idea was the GPL was. Opensource as a phrase was years in the future. It was just "code" and it didn't work the way I wanted on the hardware I was using; so played around with the signals generation/timing and got it mostly working.06:03
lifelesswgrant: any?06:03
wgrantlifeless: Well, I thought I'd found something. But just realised I was one level of encoding off.06:03
StevenKspm: Patches to what, out of interest?06:04
wgrantlifeless: I think the initial request was somewhat mangled by OpenID, and then subsequent requests were mangled by the browser (firefox and chromiuim show %5c as \ in the address bar, and put \ into the clipboard when it's copied)06:05
StevenK"Tear down canonical.testing.layers.AppServerLayer in 3 minutes 0.709 seconds." :-(06:05
wgrantBut there's still an initial bug in the OpenID stuff somewhere.06:05
spmgawd. wonder if I can recall what it was called. it was a graphical game that was played on X workstations. a clone of balderdash? from memory. Plus I think there were some to another game xconq. Not sure if the work we were doing on the VMS port of ISODE ever went back in as patches either. suspect didn't.06:05
wgrantspm: How's it going?06:06
spmstill pushing06:06
wgrantLooks like we may have to give up :(06:06
wgrant………06:24
wgrantlifeless: Have a look at form_args in lib/canonical/launchpad/webapp/login.py06:27
wgrant(peril sensitive sunglasses may inhibit your viewing ability)06:28
LPCIBotProject windmill build #186: STILL FAILING in 10 min: https://lpci.wedontsleep.org/job/windmill/186/06:37
lifelesswgrant: thanks for the warning.06:39
StevenKCan haz review from someone?06:40
=== al-maisan is now known as almaisan-away
StevenKhttps://code.launchpad.net/~stevenk/launchpad/dsd-packagediff/+merge/5807006:41
wgrantlifeless: So, there's the non-browser part of our problem :/06:42
lifelesswgrant: the UnicodeDammit thing ?06:42
lifeless' Thanks Diogo; If LP can digest these URLs now, it seems I don't need to06:43
lifeless> change anything in apport.'06:43
lifeless><06:43
lifelessbad urls are bad06:43
wgrantlifeless: No... it gets the values from request.form (they're decoded), and puts them back into a URL.06:44
wgrantDecoded.06:44
lifelesswgrant: oh. ha. ha. ha.06:44
lifelesswgrant: I just saw key=value and didn't glue that to 'and those will be used in urls.'06:44
jtvStevenK: I'm looking at the generate-contents script, but the /srv/launchpad.net/ubuntu-contents directory it's supposed to create isn't on mawson.  Any idea why that is?07:01
StevenKBecause it would take until the heat death of the universe to run on mawson.07:02
jtvStevenK: this universe heat death you mention… is it expected anytime soon?07:06
StevenKI dunno07:06
StevenKjtv: I doubt we've ever run generate-contents on mawson.07:06
jtvWell, that certainly answers that question.  Thanks.07:06
lifelessmmm corn chowder with basil.07:20
lifelessnice fresh soup07:20
StevenKwgrant: Bah, my clever hack doesn't work07:29
wgrantStevenK: Oh?07:29
StevenK        if not any((07:29
StevenK            self.source_pub, self.parent_source_pub, self.base_source_pub)):07:29
StevenK            return07:29
lifelessbah, thai internets07:29
wgrantStevenK: not all07:29
wgrantStevenK: But anyway, that's wrong.07:29
wgrantStevenK: You can still create a diff if just parent or source are missing.07:30
StevenKThis is just looking for diffs, but fair point07:30
StevenKwgrant: No other tests in that file need to create SPPHs. :-(07:35
wgrant:(07:35
wgrantStill, you need to do it twice there, and it is ugly. Helper method.07:35
StevenKwgrant: I can move the test to the job integration tests, which does have a helper method already\07:36
wgrantStevenK: That sounds suboptimal.07:36
lifelesswhat does the helper do ?07:41
lifelessstub: hi there07:41
lifelessoh cool, jtv is back too.07:42
jtvYes.  Hi.07:42
lifelessstub: jtv: How well do array types get indexed in pg ?07:42
jtvur07:42
lifelessspecifically, searching for bug tags is slow07:42
lifelessI'm wondering if we'd be better having them as arrays on bug07:42
lifeless(rather than the key-value table they are07:42
jtvSounds like a potential win, yes07:43
lifelessdoing a simple foo AND bar search is triggering seq scans07:43
jtvYou may not be able to avoid that though.07:43
lifelessjtv: perhaps you'd like to have a poke at the plans ?07:44
jtvlifeless: sure07:44
lifelessbug 750445 and bug 75742607:44
_mup_Bug #750445: MaloneApplication:+bugs timeout on 'any tag {pcert, blockshwcert}' <timeout> <Launchpad itself:Triaged> < https://launchpad.net/bugs/750445 >07:44
_mup_Bug #757426: Distribution:+bugs timeout with combinator ALL <timeout> <Launchpad itself:Triaged> < https://launchpad.net/bugs/757426 >07:44
lifelessour fk for official bug tags is the text of the tag07:45
lifelessso we've no referential integrity issues that I can see with moving this around07:45
jtvJust about impossible to read these queries…07:48
stubYo07:49
StevenKwgrant: Do you also want to review https://code.launchpad.net/~stevenk/launchpad/drop-psc/+merge/57807 ?07:50
stublifeless: There is decent support using GIN indexes. Landscape uses this. There are special operators for stuff like item in array etc.07:50
stubGiST indexes too, but we prefer GIN due to low write, high read.07:51
wgrantlifeless: Could you please mentor https://code.launchpad.net/~stevenk/launchpad/drop-psc/+merge/57807?07:52
stublifeless: But faster than a separate table mapping bug -> tag? Dunno.07:52
=== henninge changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: henninge | https://code.launchpad.net/launchpad-project/+activereviews
lifelesswgrant: can you please leave a space after urls ? :)07:55
wgrantlifeless: ? on the end of a URL shouldn't matter...07:55
wgrantBut OK.07:56
jtvlifeless: still just scanning the information, but… wouldn't an index on BugTask(importance DESC, status) take away part of the pain?07:57
stubToday is the day I (literally) get off my arse and build a temporary standing desk.08:00
jtvlifeless: still just scanning the information, but… wouldn't an index on BugTask(importance DESC, status) take away part of the pain?08:01
StevenKwgrant: Can you have another look at https://code.launchpad.net/~stevenk/launchpad/dsd-packagediff/+merge/58070 ?08:02
StevenKwgrant: I think I've addressed everything.08:03
jtvlifeless: also, the queries would be tremendously easier to read if they just did "SELECT *" instead of repeating a full page of mis-indented and inconsistently capitalized column names every time!08:03
jtvThis is the first thing I change when I copy queries from oopses.  It really helps.08:03
jtvI'm guessing you're either trying out various different phrasings for optimization, or profiling different scenarios.08:05
lifelessjtv: I've found that that can mess up the timings because we have some tables with multi-MB text fields08:05
lifelessjtv: I may be being overly cautious08:05
lifelessstub: \o/08:06
wgrantStevenK: Rereviewed. Looks mostly good.08:06
stublifeless: SELECT * performs the same as SELECT [every column in excruciating detail]08:06
StevenKMostly good? :-(08:06
stublifeless: SELECT Person.*, TeamParticipation.* for prejoins etc. too.08:06
lifelessstub: yeah, but thats not the same as SELECT table1, table208:06
lifelessstub: bingo :)_08:06
jtvlifeless: shouldn't matter as long as (1) you're consistent and (2) you only change the list of columns in your query, as opposed to the list of tables.08:07
lifelessstub: but also factor in columns in the db that storm doesn't know about08:07
StevenKwgrant: Right, so I should revert to Storm?08:07
wgrantStevenK: Hmm? Use PackageDiffSet.getDiffBetweenReleases.08:07
stublifeless: That is pretty rare, and either the column shortly dropped or Storm DB class shortly extended.08:08
StevenKwgrant: But how can I be sure it returns the right diff?08:08
wgrantStevenK: *Between*, not To.08:08
lifelessstub: fti vectors08:09
StevenKwgrant: OH!08:09
StevenKwgrant: Sorry08:09
stubI guess. That will slow down the transmission to client time, but I don't think it slows down the query time08:09
StevenKwgrant: Damn function names are too close08:09
lifelessstub: remember when we were debugging that packagerelease.changelog thing or whatever it was08:10
lifelessstub: the plan was much faster than the timing reported by the client08:10
lifelessstub: until we actually selected the right columns08:11
lifelessall I'm saying is once-bitten twice shy08:11
StevenKwgrant: Er, I can't see IPackageDiffSet.getDiffBetweenReleases() defined?08:12
stubanalyze reports the query time, \timing reports time as seen by the client08:12
lifelessstub: yup08:13
wgrantStevenK: That should be but a temporary hindrance :)08:13
lifelessstub: and its the \timing that matters for fixing a page; the analyze is crucial data in figuring out how to reducing the timing, but its the timing we need to care about08:13
StevenKwgrant: Well, clearly one of us is wrong. I'm just trying to work out who.08:14
jtvlifeless: anyway, I'd just try the indexed-array approach on staging and see what it does.  If it's too costly to add the column, consider a linking table of (bug_id, [tags])08:14
wgrantStevenK: Hmm? it doesn't exist, but it should.08:14
lifelessjtv: can make a temporary table with all the constraints and indices but without FK relationships quite happily.08:15
lifelessjtv: its how I played with the fact table for doing aggregates08:15
jtvGreat.08:15
StevenKwgrant: But why would you suggest a function that doesn't exist? :-)08:15
jtvlifeless: How did that fact table play out, by the way?08:16
wgrantStevenK: I said you should use it. I didn't say you wouldn't also have to write it ;)08:16
wgrantStevenK: Basically, it's generally useful, model-specific, and longish. Should be factored out.08:16
StevenKI can't use it if it's doesn't exist.08:16
lifelessjtv: can do our existing 3+ second queries in 0.5s including privacy at the cost of overcounting private bugs08:16
lifelessjtv: jml & flacoste are convinced that as an incremental fix-performance step this is ok and I've mailed stakeholders@ for objections.08:17
lifelessjtv: anonymous user lookups it answers in 0.1s08:17
jtvlifeless: I saw at least some of the list discussion… it's nice, though once you go this radical, it'd be nicer if it could be done in negligible time.08:17
lifelessjtv: the table could possibly be trimmed more by discarded bugs we don't show in the portlet08:18
jtvNot that 0.1s isn't about negligible!08:18
lifelessthe nice thing is that its 0.5seconds *cold*08:18
lifelessor if not totally cold then at least lukewarm08:19
jtvSo that's lukewarm taken care of… what about tepid?08:21
jtvAnd more importantly, how fast is it at scalding?08:21
stubPerformance decreases when the server is on fire.08:22
jtvThat's scorching.  Let's not get confused here.08:23
spivstub: but a server on fire is red, and everyone knows red goes faster!08:23
jtvYeeees, but red also attracts more fines.  It's science™.08:24
jtvInteresting that so many words for temperatures should have been invented on an island that has so few.08:24
lifelessjtv: so, 0.5s was when I left it overnight and tried in the morning with my test user + ubuntu08:24
lifelesstest user being someone in 200 teams08:25
jtvSo a fairly difficult case.08:25
lifelessyes08:25
lifelessman, the way we compile status checks is -so- bogus08:26
lifelessstub: could you time this on prod - http://pastebin.com/jBbVgP8J please ?08:27
lifelessI know its crap08:27
lifelessits interim while we migrate crap to be less crap so the query can be less crap08:27
stubAfter the performance drive, we can have a crap purging. Launchpad Enema.08:29
stublifeless: you want an explain or an explain analyze?08:30
stubslow, slow, slow.08:32
stubhttp://pastebin.com/vJySZ6Jb08:33
stublifeless: ^^^08:33
lifelessstub: I've edited it - try again ?08:34
stublifeless: still crap08:35
lifelessstub: 9.4 seconds still ?08:36
stublifeless: http://pastebin.com/03sAFpYk08:36
stubLess crap, but crap08:36
lifelesswow08:36
lifelessstub: http://pastebin.com/B5fg7fsH08:37
lifelessbah08:37
lifelessfailed edit08:37
lifelessstub: it was the same, so that less crap is query variation08:38
lifelessstub: ok, - http://pastebin.com/j62T5HyY08:38
lifelessstub: nearly done - http://pastebin.com/JSad5jbs and08:40
stubhttp://pastebin.com/KVqUabau is the first one08:41
lifelesslast variant - http://pastebin.com/MYU1WKFA08:41
stubhttp://pastebin.com/2znv9HBp is the second08:42
adeuringgood morning08:42
StevenKwgrant: Another look at https://code.launchpad.net/~stevenk/launchpad/dsd-packagediff/+merge/58070 , please?08:43
stublifeless: http://pastebin.com/bB1KXJ2S is the last variant08:43
lifelessstub: thanks!08:48
stubbouncy bouncy thai internet08:48
lifelessstub: interesting that that triggers qual seq scans08:49
lifelessstub: even though its semantically identical08:49
stubqual?08:49
lifelessdual08:49
lifelessthough bug is already being sequentially scanned08:49
stubThe simplest version is generally best to see how well the planner can do without help.08:50
lifelessstub: the > < being the simplest version ?08:51
stubWhen thinking about a BugSearch table containing denormalized bug information, I was thinking of using arrays for tags etc.08:51
stublifeless: Dunno. I wasn't reading the queries apart from ensuring you were not bobby tabling me :)08:51
lifelessstub: :)08:51
lifelessstub: I wonder if we can improve BugTask in situ08:51
lifelessBug + BugTask I guess I mean08:52
lifelessanyhow, thanks for those tests08:52
lifelessit says that doing compatible searches won't be a disaster08:52
lifelessbut sadly also that the result won't be magically faster once we migrate.08:53
wgrantbigjools: Morning.09:00
bigjoolsmorning09:00
wgrantbigjools: Bug #761439.09:00
_mup_Bug #761439: Delayed copy publication sometimes crashes when reading changes file content <oops> <soyuz-publish> <Launchpad itself:In Progress by wgrant> < https://launchpad.net/bugs/761439 >09:00
wgrantbigjools: process-accepted's transaction management is awful.09:00
bigjoolscolour me surprised09:00
wgrantbigjools: But I'm not quite sure how to fix it.09:00
wgrantI'm not sure we can safely abort a transaction that encounters an exception.09:01
bigjoolshang on, just having to file a bug about my network card driver09:01
wgrantHah. Sure.09:01
lifeless_getUnconfirmedBugCondition - so if one target expires, the entire bug gets expired.09:01
StevenKwgrant: *prod*09:01
lifeless><09:01
wgrantStevenK: 'tis done.09:01
wgrantlifeless: Hah, fun.09:01
StevenKwgrant: Thanks09:02
bigjoolsI guess it's the kernel I need to file it on09:02
lifelessthat implies that a single incomplete task cannot expire if any task is valid09:02
lifelessor something09:02
wgrantlifeless: Want to mentor https://code.launchpad.net/~stevenk/launchpad/dsd-packagediff/+merge/58070?09:02
wgrantlifeless: That's intended behaviour, yes.09:02
wgrantlifeless: Tasks should will not expire if the bug is known to be valid.09:03
lifelesswgrant: that means that as a developer of project X and a bug with an added task, I cannot say 'hey, tell me if X so I can see if its relevant here' and have it expire out of my project.09:03
lifelesswgrant: if the bug also has a task on Y, which I don't care about.09:04
wgrantlifeless: Sure, I didn't say it was reasonable behaviour.09:04
StevenKwgrant: I can't remove the intermediate use, they're set if either SPPH is None09:04
lifeless!hah09:05
wgrantStevenK: if blah: self.parent_package_diff = None; else: self.parent_package_diff = ...09:05
StevenKBleh09:06
StevenKBut okay09:06
wgrantStevenK: Really you want a ternary statement. But I think they were only allowed into Python with a syntax so abhorrent that nobody could use them.09:07
StevenKHaha09:07
lifelesstrueclause if condition else falseclause09:08
bigjools /vomit09:09
lifelessnowhere near a strong enough reaction09:09
lifelesspersonally I think this was a huge troll on guidos part09:09
lifelesslike09:09
wgrantlifeless: That was my point, yes.09:09
lifelesshow bad can we make things in the name of backwards compat09:09
wgrantHe only permitted them with an utterly atrocious syntax.09:09
wgrantJust to spite people.09:09
wgrantTo stop them complaining about the lack of it.09:09
lifelessand then that can be used to get leverage to make py3k break compat09:09
wgrantHah09:09
StevenKOoooh, languages features as a stick09:10
wgrantAhhh py3k.09:11
wgrantSuch a wasted opportunity :(09:11
bigjoolswgrant: can you describe  the scenario in that bug09:12
bigjoolsis the whole session in a single txn?09:12
wgrantbigjools: The entire script run, yes.09:13
bigjools /vomit09:13
wgrantbigjools: So, what happens here is that there are two delayed copies of the one source.09:13
wgrantbigjools: THe first one unembargoes the files, including the changes file.09:14
wgrantThe second one sees the new changes file LFA, tries to read it.09:14
StevenKlifeless: Can haz mentor of https://code.launchpad.net/~stevenk/launchpad/dsd-packagediff/+merge/58070 ?09:14
wgrantNot committed yet, so not accessible from the librarian.09:14
wgrantBoom.09:14
bigjoolswgrant: yay09:14
bigjoolswgrant: so what's the issue with adding transactions?09:14
wgrantbigjools: I could just commit after each PU. But I'm not sure if we should abort on failure instead.09:14
wgrantbigjools: Since part of a PU could have hit disk.09:15
wgranteg. the source could be published.09:15
bigjoolswgrant: it sounds like we need either commit() or abort() after processing each queue item09:15
wgrantSo the file is on disk, but the abort would revert the status from published to pending.09:15
wgrantRight.09:15
wgrantBut I'm not sure if abort() is safe.09:15
bigjoolswhy?09:15
bigjoolsif it's not, we've got much bigger problems :)09:15
wgrantWe do have much bigger problems, yes, but I'm not sure if they're actually that much of a problem.09:16
* bigjools cries: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/76433409:16
_mup_Bug #764334: Network card driver failure, stack trace <linux (Ubuntu):New> < https://launchpad.net/bugs/764334 >09:16
wgrantI guess worst case there is a bit of cruft left on disk if we screw up manual cleanup.09:16
bigjoolsyou might as well just do it, it seems wrong otherwise09:17
wgrantYeah.09:17
bigjoolsand any abort should probably reject the queue item as well09:17
wgrantNo. That's exactly what we don't want to do.09:17
bigjoolswell if it's going to crash and crash it will stick there for ever09:17
wgrantThat *will* leave bad cruft on disk forever.09:17
wgrantSince we don't have a transactional FS.09:18
bigjoolswhat will get left?09:18
wgranteg. we're processing a delayed copy.09:18
wgrantWe publish the source to disk.09:18
wgrantIt gets set to Published.09:18
wgrantThen publishing a binary crashes, so the transaction is aborted and the PU gets set to Rejected.09:18
bigjoolsok09:18
wgrantNow we have the source file on disk forever, while there is no publishing record.09:19
bigjoolsI keep forgetting that p-a puts stuff on disk :/09:19
wgrantYeah.09:20
wgrantWe need diskless archives :(09:20
bigjoolsit is somewhat concerning that kpackagekit has been waiting for grub to install for 5 minutes now :/09:20
wgrantOr just transactional filesystems.09:21
wgrantWhich only really Windows has :(09:21
bigjoolsoh FFS, server down AGAIN09:21
bigjoolsthat should not make dpkg hang09:21
wgrantYay09:21
bigjoolsit's rather sad that I need to use reisub on my server all the time09:26
mrevellGood morning -devers09:27
wgrantbigjools: Ew. What sort of hardware is it?09:30
bigjoolswgrant: built-in skge gigabit09:30
bigjoolsgoing meh09:30
=== almaisan-away is now known as al-maisan
* StevenK attempts to get lifeless' attention again09:37
StevenKlifeless: Clearly, not important enough to get your attention. :-P09:41
lifelessStevenK: hmm?09:41
StevenK[18:14] < StevenK> lifeless: Can haz mentor of  https://code.launchpad.net/~stevenk/launchpad/dsd-packagediff/+merge/58070 ?09:42
StevenKlifeless: I've been attempting to get your attention for 35 minutes with little success09:42
lifelessStevenK: I have it open in a tab09:42
lifelessStevenK: its 8:40 at night; I have a mild headache09:42
bigjoolsStevenK: https://code.launchpad.net/~julian-edwards/launchpad/schema-distro-parents/+merge/5789809:47
bigjoolsstub: can you look at that --^ too please, it needs DB review-fu09:48
bigjoolslifeless: feel free to look from an architect pov09:48
=== dpm_ is now known as dpm
stubjtv: I discovered your notes on the pqxx wiki more up to date than the ones I was working from, so am making progress on dropping branchrevision.id10:56
bigjoolsstub: do I need to buy you cookies or ammo to get a db review? :)11:00
stubdepends on the code quality. Will I need a beer or ammo after seeing it?11:00
bigjoolshopefully not both11:01
stubschema-distro-parents?11:01
stubOh yay. A derived distro can have multiple parents?11:02
bigjoolsstub: tes11:02
bigjoolsyes*11:02
jtvstub: oh!  that's great news11:03
jtvbigjools: buy him beer first.  His shooting may be less accurate given enough of that.11:03
stubjtv: Only issue I'm seeing is that final update is updating 0 rows... will investigate after review. Perhaps you where using an existing UNIQUE constraint and the index I've picked isn't one?11:03
* jtv looks up his own wiki11:03
bigjoolsjtv: that was my worry, he'll start hitting stuff11:04
jtvstub: quite possible, yes11:04
jtvbigjools: and by the way, for the last time: I made him write down the bit about ammo.  He's not the gun nut.11:04
stubI'll try with the other index later - it doesn't matter *that* much which one I run with.11:04
stubI wouldn't hurt a fly.11:05
jtv#$%@ bug spam11:05
bigjoolsjtv: I know, but you didn't have the guts to stand up and do the presentation11:05
stubYou won't feel a thing.11:05
bigjools;)11:05
jtvI would hurt a spammer11:05
jtvbigjools: classic misdirection.11:05
stubbigjools: So we don't need a priority or something to tell which parent overrides which if there are conflicts?11:07
bigjoolsstub: conflicts in what?11:07
stubI dunno. I was thinking a derived distro is a set of packages inherited from a parent, with overrides.11:07
bigjoolsnormally the higher package version wins11:08
stubExcuse my naivety :)11:08
bigjoolsexcused :)11:08
bigjoolsit's a hard feature this11:08
bigjoolsthe package conflicts will be dealt with elsewhere anyway11:09
wgrantbigjools: Hm, so it's going to inherit from -updates and stuff?11:09
stubSo If I inherit from two distros, one of which has a policy where packagex is pinned at version 2.0, then I'll end up with the newer version of packagex unless I somehow pin it too?11:09
wgranteg. natty is going to show maverick-updates?11:09
bigjoolswgrant: no11:09
bigjoolswon't work like that11:09
bigjoolsunless you're stupid enough to set it up like that11:09
wgrantWell, how will it not?11:09
wgrantHow do we have a maverick->natty relationship?11:10
bigjoolsit's a single inheritance11:10
bigjoolsbesides11:10
jtvstub: my impression is that if that last update didn't update anything, the index may have been created by a unique constraint in the database you're working with.11:10
bigjoolsnatty does does not inherit from maverick11:10
stubI don't quite understand what 'initialized' does, but you are reasonably sure a boolean is suitable rather than an enum?11:10
wgrantbigjools: It was initialised from maverick.11:10
wgrantbigjools: And the relation needs to be stored in the DB.11:11
bigjoolswgrant: nope :)11:11
wgrantbigjools: for at least createMissingBuilds.11:11
bigjoolsit was initialised from Debian11:11
wgrantUbuntu was.11:11
wgrantNatty was not.11:11
bigjoolsyes, it was11:11
bigjoolsin our model11:11
wgrantSo IDS does not initialise?11:11
bigjoolsinitialisation happens once11:12
=== al-maisan is now known as almaisan-away
wgrantWhat does IDS do, then?11:12
bigjoolsadding a new series is not quite the same thing, although it looks similar11:12
bigjoolsit's semantics11:12
wgrantSince it apparently doesn't initialise.11:12
wgrantAnyway, apart from semantics, how is this going to be modelled?11:12
wgrantNatty has two parents, only one of which should show up on +localpackagediffs.11:12
wgrantThis table doesn't support that.11:13
bigjoolsstub: yes, should be, we just use it to indicate to various parts whether it was initialised or nto11:13
bigjoolsnatty does not have 2 parents11:13
stubWhat are nattys parents btw.? Debian (mumble) and Maverick?11:13
bigjoolsit inherits from Debian, end of story.11:13
stubCool.11:13
wgrantbigjools: But LP code needs to know that it inherits from maverick too.11:14
bigjoolswhere?11:14
bigjoolsand why?11:14
bigjoolswe've already discussed this in the team11:14
wgrantgetBuildForArch traverses the tree to avoid creating builds where one exists in an earlier series.11:14
wgrantThat's the only case I know of off-hand.11:14
wgrant(that's used by createMissingBuilds)11:14
bigjoolsit doesn't need parent_series to do that11:14
wgrant(so please don't break it11:14
wgrantOh?11:15
bigjoolsit's fairly trivial to iterate over series ...11:15
bigjools(in the same distro)11:15
wgrantUm, ew.11:15
bigjoolsdude11:15
wgrantWhat about Debian?11:15
bigjoolssigh11:15
wgrantDebian isn't a series of series.11:15
wgrantWe need to think carefully about this before we throw away a relationship that code needs!@11:16
stubThis is an implicit relationship because we don't have derived distros at the moment?11:17
wgrantIt's explicit. DistroSeries.parent_series.11:17
wgrantnatty's parent_series is maverick.11:17
wgrantetc.11:17
stubThe patch is not throwing that away yet.11:18
wgrantIt's not.11:18
wgrantBut it seems to be suggested that this new table will supersede it.11:18
wgrantWhen it cannot.11:18
wgrant(without extension)11:19
stubRight. But if you two can't agree atm, then code can talk. Or are we talking about a more fundamental change to the data model to add in the relationship you say we need?11:20
wgrantI think that it's probably a good idea to get the DB patch correct now, since correcting it is slow, hard, and migrating data sucks.11:21
bigjoolsnothing is changing with parent_series right now, please stop talking about it.  We're moving the concept of *tracking derived distros* to a separate table11:25
lifelessbigjools: is there any precedence rules between parents ?11:25
henningebigjools: I just reviewed your branch for that, please have a look.11:25
wgrant... to a table named DistroSeriesParent, but OK.11:25
bigjoolshenninge: not seen your review yet I am just fixing the security adapter BTW :)11:25
bigjoolslifeless: no11:26
henningebigjools: ;-)11:26
stubIf the data model needs extension, would it actually get as far as accumulating production data? I would have thought the test suite would pick up the lack.11:26
lifelesswgrant: getBuildForArch has to stay in the same archive right ?11:26
wgrantlifeless: At the moment.11:26
wgrantlifeless: It's not clear how it works in a multi-archive world.11:27
lifelessfor the use case of avoiding builds of something already in the archive11:27
lifeless(createMissingBuilds)11:27
wgrantRight.11:27
wgrantProbably.11:27
wgrantExcept maybe not.11:27
lifelessthat seems to be a definitional thing11:27
lifelesslike11:27
wgrantcreateMissingBuilds is overcomplicated crack with triplicated checks.11:27
lifelessit should be 'grab the archive; for all series in the *archive* check for existing builds*'11:28
wgrantThe behaviour in this case is not well defined.11:28
bigjoolslifeless: the use case is that OEM will make sure packages don't get duplicated11:28
wgrantThat may be the solution.11:28
lifelessbigjools: as in they will scream if we get it wrong ? ;)11:28
wgrantBut we need to have some idea that there is an alternate solution before we go making changes that can only be fixed once a month.11:28
bigjoolslifeless: *they* get it wrong you mean? :)11:28
lifelesswgrant: I grant you that11:28
lifelesswgrant: OTOH the field in question isn't gone yet11:29
henningebigjools: I assume you are just fixing the one adapter, not all uses of check_permission?11:29
lifelesswgrant: its when *that* is proposed I'll start getting the padded underwear if we don't have answers for key questions11:29
bigjoolslifeless: they have checks already to see when critical packages are superseded somewhere else, and they act on that11:29
lifelesswgrant: I agree that data modelling and migration is expensive11:29
bigjoolshenninge: just the one11:29
henningebigjools: ok, I'll whip up a branch for a general fix.11:29
wgrantlifeless: I figured I might as well raise the potential issues now rather than in two months when deadlines are approaching and the data model cannot be fixed in a sufficiently timely fashion.11:30
lifelesswgrant: but I think putting a lot of stress on this patch isn't needed because there isn't any modelling or migration to do yet.11:30
bigjoolshenninge: you're a star11:30
lifelesswgrant: its good to have the conversation11:30
lifelesswgrant: I think it can be a little less stressful11:30
lifelessbigjools: I suspect we'll need to iterate on this a little; I also suspect that its got a potential boobytrap built in which is that:11:31
lifeless - we want an ordering of series in an archive (don't we?)11:31
bigjoolslifeless: we already have that11:31
lifeless - DistroSeriesParent is cross-archive11:31
bigjoolsintentionally11:31
lifelessbigjools: will we still have that if we go forward and supersede .parent_series with DSP ?11:31
lifelessbigjools: right, I get that DSP is (and needs to be) cross-archive.11:32
bigjoolsparent_series may or may not get superseded by DSP, it's completely orthogonal to this11:32
lifelessbigjools: your cover letter was a bit more gung ho about that :)11:32
bigjoolsit was? :)11:32
lifeless'This will eventually replace DistroSeries.parent_series as we need to track more than one parent for a derived series'11:33
bigjoolss/will/may/ :-)11:33
lifelessahhh :)11:33
bigjoolswell11:33
bigjoolsit's taken in the wrong context11:33
wgrantAhh. I read it as "this is going to replace parent_series as soon as we can migrate the code"11:33
bigjoolseveryone stop11:33
bigjoolswe are currently using parent_series for 2 things11:33
bigjoolsthat was a mistake11:33
bigjoolsI am migrating the 2nd usage to a separate table11:34
bigjoolshence the language in the MP11:34
bigjoolswhich I can see was rather confusing11:34
bigjoolsso my apologies for that11:34
lifelessbigjools: no worries11:34
lifelessI'm a hearty +111:35
bigjools:)11:35
bigjoolsthere will be some issues around precendence I expect11:35
lifelessyes11:35
bigjoolsprecedence, too11:35
lifelessbut its a small table11:35
stubreview is already in anyway :)11:35
bigjoolsbut only when the versions are the same11:35
lifelessand you know the db deploy schedule :)11:35
bigjoolsyes :)11:35
lifelessa more interesting question for me is the impact on queries11:36
lifelessbut as we haven't got this live at all its hard to tell11:36
lifelessyou may find you want an array in DistroSeries instead.11:36
lifelessEFUTURE11:36
bigjoolshenninge: grar, unused setup!  forgot to remove that11:36
henningebigjools: I thought so11:37
bigjoolslifeless: array column?11:37
bigjools*gibber*11:37
wgrantIt's less slow.11:37
wgrantBut a bit more evil.11:37
stubwgrant: You assuming or have some evidence? I haven't tested anything with arrays yet.11:39
bigjoolshenninge: for my own info, how can a separate user happen when using check_permission in the adapter?11:40
wgrantstub: Well, for some queries it will be quicker. If you can grab the field directly rather than joining. But for this case it shouldn't matter unless your code is terrifyingly naïve.11:40
henningebigjools: I think it is more a theoretical possibility.11:41
henningebigjools: still, I find it a waste that we already know the user and make the machinery go through all that again.11:41
bigjoolshenninge: it certainly has me scratching my head as to how11:41
bigjoolsyes, that is a far better reason :)11:42
bigjoolsit'll be quicker to do it that way11:42
henningebigjools: could not some-one come up with code that calls checkAuthenticated directly, to check permission for another user?11:42
henningeIn that case the adapter would still check his own permissions.11:43
henningeSo it is also a bad interface because it pretends to do something (check permission for a given user) which it doesn't.11:44
bigjoolsI think I'd need to see an example11:44
bigjoolsbut don't worryu11:44
* bigjools thinks the "insert" button needs to hang in hell11:46
lifelesshenninge: bigjools: separate user cannot happen in *lp*, can happen in *zope*11:49
lifelesswe cripple the interaction model somewhat11:49
wgrantBut we can still call IAuthorization adapters with something other than the requesting user.11:49
lifelessI'd actually like to uncripple it so that we can have impersonation11:49
bigjoolsah ok11:49
lifelessnight all12:00
wgrantNight lifeless.12:01
deryckMorning, all.12:02
wgrantHi deryck.12:03
wgrantDo you have any more insight into the windmill timeouts? I had to turn off YUITestLayer :/12:04
=== almaisan-away is now known as al-maisan
deryckwgrant, I don't, sorry.  Was on vacation most of last week, so haven't really had time to look into it yet.12:08
wgrantAh, sure.12:08
LPCIBotProject devel build #648: FAILURE in 5 hr 0 min: https://lpci.wedontsleep.org/job/devel/648/12:20
henningelifeless, bigjools: either of you want to review my branch for this?12:20
henningehttps://code.launchpad.net/~henninge/launchpad/devel-764406-security-adapters/+merge/5810912:20
=== mrevell is now known as mrevell-lunch
daniloshenninge, hi, I've got a nice oversized JS branch up for review :)12:23
daniloshenninge, https://code.launchpad.net/~danilo/launchpad/bug728370-action-display/+merge/58108 if you think you'll have time for it12:23
henningeHi danilos!12:24
stubjtv: So that final update is incorrect, because with BranchRevision the existing UNIQUE indexes are linked to UNIQUE constraints. The end result is a table that looks and smells like it has a primary key, but the pg_constraint table contains no contype='p' rows for the branchrevision table.12:31
wgranthenninge: Do you have any suggestions for answering the question in #launchpad?12:32
jtvstub: hang on, looking up the page again… did that last update constrain for contype='p'?12:32
jtvI thought the last update was for dependencies?12:32
stubjtv: Oh... it isn't the final query that is the problem.12:33
* jtv is slightly less confused now12:33
jtvstub: what query is then?12:34
stubI'll need to step through this some more tomorrow. At some point, the 'p' row in pg_constraint disappears.12:34
stubjtv: Ahh... it disappears when I drop the id column.12:36
jtvHmm12:36
jtvI thought I transferred it to the new key.12:37
stubjtv: pebkac. Think I should stop now :)12:38
jtvstub: we should have T-shirts with a gunsight aimed at a foot (toes pointing away from the gun) and some inspirational slogan.12:39
lifeless'I /hack/ on Launchpad'12:41
bigjoolswell, we have a team meeting coming up, maybe mrevell-lunch can do the bizness :)12:42
stubjtv: So now I end up with an index that is used by both a UNIQUE and a PRIMARY KEY constraint :)12:43
jtvooh kewl12:43
jtvsee if you can start a fire in the DC12:43
stubThis is only visible in the pg_constraint table so non-obvious12:52
=== benji changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: henninge, benji | https://code.launchpad.net/launchpad-project/+activereviews
=== mrevell-lunch is now known as mrevell
bigjoolsstub: around?13:29
bigjoolsI can't remember if unreferenced LFAs get GCed13:29
wgrantbigjools: Yes.13:30
wgrantAfter some timeout.13:31
bigjoolsso setting the expiry is not necessary, great13:31
wgrantOne of the timeouts is a week, the other 24 hours. Can't remember which is which.13:31
bigjoolsexpiry is a week13:31
wgrant    This is the second step in a full garbage collection sweep. We determine13:32
wgrant    which LibraryFileAlias entries are not being referenced by other objects13:32
wgrant    in the database and delete them, if they are expired (expiry in the past13:32
wgrant    or NULL), and if they have not been recently accessed (last_access over13:32
wgrant    one week in the past).13:32
wgrantI always forget that detail about the expiry field.13:32
wgrantNULL is now. expiry is used to *extend* lifetime, not restrict it.13:33
bigjoolsfun13:33
=== Ursinha-afk is now known as Ursinha
deryckhenninge, standup ping14:02
henningeoh14:02
henningederyck: ...14:03
henningecoming14:03
henningederyck: notebook hang :(14:04
=== salgado is now known as salgado-lunch
jcsackettsinzui: per chat on friday, i'm available for mumbling through permissions whenever is good for you.15:14
* jcsackett sees sinzui is not online. stops talking.15:15
deryckit feels weird sinzui not being online, doesn't it?15:17
benjihenninge: if you get a chance, I have a branch up for review: https://code.launchpad.net/~benji/launchpad/direct-personal-subscription-actions-scaffolding/+merge/5812415:31
bigjoolshenninge: I replied to your review15:32
henningebenji: did you take danilos?15:38
daniloshenninge, he did15:38
henningedanilos: sorry, lunch and other things got in the way ...15:38
danilosbut I've got another one up: https://code.launchpad.net/~danilo/launchpad/duplicate-pillars-subscriptions/+merge/5813515:38
adeuringhenninge, benji: could one of you please have a look at this mp: https://code.launchpad.net/~adeuring/launchpad/api-query-permissions-on-object/+merge/58136 ?15:38
danilosheh, it's getting crowded :)15:39
henningedanilos: I'll have a look after I replied to bigjools and looked a benji's.15:39
daniloshenninge, thanks15:39
=== al-maisan is now known as almaisan-away
jcsackettsinzui: per chat on friday, i'm available for mumbling through permissions whenever is good for you.15:48
derycksinzui, I'd like to voice chat sometime today when you have time.  no rush.  Since Orange is joining Green on maintenance.15:58
adeuringhenninge, benji, ping16:00
henningebigjools: r=me, thank you ;)16:00
henningeadeuring: yes?16:00
sinzuideryck: fab, I'll be available in 15 minutes16:00
henningebenji: thanks for your review16:00
benjimy pleasure16:00
adeuringcan you have a look at this MP: https://code.launchpad.net/~adeuring/launchpad/api-query-permissions-on-object/+merge/5813616:00
adeuringhenninge: , benji: ^^^16:01
bigjoolshenninge: and thank *you* :)16:01
derycksinzui, ok, cool.  Thanks!16:01
henningeadeuring: benj's is first16:02
henninge;-P16:02
adeuringhenninge: sure ;)16:02
allenaphenninge, benji: Will either of you have time to review a 240-line branch? https://code.launchpad.net/~allenap/launchpad/no-diffs-for-underprivileged-bug-760648/+merge/5813716:06
benjiallenap: I'm sure one of us will.16:06
allenapCheers :)16:07
henningebenji: spaces as seperator for feature flag fields work just as well.16:12
benjihenninge: cool, I didn't know that; thanks16:12
benjiwe should ditch the tabs then; they're especially irritating in text boxes16:12
=== jkakar_ is now known as jkakar
bacbenji or henninge: could you have a look at https://code.launchpad.net/~bac/launchpad/bug-761124/+merge/58140 please?16:23
benjibac: sure16:23
danilosbenji, how's the review coming along? I am about to leave so if you've still got a long way to go, I am sure gary_poster can pick it up for me :)16:24
danilosah, it's there :)16:24
benji:)16:25
=== salgado-lunch is now known as salgado
danilosbenji, as for the whitespace, I noticed that gary_poster and I have different practices :)16:26
benjiit's the story of our lives16:27
danilosbenji, also, the thing jslint complains about is var not being at the top of function definition with "for (var index in ...)"; does that make sense to you as well?16:27
LPCIBotProject windmill build #187: STILL FAILING in 1 hr 1 min: https://lpci.wedontsleep.org/job/windmill/187/16:28
benjidanilos: I'm not sure why it complains about that one, but I'm a make-lint-happy-unless-I-have-a-really-good-reason kind of guy, so I'd go along with it16:29
benjidanilos: as I said, I'll be doing a big lint branch today, so no need for you to change anything16:29
=== henninge changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: benji | https://code.launchpad.net/launchpad-project/+activereviews
henningebenji: I see how things are piling up but I have to run... sorry16:44
benjihenninge: no problem, I'll plow through them16:44
henningecool, thanks16:45
henninge;)16:45
sinzuideryck: mumble?16:54
derycksinzui, indeed.  Firing it up now.16:55
derycksinzui, meet me in the orange 1 o 1, please.16:55
bigjoolsto anyone who knows about our appserver innards, I'm seeing a request going to dogfood that is crashing out with a database IntegrityError, but no oops is generated and Apache returns a 502 proxy error.  Why would it not oops?16:58
adeuringabentley: fancy a review of this branch: https://code.launchpad.net/~adeuring/launchpad/api-query-permissions-on-object/+merge/58136 ? (seems that henninge and benji are quite busy.)17:22
LPCIBotProject devel build #649: STILL FAILING in 5 hr 3 min: https://lpci.wedontsleep.org/job/devel/649/17:23
bigjoolsgood night all17:32
abentleyadeuring: still around?18:08
adeuringabentley: yes18:08
abentleyIn your branch, why are you raising Unauthorized yourself instead of providing a permission checker?18:09
=== deryck is now known as deryck[lunch]
abentleyadeuring: On line 78, you mention "bug xxxxxxxxx".  Have you filed a bug for that?18:10
adeuringabentley: gahhh, forgot that. Let me do it now...18:10
abentleyadeuring: Also, could you use ILaunchBag.user rather than interaction.participations[0].principal?18:13
adeuringabentley: that was a suggestion from gary18:13
gary_posterargument: he is actually dealing with security machinery, so look at security machinery for value.18:14
gary_posterdon't feel strongly about it18:14
gary_posterbut still seems reasonable to me18:14
gary_postercould make for better unit tests18:15
abentleygary_poster: counter-argument: I've never dealt with interaction.participations[0].principal and would have to guess what it meant.18:15
gary_posterabentley: you are the reviewer, your call.  :-) adeuring is dealing with low-level Zope security machinery here, so it seems appropriate to do what I suggested: Launchpad's overlay relly is irrelevant.  <shrug>18:16
gary_posterreally18:16
abentleygary_poster: If ILaunchBag.user can differ from interaction.participations[0].principal then I guess I need to understand when and how.  If it can't, then I don't see why we would deviate from our usual idiom.18:20
gary_posterabentley, it should not within LP.  "don't see why":I'll defer to you.18:20
abentleyadeuring: please change it to ILaunchBag.user per "There should be one-- and preferably only one --obvious way to do it."18:22
* gary_poster can't stop himself: obvious according to whom?18:22
adeuringabentley: ok, I don't that much. (sorry for silence, had a phone call)18:22
* gary_poster goes away18:23
abentleygary_poster: Dutch people, apparently.18:23
gary_poster:-)18:23
abentleygary_poster: jelmer's dutch, should I ask him?18:23
* gary_poster is half Dutch18:23
abentleyadeuring:  In your branch, why are you raising Unauthorized yourself instead of providing a permission checker?18:26
adeuringabentley: oops. right...18:27
adeuringabentley: but then I'll finish the branch as late as tomorrow ;)18:29
abentleyadeuring: That's okay.  I've got other fish to fry today.18:29
adeuringok18:29
jcsackettbenji: super short review for you, if you have the time: https://code.launchpad.net/~jcsackett/launchpad/bug-expiration/+merge/5816818:50
benjijcsackett: sure18:50
=== deryck[lunch] is now known as deryck
benjijcsackett: done18:57
jcsackettbenji: thanks!18:58
=== beuno is now known as beuno-lunch
mrevellNight all19:20
=== beuno-lunch is now known as beuno
=== lifeless changed the topic of #launchpad-dev to: Performance Tuesday | https://dev.launchpad.net/ | On call reviewer: benji | https://code.launchpad.net/launchpad-project/+activereviews
abentleylifeless: injecting the permissions into the json cache only helps at page load time.20:27
abentleylifeless: We also need to evaluate the permissions when we retrieve the objects over the web service.20:28
lifelessabentley: that surprises me20:28
lifelessabentley: can you help me understand why thats needed ?20:28
abentleylifeless: A +sharing-details page may start with no productseries associated with the sourcepackage.  When the user adds a productseries, we need to know whether the user can change the branch associated with the productseries.20:29
lifelessok20:30
lifelessadding a productseries is a named method right ?20:30
abentleylifeless: yes.20:30
lifelessso, I can suggest alternative implementations here20:30
lifelesssuch as return the permissions with the result of the add20:31
lifelessor do a separate lookup (though latency is a pain)20:31
abentleylifeless: Yes, the reason I asked for them to be properties was to avoid latency.20:31
lifelessI understand - and sympathise - the problem though is simply that lazr evaluates -all- properties every time20:32
lifelessand permission checks are often very expensive20:32
abentleylifeless: another option would be to use the json cache and then provide a way to get an updated version of the json cache.20:34
lifelessabentley: that sounds like an interesting approach20:34
lifelessbecause the json cache is tailored to the page AIUI20:34
abentleylifeless: it would slay a lot of other latency concerns I have, too.20:34
abentleylifeless: The json cache is tailored per-view.20:35
lifelessabentley: excellent!20:37
abentleylifeless: well, except that it's scope-creepy.20:38
lifelessin terms of feature delivery? I guess yes :(20:39
abentleylifeless: Originally, we were just going to expose Person.canWrite etc.  But that doesn't work because lazr.restful doesn't support dynamic typing.20:41
lifelessyeah, I saw the comment20:43
lifelessits a shame, that would have been fairly pithy20:44
lifelesswould still have incurred a round trip for you20:44
lifelessabentley: I don't want to leave you & your team hanging20:49
lifelessabentley: would doing a separate round trip be tolerable for the page? If so that seems like low development overhead (change the property to a method)20:50
abentleylifeless: We could certainly start there.20:51
abentleylifeless: I have no idea what the performance of the page is like on production.20:52
lifelessonly one way to find out20:53
abentleylifeless: about 2 seconds.20:57
abentleylifeless: for natty/bzrtools on qastaging20:57
lifelessabentley: thats from choosing the productseries till it shows up in the form, or the initial page load?20:57
abentleylifeless: the former.20:58
lifelessif you unset it20:58
lifelessand set it again20:58
lifelessit may be faster20:58
lifelessqastaging only holds about 5% of the prod DB in RAM20:58
abentleylifeless: I did actually.20:58
abentleylifeless: that time's from the second run.20:59
lifelessah21:02
lifelessdoh !21:02
lifelesspossibly too many collections on the object being altered21:02
lifelesslazr restful snapshots can be reallly expensive21:02
abentleylifeless: You mean that the object in question has too many collections, making snapshotting expensive?  You don't mean altered collections?21:03
lifelessright21:04
abentleylifeless: It looks like one of the AJAX requests is 1.2 seconds, but I can't tell what the request was.21:05
lifelessyeah21:05
lifelessthats coming21:05
lifelessusing the chromium or firefox debug tools can give better insight, if you know you need it21:06
abentleylifeless: looks like setPackaging is the big delay, and that's not exactly optional...21:09
lifelessah21:13
lifelessI'm on a call now - sorry21:13
LPCIBotProject windmill build #188: STILL FAILING in 1 hr 1 min: https://lpci.wedontsleep.org/job/windmill/188/21:58
thumpermorning22:04
=== benji changed the topic of #launchpad-dev to: Performance Tuesday | https://dev.launchpad.net/ | On call reviewer: - | https://code.launchpad.net/launchpad-project/+activereviews
sinzuiflacoste: are you serious should be accepted  bug 728408? Lp's font size is the same as other canonical sites and the user who reported the bug did not know how to zoom his browser22:24
_mup_Bug #728408: Launchpad font is far too small <Launchpad itself:Triaged> < https://launchpad.net/bugs/728408 >22:24
sinzuiflacoste: I think huw and UX may be the only people who can say it is a bug22:24
mwhudsonthumper: huh, the boost import failures are obscure22:30
thumpermwhudson: yeah22:30
thumperNFI what is going on there22:30
thumpermwhudson: any idea how we can bootstrap it?22:30
mwhudsonthumper: if i had to guess, i would say some kind of DOS prevention on the server22:32
mwhudsonthumper: not really22:32
thumperI'll look to see if they have an anon svn protocol server22:32
thumperthat'd be faster22:32
flacostesinzui: then be my guest and mark it as invalid22:35
LPCIBotYippie, build fixed!22:37
LPCIBotProject devel build #650: FIXED in 5 hr 14 min: https://lpci.wedontsleep.org/job/devel/650/22:37
sinzuijcsackett: mumble22:47
sinzui?22:47
=== salgado is now known as salgado-afk
=== Ursinha is now known as Ursinha-afk
lifelessflacoste: btw23:51
lifelessflacoste: bug expiry should be fixed in a day or so23:51

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