wgrant | abentley: https://code.launchpad.net/~abentley/launchpad/duplicate-msgid/+merge/62697 seems a bit heavy-handed. | 00:21 |
---|---|---|
wgrant | abentley: I can understand skipping duplicate messages to the same place... but not to all of Launchpad. | 00:22 |
wgrant | abentley: (that includes mailing lists, so you can no longer send an email both to a bug and a mailing list) | 00:22 |
lifeless | huh | 00:23 |
lifeless | the preview diff is empty :( | 00:23 |
wgrant | r13139 | 00:23 |
lifeless | hmm | 00:28 |
lifeless | I agree | 00:28 |
lifeless | duplicate message ids are normal across the system | 00:28 |
lifeless | only abnormal in one context - same list, or same bug etc | 00:29 |
wgrant | Exactly. | 00:29 |
wgrant | Shall I roll it back? | 00:29 |
lifeless | its 7:30 pm for Aaron | 00:29 |
lifeless | yes, I think it needs rollback | 00:29 |
lifeless | we can't deploy with it | 00:29 |
lifeless | but | 00:30 |
lifeless | lets check just a little more | 00:30 |
wgrant | Sure. | 00:30 |
lifeless | so the error encountered is a duplicate msgid on one bug | 00:31 |
lifeless | when the notification for it is being raised | 00:31 |
wgrant | Well, adding the duplicate message results in a DB exception. | 00:31 |
lifeless | bug 595166 | 00:31 |
_mup_ | Bug #595166: IntegrityError raised filing a bug using the email interface <easy> <email> <lp-bugs> <oops> <Launchpad itself:In Progress by abentley> < https://launchpad.net/bugs/595166 > | 00:32 |
wgrant | That's the one. | 00:32 |
lifeless | its raised when *notifying* tha the second message was added | 00:32 |
wgrant | Only because that's when the flush occurs. | 00:32 |
wgrant | Oh. | 00:32 |
lifeless | no, *really* when notifying | 00:33 |
wgrant | That's not the OOPS I"ve seen before. | 00:33 |
wgrant | The one I saw violated bugmessage__bug__message__key | 00:33 |
lifeless | thats on a link to message | 00:33 |
lifeless | not to two messages with the same msgid | 00:33 |
wgrant | Hmm? | 00:34 |
lifeless | OTOH so is the notification one | 00:34 |
wgrant | Two emails with same msgid and same content => one Message row | 00:34 |
lifeless | sure | 00:34 |
lifeless | this check isn't complete though | 00:34 |
lifeless | which is the other issue | 00:34 |
lifeless | aieee | 00:38 |
lifeless | other broken code | 00:38 |
lifeless | for email_addr in addresses: | 00:38 |
wgrant | Oh? | 00:38 |
lifeless | discards all but the last handler found | 00:38 |
wgrant | Heh | 00:38 |
lifeless | see the end of handle_one_mail | 00:38 |
lifeless | looks like using cc: can make our mail handling do some interesting and odd stuff | 00:39 |
lifeless | anyhoo | 00:39 |
lifeless | *blinkers* | 00:39 |
wgrant | Why would it be using To or Cc? | 00:39 |
wgrant | It should be using X-Launchpad-To | 00:40 |
lifeless | shoo. Go read. | 00:40 |
wgrant | Which is the envelope sender. | 00:40 |
lifeless | thou shalt be blind. And don't say I didn't warn thee. | 00:40 |
wgrant | So, yes, it uses X-Launchpad-To unless it's not present. | 00:40 |
wgrant | Not that bad. | 00:40 |
lifeless | well | 00:41 |
lifeless | we've some funky in our mail pipeline and we haven't identified it | 00:41 |
wgrant | Well, we fixed some of it two weeks ago. | 00:41 |
lifeless | ok please rollback | 00:54 |
lifeless | I have written up a hopefully helpful explanation for abentley | 00:54 |
lifeless | if you've other or better suggestions for how to tackle it, please say so | 00:55 |
wgrant | lifeless: Done, thanks/ | 00:59 |
lifeless | thank you | 01:01 |
LPCIBot | Project windmill-db-devel build #347: STILL FAILING in 1 hr 5 min: https://lpci.wedontsleep.org/job/windmill-db-devel/347/ | 01:14 |
wgrant | lifeless: The security hole is this: using a crafted or predicted msgid an attacker can cause Launchpad to generate a link to a mail that was sent to a private bug or mailing list when they have no such permission. | 01:50 |
wgrant | lifeless: I thought so too. | 01:50 |
wgrant | But it's not the case. | 01:50 |
wgrant | I investigated when I looked at trying to fix this bug a few weeks back. | 01:50 |
wgrant | It grabs all the Messages with the right Message-ID, and compares the content. | 01:51 |
wgrant | You can possibly obtain attachments if you know all the textual content, I guess. | 01:51 |
=== Ursinha-afk is now known as Ursinha | ||
lifeless | wgrant: fromMessage is fine | 01:52 |
lifeless | wgrant: aarons patch wasn't | 01:52 |
wgrant | lifeless: I don't see a new security bug. The returned message isn't used for anything. It just returns None to exit the handler, right? | 01:55 |
lifeless | wgrant: if the patch were changed to call the handlers using the result of messageset.get(rfc822id), it would open a security hole. | 01:57 |
wgrant | lifeless: Yes. | 01:57 |
lifeless | (not to mention still crashing in the same way) | 01:57 |
lifeless | wgrant: thats what I meant. | 01:57 |
lifeless | the usage of messageset.get(rfc822id) is not sufficient to determine 'same email' nor 'can see the email' | 01:58 |
wgrant | Ah, it helps if I read your entire reply. | 01:59 |
lifeless | *snort* | 01:59 |
wgrant | It was long, and my initial skim revealed a statement that I knew to be false! | 02:00 |
lifeless | feel free to reply and editorialise | 02:00 |
LPCIBot | Project windmill-devel build #155: STILL FAILING in 1 hr 10 min: https://lpci.wedontsleep.org/job/windmill-devel/155/ | 02:24 |
poolie | hi all | 02:28 |
lifeless | hi poolie | 02:31 |
lifeless | poolie: random question for you | 02:31 |
lifeless | if the lp bzr+ssh/sftp codehosting project were a separate tree, do you think your team would do anything interesting with it ? | 02:32 |
spiv | lifeless: hmm. Occasionally users ask about how to run a bzr server with some access control and/or authentication that isn't easily satisfied by using authorized_keys directives and filesystem permissions | 02:37 |
spiv | lifeless: so I guess having a less intimidating tree to extract that from, or at least learn from, might be helpful to someone. | 02:38 |
poolie | hi lifeless | 02:39 |
lifeless | spiv: tim has extracted the code but adapted it to a uni hosting solution | 02:39 |
poolie | well | 02:39 |
lifeless | so one of the candidate services - and I think a low hanging fruit - is one that still talks xmlrpc | 02:39 |
poolie | you know there was john's forking lp server project | 02:39 |
poolie | that would probably have needed to touch only that code | 02:39 |
poolie | and landing it has been pretty hard | 02:39 |
poolie | partly just because of bugs that appeared under heavy load; and those would have needed to be solved anyhow | 02:40 |
lifeless | right | 02:40 |
poolie | but, i think it would certainly have made it easier | 02:40 |
lifeless | I was going to say | 02:40 |
poolie | for instance easier to run up an ec2 instance and hammer it | 02:40 |
lifeless | poolie: really? | 02:40 |
lifeless | 'ec2 demo'; wait; hammer it. | 02:40 |
poolie | hm | 02:40 |
poolie | i wonder if jam tried that | 02:41 |
poolie | perhaps not actually any easier | 02:41 |
lifeless | spivs comment is more interesting :) | 02:41 |
poolie | anyhow i guess there are two questions here | 02:41 |
lifeless | the friction-to-change-in-lp aspect is well covered I think | 02:41 |
poolie | :-P | 02:41 |
lifeless | I'm curious about other interesting things | 02:41 |
poolie | i don't think this would really directly satisfy those users | 02:42 |
lifeless | like - adopt it for bzr's on server (make some of the policies pluggable, for instance) | 02:42 |
poolie | it might be a step towards having a common codebase | 02:42 |
lifeless | *own* | 02:42 |
poolie | hm, there is an _apparent_ contradiction here with wanting to make codebrowse more folded into launcphad | 02:43 |
lifeless | how so ? | 02:43 |
lifeless | actually | 02:43 |
poolie | at any rate there is a kind of precedent there for having one program that is used both by lp and externally | 02:43 |
lifeless | contractors here | 02:43 |
lifeless | I will be back in a bit | 02:43 |
lifeless | ah no | 02:43 |
lifeless | false alarum | 02:43 |
poolie | a few dimensions: | 02:45 |
poolie | - would this make it easier to make changes on codehosting in lp.net | 02:45 |
poolie | - are we actually likely to want to make any changes to it | 02:45 |
poolie | - would it make it easier to reuse externally | 02:45 |
lifeless | so cool interesting things is actually what I wanted to ask about :) | 02:47 |
lifeless | you could say no to all your three things there and still do something cool or interesting with it | 02:47 |
lifeless | I merely mean to encourage out-of-box stuff | 02:48 |
poolie | it could well do | 02:48 |
poolie | hm | 02:48 |
poolie | could well do | 02:51 |
poolie | i may be inside the box but it seems like they would still be gated by needing to actually get run somewhere | 02:52 |
poolie | either deployed on lp or run by other people | 02:52 |
lifeless | sure | 02:53 |
lifeless | perhaps saying to to /all 3/ isn't plausible :) | 02:53 |
poolie | at the moment i feel those 3 dimensions all get a weak yes at the moment | 02:54 |
poolie | i'm trying to think of things that would make sense to do in there but not in standalone bzr serve | 02:54 |
poolie | perhaps structured audit logs or notifications? | 02:54 |
lifeless | it implements ssh | 02:58 |
lifeless | so user management | 02:58 |
lifeless | multiplexing onto one account | 02:58 |
poolie | mm | 02:59 |
poolie | oh, easy deployment on windows? | 02:59 |
poolie | fsvo easy :) assuming you have to install twisted and everything | 02:59 |
lifeless | brb | 02:59 |
poolie | it would be an interesting case where you'd like to provide a fake/simple implementation of the other side of the services it uses | 03:00 |
poolie | the registry type things read by xmlrpc | 03:00 |
lifeless | yes | 03:25 |
lifeless | wow | 04:12 |
lifeless | only 2 failures | 04:12 |
wgrant | lifeless: On? | 04:18 |
lifeless | mailed you for your edification | 04:22 |
wgrant | Ah, that bug. | 04:23 |
lifeless | hmm | 04:23 |
lifeless | person.join(team) and team.addMember are asymmetric | 04:23 |
lifeless | I suspect this will cause issues | 04:23 |
lifeless | however | 04:24 |
lifeless | I shall close my eyes and go bravely forward. | 04:24 |
lifeless | (specifically team.join doesn't honour admin or owner rights) | 04:25 |
lifeless | it prefilters, wrongly | 04:25 |
lifeless | hah | 04:28 |
lifeless | it goes deeper though | 04:28 |
lifeless | getDirectAdministrators includes the owner | 04:28 |
lifeless | I'll leave that for now | 04:28 |
wgrant | The bug says that. | 04:28 |
lifeless | bah so it does | 04:31 |
lifeless | actually | 04:33 |
lifeless | I'm going to exclude that | 04:33 |
lifeless | there is a (reasonable) argument that owner implies admin | 04:34 |
lifeless | (or that our admin stuff is not granular enough) | 04:34 |
lifeless | mmm, but then it might be confusing. | 04:34 |
lifeless | it would be odd for an owner to have to join the team to rename it or change its metadata | 04:35 |
lifeless | so - excluding admin for now | 04:35 |
lifeless | why does the sample data have someone called 'dumper' ? >< | 04:48 |
wgrant | Same reason as mark is there, I guess. | 04:49 |
wgrant | Renamed to avoid pings. | 04:49 |
lifeless | ah | 04:49 |
lifeless | wgrant: do you have any ideas about the first failure there ? | 04:56 |
lifeless | its got me a little flummoxed | 04:56 |
lifeless | mark has a row for membership in ~admins | 05:00 |
lifeless | hah | 05:02 |
lifeless | I wonder if we have naffed sample data | 05:02 |
lifeless | mark.inTeam(getUtility(ILaunchpadCelebrities).admin) | 05:02 |
lifeless | False | 05:02 |
LPCIBot | Project windmill-db-devel build #348: STILL FAILING in 1 hr 5 min: https://lpci.wedontsleep.org/job/windmill-db-devel/348/ | 05:03 |
wgrant | lifeless: Hah. Probably. | 05:13 |
wgrant | lifeless: There's a script for that. | 05:13 |
lifeless | its more subtle than that | 05:19 |
lifeless | can_edit_team is returning False | 05:19 |
lifeless | also its checking the way-bong side of the equation but thats a different discussion | 05:20 |
wgrant | Hm, TP seems consistent. | 05:20 |
wgrant | :( | 05:20 |
lifeless | eah | 05:23 |
lifeless | s/^/y | 05:24 |
lifeless | ok its true at the start | 05:29 |
lifeless | something in this test script corrupts it | 05:29 |
lifeless | bsearch time | 05:30 |
lifeless | and looks like we manually expire mark from admins | 05:31 |
wgrant | Yay | 05:31 |
lifeless | line 612 | 05:31 |
lifeless | this test was only working because mark owns ~admins in the sample data | 05:32 |
wgrant | Awesome. | 05:32 |
lifeless | which is what I'm changing | 05:33 |
lifeless | ok now its just weird | 05:37 |
lifeless | admin_person *is* an admin | 05:37 |
lifeless | but its still throwing a security proxy error | 05:37 |
wgrant | inTeam cache busted? | 05:42 |
lifeless | I tried disabling that | 05:42 |
lifeless | its not reach inTeam | 05:42 |
lifeless | so a cached security assertion or something | 05:42 |
wallyworld_ | lifeless: is there a pattern we use to bulk load (eager fetch) fields of type CollectionField? rather than just single object references | 05:54 |
lifeless | yes, see lp.services.database.bulk.load_referenced | 05:55 |
wallyworld_ | thanks | 05:55 |
wallyworld_ | lifeless: you mean load_referencing? i'm using that and it's not preventing db hits | 05:57 |
wgrant | You need to make it a cachedproperty. | 05:57 |
lifeless | wallyworld_: that gets the data, it won't seed it for traversals. | 05:58 |
wallyworld_ | bugger | 05:58 |
wallyworld_ | it's not worht making it a cachedproperty since the field is only referenced once for each object | 05:59 |
wallyworld_ | i guess there's no way to bulk load *and* seed the traversals? | 05:59 |
lifeless | why do you say its not worth it ? | 06:01 |
lifeless | also which types are we talking about ? | 06:01 |
lifeless | wgrant: >< its still using 'mark' for some -bizarre- reason | 06:02 |
* lifeless tries to figure it out | 06:02 | |
wallyworld_ | lifeless: there's a list of 6 people. we display irc nick. we only have to access the irc nic collection field once per rendering per person | 06:04 |
wallyworld_ | but that does one query per person | 06:04 |
lifeless | right, you want a cached property. | 06:04 |
lifeless | totally appropriate | 06:04 |
lifeless | see the other use of load_referencing | 06:04 |
wallyworld_ | in this case, the irc nic is only defined as a class field of type SQLMultipleJoin. so i will need to introduce a new property? | 06:06 |
lifeless | yes | 06:06 |
lifeless | you need to move the join attribute to a private attribute | 06:07 |
wallyworld_ | ok | 06:07 |
lifeless | add a cached property with the same name as the current join attribute | 06:08 |
lifeless | seed it appropriately and deal with fallout | 06:08 |
wgrant | Do you need the join attribute? | 06:08 |
lifeless | well, perhaps not. | 06:09 |
wgrant | Just Stormify it. | 06:09 |
wgrant | In the cachedproperty. | 06:09 |
wgrant | Return a list of a Stormified query. | 06:09 |
lifeless | wgrant: Reference is storm :P | 06:09 |
wgrant | Less SQLObject, better for the world :) | 06:09 |
wgrant | SQLMultipleJoin is not. | 06:09 |
lifeless | true | 06:09 |
lifeless | but stormify != remove join attribute | 06:10 |
lifeless | anyhow | 06:10 |
lifeless | wtf | 06:10 |
lifeless | pasting you a snippet | 06:10 |
wgrant | k, I am intrigued. | 06:10 |
wallyworld_ | also - Person.preferredemail is a cachedproperty. but it hits the database once per person cause it does a query inside the property getter. and no luck so far seeding the data | 06:10 |
wgrant | lifeless: Hm? I meant create a Stormified query. | 06:10 |
wgrant | Not Stormify the class. | 06:10 |
wgrant | wallyworld_: Which name are you seeding? | 06:10 |
lifeless | wgrant: yes, you could also just use a storm Reference directly. | 06:10 |
wgrant | ReferenceSet, possibly, yes. | 06:11 |
wgrant | Hmm. | 06:11 |
wgrant | How is admin_person set there? | 06:11 |
wallyworld_ | perhaps i'm not doing the seeding correctly | 06:11 |
wallyworld_ | bulk.load_referencing(EmailAddress, persons, ['personID']) | 06:11 |
lifeless | wgrant: >>> admin_person = personset.getByEmail(ADMIN_EMAIL) | 06:11 |
lifeless | wallyworld_: use PersonSet.getPrecachedPersonsByIds | 06:11 |
wallyworld_ | it does the correct sql from what i can see, but.... | 06:11 |
lifeless | wallyworld_: and listify its output | 06:12 |
wallyworld_ | right. will take a look. thanks | 06:12 |
lifeless | wallyworld_: *always* use that when dealing with persons | 06:12 |
lifeless | wallyworld_: also change the vocab to just return the Person ids | 06:12 |
wgrant | lifeless: Shouldn't that always be name16? | 06:12 |
lifeless | wgrant: yes. | 06:12 |
lifeless | wgrant: and it is! | 06:12 |
wgrant | So why is the test saying it should be something else? | 06:12 |
lifeless | exactly! | 06:13 |
wallyworld_ | lifeless: so this will need to be done across the board for all person related vocabs | 06:13 |
lifeless | wallyworld_: one query at a time | 06:13 |
wgrant | Welcome to massive layering violations :) | 06:13 |
wallyworld_ | np, just wondering | 06:13 |
wallyworld_ | i guess the vocab stuff predated the getPrecachedPersons... stuff | 06:14 |
lifeless | yes | 06:14 |
lifeless | until 11 months ago we liked to requery everything | 06:14 |
wallyworld_ | right. | 06:15 |
wallyworld_ | context = makes more sense | 06:16 |
lifeless | can has review? https://code.launchpad.net/~lifeless/launchpad/bug-227494/+merge/62943 | 06:28 |
wgrant | lifeless: Have you checked the teams that this will affect? | 06:31 |
wgrant | They were mostly Ubuntu teams when I last looked. | 06:31 |
lifeless | ~admins :) | 06:31 |
lifeless | no I haven't | 06:32 |
poolie | lifeless: putting a commit message on my restfulclient mp didn't cause it to land | 06:34 |
lifeless | 1300 rows | 06:35 |
lifeless | poolie: hmm, need to ask someone that knows. benji or gary come to mind. | 06:35 |
lifeless | poolie: unless README says something useful | 06:35 |
wgrant | "cause it to land"? | 06:35 |
wgrant | Landings don't happen automatically. | 06:35 |
poolie | i guess what i really want to ask is: how is the trunk of restfulclient maintained | 06:36 |
poolie | by pqm, tarmac, manually, etc | 06:36 |
poolie | i could mail them | 06:36 |
lifeless | wgrant: some subprojects use tarmac | 06:36 |
wgrant | lazr.restful is manual. | 06:36 |
wgrant | Not sure about restfulclient. | 06:36 |
wgrant | lifeless: Do they? | 06:37 |
poolie | i'll subscribe benji | 06:37 |
poolie | thanks | 06:37 |
wgrant | lifeless: person.merged IS NOT NULL | 06:37 |
wgrant | Er, IS NULL | 06:37 |
wgrant | Cuts it down to 500ish. | 06:37 |
lifeless | wgrant: 471 | 06:37 |
lifeless | wgrant: already done that | 06:37 |
lifeless | wgrant: some are truely noddy - https://launchpad.net/~ubuntu-jewish | 06:38 |
wgrant | lifeless: You're calling *that* noddy? | 06:38 |
wgrant | There are far worse :) | 06:38 |
wgrant | Far, far worse. | 06:38 |
lifeless | wgrant: I am - it has 1 proposed member, and the owner has left the team. | 06:38 |
lifeless | wgrant: I wasn't saying anything about the name or intent of the team. | 06:38 |
wgrant | I know. | 06:39 |
wgrant | But there are the teams which invite every team. | 06:39 |
wgrant | And have no members. | 06:39 |
lifeless | yes | 06:39 |
lifeless | affected by this ? | 06:39 |
wgrant | Like the one that showed up last week. | 06:39 |
wgrant | Invited dozens of teams. | 06:39 |
wgrant | Owner had left it. | 06:39 |
wgrant | Awesome. | 06:39 |
lifeless | win | 06:39 |
lifeless | anyhow | 06:39 |
lifeless | so, I think we want to do this | 06:39 |
wgrant | And then some of the invited teams had bad admin settings, so randoms approved them, and the real admins couldn't leave :( | 06:40 |
wgrant | Yes. | 06:40 |
wgrant | I think so. | 06:40 |
lifeless | I will happily blog before it goes live | 06:40 |
lifeless | its arguably exploitable today | 06:40 |
lifeless | (find something that checks one way but not the other and leverage it) | 06:41 |
wgrant | Yeah | 06:41 |
lifeless | poolie: it should still be approved ;) | 07:00 |
lifeless | poolie: I just meant ask benji about landing mechanisms | 07:00 |
poolie | ffs "ConfigParser.NoOptionError: No option 'consumer_key' in section: '1'" _again_ | 07:02 |
poolie | do you ever see this? | 07:02 |
poolie | should we subscribe some lp developer team to loggerhead reviews? | 07:10 |
poolie | at the moment they seem to go by default to.. beuno and ~bzr or something | 07:11 |
lifeless | loggerhead-reviewers is the reviewer team | 07:12 |
lifeless | https://launchpad.net/~loggerhead-reviewers/+members | 07:12 |
lifeless | so they already are | 07:12 |
poolie | oh, ok | 07:12 |
poolie | i must have implicitly claimed it | 07:12 |
poolie | nm then | 07:13 |
LPCIBot | Project windmill-db-devel build #349: STILL FAILING in 1 hr 6 min: https://lpci.wedontsleep.org/job/windmill-db-devel/349/ | 07:16 |
=== almaisan-away is now known as al-maisan | ||
=== al-maisan is now known as almaisan-away | ||
lifeless | wgrant: follow up on https://code.launchpad.net/~lifeless/launchpad/bug-227494/+merge/62943 ? | 07:47 |
wgrant | lifeless: You are arbitrarily changing the user to an admin half-way through because the owner has no privs. | 07:49 |
wgrant | That may be invalidating subsequent tests. | 07:49 |
wgrant | Even if it isn't, it's rather confusing to change it partially globally when only that one block needs it. | 07:50 |
lifeless | wgrant: have you looked through that doctest ? | 07:50 |
lifeless | hint: it does this a lot already | 07:50 |
wgrant | It's a doctest. No. | 07:50 |
lifeless | and the previous user was one it thought was an admin. | 07:50 |
wgrant | Ah, I see. | 07:50 |
wgrant | OK. | 07:50 |
wgrant | An admin, but not an Admin. | 07:50 |
wgrant | Not an ~admin, sorry. | 07:50 |
lifeless | yes, a ~admin | 07:50 |
wgrant | How did it stop being an admin? | 07:51 |
lifeless | because it was mark | 07:51 |
wgrant | Because it was the owner of ~admins? | 07:51 |
lifeless | yes | 07:51 |
wgrant | But the test removed that membership? | 07:51 |
lifeless | yes | 07:51 |
wgrant | ahhhhhhhh | 07:51 |
wgrant | Carry on, then. | 07:51 |
lifeless | it was BROKEN | 07:51 |
wgrant | Preferably beating that test to death on the way. | 07:51 |
lifeless | now I just need a reviewer. | 07:53 |
lifeless | Perhaps we should graduate you now | 07:53 |
wgrant | Hi StevenK. | 07:53 |
wgrant | Heh | 07:53 |
wgrant | Possibly. | 07:53 |
lifeless | I have been waiting for you to consistently look below the surface on non-soyuz code | 07:53 |
lifeless | which you have been improving on | 07:54 |
lifeless | I don't recall finding things you missed recently other than the extraordinarily messy gpghandler stuff, which confused everyone. | 07:54 |
lifeless | so, I think graduation is in order | 07:55 |
wgrant | Yeah, the gpghandler example is bad, but I don't think anyone non-Twisted and non-you would have caught that either.' | 07:56 |
wgrant | Since most people don't have much idea of Twisted :( | 07:56 |
lifeless | facepalm | 07:58 |
* lifeless sobs | 07:58 | |
wgrant | ? | 07:58 |
wgrant | The other test? | 07:58 |
spm | wgrant: are you being mean to lifeless again??? | 07:58 |
lifeless | https://code.launchpad.net/~xaav/loggerhead/export-tarball/+merge/62941 | 07:58 |
lifeless | copy and paste from bzrlib | 07:58 |
lifeless | with mild tweaks | 07:58 |
wgrant | Heh | 07:59 |
wgrant | lifeless: So, am I graduating? | 07:59 |
mrevell | Good morning | 07:59 |
lifeless | wgrant: yes, I am mailing -dev | 08:00 |
wgrant | lifeless: Thanks! | 08:00 |
StevenK | wgrant: Grats! | 08:00 |
wgrant | return dumps({ | 08:03 |
wgrant | 'row_id': 'tasksummary%s' % self.context.id, | 08:03 |
wgrant | 'bugtask_path': '/'.join( | 08:03 |
wgrant | [''] + canonical_url(self.context).split('/')[3:]), | 08:03 |
stub | lifeless: BugSummary.viewed_by is painful because of indirect subscriptions. | 08:05 |
lifeless | stub: they don't grant visibility | 08:06 |
lifeless | stub: so shouldn't be counted and don't matter | 08:06 |
stub | So only direct subscribers can view private bugs? That should be fine then. | 08:07 |
lifeless | yes | 08:07 |
lifeless | where direct means 'in the team that is in the bugsubscription' | 08:07 |
stub | Do bug supervisors get bugsubscription records created when a bug becomes private? | 08:07 |
lifeless | yes | 08:08 |
lifeless | all indirect subs do (thats a bug) | 08:08 |
stub | Maybe it is now a feature ;) | 08:08 |
lifeless | well | 08:08 |
lifeless | the creation is fine | 08:08 |
lifeless | the fact that all random 'happen to have a structural subscription' get subscribed is the bug | 08:08 |
lifeless | wgrant: so, is that +1 on the branch then ? | 08:15 |
wgrant | lifeless: I rereviewed a couple of minutes ago. | 08:16 |
wgrant | So, yes. | 08:16 |
lifeless | the mail just came in | 08:17 |
adeuring | good morning | 09:13 |
lifeless | stub: are our fti indices bloated again ? | 09:21 |
lifeless | 94 / 42 Person:EntryResource:searchTasks | 09:21 |
lifeless | 70 / 24 Distribution:EntryResource:searchTasks | 09:21 |
lifeless | 45 / 12 Distribution:+bugs | 09:21 |
lifeless | top timeouts | 09:21 |
stub | lifeless: back at 70% bloat, yeah. | 09:22 |
stub | bug_fti I mean | 09:23 |
lifeless | >< | 09:23 |
* lifeless stabs bug heat | 09:23 | |
nigelb | Wait, so canonical employees don't automatically become reviewers? Wow, that's interesting | 09:24 |
StevenK | nigelb: It's a little more complicated than that, but not much. | 09:25 |
StevenK | But no, they don't. | 09:25 |
stub | lifeless: it is bloating between 1% and 2.5% per day looks like. It should be trivial to confirm this is bug heat calculation - just turn that script off for a day or two. | 09:25 |
nigelb | StevenK: But how open is the process to outsiders, like me, for instance | 09:25 |
lifeless | nigelb: quite open | 09:26 |
=== gmb changed the topic of #launchpad-dev to: Performance Tuesday! | https://dev.launchpad.net/ | On call reviewer: gmb | Critical bugs:208 - 0:[######=_]:256 | ||
lifeless | nigelb: the one thing you can't do is get to the point of approving other non-staff changes or actually landing changes | 09:26 |
gmb | allenap: Any objections to me marking https://code.launchpad.net/~allenap/launchpad/rabbit-fixture-cookie-file/+merge/62709 as Work In Progress to make it go away from my todo list? | 09:26 |
lifeless | nigelb: we require that all changes have *a* staff member involved. | 09:27 |
lifeless | nigelb: because of the way things deploy and the risks around data exposure | 09:27 |
nigelb | Ah, that explains that yes. | 09:27 |
allenap | gmb: None, done. | 09:27 |
gmb | allenap: Ta. | 09:27 |
nigelb | lifeless: I expect there's a lot of private data with the hidden emails which would be illegal for a non-staff member to access. | 09:28 |
gmb | poolie: Similarly, do you want https://code.launchpad.net/~mbp/launchpad/mail-scope/+merge/60281 reviewed now or should it wait until you've fixed the test failures? | 09:28 |
lifeless | bigjools: :( - bug 790535 | 09:30 |
bigjools | is that the bug where mup won't tell me what it is? :) | 09:30 |
lifeless | Distribution:+ppas timeouts | 09:34 |
lifeless | https://bugs.launchpad.net/launchpad/+bug/790535 | 09:34 |
poolie | gmb more review now would be good | 09:37 |
poolie | i doubt if the failure is deep | 09:37 |
gmb | poolie: Righto, I'll take a sken presently. | 09:37 |
StevenK | gmb: 'sken' ? | 09:38 |
gmb | StevenK: "Look". | 09:38 |
poolie | reading inference 101 | 09:38 |
poolie | ls | 09:38 |
StevenK | gmb: I figured as such, I was just wondering about its entomology. | 09:39 |
gmb | StevenK: It has nothing to do with insects. | 09:39 |
gmb | :) | 09:39 |
StevenK | Oh, arse. | 09:39 |
gmb | But it's Lancs / Yorks (possibly other northern places too) dialectic slang, AFAICT. | 09:39 |
gmb | I grew up with it, so I've no idea where it came from. | 09:39 |
gmb | StevenK: But if it helps, The Beatles probably said it. (Boom boom). | 09:40 |
gmb | It's only 9:41am and I'm being punny. What else will the day hold? | 09:41 |
nigelb | This channel wins for the most interesting conversations EVAR. | 09:43 |
gmb | I suspect that the barrier to entry for that competition is very, very low. | 09:43 |
nigelb | No, I'm in #ubuntu-offtopic, so its very high | 09:44 |
nigelb | I still need to fix a bug I introduced to LP, sigh. | 09:45 |
dpm | hi danilos, morning. Do you happen to remember where rosetta/deleted-templates (the location where we used to put templates we wanted out of the way) went after the unification of all lp applications into a single launchpad project? I already asked you a while ago and you found out, but I can't remember where it was and I can't find it in my logs | 09:49 |
dpm | or if anyone else can help ^ | 09:49 |
danilos | dpm, probably the 'null' project | 09:56 |
danilos | dpm, also, there's old-lp-translations that's just a deactivated and renamed 'rosetta' project, so that's what has deleted-templates stuff as well | 09:56 |
dpm | thanks danilos, I'll try both | 09:57 |
dpm | danilos, old-lp-translations/deleted-templates worked, thanks | 10:01 |
danilos | yw | 10:01 |
LPCIBot | Project windmill-devel build #156: STILL FAILING in 1 hr 8 min: https://lpci.wedontsleep.org/job/windmill-devel/156/ | 10:02 |
gmb | poolie: r=me | 10:13 |
=== almaisan-away is now known as al-maisan | ||
poolie | thanks gmb | 10:40 |
poolie | gmb: do you think you could pilot-in james's patch https://code.launchpad.net/~james-w/launchpad/more-matchers/+merge/32057 | 10:42 |
gmb | poolie: Sure thing. | 10:42 |
poolie | and perhaps some of the loggerhead patches | 10:42 |
poolie | james's should be trivial | 10:42 |
poolie | hooray :) | 10:43 |
gmb | poolie: I've never landed a loggerhead patch before; anything special I need to know? | 10:43 |
gmb | Or is it PQM all the way down? | 10:43 |
poolie | i don't think there is a pqm | 10:43 |
poolie | imbw | 10:43 |
poolie | i think it's just direct commits | 10:43 |
poolie | the hard thing will be getting to know the code enough to review it :/ | 10:43 |
poolie | oh, but jam is online, and he knows about it | 10:44 |
gmb | Ah, good. THat might be safer. | 10:44 |
poolie | but if you drive them that would be good | 11:10 |
poolie | some review or landing is better than none | 11:10 |
gmb | poolie: Sure. I'll take a look at them today. | 11:11 |
poolie | legend | 11:11 |
=== al-maisan is now known as almaisan-away | ||
lifeless | night all | 11:58 |
=== almaisan-away is now known as al-maisan | ||
LPCIBot | Project windmill-devel build #157: STILL FAILING in 1 hr 8 min: https://lpci.wedontsleep.org/job/windmill-devel/157/ | 12:21 |
henninge | Hi gmb! Could you have a look at this mp of mine, please? ;-) | 13:31 |
henninge | https://code.launchpad.net/~henninge/launchpad/bug-778129-person-picker/+merge/62894 | 13:31 |
gmb | henninge: Sure thing. | 13:31 |
gmb | henninge: r=me with comments | 13:43 |
henninge | gmb: thanks | 13:43 |
henninge | gmb: I copied the indention from another test case in the same file. I can fix both. | 13:44 |
gmb | henninge: Brilliant, thanks. | 13:44 |
henninge | gmb: is !=== also to be used when comparing to literal numbers? | 13:45 |
gmb | Oo. | 13:45 |
gmb | henninge: Good question. In that case, leave it. | 13:45 |
gmb | I'm not sure ( and if it works, don't fix it) | 13:46 |
gmb | But if you want to find out, that's fine by me :) | 13:46 |
gmb | Like I said, it's not worth blocking on. | 13:46 |
henninge | although Crockford acts like there is only === and !===, so it will probably just work. | 13:46 |
* henninge tries out. | 13:46 | |
=== matsubara-afk is now known as matsubara | ||
gmb | jam: Do you know what the situation is with https://code.launchpad.net/~malept/loggerhead/standalone-auth/+merge/18828? | 13:52 |
jam | not offhand | 13:52 |
gmb | Okay. | 13:52 |
gmb | I'll add a comment and put it to work in progress then to make it leave the review queue. | 13:52 |
deryck | henninge, ping for standup | 14:02 |
henninge | deryck: sorry | 14:05 |
deryck | henninge, http://pastebin.ubuntu.com/615334/ | 14:09 |
=== jam1 is now known as jam | ||
LPCIBot | Project windmill-db-devel build #350: STILL FAILING in 1 hr 6 min: https://lpci.wedontsleep.org/job/windmill-db-devel/350/ | 14:34 |
* gmb -> short break | 14:35 | |
flacoste | wgrant: congratulations for your reviewerhood! | 14:47 |
wgrant | flacoste: Thanks! | 14:47 |
nigelb | oooh, yeah. I saw that mail when I woke up. | 14:47 |
nigelb | Congrats wgrant! | 14:47 |
bigjools | damn, now we have to start being nice to him | 14:48 |
jcsackett | clear | 15:01 |
jtv | gmb: got a free slot on the review queue? https://code.launchpad.net/~jtv/launchpad/db-bug-790161/+merge/63002 | 16:07 |
gmb | jtv: Sure thing. | 16:07 |
jtv | Splenders. | 16:07 |
gmb | Tip-top. | 16:07 |
gmb | jtv: r=me | 16:52 |
jtv | thanks! | 16:52 |
gmb | np | 16:52 |
sinzui | gmb: is it too late for you to review https://code.launchpad.net/~sinzui/launchpad/display-name-with-id-0/+merge/63006 | 16:53 |
gmb | sinzui: Nope. I'll look presently. | 16:54 |
* deryck goes offline for lunch, back soon | 16:54 | |
=== beuno is now known as beuno-lunch | ||
=== matsubara is now known as matsubara-lunch | ||
gmb | sinzui: r=me | 17:29 |
=== gmb changed the topic of #launchpad-dev to: Performance Tuesday! | https://dev.launchpad.net/ | On call reviewer: - | Critical bugs:208 - 0:[######=_]:256 | ||
sinzui | thanks gmb | 17:33 |
=== al-maisan is now known as almaisan-away | ||
jcsackett | exit | 17:40 |
bigjools | You have running jobs | 17:51 |
sinzui | jcsackett: do you have time to talk? | 17:53 |
=== salgado is now known as salgado-lunch | ||
=== beuno-lunch is now known as beuno | ||
LPCIBot | Project windmill-devel build #158: STILL FAILING in 1 hr 9 min: https://lpci.wedontsleep.org/job/windmill-devel/158/ | 18:53 |
LPCIBot | Project db-devel build #601: FAILURE in 4 hr 40 min: https://lpci.wedontsleep.org/job/db-devel/601/ | 19:01 |
jcsackett | sinzui: i am available when you are. | 19:03 |
=== salgado-lunch is now known as salgado | ||
=== matsubara-lunch is now known as matsubara | ||
sinzui | jcsackett: I am available to talk now | 19:39 |
jcsackett | sinzui: cool. mumble or sip? | 19:39 |
sinzui | I am on mumble now | 19:39 |
* jcsackett goes to fire up mumble. | 19:39 | |
LPCIBot | Project windmill-db-devel build #351: STILL FAILING in 1 hr 4 min: https://lpci.wedontsleep.org/job/windmill-db-devel/351/ | 19:57 |
flacoste | wtf | 20:18 |
flacoste | what is this not_exported = TextLine(title="Not exported") | 20:19 |
flacoste | ? | 20:19 |
flacoste | in interfaces declaration in sourcepackage.py | 20:19 |
flacoste | ok | 20:22 |
flacoste | disregard that wtf | 20:22 |
flacoste | i was in a test file, not in sourcepacakge.py | 20:22 |
lifeless | moin | 20:25 |
LPCIBot | Project windmill-db-devel build #352: STILL FAILING in 41 min: https://lpci.wedontsleep.org/job/windmill-db-devel/352/ | 20:39 |
abentley | lifeless: can we chat about bug #595166? | 20:41 |
_mup_ | Bug #595166: IntegrityError raised filing a bug using the email interface <bad-commit-13139> <easy> <email> <lp-bugs> <oops> <qa-bad> <Launchpad itself:Fix Committed by abentley> < https://launchpad.net/bugs/595166 > | 20:41 |
lifeless | abentley: sure thing | 20:49 |
lifeless | abentley: just give me 5 minutes to sort some cats out | 20:50 |
abentley | lifeless: sure. | 20:50 |
lifeless | ok they seem happy for now | 20:55 |
lifeless | would you like voice ? | 20:55 |
abentley | lifeless: yes, please. Skype, I imagine? | 20:55 |
lifeless | yeah. .nz.win ;) | 20:56 |
lifeless | interestingly the canonical voip service works well | 20:56 |
lifeless | just mumble hates freedom :) | 20:56 |
=== almaisan-away is now known as al-maisan | ||
abentley | lifeless: btw, I would be curious to try canonical voip. I recently set it up on my phone. | 21:25 |
lifeless | abentley: nice | 21:27 |
lifeless | abentley: lets do that next time | 21:27 |
=== al-maisan is now known as almaisan-away | ||
flacoste | gary_poster: i'm testing object's permission, I would use check_permission, but I think you had another suggestion | 22:00 |
flacoste | check_permission coming from canonical.launchpad.webapp.authorization | 22:00 |
gary_poster | flacoste, I generally try to use canWrite and canRead (might have forgotten names) from zope.security | 22:01 |
gary_poster | on call | 22:01 |
flacoste | ack | 22:01 |
lifeless | walk the dinosaur? | 22:02 |
flacoste | lifeless: ? | 22:02 |
lifeless | flacoste: ;) referencing a song | 22:04 |
abentley | lifeless: care to do the review? https://code.launchpad.net/~abentley/launchpad/no-dedup/+merge/63044 | 22:07 |
lifeless | abentley: sure, done. | 22:11 |
abentley | lifeless: thanks. | 22:11 |
lifeless | I editorialised a little for future reference | 22:12 |
lifeless | I wonder if our mail handling doctests have something about duplication in them? | 22:12 |
abentley | lifeless: could be. test_messages didnt. | 22:12 |
abentley | lifeless: my new toy "fault line" didn't find strong correlations between changes to messages.py and changes to particular test files. | 22:14 |
lifeless | abentley: does it consider mainline commits only ? | 22:15 |
lifeless | abentley: I can imagine feature branches not having a high association but the mainline diffs having one | 22:15 |
abentley | lifeless: no, it only looks at revisions that modified the file. I"d like to change that, but I don't know how to do it efficiently. | 22:15 |
lifeless | you need the 'first mainline rev after the rev that modified the file' | 22:17 |
abentley | lifeless: Yes. | 22:17 |
lifeless | this is retrievable from merge_sorted revisions | 22:17 |
abentley | lifeless: isn't that a whole-graph operation? | 22:17 |
lifeless | abentley: yes, 4 seconds for me on lp | 22:18 |
lifeless | abentley: you'd do it once per run though, giving you an efficient data structure to answer the question for all the modified revs | 22:18 |
abentley | lifeless: Acceptable, given the whole operation takes ~20 seconds for me. | 22:19 |
abentley | lifeless: message.txt does fail. Thanks for the tip. | 22:20 |
lifeless | no worries | 22:20 |
lifeless | sinzui: hi | 22:37 |
lifeless | sinzui: got a few minutes? | 22:37 |
sinzui | I do | 22:37 |
lifeless | I had two questions for you | 22:37 |
lifeless | one simple, one a little complex (perhaps needs voice) | 22:37 |
lifeless | the simple one is with person/fmt:link-name-id | 22:37 |
lifeless | do we still want fmt:link at all ? | 22:37 |
lifeless | I was thinking we were going to change it everywhere | 22:38 |
lifeless | which would be a simpler patch - just change the existing formatter. | 22:38 |
sinzui | yes. It is correct for most cases such as tables and summaries | 22:38 |
lifeless | That confuses me a little but ok. | 22:38 |
sinzui | We have a specialised formatter to communicate the Lp id, but we never fully implemented | 22:38 |
sinzui | I intend to complete the implementation | 22:39 |
lifeless | the other question is about private public team membership interactions | 22:39 |
lifeless | if you can spare some time to talk about it - doesn't need to be now - I'd like to tease the issues apart. I suspect we agree. | 22:39 |
sinzui | lifeless: my sip is 7642 | 22:40 |
=== matsubara is now known as matsubara-afk | ||
LPCIBot | Project windmill-db-devel build #353: STILL FAILING in 1 hr 5 min: https://lpci.wedontsleep.org/job/windmill-db-devel/353/ | 23:34 |
LPCIBot | Yippie, build fixed! | 23:41 |
LPCIBot | Project db-devel build #602: FIXED in 4 hr 40 min: https://lpci.wedontsleep.org/job/db-devel/602/ | 23:41 |
lifeless | sinzui: I hope I captured things well in bug 405277 | 23:47 |
_mup_ | Bug #405277: Private teams are not able to join other teams (public or private) <disclosure> <lp-registry> <Launchpad itself:Triaged> < https://launchpad.net/bugs/405277 > | 23:47 |
lifeless | sinzui: it seems like 3 fairly contained changes to me. | 23:47 |
sinzui | lifeless: this looks very good. Thank you/ | 23:48 |
=== salgado is now known as salgado-afk | ||
lifeless | oh, I forgot the bit about 'and tell them the implications' | 23:56 |
lifeless | adding that in | 23:56 |
Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!