/srv/irclogs.ubuntu.com/2011/08/26/#launchpad-dev.txt

StevenKwgrant: Down to one failure in my no-more branch00:09
wgrantExcellent.00:11
StevenKHow did this fail before? I don't get it00:21
wgrantHm?00:25
StevenKwgrant: http://pastebin.ubuntu.com/674932/00:26
wgrantStevenK: It possibly was relying on the branch not existing on disk.00:27
wgrantStevenK: Try checking the output on devel.00:27
StevenKERROR   Job execution raised an exception.00:30
StevenK -> http://localhost:33770/93/bLqgyciAI0wS9vOJ96yNSjGCqMV.txt (Not a branch: "lp-internal:///~person-name-870614/product-name-870620/branch-870616".)00:30
StevenKWhereas that doesn't happen for my change00:32
StevenKSo I guess it wants a job for a branch that doesn't exist on disk?00:34
wgrantRight. Use a RevisionAddedJob or so.00:35
wgrantSince RevisionMailJob doesn't touch the disk any more.00:35
StevenKwgrant: Fixed.00:44
wgrantStevenK: Using RevisionAddedJob?00:44
StevenKwgrant: Yes00:44
wgrantGreat.00:45
StevenKNow to craft evil queries00:45
wgrantShould be pretty trivial.00:52
wgrantAnd there's only like 11000.00:52
wgrantPossibly less, if some of them have preview diffs.00:52
lifelesswgrant: what are you doing ?00:53
wgrantlifeless: StevenK is abolishing review diffs.00:53
StevenKSELECT count(distinct(review_diff)) from branchmergeproposal where merge_diff is null; => 521300:54
lifelessdid you talk to aaron about difftasticd ?00:55
lifelesss/d //00:55
StevenKNot about difftastic, that had utterly slipped my mind00:56
lifelesswell, review diffs and difftastic are pretty linked00:56
StevenKThey are?00:56
lifelessI'd hate to see that deleted rather than fixed.00:56
lifelessperhaps I misunderstand00:56
StevenKI thought difftastic was used for incremental diffs?00:56
wgrantlifeless: Those are incremental diffs.00:57
lifelessI probably do misunderstand :)00:57
wgrantReview diffs are what came before preview diffs.00:57
wgrantBack in the days of lp:mad.00:57
StevenKNamed in DB as *static*diff00:57
wgrant<= 2010/0100:57
lifelessah00:57
lifelesscool cool thanks!00:57
StevenKwgrant: So, we have a query to clear review_diff where preview_diff is not null00:58
StevenKlaunchpad_dogfood=> UPDATE branchmergeproposal set review_diff = null where review_diff is not null and merge_diff is not null;00:59
StevenKUPDATE 686000:59
wgrantlaunchpad_dogfood=> SELECT merge_diff IS NOT NULL, review_diff IS NOT NULL, COUNT(*) FROM branchmergeproposal GROUP BY merge_diff IS NOT NULL, review_diff IS NOT NULL; ?column? | ?column? | count00:59
wgrant----------+----------+------- f        | f        |  3061 f        | t        |  5251 t        | f        | 36774 t        | t        |  686000:59
wgrantFail.00:59
StevenKHaha00:59
wgrantBut there are 6860 with both, 5251 with just a staticdiff.00:59
StevenKRight, so the update for 6860 rows is fine01:00
StevenKNow a query to create previewdiffs01:02
wgrantAre preview diffs always used in preference to review diffs?01:02
StevenKFrom my reading of the code, yes01:02
StevenKThere's only 746 MPs with a staticdiff, no previewdiffs and aren't merged01:06
StevenKAnd 4505 where date_merged is not null01:07
wgrantEven merged ones would be nice.01:07
StevenKI'm just a little lost how to loop on branchmergeproposal, creating rows in previewdiff and updating01:07
LPCIBotProject db-devel build #826: STILL FAILING in 5 hr 29 min: https://lpci.wedontsleep.org/job/db-devel/826/01:08
wallyworld_wgrant: StevenK: dumb question of the day - what's the difference between a review diff and a preview diff?01:18
StevenKwgrant: reviewdiffs are static and ancient01:18
StevenKRARGH01:18
StevenKwallyworld_: ^01:18
wallyworld_StevenK:  ah, so review diffs do not get updated if someone pushes a change to the branch after it is put up for review?01:19
StevenKwallyworld_: They have not been generated in the database for over 18 months, it's probably not worth learning about, TBH01:20
wallyworld_ok01:20
wallyworld_delete away.... :-)01:20
wgrantBah.01:22
wgrantNo index on previewdiff(source_revision_id, target_revision_id)01:23
StevenKwgrant: Do we need one?01:24
wgrantStevenK: Probably. We should try on staging without it.01:26
wgrantBut DF definitely does.01:26
wgranthttp://paste.ubuntu.com/674955/01:26
wgrantOr you end up with thousands of seq scans of the table.01:26
StevenKRight01:27
StevenKwgrant: Is that in a transaction?01:27
wgrantStevenK: Yes.01:28
StevenKRight01:28
wgrantShould also set review_diff = NULL, I guess.01:28
wgrantBut it's fast enough to do all this directly.01:28
StevenKI have a query for that already01:28
StevenKIf we do that at the end, we can use it to clean up for us01:28
wgrantWe might as well do it in the one UPDATE.01:29
StevenKUPDATE branchmergeproposal SET merge_diff = (SELECT id FROM previewdiff WHERE from_revision_id = source_revision_id AND to_revision_id = target_revision_id) FROM staticdiff WHERE staticdiff.id = review_diff AND merge_diff IS NULL;01:29
StevenKUPDATE branchmergeproposal set review_diff = null where review_diff is not null and merge_diff is not null;01:29
StevenKAre the two of them01:29
wgrantI guess we need to unset all of them, whereas my UPDATE only needed to consider those without a preview_diff.01:30
wgrantSo indeed.01:30
james_wOOPS-2062F501:41
james_whmm, no bot? I'll have to do this by hand01:41
mwhudson_those numbers seem small01:42
lifelessnot really01:42
wgrantmwhudson_: Which?01:42
lifelessits 014201:42
mwhudson_in the oops01:42
mwhudson_ah right01:42
wgrant2 hours in, 60 appservers.01:42
james_wDate: Aug. 24, 2011, 2:01 a.m.01:42
lifelesswhich makes it 010101:43
lifelessif you use a real tz :P01:43
wgrant:(01:43
wgrantDropping a foreign key requires a lock on both tables.01:43
lifelessoh or its a couple days back :)01:43
wgrantHow stupid.01:43
lifelesseither way01:43
james_wyeah01:43
lifelesswgrant: thats because fk's are triggers.01:43
james_wI was just making sure the oops had synced :-)01:43
wgrantlifeless: Ah.01:43
lifelesswgrant: (apparently :P) - they get presented differently of course, but are built on that mechanism.01:44
james_wit01:44
james_wit's doing the count(*) twice?01:44
lifelesswallyworld_: uhm01:45
wallyworld_lifeless: ?01:45
lifelesswallyworld_: are you *trying* to make the public -stacked-on-private branch obfuscated?01:45
wallyworld_no01:46
lifelesswhy do you need a metaclass then ?01:46
lifelessand __setattr__01:46
wallyworld_so that code in storm queries can still go "Branch.private == xxx"01:47
wallyworld_(the metaclass does this bit)01:47
lifelessyes, but this means that aBranch.private and Branch.private are now totally different htings.01:47
lifelessthis is horribly confusing01:47
wallyworld_and so that exisitng code which creates a branch via Branch(name=xxx, private=True) still works01:47
wallyworld_(the setattr does this)01:47
StevenKwgrant: Ah, I forgot we need to drop the FK as well01:48
StevenKAnd then after my evil branch lands we can drop the column and table01:48
wallyworld_lifeless: the other option then is to s/Branch.private/Branch.explicitly_private01:48
lifelesswallyworld_: please01:48
lifelesswallyworld_: thats what we've done in the past: KISS01:48
wallyworld_ok. it wasn't confusing to me :-)01:48
wallyworld_i was trying to do it behind the scenes so to speak01:49
lifelesswallyworld_: its not confusing to me either, cause I've seen the diff. But imagine someone looking at the rest of LP01:49
james_wI can't find a bug for this timeout, would someone take a look, or should I just file one?01:49
lifelesswho comes to this code, and sees no difference visually.01:49
lifelesswallyworld_: unless you rename the column I suggest actually not renaming01:49
lifelesswallyworld_: instead add a property 'effectively_private' or something, which would honour self.private + self.stacking etc.01:49
lifelesswallyworld_: and reference that from security adapters, views etc.01:50
lifelesswallyworld_: this will keep the class .private and the schema .private in sync with each other.01:50
wallyworld_lifeless: that's a big change01:50
wallyworld_why not just rename the private property to explicitly private01:50
wallyworld_and use dbname="private" in the property01:51
wallyworld_this will have the smallest footprint in terms of change to the code01:51
wallyworld_and still be quite clear i think01:51
james_wI think that's better, so that you don't have to remember that the obvious "private" attribute isn't likely what you usually want01:52
lifelesswallyworld_: I'm thinking about the mapping from object to schema01:52
lifelessjames_w: file a bug :)01:52
wallyworld_james_w: agreed.01:52
lifelesswallyworld_: but sure.01:52
lifelesswallyworld_: my main concern is that what folk think they are reading is what they are reading.01:52
lifelesswallyworld_: they should be able to guess at the behaviour of the code, with high accuracy rates, without having read the entire implementation.01:53
lifelesswallyworld_: if private is a property and *not* the db column, then 'foo.private = True' will not do what they expect.01:53
lifelesshowever, I see that that is not meant to happen here anyway01:54
lifelessfolk are meant to call setPrivate01:54
wallyworld_that bit will do what they expect. ie make the branch private. but if they say foo.private = False it may not01:54
lifelessso +101:54
wallyworld_lifeless: ok. we can iterate later and change the column if needed01:55
lifelesswallyworld_: well, it will only do that with either a property or a setattr01:55
james_whttps://bugs.launchpad.net/launchpad/+bug/83429301:55
_mup_Bug #834293: Product:+code-index times out <Launchpad itself:New> < https://launchpad.net/bugs/834293 >01:55
lifelesswallyworld_: ok; so for clarity - you're doing:13:50 < wallyworld_> why not just rename the private property to explicitly private01:55
lifeless13:50 < wallyworld_> and use dbname="private" in the property01:55
lifelesswallyworld_: dropping the metaclass and setattr01:55
wallyworld_lifeless: yes01:55
lifelesswallyworld_: to be clear, I don't object to metaclasses and setattr per se; just that they should really be enhancing things, not obfuscating :)01:56
lifelesswallyworld_: thanks!01:56
lifelessjames_w: please don't use lp-oops urls01:56
lifelessjames_w: just the oops id01:56
wallyworld_lifeless: np, input is appreciated. i can see how it's clear to me because i'm close to it but not to others who may be looking in from the outside01:56
wallyworld_lifeless: will you have time to do that loggerhead review before you go and spend your evening changing shitty nappies?01:57
james_wlifeless, why?01:57
lifelessjames_w: a) we linkify anyway so theres no different in click-through, b) its easier to read and copy, c) the garbage collection code ignores url style oops references so they will get deleted.01:58
james_wah, I didn't realise there was any integration01:59
james_wthe latter seems like a bug though :-)01:59
lifelessjames_w: it is02:02
lifelessjames_w: but anyhow, its intended for users that have no access to the reporting UI02:02
lifelessyour having access to it is the exception :)02:02
james_wyeah02:03
lifelessfrell02:07
lifelessanother regression02:07
wgrantlifeless: Where?02:07
lifelessbug 83426602:09
_mup_Bug #834266: "831884 is not a valid bug number or nickname" <regression> <Launchpad itself:Triaged> < https://launchpad.net/bugs/834266 >02:09
wgrantlifeless: I think that's the second time you've declared this bug to be a regression.02:10
wgrantlifeless: The case that's handled in marking a master as a dupe.02:10
wgrants/in/is/02:10
wgrantTrying to find the dupe..02:11
wgrantThere.02:11
lifelesswgrant: thanks :)02:35
wgrantgrar.02:36
wgrantWhy do people insist on implementing non-auditable copying.02:36
wgrantSeriously.02:36
wgrantStupid.02:36
jtvHey, good morning everyone!  I think I'll implement some non-auditable copying today.02:55
wgrantjtv: No, your squad already did that last week.02:59
wgrantYou're too late :(02:59
jtvOh, but there's always more to do.02:59
jtvI insist on implementing non-auditable copying.02:59
wgrantGood, good.03:01
wgrantWhat could go wrong.03:01
jtvhi wallyworld___, your collection of underscores is coming along nicely I see.03:06
jtvAny reviews for me to approve?03:06
LPCIBotProject devel build #997: STILL FAILING in 6 hr 0 min: https://lpci.wedontsleep.org/job/devel/997/03:13
StevenKlifeless: O hai -- wgrant and I would like to remove all references to staticdiff -- the queries take approximately 12 seconds on DF and it will be a once-off. Or are you going to make me write a garbo job?03:19
wgrant12s include an index creation that can be done whenever.03:20
wgrant4-5s without.03:20
jtvOver a hundred broken tests in buildbot.  That's impressive.03:24
wgrantYeah.03:25
wgrantA revision was landed that depended on a revision that was reverted a few hours earlier.03:25
lifelessthe index creation is nonblocking03:25
lifelessif its done CONCURRENTLY03:25
wgrantRight.03:25
lifelessso, that seems fine to me.03:26
wgrantHence can be done whenever, including in the patch, if required.03:26
lifeless4-5s is too long to do as one transaction though if its hitting 6K rows03:26
StevenKWe can split it up03:26
lifelessyup03:26
StevenK2s per transaction or so03:26
lifelessthat works for me03:26
wgrantlifeless: 6k merged proposals from before 2010? :)03:26
StevenKOnly 5k03:27
lifelesswgrant: FK references.03:27
lifelesswgrant: never underestimate the MVCC lock monster03:27
jameshlifeless: looks like the django ticket for passing the exception info up has progressed to "Design decision needed".  Hopefully that isn't a black hole03:51
wgrantjamesh: It normally is with Django...03:52
lifelessjamesh: win.03:53
lifelesscourse, we could patch it in Ubuntu :)03:53
jameshit seems one of the issues is that not all exceptions might make it to handle_uncaught_exception(), so capturing errors there might not be perfect03:54
jameshI've added a comment that all the errors in my view code generally pass through that code path though03:55
lifelesscool03:55
lifelessif they swallow exceptions and don't reach that code path, that seem like a separate bug :)03:55
lifelessas opposed to a reason not to do this03:55
jtvwgrant: you asked why I didn't re-implement [BS]PPH.setDeleted in terms of PublishingSet.setMultipleDeleted.  The answer is that the latter bypasses the ORM, which is more likely to be harmful in code that requests deletion of individual objects.04:54
wgrantjtv: True. Although it doesn't have to bypass the ORM.04:54
wgrantDo you know about ResultSet.set()?04:54
wgrantIt gets far too little use.04:55
jtvNo, I don't!  I knew there was something like that for delete, but it gave us endless trouble anyway.04:55
jtv(There were all sorts of queries it didn't support)04:55
wgrantyeah, but for this sort of thing it's probably fine and a lot less ugly.04:55
jtvI'll file a bug to fix that.  It'd save some test commits.04:56
wgrantRight.04:56
wgrantjtv: Do you like lp.soyuz.model.publishing's wonderful test coverage?04:59
wgrantTruly exemplary  stuff.04:59
StevenKHow sarcastic are you being?05:00
jtvwgrant: I'm picking up a hint of sarcasm there, but I'm told that I wouldn't understand because I'm not American.05:00
wgrantJust a bit.05:02
jtvThanks.  It helps to be clear about these things.05:02
StevenKwgrant: That's like calling a fish 'just a bit wet'05:02
* wgrant deletes more of Distribution.05:03
jtvA-khah.  This vhat British capitalist call, understatement—da?05:03
StevenKwgrant: Excellent.05:04
* StevenK fights with Jenkins05:06
lifelessjtv: you managed to create two bugs05:12
jtvThat explains why I got two confirmation boxes.05:12
lifelessjtv: I wonder if we have a bug in our request retry logic or something05:12
jtvOr a very late failure triggering a retry after db commit maybe?05:13
jtvI don't suppose the browser would retry the POST unless it got an unambiguous application-level failure response?05:14
wgrantSure you didn't click submit twice?05:14
jtvVery.05:14
wgrantPOSTs are not permitted to be retried automatically.05:15
wgrantAt the browser-level.05:15
jtvThis is chromium though.  Full of optimizing cleverness.05:15
wgrantHeh05:15
jtvBTW I see now that I expressed myself badly:05:15
lifelessI know what you meant05:16
jtvI meant, I don't suppose the browser would retry the POST just because it did not get an unambiguous application-level failure response.05:16
lifelessand yes I think post-commit retry is the most plausible epxlanation05:16
wgrantjtv: How did you file those bugs?05:28
jtvwgrant: could you be more specific?05:29
wgrantI only see one bug filing in the appserver logs, and that was 90 minutes ago.05:29
wgrantAre you using edge or something?05:29
jtvNope.05:29
lifelesswgrant: appserver bug05:29
lifelesswgrant: we retry requests in the appservers.05:29
lifelesswgrant: on POST, on conflicts.05:30
wgrantlifeless: The bug in question was filed only 30 minutes ago.05:30
wgrantI do not see even one POST for it.05:30
lifelesswgrant: that is how it was posted, no ?05:30
lifelessoh, I see 90 vs 3005:30
lifelesswgrant: you've got all the appservers ? :>05:30
lifelessactually. EOD. EOW. SOL.05:31
wgrantlifeless: Good plan. See you eventually, I suppose. Good luck!05:31
jtvlifeless: enjoy your weekend.05:31
wgrantjtv: Weekend?05:31
jtvwgrant: yes, it's that bit where the office goes nice and quiet so you can work in peace.05:32
=== almaisan-away is now known as al-maisan
jtvWhen that happens, the rest of us are having something called a week-end.05:32
lifelesswgrant: I think jtv is  being sensible about disclosure of private data05:32
wgrantBah.05:32
lifelesswhich is nice05:32
wgrantI wonder if puppet broke stuff.05:32
wgrantNot all the logs are here.05:32
wgrantProbably means we're missing OOPSes, too.05:33
lifelessthat vould be a vorry05:33
wgrantBut not surprising.05:33
lifelesshangon, I was going.05:33
wgrantSee you.05:33
lifelesswgrant: I'm pushing up my gpfixtures WIP for LP05:34
wgrantlifeless: I may have a poke at it and get it finished.05:35
lifelesslp:~lifeless/launchpad/usegpgfixtures and of course lp:python-gpgfixtures05:36
lifelessit needs a ServerFixture to invoke the process etc, which would live in python-gpgfixtures for now. Its not a perfect demo of the soa test fake layout.05:37
lifelessperhaps it should be, but one step at a time05:37
wgrantYeah.05:37
wgrantAnyway, shoo.05:37
lifelessboth branches pushed.05:38
lifelessenjoy.05:38
wgrantThanks.05:38
lifelessheh, the keyserver in fixtures is shorter than the one in LP; including the main() stuff and the json API.05:39
lifeless\o/05:39
wgrantNice.05:39
lifelessnot a totally fair comparison, but shrug05:40
StevenKRight, Jenkins is in money-suck mode05:51
danilosjtv, hi, can you perhaps give me another short review, mostly for a branch you've already reviewed: https://code.launchpad.net/~danilo/launchpad/bug-826692-take2/+merge/72996 (it was broken for private branches, and the fix is easy, and I add a test for it)06:12
danilosjtv, you can perhaps just look at the incremental diff in http://paste.ubuntu.com/675046/06:12
jtvdanilos: okay okay, you've sold me.  Don't try to buy it back.  :)06:12
danilosheh, thanks06:13
=== al-maisan is now known as almaisan-away
wgrantdanilos: Given its history, you might want to coerce a LOSA to merge that on staging so you can try it out for real.06:18
daniloswgrant, sure, though when you do anticipate a problem (or when there are tests for it), it makes a big difference :)06:19
wgrantdanilos: Bah, who needs tests.06:20
danilosnot us the real men! our test suite are our users06:21
daniloswgrant, what was the commercial team name again? I need to find who can make me a few private branches on staging06:21
jtvdanilos: “Merge proposals against private branches are visible to *the* branch owner.”06:22
wgrantdanilos: ~commercial-admins and LOSAs.06:22
wgrantdanilos: I have access to U1 branches, if that helps.06:22
daniloswgrant, are they on (qa)staging? I have access to landscape branches, but they ain't there06:22
wgrantdanilos: The content doesn't matter, does it?06:23
danilosjtv, thank you :)06:23
jtvdanilos: is this the branch that caused (some of) those 93 failures and 17 errors we had in devel earlier?06:23
wgrantThe DB stuff is there, and that's all that matters.06:23
daniloswgrant, nope, I just need merge proposals against them06:23
danilosjtv, nope, the reversion of this branch and gary's revision using some of the stuff in this branch is what caused the failures06:23
wgrantdanilos: gary reverted that before you emailed me, btw.06:24
daniloswgrant, it is? oh right, logging in might help see them06:24
jtvdanilos: oh, I heard about those but didn't think it was the same failure.  There are far too many lately.  :/06:24
danilosjtv, this is just a regular distributed development fallacy, I don't think there's anything we could do about it except make the test suite run shorter thus reducing the chances of something like this happening06:24
wgrantdanilos: I agree that that's about all we can do.06:25
daniloswgrant, yeah, I've seen that as well, sorry if I bothered you :)06:25
jtvdanilos: for a moment I thought you were saying I was completely wrong, but now I suspect "fallacy" isn't really the word you meant.  :-)06:25
wgrantIf we had a one hour test suite again (which is practical with parallelisation), the occurrence and impact of this sort of thing would be far, far lower.06:25
jtvYes.06:26
jtvAlthough the past few days, Q/A has played a large role as well.06:26
wgrantjtv: That's made worse by the fact that QA can rarely happen until 10 hours after the branch is submitted.06:27
wgrantWhich means a lot more breakage can slip into devel before it's noticed, and it's less likely to be noticed because the wrong people are doing it.06:27
jtvAbsolutely.  Getting a branch from submission to Q/A readiness is still an overnight process.06:28
jtvWhich reminds me of another suspect in our current problems: staging updates.06:28
wgrantWhat staging updates?06:28
wgrantIt hasn't updated in a while :)06:29
danilos:)06:29
jtvOh well that's alright then.  :)06:29
wgrantThe ticket is only 85.. we should probably get it bumped.06:29
jtvdanilos: I rejected the MP based on the missing "the" in the comment.  Please try again Monday.06:31
danilosjtv, fair enough, thank you very much, I'll be back on Monday06:31
danilos(I'll go spend weekend fixing all the missing articles in the LP tree, however you take that ;)06:32
jtvnp06:32
jtvdanilos: *the* weekend.  You did that on purpose, didn't you?06:32
danilosspend the weekend?06:32
jtvYup.  :)06:32
danilosheh, yeah, I can usually find them missing only on re-reading the sentence, and that never happens with comments for tests :P06:33
LPCIBotProject devel build #998: STILL FAILING in 16 min: https://lpci.wedontsleep.org/job/devel/998/06:35
StevenKUh06:36
StevenKbzr: ERROR: http://bazaar.launchpad.net/~launchpad-pqm/launchpad/devel/.bzr/repository/packs/9e62132dbdc7acb42f1156c7a4128cf2.pack is redirected to https://launchpad.net06:37
StevenKRARGH06:37
wgrantYay06:38
lifelesswgrant: -  1. [[#william_grant|William Grant <me {_AT_} williamgrant.id.au>]] ''(133 top-level landings)''06:38
lifeless+  1. [[#william_grant|William Grant <me {_AT_} williamgrant.id.au>]] ''(134 top-level landings)''06:38
lifelesswgrant: lies06:38
wgrantlifeless: I merged a rev from a branch from December :)06:38
StevenKHaha06:38
wgrantI thought I cherrypicked it.06:38
wgrantBut apparently not well enough.06:38
wgrantAh, it was the first rev in the branch.06:38
wgrantlifeless: Are you here?06:43
wgrantlifeless: If so, a prio bump on https://rt.admin.canonical.com/Ticket/Display.html?id=47551 would be nice, since staging hasn't restored for two weeks now and we'll likely be fastdowntime-capable next week...06:43
* 31NAAXP81 hates doc tests. too hard to debug :-(06:45
=== 31NAAXP81 is now known as wallyworld_
StevenKHaha06:45
wallyworld_shutup06:45
wgrantUnderscores, random characters... what next?06:45
StevenKNice nickname06:45
wallyworld_i'm already way too grumpy06:45
=== StevenK is now known as W4|_|_YW0R|_D
wallyworld_@%^@#%^!@^06:45
LPCIBotProject devel build #999: STILL FAILING in 3.5 sec: https://lpci.wedontsleep.org/job/devel/999/06:45
=== W4|_|_YW0R|_D is now known as StevenK
wallyworld_smart arse06:46
StevenKOh damn it!06:46
StevenKJENKINS!06:46
wallyworld_3.5 is pretty short06:46
StevenKThe slave was already corrupted06:46
henningewallyworld_: Hi! ;)06:52
wallyworld_henninge: hi there06:53
wallyworld_i assume you saw my comments :-)06:53
henningewallyworld_: yes, thank you ;)06:54
wallyworld_np. i hope they made sense06:54
henningewallyworld_: I replied rather lengthy06:54
henningevery much so06:54
wallyworld_ah right. i'll look at my email06:54
wallyworld_henninge: right, i see the disabling of the form submit button now. and it will be re-enabled if a request build succeeds or partially succeeds?07:00
henningewallyworld_: not currently, no.07:01
wallyworld_i think the original request build form did this?07:01
henningewallyworld_: AFAIUI the user is supposed to close the dialog and re-open.07:01
henningeno07:01
henningeit did not07:01
henningeor, let me check that ... ;)07:02
wallyworld_ok. i thought it was either re-enabled or else the user could click an as yet unbuilt distro series and it would be enabled07:02
wallyworld_without requiring the form to be closed and reopened07:02
henningeI just checked, the button is only enabled in the connect function.07:03
wallyworld_s/connect/correct ?07:03
henningewallyworld_: There are other things to fix in this dialog, and also in its code but that is outside of the scope of what I am doing here.07:03
henninge(which as alread widened a lot ;)07:04
wallyworld_sure. i'm just a bit concerned that the button used to work a certain way but may not have kept the same behaviour]07:04
henningewallyworld_: the connect_requestbuilds function that connects the link07:04
henningeactually, it is done in the click handler, when the dialog is opened07:05
henningethe enabling, I mean.07:05
henningepossible, but that change was before me ;-)07:05
henninges/was/happened/07:06
wallyworld_perhaps07:06
wallyworld_so in the case hwere the user clicks 2 out of 3 series, and the build for one of them is queued but the other has an "already building" error or something. they should then be able to click the 3rd series that was not part of the original selection and request a build07:07
wallyworld_without having to close the form07:07
henningewallyworld_: I agree completely!07:09
wallyworld_i'm fairly sure that's how it worked before. perhaps it has changed in a branch previous to yours. if it works diffeently now, it would be cool if a bug were raised so that we didn't forget to fix it. or if the behaviour is different because of the changes in your mp, it would be cool to see it fixed in there07:09
wallyworld_sorry for being a pain in the arse07:09
henningewallyworld_: I just looked at the code previous to mine (bzr cat -r :submit) and the button is never re-enabled.07:10
wallyworld_ah ok. seems like you are off the hook :-)07:10
wallyworld_i'll update the mp with r=me and get jtv to mentor07:11
jtvoh, hi wallyworld_!07:11
henningewallyworld_: I am about to start the fourth branch to fix this one bug about error reporting, so I will be very reluctant to add anything else to it ... ;-)07:11
wallyworld_i thought that would wake yu up :-)07:11
henningewallyworld_: Thank you!07:11
wallyworld_henninge: sure. any fix to the submit button warrents it's own bug07:12
henningeyup, I'll file that07:12
wallyworld_awesome. thanks.07:12
wallyworld_jtv: over to you. it's beer o'clock for me but i'll pop back later to check on things https://code.launchpad.net/~henninge/launchpad/bug-824435-failure-reporting-3/+merge/7290807:17
jtvwallyworld_: cheers07:17
=== wallyworld_ changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: - | Critical bugs: 237 - 0:[#######=]:256
jtvin more sense than one07:17
wallyworld_no, thank you07:17
wallyworld_:-)07:17
* jtv gives wallyworld_ a puzzled frown07:18
wallyworld_it's been along day. i've resorted to converting a doc test to a unit test so i can debug07:18
wallyworld_jtv: sorry, the subtlety of my Two Ronnies reference was obviously lost07:18
jtvEvidently.07:19
* jtv needs to catch up on his Two Ronnies.07:19
* wallyworld_ opens a bottle and drinks :-)07:19
wallyworld_ahhhh07:19
jtvAnd "resorted to" converting a doc test to a unit test?  You deserve, if not a medal, then at least a cool beer!07:19
wallyworld_yep :-)07:19
jtvWow, that was timely07:19
wallyworld_still only 3/4 of the way through07:20
wallyworld_frustrating day today07:20
jtvwallyworld_: this'll cheer you up… <compose>3407:24
henningejtv: ³¼?07:27
henningewallyworld_: bug 83446307:28
_mup_Bug #834463: Re-enable submit button in request builds overlay. <Launchpad itself:Triaged> < https://launchpad.net/bugs/834463 >07:28
jtvhenninge: that's cheating!  You did <compose>^3<compose>14, didn't you?07:28
henningejtv: well, I think "Alt Gr" is the compose key on the German keyboard and if I hold it down an press 34, I get ³¼07:29
* jtv fondly remembers the can't-get-used-to-metric-but-we'll-give-decimal-a-go ²²/₁₀ pricing at US petrol stations.07:29
wgranthenninge: Alt Gr is not quite the same thing.07:29
wgrantIt's just a third set of characters, AIUI.07:29
wgrantCompose is a little more powerful :)07:29
jtvBut good to know there's yet another standard to confuse things.  ☺07:30
* henninge hates to be lacking power … :(07:30
wgranthenninge: I don't know of any layout that has a "Compose" key. In Ubuntu, at least on US keyboards, you have to configure it manually. I use RAlt.07:30
henningeah, I see07:31
wgrantIt is displeasing that there is not one configured by default.07:31
henningeRAlt *is* Alt Gr07:31
wgrantBut perhaps there are people around who use RAlt or Menu for their traditional purposes.07:31
sorenFor many European keyboard layouts, RAlt is already special.07:31
henningeWe need it here for {[]}€~07:31
sorenThe menu key... Not so much.07:31
henningeoh, and for \07:33
henningeone more reason to hate DOS paths07:33
wgrantAt least it's not a French keyboard.07:33
wgrantrvba is a bad person.07:33
wgrantGerman keyboards aren't actually too bad.07:34
wgrantBut French, aaaaaaa07:34
rvbawgrant: I think you did very well with a French keyboard. I shall bring you one next time we meet :)07:34
henningeI can live with it07:34
henninge:-D07:34
jtvWhat happens when you try to type qwertz on an azerty keyboard?07:40
jtvYou probably turn Alsatian.07:41
adeuringgood morning07:52
jtvhi adeuring08:13
adeuringhi jtv!08:15
mrevellMornin'08:17
jtvhi mrevell08:18
wgranthenninge: 40408:18
henningewgrant: yes, that's the point ;)08:19
wgrantAh!08:19
=== wgrant changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: - | Critical bugs: 243 - 0:[#######=]:256
henningeAnybody know if Matt owns a baseball bat?08:20
mrevellhenninge, This Matt does. Is this the Matt you're looking for?08:23
henningeyup08:23
henningemrevell: http://yuilibrary.com/something.html08:24
mrevellheh08:24
bigjoolsmrevell would need a cricket bat08:32
=== adeuring changed the topic of #launchpad-dev to: #launchpad-dev ist: https://dev.launchpad.net/ | On call reviewer: adeuring | Critical bugs: 237 - 0:[#######=]:256
mrevellThe unmistakable sound of willow against bugs.08:33
bigjoolswe really need to block MPs on vcs imported branches08:47
wgrantYeah.08:47
* bigjools files a bug08:49
bigjoolsmrevell. henninge: the lockerz.com website has a good oops page, it's a space man floating around on the page with a message "Houston, we've had a problem!"08:54
henningebigjools: they seem to have different ones. Now I see a dog licking my screen .... ;-)08:55
bigjoolslol08:55
=== almaisan-away is now known as al-maisan
stubGiven we are going to have 5 minute outages a couple of times a week, if anyone is bored...09:20
wgrantNo reason we can't get them sub-minute :)09:20
nigelbwgrant: Thanks for qa-ing :D09:21
* nigelb was asleep09:21
* wgrant needed to get a regression fix out.09:21
nigelbstub: I now know exactly how you feel when your clock is messed up.09:21
jtvwgrant: please tell me you fixed that brittle bzr versioning test!09:21
wgrantjtv: 'fraid not.09:21
wgrantFeel free to do the 5-character fix, though.09:22
nigelbint()?09:22
* nigelb can do it right away09:22
jtvYup09:22
jtvOh thanks09:22
jtvI'd be happy to review it.09:22
nigelbhave the bug number handy?09:22
nigelbno wait, I have it09:22
* jtv digs09:22
jtvoh09:22
nigelbbug 83374309:22
_mup_Bug #833743: test_versioninfo fails when system has bzr 2.4 <test-system> <Launchpad itself:Triaged> < https://launchpad.net/bugs/833743 >09:22
bigjoolswgrant: do you know if the ec2 image got updated with the deps for the xz branch?09:25
StevenKYes09:26
StevenKI did it09:26
bigjoolsthanks09:26
bigjoolsand thanks09:26
nigelbI wish the Updating diff page had ajaxy magic not forcing me to refresh every few seconds.09:27
StevenKnigelb: Wait09:28
StevenKIt was demo'd at the epic09:28
nigelboooooooh \o/09:28
nigelbI need to keep wishing for more :P09:28
nigelbjtv: https://code.launchpad.net/~nigelbabu/launchpad/833743-revno-fail/+merge/7300809:29
jtvnigelb: done09:29
jtvnigelb: need me to land it?09:30
nigelbYes, please :)09:30
jtvWell, that should fix that devel failure.  Thanks nigelb!09:41
jtvadeuring: could I beg you for a review?  https://code.launchpad.net/~jtv/launchpad/bug-832661/+merge/7300909:48
adeuringjtv: sure09:48
jtvthanks09:48
wgrantbigjools: It landed via ec2, so I hope so :)09:59
wgrantbigjools: Image version 51909:59
wgrantGerman has infiltrated the channel again :(09:59
bigjoolsnigelb: my team will be finishing that work after we finish derived distros10:00
bigjoolswgrant: good. I got fed up with ec2 randomly kicking out 2 of my branches all week so I just lp-landed them.10:01
wgrantbigjools: Odd, the image was fixed a day or so before it landed.10:01
jtvadeuring: argh!  I just realized (because everyone keeps %$#@ distracting me) I forgot to set up the branch dependency.  That diff should be a lot smaller.10:04
adeuringjtv: ah, cool :)10:04
jtvBranches that were unable to land because buildbot has been near-permanently broken the past few days.10:05
jtvadeuring: re-submitted as https://code.launchpad.net/~jtv/launchpad/bug-832661/+merge/7301210:06
adeuringack10:06
nigelbjtv: \o/10:09
nigelbbigjools: Yay!10:09
bigjoolsnigelb: the basic code is working but we need to make it production-worthy which will be tricky as we have to set up some stat counting for Rabbit10:10
nigelbooh, rabbitmq, neat10:10
nigelbdid you guys deal with the HA rabbit thing that was on the list a while back?10:11
bigjoolsyeah, once this is done we'll be able to add more async updates to pages that wait for jobs10:11
nigelbsomething like the sync pages you guys did?10:11
bigjoolsthat sort of thing10:11
bigjoolswe'll do popular pages first though :)10:12
bigjoolscan't remember where we got to with HA rabbit10:12
wgrantbigjools: Rabbit metrics will be pretty easy with the plugin.10:12
wgrantAnd I think it has an HA exemption.10:12
wgrantThe hardest bit is probably getting OOPSes into txlongpoll.10:12
bigjoolsyes10:13
wgrantBut that won't be terrifyingly difficult.10:14
bigjoolswhich plugin is this?10:14
wgrantWith lifeless' work this week.10:14
wgrantbigjools: rabbitmq-management10:14
wgrantppa:wgrant/rabbitmq10:14
bigjoolsah cool, didn't know about that10:14
nigelbDoesn't LP already install rabbitmq by default?10:14
wgrantHas packages.10:14
wgrantnigelb: Yes, but it's not actually used.10:14
* nigelb remembers having rabbit on his ystem10:14
wgrantbigjools: It provides a web UI and JSON API with counters and rates and stuff.10:14
bigjoolsnigelb: you can turn it off, the tests that need it will start it10:14
bigjoolswgrant: oh, awesome, just what we need10:15
wgrantbigjools: Exactly.10:15
bigjoolsjust need to work with the losas to get that nagiosed10:15
wgrantWorks on Lucid->Natty, not sure about Oneiric.10:16
wgrantOneiric has 2.5, so we should probably upgrade to that everywhere.10:17
wgrantWill investigate that next week.10:17
nigelbbigjools: nah, I use it occasionally with other stuff10:18
nigelb(like celery)10:18
nigelbOooh. I just realized. With that 5 char fix. I now have 5th non-canonical LP contributor spot.10:18
bigjoolsLP generally need a very, very solid and easy story to communicate between components10:19
bigjoolsor SOA will be awful10:19
nigelbHeh, yeah. Fun.10:19
nigelbThis means writing tests for that stuff will be further fun.10:20
wgrantbigjools: Well, most SOA stuff will not be through rabbitmq, but some hopefully will ebe.10:21
bigjoolswgrant: either way, it needs to be easy to communicate :)10:21
wgrantbigjools: Indeed.10:32
wgrantbigjools: At least OOPSes for WSGi apps are just about trivial now.10:32
wgrantbigjools: Have you seen the zeca replacement?10:32
=== jtv is now known as jtv-afk
bigjoolswgrant: there's a zeca replacement?10:39
adeuringjtv-afk: r=me10:42
wgrantbigjools: lp:python-gpgfixtures10:43
wgrantbigjools: lifeless wrote it, to be less huge and not depend on Twisted.10:43
wgrantSo lp:gpgverifyd doesn't need a Twisted dep.10:43
bigjoolscool10:43
jtv-afkthanks adeuring!10:44
wgrantAnd once gpgverifyd is up, poppy's time in the tree can come to an end.10:48
jtv-afkThat's it for me.  Have a good weekend, people!10:49
bigjoolsand there was much rejoicing10:49
bigjoolsnn jtv-afk10:49
wgrantNight jtv-afk.10:49
nigelbNight jtv-afk!10:49
jtv-afknn10:49
nigelbWaiting for MFBT :/10:50
wgrantnigelb: I see you are #5 now!10:59
nigelbwgrant: I noticed! \o/10:59
nigelb3 more branches to #410:59
nigelbI landed 3 branches this week. If I keep this up, I just may have a chance to beat you :D11:00
wgrantYup.11:00
bigjoolsactivate the HIREBOT11:01
nigelblol11:01
wgrantHeh.11:02
nigelbDid anyone come up with stats for the LP team yet?11:02
nigelbIt would nice to see how outside contributors compare with the actual team :D11:02
* bigjools wants to eradicate security.cfg11:04
wgrantnigelb: I have a branch which gets it mostly working for ~launchpad too.11:04
nigelboooh :D11:05
=== henninge is now known as henninge-lunch
wgrantnigelb: But for some idea, 'bzr stats' is helpful.11:09
nigelbhmm11:10
nigelbneed to try it when I get to my computer. (at work)11:10
bigjoolswgrant: what is the number that stats is outputting? It doesn't say anywhere, not in the output nor the help.11:13
=== al-maisan is now known as almaisan-away
jelmerbigjools: number of commits11:14
bigjoolsjelmer: including all levels I guess?11:15
jelmerbigjools: yep11:15
bigjoolsjelmer: ok thanks.11:15
bigjoolsso it shows who does local commits the most :)11:15
jelmerso it's not a terribly good metric for e.g. Launchpad, given some people do a commit for each two lines they write and others only \11:15
wgrantYup.11:15
jelmera couple of times per landing11:15
bigjoolsthe one exception is Celso11:16
nigelbCelso?11:16
bigjoolshe was basically a coding machine11:16
nigelbheh11:16
nigelbI like commiting multiple times11:17
nigelb(because I keep making stupid mistakes)11:17
wgrantSte11:17
wgrantStevenK is the worst offender :P11:17
nigelblol11:17
wgrantOne 1100 line commit per branch or so.11:17
nigelbbut he uses perl to remove code11:17
wgrantTrue.11:17
wgrantMakes it even worse.11:17
nigelbThat's cheating :D11:17
bigjoolsit needs to be weighted by lines per commit11:20
jelmerit'd be hard to distinguish between actual lines changed and lines moved11:22
bigjoolsyeah it's not perfect but better than just commits I think11:22
bigjoolsok I need help because security.cfg is such a monstrosity I have no idea what tables I need to add to it so my process can close a bug11:24
bigjoolshow do I ascertain what I need?11:25
wgrantHahaha11:25
bigjoolsthis is a leading question :)11:25
wgrantLook at process-accepted11:25
bigjoolsI am11:25
bigjoolsbut ...11:25
bigjoolsyou see where I am driving with this?11:26
wgrantYes, it's hard.11:26
wgrantPartly because LP grew into a 700KLOC monstrosity.11:26
bigjoolssecurity.cfg just needs to die11:27
wgrantI'm not sure whether it's worth it.11:27
wgrantBut it would be a lot easier if it wasn't all one thing.11:27
bigjoolsgiven that the webapp has carte blanche anyway, why are we restricting scripts?11:27
wgrantI can only think of a couple of bugs that have been revealed by the restrictions.11:28
bigjoolsok how evil is it to inherit queued in sync_packages?11:28
* jelmer remembers a few incidents with security.cfg being too strict11:28
bigjoolsbecause I simply cannot be arsed to work this out11:28
bigjoolsjelmer: indeed11:28
bigjoolsit just seems to cause problems, not solve any11:28
wgrantOnly a few? :)11:28
bigjoolswe could do something more intelligent in security.cfg and have groups that represent actions, not scripts11:29
wgrantI've been considering that for a while.11:30
bigjoolsthere's a little of that already - well done to whoever made "translations_approval"11:30
wgrantI don't think there need to be too many.11:30
wgrantSince bug actions need like 20 tables, that probably covers a lot of the lcutter.11:31
bigjoolswell since PCJ does all of what queued does, I am going to inherit it, screw it11:31
wgrantSounds like a plan.11:32
wgrantA not very good plan, but an effective one :)11:32
bigjoolsI'd rather it was too wide than too narrow11:32
wgrantIndeed.11:32
bigjoolsI'm really not sure what we are achieving with the permissions11:32
=== mrevell is now known as mrevell-lunch
LPCIBotProject devel build #1,000: STILL FAILING in 4 hr 48 min: https://lpci.wedontsleep.org/job/devel/1000/11:51
=== henninge-lunch is now known as henning
=== henning is now known as henninge
=== bac changed the topic of #launchpad-dev to: #launchpad-dev ist: https://dev.launchpad.net/ | On call reviewer: adeuring, bac | Critical bugs: 237 - 0:[#######=]:256
bacgood morning adeuring12:08
adeuringgood morning bac!12:08
henningeAnybody got an idea why the LibrarianLayer might be failing locally like this? http://paste.ubuntu.com/675201/12:21
bigjoolshenninge: clear out /var/tmp stuff12:25
bigjoolsincluding pid file12:25
henningebigjools: I don't see anything testrunner or launchapd specific in /var/tmp12:33
henningethe only pid file was development-google-webservice.pid12:33
=== mrevell-lunch is now known as mrevell
mrevellle12:34
mrevellmatsubara, hey mumble?12:34
matsubaramrevell, hey, yes!12:34
wgranthenninge: Chameleon does some very evil stuff; I need to talk to gary_poster about removing that or it.12:34
wgranthenninge: dpkg -S setuptools.egg-info12:34
wgrantOh, gary_poster is here.12:34
wgrantgary_poster: Hi.12:34
gary_posterwgrant, on call will ping12:35
wgrantk12:35
wgranthenninge: Which Ubuntu release has this machine been upgraded from?12:36
wgranthenninge: I suspect you have a non-dpkg-managed /usr/lib/python2.6/setuptools.egg-info, as we found on loganberry and several other production machines.12:36
henningewgrant: from maverick to natty12:37
wgranthenninge: We deleted it, and everything worked.12:37
wgranthenninge: Hmm.12:37
wgrantSo, /usr/lib/python2.6/dist-packages/setuptools.egg-info is meant to be a symlink.12:37
wgrantI suspect it's a directory on your machine.12:37
henningepython-setuptools: /usr/lib/python2.6/dist-packages/setuptools.egg-info12:38
henningepython-setuptools: /usr/lib/python2.7/dist-packages/setuptools.egg-info12:38
henningepython-setuptools: /usr/share/pyshared/setuptools.egg-info12:38
gary_posterwgrant, I'm aware of one evilness--z3c.ptcompat is perhaps the hairiest Python I've ever seen. Perhaps.  It sounds like you have another?12:38
gary_posterz3c.ptcompat can eventually go12:39
gary_posterwhich was why I was not overly worried about that one12:39
wgrantgary_poster: I invite you to read the top of chameleon/template.py12:39
gary_posterheh, ok, going wgrant12:40
cjwatsonthere are problems with migrating dpkg-managed filesystem entries between symlinks and directories - it has to be done by manual maintainer script code (for some excellent reasons)12:40
wgrantgary_poster: It hashes, in undefined order, the versions of every package it can find on the system.12:40
cjwatsonunfortunately .egg-info entries became one or the other at the whim of complex build systems12:40
cjwatson(i.e. a simple rebuild could change without any obvious reason in the source package)12:40
wgrantcjwatson: Yay12:40
cjwatsonit's probably simplest to rm -rf the .egg-info file in question and then reinstall the package that owns it12:41
wgrantcjwatson: Interestingly, on the production machines the package was no longer installed.12:41
wgrantI presume it was removed after the upgrade.12:41
wgrantBut didn't remove the directory, because it was meant to be a symlink.12:41
cjwatsonthat's a bit harder to explain, but perhaps if dpkg expects it to be a directory it uses rmdir not unlink12:41
cjwatsonrather than unlink => if EISDIR rmdir12:42
wgrantYeah.12:42
wgrantAnyway, on production where it's been a problem we've just deleted the directory, and reinstalled the package if it was still installed.12:44
wgrantAll seems happy.12:44
wgrantBut that part of Chameleon really worries me.12:44
=== almaisan-away is now known as al-maisan
gary_posterwgrant, that's nothing compared to z3c.ptcompat, IMO. :-P12:47
gary_posterAnyway, the undefined order is probably barely alright practically for what the purpose appears to be, which is to enforce some kind of "rebuild when things change," given that the undefined order is stable in a Python release, and a new Python release ought to trigger this kind of thing anyway.12:47
gary_posterBut we certainly can and should convince the person to order them.  Beyond that, given that Chameleon is a compile-to-Python template system, the basic idea strikes me as reasonable, within the context of the kind of task Chameleon has set itself to.12:47
wgrantgary_poster: It is revolting and causing cronspam and breaking the test suite. I guess we may need to clean up all production and dev machines.12:50
gary_posterwgrant, "revolting" is a wildly unnecessary description, IMO, not that I have anything to do with it. Just seems unproductive to talk that way. Causing cronspam I saw; it is because of broken packages in our distro's packaging system, which is a chronic and annoying problem for anyone who does work with system Pythons.  I have not seen a broken test suite.12:52
gary_posterwgrant, practically, what machines have been taken care of?12:54
cjwatsonsomebody should file an Ubuntu bug about that python-setuptools problem if they haven't already; we should be able to take care of it in an update12:54
cjwatsonif you can't rely on system packages, that's a pretty serious problem from our POV12:54
gary_postercjwatson, when I've experience this in the past, I was unable to identify a cause.  My suspicion has been distro upgrades not cleaning things up properly.12:56
cjwatsongary_poster: I've roughly outlined the cause above.12:56
cjwatsongary_poster: a bug about the fact of the problem is sufficient12:56
gary_posterI have no hard evidence to support this and have been unable to dupe reliably, so it's the kind of...ok OK!  Great, cjwatson, I'll read the backlog and file it then.  Thanks12:56
cjwatson(or at least, the very likely cause)12:57
gary_posterheh, good enough12:57
cjwatsonwe can go through the history and hunt for symlink<->directory chnges12:57
cjwatson*changes12:57
cjwatsonI agree it's likely to be a pain to come up with a coherent reproducer for12:57
cjwatsonbut let's not burn too many people's time on that when we have a pretty good hypothesis12:57
gary_poster+112:58
wgrantcjwatson: I tried a clean hardy->lucid upgrade with python-setuptools installed, and it worked fine.12:58
wgrantBut AFAICT on loganberry that's what broke it.12:58
wgrantIt's possible there was some old launchpad PPA package, though... I don't have logs to find out.12:58
* cjwatson will have a quick hunt through publishing history12:58
gary_postercjwatson, wgrant, https://bugs.launchpad.net/ubuntu/+source/python-setuptools/+bug/83469813:08
_mup_Bug #834698: setuptools.egg-info can end up as a directory when it is meant to be a symlink <python-setuptools (Ubuntu):New> < https://launchpad.net/bugs/834698 >13:08
wgrantIt's not just setuptools. That's just the most common one.13:09
wgrantAh, you say that in the bug.13:09
gary_posteryeah13:09
=== salgado_ is now known as salgado
wgrantbigjools: Oh, you're using changelog_entry to create the aggregate changelog?13:42
wgrantbigjools: I was expecting to use the real librarian changelog, but I guess that's probably OK...13:42
wgrantExcept not.13:43
wgrantIt's bad.13:43
wgrantIt searches for all SPRs in any context, doesn't it?13:43
bigjoolsyes, hmm13:43
bigjoolsI thought that was ok but maybe not13:43
wgrantIt'll count all PPA uploads, Ubuntu uploads, Linaro uploads, etc.13:44
bigjoolsyes13:44
wgrantAs well as the general badness and unreliability that changelog_entry entials.13:44
wgrantentails.13:44
bigjoolswhat is wrong with changelog_entry?13:44
wgrantIt is a guess.13:45
wgrantA historically error-prone guess.13:45
bigjoolscan you be a bit more explicit?13:45
wgrantLet me find some bugs.13:45
wgrantI'm looking :)13:45
wgrantAh, it's change_summary that is the cause of bug #144620. But changelog_entry for the gina case is a guess, and for Ubuntu it is frequently wrong because people build packages badly.13:46
_mup_Bug #144620: Some displayed sourcepackagerelease changes files don't have attribution <lp-soyuz> <Launchpad itself:Triaged> < https://launchpad.net/bugs/144620 >13:46
wgrantWorse still, if Linaro then copy from Ubuntu, they will miss everything.13:46
wgrantBecause Ubuntu only has the last SPR.13:46
bigjoolsdoesn't matter does it?13:47
wgrantWhy not?13:47
bigjoolsit's only for acceptance emails13:47
bigjoolsit's right that each SPR has only its changelog13:47
bigjoolswhat sync-source does is crack13:47
wgrantEr, no :)13:47
bigjoolscan you try to be less condescending?13:47
wgrantAn upload's changes file is meant to contain all the intermediate changelog entries.13:48
wgrantAcceptance emails should too.13:48
wgrantSo they actually list the changes.13:48
wgrantAnd not just the last change.13:48
wgrantAnd isn't this to be used for bugs too?13:48
wgrantIf we restrict the SPR search to those published in the origin archive, Debian->Ubuntu copies will work.13:49
wgrantBut Debian->Ubuntu->Linaro copies will magically only have the last SPR.13:49
wgrantSo the acceptance emails will be truncated, and not enough bugs will be closed.13:49
wgrantThis is easily solved by just using the actual changelog, I think.13:50
bigjoolsincluding previous version's changelogs in a particular SPR is weird13:50
wgrantWe shouldn't include them in the SPR.13:50
wgrantWe should consider them as part of the upload/copy.13:51
wgrantThat's the whole point of this change, isn't it?13:52
wgrantTo include more than just the actual SPR that is being copied.13:52
bigjoolscorrect13:52
wgrantTo do that only for the first copy seems less than ideal.13:52
henningederyck, abentley: From the w3c spec:13:52
henninge10.4.1 400 Bad Request13:52
henningeThe request could not be understood by the server due to malformed syntax. The client SHOULD NOT repeat the request without modifications.13:52
wgrantParticularly when changelog_entry is a reasonably awful thing in the first place, and we have the changelog file a couple of milliseconds away.13:53
henningeBut I will still use 400 if that is how we do it around here ... ;-)13:53
bigjoolswhat does gina put in changelog?13:53
abentleyhenninge: right.  The HTTP spec provides no way to signal that the request was unacceptable for reasons other than bad syntax.13:53
wgrantbigjools: I think it puts everything between the last SPR published and the current one.13:53
StevenKwgrant: Personally, I'd like to kill changelog_entry13:53
deryckhenninge, I don't think it's a perfect match, but it's close enough.  the spec makes me feel better about it actually. :)13:54
wgrantStevenK: I very much would.13:54
henningeabentley: because it was not unacceptable.13:54
wgrantStevenK: It is very wrong in the new world.13:54
wgrantStevenK: Because it depends on the previous publication.13:54
abentleyhenninge: it was unacceptable.  The request could not be performed.13:54
wgrantIt's really part of the upload, not the source package.13:54
henningeabentley: no, it was performed, at least in part13:54
StevenKAnd even so, we don't even keep the .changes file around13:55
wgrantStevenK: We do...13:55
henningeabentley: I would expect a 4xx to mean that nothing was changed on the server.13:55
wgrantStevenK: We strip the sig, but we keep the changes file for every well-formed upload.13:55
abentleyhenninge: perhaps we differ on what "perfomed" means.13:55
wgranthenninge: As would I.13:55
henningebut as I said, I am not going to go against our customs here ...13:56
henninge... at least not in this branch.13:56
henningewgrant: oh, so you are aware of our misuse of 400s? ;-)13:57
wgrantbigjools: I think changelog_entry is a near-adequate compromise for displaying in the web UI sometimes, but we should avoid it where possible. And it's now possible to go direct to the changelog and get a correct result, so we should do that.13:57
wgranthenninge: No :(13:57
wgranthenninge: Where? :(13:57
henningeeverywhere, so I am told.13:57
bigjoolswgrant: I am verifying what gina does, I don't trust it13:57
wgranthenninge: Most 400s should abort the transaction, so the only server changes will be sessions and OAuth nonces...13:58
wgranthenninge: Is that not the case?13:59
wgrantbigjools: It is not trustworthy.13:59
wgrantbigjools: But I think it looks at the last published SPR, and takes the entries since then.13:59
bigjoolsand looking at gina code makes me want to scratch my eyeballs out13:59
wgrantbigjools: To do anything else would make little sense.13:59
henningewgrant: nope, at least not for the case I got here.13:59
cr3does that apache configuration for serving static files on launchpad do anything special for etags?13:59
wgrantcr3: gary_poster changed all that to be much better recently, I believe.13:59
wgranthenninge: Which is that?13:59
henningewgrant: it returns a 400 if not all builds for a recipe could be requested.13:59
wgrantAhh.13:59
cr3wgrant: might that be available somewhere for me to see?13:59
wgrantcr3: I'm hoping gary_poster will be able to tell you :)14:03
wgranthenninge: That sounds bad to me.14:03
cr3wgrant: lets mention his nick, gary_poster, as often as possible to get his attention :)14:03
wgranthenninge: I would assume that a 400 meant no changes had been made.14:03
henningeno need to convince me ... ;-)14:03
wgrantI guess the really corect thing to do is use a 207... but aaaaaaaaa14:07
bigjoolsthis Gina code makes me want to go back to C++14:10
gary_posterwgrant, cr3, hiya :-)14:11
wgrantbigjools: gina does not age well.14:12
henningederyck: I think abentley understood that situation.14:12
bigjoolsit's hideous14:12
wgrantbigjools: Although it wasn't ideal in the first place either, no.14:12
gary_postercr3, yes, it does do something special for ETags14:12
wgrant            # XXX kiko 2005-11-05: this is very funny.14:12
gary_posterheh14:12
cr3gary_poster: awesome, could I have a looksee at the apache config?14:12
abentleyhenninge: Well, not completely, but I do feel that if it wasn't completely successful, the status code should reflect that.14:12
bigjoolswgrant: where is it checking to see what was previously published?14:12
abentleyhenninge: ideally, we'd have a separate status for each request.14:12
wgrantbigjools: It's not.14:12
wgrantbigjools: It just takes the first entry.14:12
bigjoolsoh. yay14:12
wgrantbigjools: This is, as we say, "wrong".14:12
bigjoolsso my hunch was write14:12
bigjoolsffs14:12
bigjoolsright14:12
wgrantbigjools: changelog_entry is not to be trusted. It doesn't really belong on SPR at all.14:12
bigjoolsok so I will switch to changelog14:12
wgrantbigjools: It's mainly there to permit fast access for views, and because we didn't store changelogs in the librarian.14:12
wgrantWe should remove it from everywhere we can.14:12
bigjoolsbut I think I still need to parse backwards through what's published14:12
wgrant... starting with this code that will DoS everyone if I upload 100 packages with similar versions to a PPA :)14:12
wgrantbigjools: See the base version calculator.14:12
henningeabentley: that would either mean the 207 or making seperate xhr requests for each build.14:12
wgrantbigjools: It walks through them until it sees the common ancestor.14:12
bigjoolsI need to go and lie down14:12
gary_postercr3, that's a question for the LOSAs, I don't have it.  I can tell you that we generate ETags for launchpad API docs and WADL and JSON; it is tied to file size and mtime; we synchronize mtime for these files based on the last bzr revision so that it should be stable across machines that share the same revision14:12
wgrantbigjools: python-debian makes it fairly trivial.14:12
henningeabentley: We can file a bug to fix that. ;-)14:12
bigjoolswe store last common version14:12
abentleyhenninge: yeah, 207 seems the most reasonable.  I didn't know about that RFC.14:12
wgrantbigjools: Actually, IIRC we create a set of the common versions, and take the max. You need to do the same, but then walk back through the entry iterator until you hit that version.14:12
gary_postercr3, I'm not sure if the Apache file will tell you more than that; and I'm only familiar with the api.[qastaging.|staging.|edge.]launchpad.net rules14:13
wgrantIt'll be pretty painless once you realise how awesome python-debian is.14:13
bigjoolswhat iterator?14:13
wgrantbigjools: the changelog entry iterator from python-debian.14:14
wgrants/iterator/generator/14:14
cr3gary_poster: thanks, that's definately something I can grep in launchpad but I'll still ask for the apache config in #launchpad-ops out of curiosity. I'm sure there's a trick or two I can learn14:14
bigjoolshang on14:14
gary_postercool cr314:14
wgrantcr3: Default Apache etags are generated from inode number, mtime and size.14:15
gary_posteryup14:15
wgrantcr3: inode number obviously isn't portable between machines.14:15
wgrantcr3: But if you reconfigure FileETag and make sure your mtimes are the same, the etags will match across machines.14:15
wgrantbigjools: Check DSD._updateBaseVersion14:18
wgrantAnd the getAncestry that it calls.14:18
bigjoolsI need to step back from this14:18
bigjoolsit's not straight to me exactly what needs to happen any more14:18
matsubaraadeuring, bac: hi there, are you available for a review? https://code.launchpad.net/~matsubara/python-oops-datedir-repo/improve-db-statement-matches/+merge/7305914:19
bigjoolswhat I need is an example case14:19
adeuringmatsubara: sure, I'look14:20
wgrantbigjools: Do you know how sync-source.py does this?14:20
matsubarathanks adeuring14:20
wgrantbigjools: It does it the same was as normal uploads: it calls dpkg-genchanges with -v$LATEST_VERSION_IN_UBUNTU.14:20
wgrantThis causes dpkg-genchanges to include in the changes file all changelog entries strictly later than $LATEST_VERSION_IN_UBUNTU.14:21
gary_postercr3, now a question for you. :-) could you either make ~launchpad the admin of https://launchpad.net/launchpad-results , add ~launchpad to ~launchpad-results ?  Since it is part of the Launchpad project, we are responsible for triaging bugs14:21
wgrantOr remove launchpad-results from launchpad-project, possibly.14:21
gary_posters/ add / or add/14:22
gary_posteryeah that too14:22
cr3gary_poster: I think the problem with that is that I'm not a member of ~launchpad which might prevent me from working on the project, but please correct me if I might be wrong :)14:22
wgrantSince it's not code managed by our team, it probably shouldn't be in launchpad-project.14:22
gary_postercr3, yeah that leaves you two options14:23
cr3wgrant: I was following the process here though: https://dev.launchpad.net/CreatingNewProjects14:23
bigjoolswgrant: you're not talking about my aggregate changelog stuff any more are you?  you're talking about gina?14:24
wgrantcr3: That's for split-out parts of Launchpad.14:24
gary_postercr3, I agree with wgrant that maybe it should not be in launchpad-project.  Alternatively, if you add ~launchpad to ~launchpad-results, at least everyone responsible would be able to to what they need.14:24
wgrantbigjools: They are intertwined, but I'm not talking about gina at all now.14:24
bigjoolswhy are you talking about parsing changelogs then?14:25
wgrantbigjools: Because traditional syncs do that.14:25
gary_postercr3, but unless there's a good reason to have it be part of launchpad-project, again, I agree with wgrant14:25
wgrantbigjools: That's the baheviour we're trying to emulate.14:25
cr3gary_poster, wgrant: I have a call scheduled with lifeless later today, I'll add that to the agenda depending on where we want to go with the project14:25
gary_postercool cr314:25
bigjoolswgrant: which requires fixing in gina AIUI14:25
wgrantbigjools: Not if we make native syncs parse the changelogs too.14:26
cr3I'm easy either way, I did feel strange seeing the launchpad folks getting bug reports about the project so I feel your pain :)14:26
bigjoolseuargh14:26
gary_posterfor now then, cr3, perhaps you could simply triage https://bugs.launchpad.net/launchpad-results/+bug/833854 ? :-)14:26
_mup_Bug #833854: Unable to submit results with results2launchpad on natty <Launchpad Results:Confirmed> < https://launchpad.net/bugs/833854 >14:26
wgrantbigjools: Classic/legacy/traditional/ohgodgoaway syncs don't use changelog_entry. They create a normal upload, which parses the changelog to work out which entries to include in the changes file.14:26
bigjoolswgrant: you said that gina doesn't import all of the changelog14:26
wgrantbigjools: Right.14:26
bigjoolsso we can't parse it14:26
cr3gary_poster: fair enough, done :)14:26
wgrantbigjools: But that's not too relevant if we ignore gina.14:26
gary_posterthanks cr3 :-)14:27
wgrantbigjools: No, it doesn't import all of the changes into *changelog_entry*.14:27
wgrantbigjools: debian/changelog is imported into the librarian verbatim.14:27
wgrantbigjools: There is no possible error there.14:27
bigjoolswgrant: ok *that* is what was confusing me14:27
wgrantbigjools: changelog_entry is generated based on a dodgy heuristic.14:27
bigjoolslet's ignore changelog_entry then14:27
wgrantYes :)14:27
bigjoolsassume changelog is complete14:27
wgrantIf it's not, then it's still not a regression from the old method.14:28
wgrantBecause normal uploads and legacy syncs just parse the changelog.14:28
bigjoolsI'm not convinced that changelog parsing is needed14:29
bigjoolsif gina makes a composite one for a particular import then we never saw the oldver versions anyway14:30
wgrantbigjools: If you fix gina to make a composite one, then maybe.14:33
wgrantbigjools: But using the real changelog is definitely safer, and probably easier.14:33
bigjoolswgrant: hang on14:33
bigjoolsright, I think I am finally tuned in.  I need more sleep.14:35
wgrantPerhaps I should change the docstring of changelog_entry to "Red herring."14:36
wgrantbigjools: Anyway, you should probably revert that revision.14:37
wgrantOr things could get *very* confusing and noisy.14:37
bigjoolshmmm14:37
wgrantI mean, the current implementation is clearly practically flawed.14:38
wgrantBecause it will pick up PPA uploads etc.14:39
bigjoolsit will yes14:39
bigjoolsa bad oversight14:39
wgrantHmm. I wonder what happens if I delete a package and copy it back in. I guess it includes every SPR ever seen by Launchpad.14:39
wgrantThat could be amusing.14:39
wgrantWith the right SPN, that is.14:40
wgrantI suppose I should sleep at some point.14:44
wgrantbigjools: You're not around Monday, I suppose?14:44
bigjoolswgrant: I am actually14:44
wgrantOh.14:44
wgrantI thought it was a holiday.14:44
bigjoolsit is but I swapped it14:45
wgrantAhh.14:45
adeuringmatsubara: r=me14:47
matsubarathanks adeuring14:47
wgrantNight all.14:47
bigjoolsnight14:48
matsubaraadeuring, I have another one from oops-tools which is related to that MP: https://code.launchpad.net/~matsubara/oops-tools/829460-typeerror-qsmmx/+merge/73062 could you take a look as well, please?14:48
adeuringmatsubara: sure14:48
cr3gary_poster: you mentionned generating etags for api, wadl and json. however, I'm seeing an oddly short etag for .css files, for example, and I'm not seeing anything about FileETag in the apache configuration nor anything special in the launchpad code, any ideas where I should look?15:15
=== beuno is now known as beuno-lunch
adeuringmatsubara: kiko has a good point about your mp15:21
=== al-maisan is now known as almaisan-away
matsubaraadeuring, yep, I'll reply to kiko's comment. Apart from that, are there other things to change in the mp?15:50
adeuringmatsubara: no, otherwise, the MP looks good15:51
matsubaraadeuring, cool. I'll grab some lunch and sort this out afterwards. thanks for the review!15:51
=== matsubara is now known as matsubara-lunch
adeuringmatsubara-lunch: enjoy lunch!15:51
adeuringmatsubara-lunch: note that I'll have EOD in about an hour, and I'll leave home then15:52
LPCIBotProject devel build #1,001: STILL FAILING in 4 hr 4 min: https://lpci.wedontsleep.org/job/devel/1001/15:56
=== beuno-lunch is now known as beuno
gary_postercr3, I don't know.  I haven't touched ETags for CSS, at least intentionally16:08
cr3gary_poster: I think I found what's going on: seems to be a server context FileETag config I'm not seeing in the launchpad virtualhost. I'm double checking with chex just to make sure16:10
cr3that's all I could assume being from the outside looking in :)16:10
gary_posterhm, ok cool cr316:10
cr3can someone help me rationalize what goes under lp.services? for example, I would tend to think there shouldn't be anything that depends on a database layer there, but that probably means I don't get the purpose of that namespace16:16
=== deryck is now known as deryck[lunch]
gary_posterabentley, you looked at https://answers.launchpad.net/launchpad/+question/167859 last week.  We have two almost identical SourceForge subversion branches, one of them importing and one of them not.  I tried the failing one locally and it worked fine.  I was thinking of asking LOSAs to clear out past attempts to see if that would help somehow.  Does that sound reasonable, and/or do you have a better idea?16:48
gary_postercr3, I think of it as "general-purpose sorts of things go here, like things that might go into a library, or things that are LP-specific but used as tools throught the code base."  That said, I'll deny everything if you claim I told you anything about this. ;-)16:50
gary_posterabentley, I spoke too soon.  The local checkout eventually failed after almost completing with "bzr: ERROR: A Subversion remote access command failed: REPORT of '/svnroot/ifolder/!svn/vcc/default': SSL handshake failed: Secure connection truncated (https://ifolder.svn.sourceforge.net)"17:13
gary_posterPerhaps I should assign this to Jelmer?17:13
abentleygary_poster: makes sense.17:13
gary_posterok thanks17:13
=== matsubara-lunch is now known as matsubara
abentleysinzui: I think I found a bug in addMember: http://pastebin.ubuntu.com/675383/17:19
sinzuiyes you have17:20
sinzuioh, hold on17:20
sinzuiapproved is a member, invited is not. how can that happen. I think approved would have to go to deactivated first17:20
abentleysinzui: or you could consider it a bug in the browser code.17:20
sinzuiabentley, is this a case where I add a team twice? Once I invite, the other party accept and the state goes to approve, but invite the team again. This should be a no op. there is nothing to do and no status should change17:22
abentleysinzui: yes, this is adding a team twice.17:23
abentleysinzui: how much of a no-op should it be?  would we still reset the expiration date, etc?17:32
sinzuiI would not think so17:33
sinzuiI understand your point, but I do not think that is a way team admins force renewals. Lp sends them out and the other team accepts them. If the admin wanted to extend the expiration date, he can do that from +members17:35
abentleysinzui: Is there a legitimate way for a team to become PROPOSED? I can do it using force_team_add.  If so, should the transition from PROPOSED to INVITED legitimate?17:43
sinzuiA team is proposed when the admin of the team is the user doing the add.17:44
sinzuiabentley, proposed -> invited  should not happen. That action is an implicit acceptance by admins of both teams of the user, so I expect the membership to be approved17:46
abentleysinzui: ISTM that if the admin of the target team then attempts to add the team, the status should go to APPROVED?17:46
sinzuiwe agree17:46
gary_posterAnyone else getting lots of errors in ec2 tests with complaints like this?17:51
gary_poster[<bzrlib.lockable_files._LockWarner object at 0x142dc510>]17:51
bdmurraywhat's the url that contains info regarding staging's database updates?18:00
=== deryck[lunch] is now known as deryck
gary_posterbdmurray, getting it for you, and it hasn't bee since the 15th IIRC.18:05
bdmurraygary_poster: okay, I thought I'd put the url in https://help.launchpad.net/StagingServer18:06
gary_posterexplanation, btw, from stub: "the account running the update has lost its18:06
gary_postersudo access, probably puppet fallout. I've opened RT #47499"18:06
_mup_Bug #47499: Sources.list are set to Australia <Ubuntu Express:New> < https://launchpad.net/bugs/47499 >18:06
gary_posterbdmurray, is this what you had in mind? https://staging.launchpad.net/successful-updates.txt18:07
bdmurraygary_poster: yes firefox wasn't helping me remember it18:07
gary_postercool18:07
abentleysinzui: with my changes, I think I can prove that TeamMemberAddView.add_action never triggers a TeamMembershipTransitionError.  Should the same be true for Person.addMember itself?18:10
sinzuiabentley, that would be nice, but I think that is impossible given that users call that via poorly written scripts.18:12
abentleysinzui: ISTM that currently addMember can be used to demote someone from ADMIN to APPROVED or PROPOSED.  Does that make sense?19:03
sinzuiNO19:04
sinzuioh19:04
sinzuiI think there is a related bug. maybe you found the root cause19:05
* sinzui looks19:05
gary_posterabentley, I wonder if you could help me for a moment.  If you don't think you can do so easily, no problem; writing this has helped me gather good diagnostic information.  I was going to put it on IRC, but it was too much, so here's what I have: http://pastebin.ubuntu.com/675475/19:07
gary_postermm, lemme try making that wrap...19:08
gary_posterabentley, try again: http://pastebin.ubuntu.com/675476/19:08
abentleygary_poster: So when we say "garbage", we mean "stuff that the garbage collector should have collected".19:10
abentleygary_poster: I have poked at this before, and my impression was that the garbage collector is not perfect.19:11
gary_posterabentley, yes, I believe so.  If I had to guess, I would say that the message I see locally is not being rendered for some reason19:11
gary_posterabentley, heh19:11
sinzuiabentley, bug 480157 which clearly states what you found19:13
gary_posterabentley, can I somehow force the file that the message references to unlock?19:13
_mup_Bug #480157: IPerson.addMember() should not demote admins <lp-registry> <teams> <Launchpad itself:Triaged> < https://launchpad.net/bugs/480157 >19:13
abentleygary_poster: So I can take a look at that test and see if the lock lifetimes are broken.19:13
gary_posterok thanks abentley.  Please let me know if I can help.  Given that these are keeping my ec2 land from passing but they are occurring oin buildbot and not causing a stop-the-line, I guess I'll submit directly for now; I'll also shoot a quick note about the situation to the list.19:14
abentleygary_poster: the test looks correct.  I think the puller really is failing to unlock the branch.19:17
gary_posterabentley, so it smells like a bzr error?19:17
abentleygary_poster: no.19:17
gary_posteroh?19:17
abentleygary_poster: it smells like a puller error.19:17
* gary_poster thought puller was bzr, and is corrected19:18
abentleygary_poster: puller uses bzrlib.19:19
abentleygary_poster: but it is part of codehosting.19:19
lifelesscr3: hi19:20
gary_posterok, gotcha.  abentley, do you want me to pull on that as a matter of my own edification, or should I leave you to it?19:20
abentleygary_poster: Have a look at it.  There are supposed to be symmetrical Branch.lock(read|write)/Branch.unlock calls.  It seems like they're not organized correctly.19:21
gary_postercool abentley.  I'll take a glance.  May I treat you as a mentor for this one?19:22
cr3lifeless: hola senor19:22
abentleygary_poster: sure.19:22
gary_postercool thanks19:22
lifelesscr3: do you have skype ?19:22
cr3lifeless: I might, let me have a looksee19:22
lifelessor I can do voip19:22
abentleygary_poster: The traditional pattern is that branch.lock_(read|write) is followed by a try/finally block that does branch.unlock.19:22
gary_postermakes sense19:23
lifelessI think we have a decorator too - a with write_locked(branch):19:23
cr3lifeless: yep, marcatinterunion19:23
lifelessIMBW19:23
abentleylifeless: indeed.19:23
abentleygary_poster: anyhow, you should be able to tell from the URL which branch isn't being unlocked appropriately.19:23
abentleygary_poster: Oh, it might be relevant that locks are tracked on a per-instance basis.  So another instance of "default-stack-on" is probably being opened and locked elsewhere.19:27
abentleygary_poster: that would be why stack_on.unlock said "LockNotHeld"19:28
gary_posterabentley, hm, ok.  per instance of what?  is the puller in another process, or at least in another bzrlib instance?19:29
abentleygary_poster: per instance of the branch class.19:30
abentleygary_poster: class instance, not bzrlib instance or process.19:30
gary_posterah ok abentley.19:31
gary_posterabentley, they shared directory names though.  That's to be exoected?19:31
gary_posterexpected19:31
gary_posterThat is, the lock file when it said "LockNotHeld" was the same19:31
gary_posterpath as the lock file that gc complained about19:32
abentleygary_poster: that's to be expected.19:32
gary_posteroh ok19:32
gary_poster(that seems mystifying on the surface of it, but I don't think digging into it will be necessary.)19:33
abentleygary_poster: if you open a branch twice, you get two instances of the branch class, referring to the same files.19:33
gary_posterabentley, ah so the instance does not hold the lock that exists?19:33
gary_poster(for another instance, and the whole multiple instance thing is presumably the whole point)19:34
abentleygary_poster: I don't understand the question.19:34
gary_posteryeah I think I just realized how obvious the answer to my confusion was19:34
gary_posteryou can have multiple class instances, each pointing to the same file.  In order to manage threads and processes and so on, bzr gives locks to its files.  When I tried to unlock the instance, the error message was not "there is no lock" but "the lock over there isn't mine"19:36
gary_posterthat was the obvious bit, yeah, abentley?19:36
abentleygary_poster: bzrlib isn't really built with threading in mind.  The read-locking enables caching.  The write-locking pysically prevents other bzrlib clients from making changes.19:39
gary_posterabentley, ack19:39
abentleygary_poster: The error message was "I'm not locked", without saying anything what other objects may or may not be locked.19:40
gary_posterack19:40
gary_posterabentley, well...let me make sure I am on the right track here.  if I have branch file F, and bzrlib branch instance A of F, and bzrlib branch instance B of F, and A has a lock, if I tried to unlock B, it would say "I'm not locked."  That's what you mean here, yes?19:42
abentleygary_poster: right.19:42
gary_postercool19:42
gary_posterabentley, the bug is within bzrlib, or we aren't using it correctly somehow.  We never get the repo pack to unlock it ourselves, and bzrlib doesn't do it because the code path apparently expects "fallback.unlock()" (whatever that is) will do it, but that is not around for us.  Here are the details: http://pastebin.ubuntu.com/675505/20:03
gary_posters/repo pack/repo back/20:04
lifelesscr3: bug 79927120:04
_mup_Bug #799271: cache entries get corrupted and lead to hard to diagnose failures <launchpadlib :Triaged> < https://launchpad.net/bugs/799271 >20:04
abentleygary_poster: Okay, it looks like a bzrlib bug.20:06
LPCIBotYippie, build fixed!20:06
LPCIBotProject devel build #1,002: FIXED in 4 hr 10 min: https://lpci.wedontsleep.org/job/devel/1002/20:06
abentleygary_poster: I think the lock_read must not happen until we are sure that we'll add it as a fallback repository.20:07
gary_posterabentley, ok, that makes sense.  Let me see if that works...20:08
abentleygary_poster: or else we need to manually unlock if we we're exiting without adding it.20:08
gary_posterright20:08
lifelesscr3: https://dev.launchpad.net/ArchitectureGuide/ServicesAnalysis20:10
gary_posterabentley, I don't know how much of an indication of correctness this is, but ./bin/test -vvc lp.codehosting.puller.tests.test_worker passes (and without the locked file complaint) with the reordering you suggested.  I'm inclined to branch bzr and make the change, but I'll probably need some serious help with a test.  But you agree that I should make a bug, work up a full branch for an MP, and make an egg for LP, yes?20:14
gary_posterand I'll try for the test with help first :-)20:15
gary_posterthough maybe hints on what tests to run would be good--I saw that the bzr test suite is 3.5 hours now20:15
gary_postermm, I saw your faultline plugin; that might help20:15
abentleygary_poster: True.20:15
abentleygary_poster: Yes.  For bzr itself, faulline adds an "--auto" flag that will automatically determine the tests to run.20:17
abentleygary_poster: IOW, "bzr selftest --auto" is your friend.20:17
gary_posterok cool, abentley.  So...in order to get faultline to trigger I just need to add a comment to where I intend to make the change?20:18
gary_posterthen I can look at those tests, try to figure out what to write new, and go from there20:18
abentleygary_poster: You can do it that way, or you can just specify the file.20:19
gary_posteroh ok20:19
=== bac changed the topic of #launchpad-dev to: #launchpad-dev ist: https://dev.launchpad.net/ | On call reviewer: - | Critical bugs: 237 - 0:[#######=]:256
sinzuijcsackett, do you have a few minutes to mumble?20:56
=== matsubara is now known as matsubara-afk
gary_posterabentley, had trouble with faultline fwiw. the --auto hack uses FaultFinder.from_tree, while the trunk has FaultFinde.from_trees. Simply fixing the name is insufficient.21:31
gary_poster  File "/home/gary/.bazaar/plugins/faultline/faultline.py", line 250, in run21:31
gary_poster    finder = FaultFinder.from_trees(target.basis(), target,21:32
gary_posterAttributeError: 'WorkingTree6' object has no attribute 'basis'21:32
gary_posterbzr fault-line works fine21:32
abentleygary_poster: sorry 'bout that.22:25
gary_posterabentley, no apology needed, just telling you. you want me to file a bug?22:27
jeblairi have an launchpad openid sso problem:22:38
jeblairwhen lp:~gandelman-a logs into my site, he shows up with the local_id https://login.launchpad.net/+id/QAxGXJy22:39
jeblairbut his account page, https://launchpad.net/~gandelman-a22:39
jeblairsays his local_id should be https://login.launchpad.net/+id/KeeKF8722:39
jeblairand i can't work backwards from QAxGXJy to find out what account it's for.22:39
jeblairwhy would it show up as something different, and how can i verify his identity?22:40

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