[00:37] <poolie> thanks for the reviews lifeless
[00:37] <poolie> will someone land my lazr.restful patch, or should i try?
[00:38] <lifeless> I think if you set a commit message tarmac will pick it up
[00:38] <poolie> wow
[00:38] <poolie> i will then
[00:38] <poolie> can i just say how satisfied i am that is fixed
[00:39] <poolie> i should have done it ages ago
[00:39] <poolie> i have seen that cryptic message so many times
[03:26] <lifeless> StevenK: you may have closed bug 117163 ?
[03:26] <_mup_> Bug #117163: Soyuz email generation should be part of the LP mailnotification module <email> <feature> <lp-soyuz> <soyuz-build> <soyuz-upload> <Launchpad itself:Triaged> < https://launchpad.net/bugs/117163 >
[03:27] <StevenK> lifeless: I have not, but I have made it easier to do so.
[03:30] <lifeless> hah!
[03:30] <lifeless> I now have a solid use case for team-subscription-muting: private bugs
[03:32] <StevenK> lifeless: I'm completly happy to self-review this, but I wanted your opinion if it's pointless or not (hopefully I have explained myself well enough in the MP description): https://code.launchpad.net/~stevenk/launchpad/silence-rf-get/+merge/62788
[03:33] <lifeless> StevenK: I saw it
[03:33] <lifeless> your logic is flawed
[03:33] <lifeless> but I'm happy with the change
[03:33] <lifeless> the warning was never about private branches
[03:34] <lifeless> its for community contributors that haven't run 'bzr launchpad-login' - they will get bzr whinging
[03:34] <lifeless> OTOH removing the crufty explanation is fine IMO
[03:34] <wgrant> lifeless: That's not a solid use case.
[03:35] <wgrant> lifeless: Conflation of notification and visibility is a bug.
[03:35] <lifeless> wgrant: not with a proper overhaul in progress :)
[03:35] <lifeless> wgrant: but till then ...
[03:35] <lifeless> wgrant: there is a bug launchpad-bugs is subscribed too that is private and on c-i-p
[03:35] <wgrant> Right, but it's a hacky use case.
[03:35] <wgrant> Not a solid one :)
[03:36] <lifeless> wgrant: even after privacy is overhauled
[03:36] <lifeless> wgrant: cross-organisational stuff may well want it
[03:36] <lifeless> wgrant: Having subscription *not* imply access would be weird.
[03:36] <lifeless> bug 187837 - still relevant?
[03:36] <_mup_> Bug #187837: ILinkData.sort_key should be removed once we stop using action menus <infrastructure> <lp-foundations> <tech-debt> <Launchpad itself:Triaged> < https://launchpad.net/bugs/187837 >
[03:37] <lifeless> wgrant: bug 185620 - perhaps fixed in your bugs-oops-crusade ?
[03:37] <_mup_> Bug #185620: DebBugs comment import doesn't handle invalid senders correctly <bugwatch> <lp-bugs> <Launchpad itself:Triaged> < https://launchpad.net/bugs/185620 >
[03:37] <lifeless> ditto 185613
[03:37] <wgrant> We are not planning to remove action menus, AFAICT.
[03:37] <wgrant> They have been minimised, but still exist...
[03:40] <lifeless> surely 182076 is fixed already,. SO MUCH CRUFT
[03:40] <wgrant> Bug #182076
[03:40] <_mup_> Bug #182076: launchpad-form.pt doesn't present widget errors clearly <css> <lp-web> <ui> <Launchpad itself:Triaged> < https://launchpad.net/bugs/182076 >
[03:40] <wgrant> Bug #185613
[03:40] <_mup_> Bug #185613: DebBugs comment import doesn't handle encoding errors correctly <bugwatch> <lp-bugs> <Launchpad itself:Triaged> < https://launchpad.net/bugs/185613 >
[03:40] <wgrant> Probably not.
[03:41] <lifeless> I'm trying to see if I can delete launchpad-bugs
[03:42] <wgrant> By removing non-security private bugs?
[03:42] <wgrant> And then seeing what's left over?
[03:42] <lifeless> repeat for branch subscriptions etc. Yes.
[03:46] <lifeless> also killing bugs like 173972 on the way
[03:47] <lifeless> wgrant: what about bug 225228 ?
[03:47] <_mup_> Bug #225228: checkwatches error handling needs refactoring <lp-bugs> <Launchpad itself:Triaged> < https://launchpad.net/bugs/225228 >
[03:49] <lifeless> we also shouldn't *have* security bugs on ~launchpad-bugs. *sigh*
[03:53] <wgrant> lifeless: Indeed, closed.
[03:53] <wgrant> lifeless: Isn't using direct subscriptions for visibility awesome? :)
[03:54] <lifeless> wgrant: what about bug 210901 ?
[03:54] <_mup_> Bug #210901: Passing strings through LaunchpadValidationError results in double-escaping. <lp-foundations> <tech-debt> <Launchpad itself:Triaged> < https://launchpad.net/bugs/210901 >
[03:56] <wgrant> lifeless: No idea.
[03:56] <wgrant> Well, the only thing that comes to mind is "fuck IE".
[03:56] <wgrant> But that's not much of an idea.
[03:56] <lifeless> hhhha
[03:56] <lifeless> how is ie related to that ?
[03:57] <lifeless> I wonder if folk would be unhappy if I just closed all these bugs.
[03:57] <wgrant> JavaScript can't be escaped sensibly, so our template system cannot be safe.
[03:58] <wgrant> In HTML, that is. And IE<9 don't support XHTML.
[04:01] <lifeless> mwhudson: bug 196345 - whats the /why/ ?
[04:02]  * mwhudson waits for mup
[04:02] <mwhudson> or is it private?
[04:02] <lifeless> private
[04:02] <lifeless> with a dead web link to a list archive whose web password I have no idea about
[04:02] <wgrant> I think we should close bug #220625.
[04:03] <lifeless> can you expand on why?
[04:03] <mwhudson> lifeless: trying :)
[04:03] <lifeless> mwhudson: that was to wgrant :P
[04:03] <mwhudson> lifeless: it's all about impersonation
[04:04] <lifeless> I probably want that
[04:04] <lifeless> is it private these days? if not, lets make it public and copy in the discussion ?
[04:04] <mwhudson> methods like createBranch clearly act on behalf of a user, and currently rather hack to achieve that
[04:05] <mwhudson> lifeless: can't see why it would be private at all now
[04:05]  * mwhudson publicizes
[04:05] <lifeless> mwhudson: done
[04:05] <wgrant> lifeless: There are much worse things that a buildd-manager bug can do.
[04:05] <mwhudson> heh
[04:05] <mwhudson> racing changes!
[04:05] <lifeless> mwhudson: can you add sensible content to it ?
[04:05] <lifeless> wgrant: right, but what about other folk on the machine, for instance.
[04:05] <lifeless> wgrant: or other services on the same machine going rogue
[04:05] <mwhudson> lifeless: let me consult my mail archives
[04:06] <lifeless> mwhudson: thanks!
[04:06] <wgrant> lifeless: There are far worse things that they can do too.
[04:06] <wgrant> lifeless: If we don't trust the machine, then we have major overarching design issues.
[04:06] <wgrant> Far beyond this bug.
[04:06] <lifeless> wgrant: I'm fine with closing it, or not. But I think you need to explain a little about why in this case.
[04:06] <lifeless> as its not a cosmetic test-refactoring bug :)
[04:09]  * mwhudson reads the thread again
[04:11] <mwhudson> ugh, this is all very confusing
[04:11] <mwhudson> and the use case from the time has disappeared
[04:11] <mwhudson> (it wasn't impersonation)
[04:12] <lifeless> feel free to extirpate it
[04:15] <lifeless> jtv - bug 237868
[04:15] <_mup_> Bug #237868: Contain non-ascii str objects in parsers and browser code <lp-translations> <tech-debt> <Launchpad itself:Triaged> < https://launchpad.net/bugs/237868 >
[04:15] <lifeless> jtv: is that done, or obsolete now?
[04:15] <lifeless> gmb: bug 237774
[04:15] <_mup_> Bug #237774: checkwatches doesn't update many SourceForge bug watches <bugwatch> <lp-bugs> <Launchpad itself:Triaged> < https://launchpad.net/bugs/237774 >
[04:15] <lifeless> gmb: please tell me that isn't still the case?
[04:15] <jtv> lifeless: it was never consciously done.  It was more a "we need to take a critical look at our code someday" thing than a "here's a change we need to make" bug.
[04:16] <lifeless> so, we're on storm today
[04:16] <lifeless> and I'm pretty sure it + our pg driver will barf at non-unicode strings
[04:17] <jtv> Plenty of test code will happily store non-unicode strings in object properties AFAIK
[04:18] <LPCIBot> Project db-devel build #594: FAILURE in 5 hr 37 min: https://lpci.wedontsleep.org/job/db-devel/594/
[04:18] <lifeless> sure, but if it does that to a db column we'll get a barf
[04:22] <mwhudson> lifeless: https://bugs.launchpad.net/launchpad/+bug/196345/comments/1
[04:22] <_mup_> Bug #196345: implement endpoint specific authentication for the private xml-rpc server <infrastructure> <lp-foundations> <tech-debt> <Launchpad itself:Triaged> < https://launchpad.net/bugs/196345 >
[04:25] <lifeless> mwhudson: thanks
[04:25] <lifeless> bug 196345
[04:25] <_mup_> Bug #196345: internal xmlrpc service requires impersonation to be handled per-method rather than systematically <infrastructure> <lp-foundations> <tech-debt> <Launchpad itself:Triaged> < https://launchpad.net/bugs/196345 >
[04:26] <mwhudson> haha
[04:26] <mwhudson> oh right, you just changed the title
[04:26] <lifeless> and copied your prosed into the description
[04:26] <lifeless> lock
[04:26] <lifeless> stock
[04:26] <lifeless> and barrel
[04:26] <mwhudson> i thought that was going to turn out to be another bug that i had reported
[04:27] <lifeless> wow
[04:27] <lifeless> https://launchpad.canonical.com/BugPageTwoZero
[04:28] <mwhudson> are you saying wow because the current bug page actually looks not entirely unlike that?
[04:29] <lifeless> mwhudson: there is a bug saying we should do that
[04:29] <lifeless> *still* open
[04:29] <lifeless> bug 227310
[04:29] <_mup_> Bug #227310: duplicate bug handling UI is awkward and confusing <lp-bugs> <Launchpad itself:Triaged> < https://launchpad.net/bugs/227310 >
[04:30] <lifeless> why is bug 300044 on sso ?
[04:31] <wgrant> Bug #300044
[04:32] <wgrant> lifeless: It's in the old SSO codebase.
[04:32] <wgrant> The rewrite uses the same project.
[04:32] <wgrant> It's Invalid.
[04:33] <lifeless> you sure ?
[04:33] <wgrant> Hmm.
[04:33] <wgrant> Retarget to Launchpad, publicise, retitle to suggest that it should be deleted.
[04:33] <wgrant> Since we still have those properties.
[04:33] <wgrant> Despite not being an OP any more.
[04:37] <wgrant> The last record in the table it checks is dated 2010-04-01, so it isn't being replicated back post-rewrite.
[04:37] <wgrant> So it can be removed.
[04:41] <wallyworld_> lifeless: i think storm has a bug in Union. it rejects perfectly valid sql if the 2 queries differ in their exact select expressions, even if the resulting columns are compatible. i can run the sql manually just fine. do you know if there's a reason for this limitation?
[04:41] <lifeless> wallyworld_: I don't, sorry.
[04:42] <lifeless> storm is very geared towards its ORM role
[04:42] <lifeless> which could explain it
[04:42] <wallyworld_> np. i'll see if i can come up with a reasonable work around
[04:42] <wgrant> wallyworld_: I suspect it's because it's then unclear how you would reference those columns.
[04:43] <wallyworld_> wgrant: one would use "as foo"
[04:44] <wallyworld_> storm should look at the alias and column type to figure out if everything is kosher and not just compare the exact select terms
[04:44] <wgrant> Right, but that would have to be explicitly done. It won't work by default.
[04:44] <wgrant> And given that Storm is Storm...
[04:45] <lifeless> bug 245543
[04:45] <_mup_> Bug #245543: Call sites that use SPR.createBuild() should really be using SPPH.createMissingBuilds() <lp-soyuz> <Launchpad itself:Triaged> < https://launchpad.net/bugs/245543 >
[04:46] <wallyworld_> \o/
[04:46]  * wallyworld_ has a new coffee grinder just arrived from italy. must immediately cease Storm work to try it out :-D
[04:46] <wgrant> lifeless: Lies.
[04:46] <wallyworld_> thumper: ^^^^^^^^ :-D
[04:47] <lifeless> wallyworld_: nice
[04:47] <lifeless> bug 172869
[04:47] <_mup_> Bug #172869: SoyuzScript needs more test coverage <lp-soyuz> <tech-debt> <trivial> <Launchpad itself:Triaged> < https://launchpad.net/bugs/172869 >
[04:47] <thumper> wallyworld_: nice
[04:48] <lifeless> faceplant. bug 158386
[04:48] <_mup_> Bug #158386: Close all low-level cursors <infrastructure> <lp-foundations> <tech-debt> <Launchpad itself:Triaged> < https://launchpad.net/bugs/158386 >
[04:54] <wgrant> zomg
[04:54] <wgrant> Linux 3.0-rc1
[04:54] <wgrant> The day has come.
[04:58] <lifeless> and unlike py3 its not a disaster
[05:01] <wgrant> Indeed.
[05:01] <wgrant> :(
[05:01] <wgrant> Well.
[05:01] <wgrant> No *more* of a disaster.
[05:02] <StevenK> If gina create builds, I will have to murder people.
[05:02] <wgrant> StevenK: It has to when importing binaries.
[05:02] <wgrant> (which it hasn't done since 2007)
[05:02] <wgrant> But the feature is still there, somewhere.
[05:02] <StevenK> Heh, and only once, I daresay.
[05:03] <wgrant> Twice!
[05:03] <wgrant> Once to import Ubuntu primary, and again to import -commercial (brokenly)
[05:03] <jtv> wgrant: mind if I restart the df app server?
[05:03] <wgrant> jtv: Not at all.
[05:03] <jtv> Letter-for-letter identical to what StevenK said.  :)  Thanks.
[05:04] <StevenK> wgrant: Have we fixed that broken -commercial import?
[05:04] <wgrant> StevenK: No.
[05:04] <StevenK> Pity.
[05:05] <StevenK> Hm, not many callsites of SPR.createBuild()
[05:05] <wgrant> Does archiveuploader still do it?
[05:05] <wgrant> I forget if we removed mixed uploads.
[05:05] <wgrant> IIRC they were too entangled with tests to kill.
[05:06] <StevenK> Yes, nascentupload uses it
[05:06] <StevenK> Well, nascentuploadfile
[05:06] <StevenK> Amusingly, createMissingBuilds calls it under the covers.
[05:06] <wgrant> Is that amusing?
[05:06] <StevenK> Well, I found it amusing
[05:07] <wgrant> It is intended that createMissingBuilds should be its only callsite.
[05:07] <StevenK> Ah
[05:07] <StevenK> A whole bunch of tests call it too
[05:07] <wgrant> Yes
[05:10] <wgrant> lifeless: launchpad-bugs has no contact address, but launchpad has launchpad-bugs@lists.c.c
[05:11] <wgrant> That's the problem.
[05:11] <lifeless> uhhhhh fail
[05:11] <lifeless> ok
[05:11] <lifeless> so lets remove that
[05:11] <lifeless> thanks for digging that up
[05:11] <wgrant> Now that PQM is out it should be fairly safe.
[05:11] <wgrant> PQM was the main problem last time.
[05:12] <wgrant> We'll all immediately get loads of vcs-imports spam.
[05:12] <wgrant> But at least we won't have robots spamming.
[05:12] <lifeless> fixed
[05:12] <wgrant> Hm, why is canonical-bazaar in launchpad?
[05:12] <lifeless> they were a subteam organisationally
[05:12] <wgrant> Were.
[05:13] <lifeless> yes. were.
[05:13] <wgrant> But they were added just before me.
[05:13] <lifeless> poolie: ^
[05:13] <wgrant> Like a month before the refactoring.
[05:13] <lifeless> poolie: what does that team membership do for you ?
[05:15] <jtv> StevenK, wgrant: does either of you have time to guide me through some Q/A on dogfood?
[05:15] <wgrant> jtv: Sure.
[05:15] <jtv> Thanks.  I need to see (1) a pending DSDJob, and (2) a failure on a package copy job.
[05:16] <wgrant> Ah. StevenK is possibly going to be more effective at that sort of thing.
[05:16] <jtv> Right ho.
[05:16] <LPCIBot> Project windmill-devel build #152: STILL FAILING in 1 hr 9 min: https://lpci.wedontsleep.org/job/windmill-devel/152/
[05:17] <jtv> StevenK: what can I safely to do produce a pending DSDJob to show up on +localpackagediffs?
[05:17] <StevenK> An upload, copy or removal will create a DSDJ
[05:18] <jtv> I guess a removal will make the package drop off +localpackagediffs.
[05:18] <StevenK> Maybe not
[05:19] <StevenK> A removal will create a DSDJ. Until that DSDJ is run, the existing DSD will not be touched.
[05:19] <StevenK> Once the DSDJ has run, the DSD will be updated to state unique to derived series or missing from derived series.
[05:20] <jtv> I see.
[05:20] <jtv> Would the easiest way though be to sync e.g. a52dec?
[05:21] <jtv> I guess that'd give me a copy job first, and then when that's done, a DSDJ
[05:21] <StevenK> Right.
[05:21] <jtv> Do we run any of the cron jobs on df?
[05:21] <jtv> ISTR no.
[05:21] <StevenK> I'm not sure.
[05:22] <jtv> Well, here goes.  IIRC a52dec is a pretty normal package, safe to copy?
[05:22] <wgrant> Starting a script takes like 30s of CPU time, so I hope not :/
[05:22]  * jtv curses zcml once more
[05:23] <lifeless> micahg: bug 59846 may entertain you with a flashback
[05:23] <jtv> Argh "same version is already building in oneiric"
[05:24]  * jtv looks for different arbitrary guineapig
[05:24] <micahg> lifeless: I don't see anything there
[05:24] <jtv> StevenK: acct should be safe as well, right?
[05:24] <lifeless> micahg: retry
[05:24] <lifeless> micahg: I was just unembargoing it
[05:25] <micahg> lifeless: heh, yeah
[05:25] <StevenK> jtv: Yes.
[05:25] <jtv> Same error.  :(
[05:26] <jtv> rmadison has nothing special to remark about alarm-clock either…
[05:26] <wgrant> lifeless: You asked of bug #121538 "Can this bug be opened ?"
[05:27] <lifeless> wgrant: made public
[05:27] <wgrant> I think you may have been through too many this afternoon :P
[05:27] <wgrant> Oh.
[05:27] <wgrant> I see.
[05:27] <StevenK> jtv: alarm-clock is already identical
[05:27] <jtv> Is _now_ :)
[05:28] <jtv> It was -1.1 vs -1ubuntu1
[05:28] <jtv> It correctly shows up as "updating..."
[05:29] <jtv> And now it's off the list.
[05:29] <jtv> So we are running DSDJobs on dogfood.
[05:29] <micahg> lifeless: should I dupe mine to it
[05:30] <lifeless> no
[05:30] <lifeless> its fix released
[05:31] <lifeless> and sufficiently long it would be a pita to reuse it
[05:31] <jtv> StevenK: now I'd like to try an asynchronous copy...  I'll disable synchronous copying for a moment.  Any objections to syncing amule, ajaxterm, or amsn?  If I read rmadison output right, they have some version differences across architectures but they're not in nonfree.
[05:33] <wgrant> Do they?
[05:33] <jtv> Well not ajaxterm since it's for "all"
[05:33] <wgrant> Nor amsn.
[05:33] <wgrant> Nor amule.
[05:34] <lifeless> hmmm
[05:34] <lifeless> I wonder if merging -bugs and -security would be better
[05:34] <jtv> wgrant: I ran e.g. $ rmadison -u debian -s sid amsn
[05:34] <wgrant> jtv: Why Debian?
[05:34] <wgrant> Debian binaries are not interesting.
[05:35] <wgrant> lifeless: Possibly, if there are no non-bugs -bugs references.
[05:35] <jtv> Because I need to know whether I can copy it into oneiric without creating an invalid publication.
[05:35] <lifeless> wgrant: if only we had a UI to show subscriptions
[05:36] <wgrant> lifeless: For everything else, there's psql.
[05:36] <wgrant> jtv: Ah, I see.
[05:36] <wgrant> jtv: Those should indeed be safe.
[05:36] <jtv> And while I love the idea of being the author of an illegal publication…
[05:38] <lifeless> ok, how to request a team merge ?
[05:39] <wgrant> lifeless: /people/+adminteammerge, but let's check this out first.
[05:40] <jtv> StevenK: next I need to trigger a CannotCopy on an asynchronous copy request… is there some off-the-shelf way of getting that?
[05:41] <jtv> I'll try a regular run first though, to verify the common case.
[05:41] <wgrant> lifeless: It's still bug supervisor for a couple of places.
[05:42] <StevenK> jtv: I can't think of an easy way off the top of my head
[05:43] <jtv> StevenK: on the bright side, the status quo for handling that is an oops.  So from a branch Q/A standpoint, just verifying that it works when there are no errors means the change is good to deploy.
[05:43] <jtv> What script was the processing of PPCJs hidden in again?
[05:43] <jtv> process-pending-packagediffs?
[05:43] <jtv> No
[05:44] <wgrant> I thought one just used run_jobs.
[05:54] <lifeless> wgrant: according to you thats not conflated with subscriptions now
[05:55] <wgrant> lifeless: It has some structuralsubscriptions, some assigned questions and bugtasks, and is the bug supervisor and security contact on some projects. That appears to be it.
[05:55] <wgrant> lifeless: It's not.
[05:55] <lifeless> we should nuke the strucsubs
[05:55] <wgrant> Right.
[05:55] <lifeless> the rest we can tolerate
[05:55] <wgrant> But launchpad-security may not be the correct bug supervisor for all our projects.
[05:55] <lifeless> it shouldn't be a security contact anyway
[05:55] <wgrant> KIndeed.
[05:55] <lifeless> wgrant: -security and -bugs are functionally equivalent now
[05:55] <wgrant> lifeless: OK.
[05:56] <wgrant> https://launchpad.net/~launchpad-bugs/+structural-subscriptions
[05:56] <wgrant> It has as few.
[05:56] <wgrant> I suspect all should be deleted.
[05:56] <wgrant> Before we merge.
[05:56] <lifeless> we can't open -bugs to non-staff because of the tonne of old bugs that would need auditing
[05:56] <lifeless> 400 odd
[05:56] <wgrant> Yeah.
[05:56] <lifeless> so if we want different supervisors
[05:56] <lifeless> we can't use -bugs anyhoo, so merging won't make this worse
[05:57] <wgrant> We should delete the structsubs first.
[05:58] <lifeless> yes
[05:58] <lifeless> am on it
[05:58] <lifeless> its not ajaxy
[05:58] <wgrant> Thanks.
[05:58] <wgrant> malone-developers has bugs assigned, and that's all.
[05:58] <wgrant> Might merge it into ~launchpad.
[05:58] <lifeless> qprocd wtf
[05:58] <wgrant> Heh
[05:59] <lifeless> dilys?!
[05:59] <wgrant> .. yes?
[05:59] <wgrant> You don't remember dilys?
[06:04] <lifeless> cleared out
[06:04] <wgrant> lifeless: ~malone-developers isn't a celebrity, only member is ~launchpad, and only artifacts are assigned bugtasks. Any objections to merging it into ~launchpad?
[06:04] <wgrant> Or even deleting it.
[06:06] <lifeless> hahha
[06:06] <lifeless> want to file this bug ?
[06:06] <lifeless> https://bugs.launchpad.net/~malone-developers/+assignedbugs?advanced=1
[06:06] <lifeless> note the team portlet
[06:06] <lifeless> wgrant: have you cleared the bug assignments ?
[06:07] <wgrant> lifeless: No. Deletion will do that.
[06:07] <lifeless> I can't see them
[06:07] <lifeless> (even with closed bugs checked)
[06:07] <wgrant> Neither. Let me find what they are.
[06:07] <wgrant> Bug #3460
[06:07] <_mup_> Bug #3460: Bug reported as no secret is not accessible anymore. <lp-foundations> <Launchpad itself:Incomplete by malone-developers> < https://launchpad.net/bugs/3460 >
[06:07] <wgrant> It's a dupe.
[06:08] <lifeless> doh
[06:09] <lifeless> https://launchpad.net/~malone-developers/+adminteammerge 404s
[06:09] <lifeless> oh
[06:09] <lifeless> literal people
[06:09] <wgrant> /people/+adminteammerge
[06:09] <wgrant> Yeah.
[06:09] <wgrant> But that team can just be deleted.
[06:09] <wgrant> I guess it doesn't make much difference.
[06:10] <lifeless> I think we're gtg on bugs now
[06:10] <lifeless> yes?
[06:11] <wgrant> As long as we don't care about bug supervisor, security contact or question/bugtask assignee, yup.
[06:11] <lifeless> ah questions
[06:11] <lifeless> lets see about those
[06:12] <wgrant> 1 question
[06:12] <wgrant> 109645
[06:12] <lifeless> 1 bug
[06:12] <lifeless> unassigned
[06:12] <wgrant> Bug #174335?
[06:12] <_mup_> Bug #174335: [remote-bug-watcher] GStreamer's Trac has switched to https <lp-foundations> <Launchpad itself:Fix Released> < https://launchpad.net/bugs/174335 >
[06:13] <wgrant> Question unassigned
[06:13] <lifeless> and supervisor I don't care about
[06:13] <lifeless> I will raise that its odd
[06:13] <wgrant> That leaves us with just bugsubscriptions and products.
[06:13] <wgrant> So let's doit.
[06:14] <lifeless> products?
[06:14] <wgrant> bug supervisor and security contact.
[06:14] <wgrant> Which you say we don't care about.
[06:14] <lifeless> ah - shrug ;)
[06:14] <wgrant> Which seems reasonable.
[06:14] <lifeless> security contact should be -security
[06:14] <wgrant> Yup.
[06:14] <lifeless> we do care - its wrong today :)
[06:14] <lifeless> supervisor won't functionally change
[06:14] <wgrant> So, -bugs -> -security, malone-developers -> oblivion?
[06:15] <wgrant> ~malone-developers is already gone, I see.
[06:15] <wgrant> Excellent.
[06:15] <lifeless> merged FTR
[06:15] <wgrant> k
[06:15] <wgrant> -> launchpad
[06:15] <wgrant> ?
[06:15] <lifeless> yeah
[06:17] <jtv> This is worrying: my branch is "Merged," my MP is "Merged," the bzr log shows my revision, but my changes don't seem to be in the code.
[06:18] <wgrant> jtv: Which rev?
[06:18] <jtv> What am I missing?  It's this MP: https://code.launchpad.net/~jtv/launchpad/db-bug-786970
[06:18] <jtv> db-devel 1617
[06:18] <jtv> 10617
[06:18] <wgrant> Which changes are missing?
[06:20] <wgrant> mailing-list-experts is also no longer a celebrity and obsolete and unreferenced, besides owning the already deleted mailing-list-beta-testers.
[06:20] <jtv> AFAICT at least the first one in the diff: security.cfg
[06:20] <wgrant> jtv: It's in db-devel for me...
[06:20] <wgrant> [sync_packages]
[06:20] <wgrant> groups=script
[06:20] <wgrant> public.account                                = SELECT
[06:20] <jtv> Yeah, just showed up—strange
[06:21] <wgrant> lifeless: launchpad-bugs is gone! Thanks.
[06:23] <poolie> lifeless: hi, what do you mean what does it do?
[06:23] <lifeless> poolie: just that
[06:25] <wgrant> lifeless: canonical-loggerhead only controls access to ancient private loggerhead branches. -> canonical-launchpad-branches?
[06:26] <lifeless> yes
[06:27] <lifeless> want to do the honours?
[06:27] <wgrant> Yup.
[06:27] <wgrant> Done.
[06:27] <wgrant> So much cruft :(
[06:29] <lifeless> there may be some config manager configs to cleanup with that last one ?
[06:30] <wgrant> It didn't own anything.
[06:30] <wgrant> Only subscriptions.
[06:30] <lifeless> and the branches ?
[06:30] <poolie> lifeless: well, for instance we assign bugs to ~canonical-bazaar to indicate they're on our short list
[06:30] <wgrant> lifeless: Hm?
[06:31] <lifeless> poolie: oh, econtext. I don't mean 'what do you use the team for with launchpad.net'
[06:31] <poolie> (we could have a tangential conversation there about per-person or per-team hit lists)
[06:31] <lifeless> poolie: its in ~launchpad. What does that *membership* do for you.
[06:31] <poolie> oh i see
[06:31] <poolie> i don't know
[06:31] <lifeless> wgrant: 17:25 < wgrant> lifeless: canonical-loggerhead only controls access to ancient private loggerhead branches. -> canonical-launchpad-branches?
[06:31] <lifeless> wgrant: won't that have changed urls ?
[06:31] <poolie> what is ~launchpad
[06:31] <lifeless> poolie: folk that report to francis, more or less
[06:31] <lifeless> poolie: including himself.
[06:32] <poolie> :) hm odd name for it then
[06:32] <wgrant> It also controls who can see tracebacks.
[06:32] <wgrant> That's about it.
[06:32] <poolie> so only canonical staff?
[06:32] <lifeless> and transitively closed
[06:32] <lifeless> yes
[06:32] <wgrant> lifeless: No, it only subscribed to branches. It owned nothing.
[06:32] <lifeless> wgrant: ~canonical-loggerhead controls who sees tracebacks ?
[06:32] <poolie> i don't think the team membership does anything much then
[06:33] <wgrant> lifeless: I was speaking of ~launchpad.
[06:33] <lifeless> heh
[06:33] <poolie> hm
[06:33] <wgrant> The only specialness it has within LP is granting tracebacks.
[06:33] <poolie> i mean it is useful for us to see tracebacks
[06:33] <lifeless> yeah
[06:33] <poolie> so you could expand out the membership to the individuals, if you think that is cleaner
[06:33] <wgrant> Or move it to a flag :)
[06:34] <lifeless> perhaps we should make that a ff
[06:34] <lifeless> jinx
[06:34] <wgrant> Means we can delete more celebrities.
[06:34] <wgrant> Yay.
[06:34] <poolie> :) oh speaking of which, the bug about staging flags
[06:34] <wgrant> The logic way to control that is with flags, yes.
[06:34] <poolie> would it make sense to do that off static configuration that's different between lpnet and other instances?
[06:34] <wgrant> Flagception, and all that.
[06:35] <lifeless> poolie: no
[06:35] <lifeless> poolie: rather, you could. But I wouldn't :)
[06:35] <poolie> because... that config stuff is a pain?
[06:35] <poolie> i was just thinking of what is permanently different between them
[06:35] <lifeless> lazr.config is a pita yes.
[06:35] <poolie> it seems kludgy to need to reset it after every synchronization
[06:36] <poolie> it may be the least kludgy thing i suppose
[06:36] <lifeless> poolie: there is an is_beta setting etc
[06:36] <lifeless> but I think its better to have the stuff visible
[06:36] <lifeless> rather than magically differ based on not obviously related settings
[06:37] <poolie> oh, well
[06:37] <poolie> i would have (handwavy) added a static configuration that says what person is allowed to edit, and to see, flags
[06:37] <poolie> *flag rules
[06:37]  * lifeless shudders
[06:38] <poolie> ?
[06:38] <lifeless> poolie: that would either require a team on production that matches the policy we want on staging (so that you can refer to it statically in the staging config)
[06:38] <poolie> but surely there is one; perhaps ~launchpad ?
[06:39] <lifeless> poolie: ~launchpad doesn't include ~admin
[06:40] <poolie> hm
[06:40] <poolie> ok
[06:40] <poolie> i crave enlightenment
[06:40] <poolie> is that the main thing that would be gross about it?
[06:41] <lifeless> this doesn't seem like config to me
[06:42] <lifeless> uhm
[06:42] <poolie> i guess to me bootstrapping-type information like who should get certain privileges seems like the kind of thing that goes in static configuration
[06:42] <poolie> in general; but that may not be a good fit for the launchpad idioms
[06:42] <lifeless> so
[06:43] <lifeless> things that might vary by where the server/script is running and how other services are talking to it
[06:43] <lifeless> those should be config (today)
[06:43] <lifeless> nothing else shold be
[06:44] <lifeless> because the config is spread out over about 100 locations
[06:44] <wgrant> thumper: Does ~launchpad-recipe-beta still need to exist?
[06:45] <lifeless> to deal with bootstrap issues the instance-creation script (make schema) seeds sensible defaults
[06:45] <lifeless> poolie: ^
[06:50] <lifeless> wgrant: its gone from the feature rules
[06:51] <wgrant> It is about to be gone in general.
[06:57] <lifeless> wow
[06:57] <wgrant> ?
[06:57] <lifeless> the wiki bug has gone over the 'can-comment' limit
[06:58] <wgrant> Heh
[07:22] <thumper> wgrant: no
[07:23] <wgrant> thumper: Thanks.
[07:23]  * wgrant destroys.
[07:24] <poolie> lifeless: so this wouldn't fall under "vary by where the server/script is running"?
[07:41] <lifeless> poolie: no
[07:41] <lifeless> poolie: we wouldn't want it different for two prod servers
[07:41] <lifeless> therefor it shouldn't be a config setting
[07:41] <poolie> ok
[08:24] <lifeless> http://webnumbr.com/launchpad-critical-bugs.derivative
[08:26] <StevenK> Looks like math homework. "Using only this graph, determine exactly when William Grant switched from maintaince to feature work."
[08:30] <wgrant> :(
[08:37] <adeuring> good morning
[08:43] <jtv> hi adeuring
[08:43] <adeuring> hii jtv!
[08:56] <wgrant> jam: Which bugs?
[08:56] <lifeless> I have a feeling bug 117166 may be fixed
[08:56] <_mup_> Bug #117166: Soyuz tests should use standard LP logger <lp-soyuz> <tech-debt> <test-system> <Launchpad itself:Triaged> < https://launchpad.net/bugs/117166 >
[08:56] <wgrant> jam: There should be no team bug subscriptions left, except for ~launchpad-security (which has its own contact address)
[08:56] <jtv> Any reviewers willing to pick up an easy fix?  https://code.launchpad.net/~jtv/launchpad/db-bug-790084/+merge/62845
[08:57] <jam> wgrant: so unfortunately I cleared them out of my bug folder, but I'll go track them down, just a sec
[08:58] <jam> wgrant: 47941 for example
[08:58] <wgrant> Hm, ~launchpad is apparently subscribed to 351 or so bugs.
[08:58] <jam> well, 74941 if I could type correctly
[08:59] <wgrant> Hm.
[08:59] <wgrant> Do you have the rationale from that email?
[08:59] <wgrant> there's no ~launchpad subscription near it, AFAICT.
[08:59] <lifeless> hmm
[08:59] <jam> wgrant: You received this bug notification because you are a member of Launchpad
[08:59] <jam> Bug Contacts, which is a direct subscriber.
[08:59] <jam> https://bugs.launchpad.net/bugs/74941
[08:59] <_mup_> Bug #74941: Database permission exception in ticket expiration <lp-foundations> <Launchpad itself:Fix Released by flacoste> < https://launchpad.net/bugs/74941 >
[08:59] <lifeless> person merge happily creates dual subscriptions to one bug
[09:00] <lifeless> jam: you're in canonical-bazaar which is in launchpad which was in launchpad-bugs
[09:00] <wgrant> jam: That was pre-merge.
[09:00] <wgrant> jam: That team no longer exists. Are you still getting mail?
[09:00] <jam> wgrant: ok, it was about 20 bugs from this morning, about 4 hours ago
[09:01] <lifeless> that was me :)
[09:01] <wgrant> Probably lifeless unsubscribing ~launchpad-bugs from half the world.
[09:01] <wgrant> Just after the contact address was removed.
[09:01] <jam> lifeless: correct, most of them are you
[09:01] <jam> though not all unsubscriptions
[09:02] <wgrant> Some deprivatisations?
[09:02] <jtv> stub: are you reviewing?  https://code.launchpad.net/~jtv/launchpad/db-bug-790084/+merge/62845
[09:02] <jam> wgrant: at least one of them, yes.
[09:02] <jam> Anyway, if it is going away now, great. I don't have any *proof* of that yet, but I also wanted to clearly state that launchpad doesn't clearly let me unsub
[09:02] <jam> this was a ~bzr issue. The community wants yet-another team
[09:02] <wgrant> jam: Well, the subscription is already removed.
[09:03] <wgrant> You can't unsubscribe, since it was done between you receiving the email and reading it :)
[09:05] <lifeless> jam: you can't unsubscribe because you aren't subscribed
[09:09] <jam> lifeless: sure. Though having gotten emails within a couple hours, not having actually unsubscribed myself, and not having gotten a clear "you are now unsubscribed" made that a bit unclear
[09:10] <wallyworld_> lifeless: are you able to run some sql against qastaging for me? i don't think there's a dba around. i'd like to see the result set and query plan
[09:10] <lifeless> wallyworld_: sure
[09:11] <wallyworld_> https://pastebin.canonical.com/47947/
[09:11] <wallyworld_> thanks
[09:11] <lifeless> jam: FWIW see the activity log
[09:11] <lifeless> wallyworld_: FTR - losas can do this, we have 24x5 coverage, stub can do it - he's here, and all squad leads can as well :)
[09:11] <wallyworld_> oh ok. thanks for the clarification
[09:12] <wallyworld_> you want a losa to do it this time?
[09:12] <lifeless> no, I said sure :)
[09:12] <lifeless> besides which, its running now.
[09:12] <wallyworld_> np.
[09:13] <lifeless> 50 seconds
[09:13] <wallyworld_> and hot?
[09:13] <lifeless> 6.6
[09:14] <wallyworld_> it's for the person picker. it does correct ordering of results etc
[09:14] <lifeless> so - too slow by at least 2.1 seconds
[09:14] <wallyworld_> i think that time is ok for qas?
[09:14] <lifeless> no
[09:14] <lifeless> remember vocabs count(*) and execute
[09:14] <lifeless> qas is only slightly slower than prod at query execution
[09:14] <wallyworld_> sure. i never know how much to discount for the fact that qas is so slow
[09:15] <wallyworld_> right
[09:15] <lifeless> don't discount at all ever
[09:15] <lifeless> do you want all 100 rows of output ?
[09:16] <wallyworld_> sure. but looks like it's back to the drawing board since the query is slow. perhaps an explain can say why
[09:16] <lifeless> have we added tje person fti yet ?
[09:17] <wallyworld_> i think it's already on qas?
[09:17] <wgrant> lifeless: I don't think so.
[09:17] <wgrant> lifeless: I asked stub about it.
[09:17] <wallyworld_> ah. that could explain it. the new query is actually simpler than the current one i am pretty sure. less subselects
[09:18] <wallyworld_> does staging or dog food have the person fti?
[09:19] <lifeless> hah
[09:19] <lifeless> you have't prepped for this at all
[09:19] <wgrant> DF has it.
[09:19] <lifeless> I'm going to skip the results
[09:19] <lifeless> and talk you through working on queries in our environment a little :)
[09:19] <lifeless> wallyworld_: https://pastebin.canonical.com/47948/
[09:19]  * wallyworld_ is scared
[09:20] <wallyworld_> ok got the pastebin
[09:21] <lifeless> note the estimated cost -  261638
[09:21] <lifeless> thats huge
[09:21] <wallyworld_> yeah
[09:22] <lifeless> the Merge Left Join  (cost=0.34..212979.61 rows=7785 width=834) (actual time=1539.047..51003.757 rows=3942 loops=1)
[09:22] <lifeless> contains most of the time
[09:22] <lifeless> Merge Left Join  (cost=0.00..207878.63 rows=1295397 width=830) (actual time=23.991..47925.318 rows=1271338 loops=1)
[09:22] <wallyworld_> that's to the ircid table i think. that table is quite small i thought
[09:22] <lifeless> and that then shows whre its going - 1.2M rows
[09:22] <lifeless> person
[09:23] <jam> lifeless: its only 1.2Million :)
[09:24] <wallyworld_> would a subselect be quicker i wonder
[09:24] <lifeless> wallyworld_: nope
[09:24] <lifeless> this is a selectivity thing
[09:24] <lifeless> there is no index on displayname
[09:24] <lifeless> there is no index on fti
[09:25] <wallyworld_> the index on displayname is on the todo list ie we need to get it added
[09:25] <wallyworld_> same with fti
[09:25] <lifeless> wallyworld_: ok so process
[09:25] <lifeless> you can't sensibly craft *any* queries without getting measurements with indices added
[09:25] <lifeless> which losas/stub can do
[09:26] <lifeless> stub: while you're here ;)
[09:26] <wallyworld_> i was initially just after the result set, and though why not see the explain while we were there
[09:26] <lifeless> stub: our schema claims person_fti is indexed.
[09:26] <lifeless> stub: qastaging has no index on person.fti; I'm guessing production is the same.
[09:27] <wallyworld_> lifeless: i was initially looking to see the correctness of the results. i shouldn't have asked for explain yet. sorry.
[09:27] <lifeless> wallyworld_: its all good
[09:27] <lifeless> wallyworld_: I wouldn't do this in separate phases:
[09:27] <wallyworld_> well, if the results are crap, no good profiling the query
[09:27] <lifeless> wallyworld_: the ability to get the right results in the right timeframe (subsecond render time) requires working on both things at once
[09:28] <wallyworld_> fair enough. i was too eager after fighting with storm for a few hours
[09:29] <lifeless> generally speaking for collections to meet our goals the query has to be ~500ms stable
[09:29] <wallyworld_> ok
[09:29] <wallyworld_> so if we need to get person.fti set up, i'd like to get person.displayname done too
[09:30] <wgrant> jam: ~launchpad had a few hundred ancient public bug subscriptions. They are currently being removed.
[09:30] <wallyworld_> i'll try and catch stub later to ask him
[09:31] <lifeless> wallyworld_: I'm confused though
[09:32] <lifeless> why are you checking displayname
[09:32] <wallyworld_> about?
[09:32] <lifeless> when fti includes displayname
[09:32] <wallyworld_> because we want exact matches to occur first
[09:32] <wallyworld_> and afaiu, fti doesn't do that
[09:32] <wgrant> stub had some compelling arguments for doing a string match first.
[09:32] <wgrant> stopwords and stemming and such.
[09:32] <lifeless> the second clause does a plain old fti
[09:32] <wallyworld_> yes, wgrant beat me to it
[09:33] <lifeless> the first clause uses an ||
[09:33] <stub> ?
[09:33] <lifeless> stub: hi!
[09:33] <lifeless> stub: a few things lined up for you :)
[09:33] <lifeless> stub: firstly being whats up with person.fti being unindexed
[09:35] <lifeless> wallyworld_: in the second part of the query - 'AND NOT (Person.teamowner IS NULL)
[09:35] <lifeless> '
[09:35] <lifeless> wallyworld_: is a little weird, and that sort of thing can confuse the planner sometimes
[09:35] <wallyworld_> lifeless: that is as per the current query
[09:35] <lifeless> k
[09:36] <wallyworld_> i've kept the sort of stuff you mention above and reworked the select scaffolding and ranking around it all
[09:36] <LPCIBot> Project windmill-db-devel build #341: STILL FAILING in 1 hr 10 min: https://lpci.wedontsleep.org/job/windmill-db-devel/341/
[09:36] <wallyworld_> wow, that's poorly worded
[09:38] <stub> Person.fti not having an index is a bug. The index probably got lost ages ago when we tried to switch from GIST to GIN indexes, but I have no way of being sure without trawling ancient backups...
[09:38] <lifeless> stub: can you create on prod/qas/staging ?
[09:38]  * stub checks if he fixed that on prod last week
[09:39] <wallyworld_> stub: i have to duck off for dinner - after you have looked at the person.fti i'd love it if you could create a person.displayname index too :-)
[09:39] <wgrant> stub: Oh, we're using GIN now?
[09:39] <wgrant> stub: The dev index is GIST.
[09:39] <lifeless> wgrant: no
[09:39] <lifeless> wgrant: we tried too
[09:39] <wgrant> Or is that "tried and failed"?
[09:39] <wgrant> Heh.
[09:39] <stub> I'll create the fti indexes now. Do you have the query using displayname?
[09:39] <wgrant> Right.
[09:39] <lifeless> stub: https://pastebin.canonical.com/47947/ is the draft
[09:39] <stub> wgrant: 9.0 or 9.1 adds the feature we need... forget which
[09:39] <lifeless> stub: I'm not clear why we want to check displayname ?
[09:40] <wallyworld_> yeah, what he said ^^^^
[09:40] <wallyworld_> the pastebin, not the question
[09:40] <stub> wallyworld_: You sure you want exact match, and not say case insensitive prefix match like email address is?
[09:41] <lifeless> stub: I think we just want fti
[09:41] <stub> Both can use an index, but they are different indexes.
[09:41] <lifeless> stub: I'd really like to understand why we don't.
[09:41] <lifeless> stub: because the current draft seems a bit crazy - its oring the exact and the fti checks together, and the fti match is a superset of the exact
[09:41] <stub> lifeless: Because we dropped it ages ago and didn't recreate it, and the fti.py script isn't smart enough to catch this error.
[09:41] <wallyworld_> i was thinking exact match. wouldn't the fti pick up the other sort?
[09:42] <lifeless> stub: crossed wires. I'm cool on the fti thing - I know how that came to be.
[09:42] <wallyworld_> the exact matches are ranked higher than the fti ones
[09:42] <stub> wallyworld_: fti is case insensitive word matches. quite a different thing to an exact or prefix match.
[09:42] <lifeless> wallyworld_: fti will pick up everything. I don't think there is a single result the displayname check will match that fti won't.
[09:43] <wallyworld_> lifeless: yes, but the ranking is what we care about
[09:43] <stub> lifeless: There are cases where stopwords and stemming gives broken results
[09:43] <wallyworld_> and fti has limiations there
[09:43] <lifeless> stub: but checking both is only useful if one won't match.
[09:43] <lifeless> stub: we should turn stopwords off for person.fti
[09:44] <wallyworld_> but how do we know one won't match ahead of time?
[09:44] <stub> lifeless: we should tune fti everywhere, or switch to a different search engine.
[09:44] <lifeless> wallyworld_: I don't know what you mean by that
[09:44] <wallyworld_> maybe i misunderstood your previous staement
[09:45] <wallyworld_> "checking both is only useful if one won't match"
[09:45] <lifeless> you have this
[09:45] <stub> wallyworld_: It is still one query
[09:45] <lifeless> OR Person.displayname = 'jon'
[09:45] <lifeless>  ( Person.fti @@ ftq('jon') )
[09:45] <lifeless> this is pointless unless Person.displayname = 'jon' can match something that Person.fti @@ ftq('jon') cannot
[09:45] <wallyworld_> that's what i'm using yes. but the ranking is different for each case above
[09:46] <lifeless> the ranking is a separate discussion
[09:46] <wallyworld_> not if we want the results odered correctly
[09:46] <lifeless> no
[09:46] <lifeless> you are doing two things
[09:46] <wallyworld_> it all has to be in the query if we want sql to do the ordering
[09:46] <lifeless> a) filtering on display name redundantly with fti filtering
[09:46] <lifeless> b) ranking on a separate test on display name
[09:47] <lifeless> a and b are entirely separate
[09:47] <lifeless> I am only talking about a
[09:47] <wallyworld_> ah, i think i see the problem
[09:47] <wallyworld_> yes, you are correct
[09:48] <wallyworld_> but the same token, the comparison to person.name is also unncessesary
[09:48] <lifeless> we probably want to put the irc nickname into the fti
[09:48] <lifeless> then we can can drop that from the filter
[09:48] <wallyworld_> that's a separate table. does that matter?
[09:49] <lifeless> yes, I agree that the name= check can be dropped too if its in the fti
[09:49] <wallyworld_> what blinded me was the original query had the check for name as well as fti
[09:49] <lifeless> needs a little trigger love to update the fti on changes in the ircid table
[09:49] <stub> yes, the current infrastructure doesn't let us use values from separate tables. Need to replace that old stuff.
[09:49] <lifeless> stub: it doesn't? I thought it was trigger based...
[09:49] <stub> it is, but automatically generated and maintained by fti.py
[09:50] <lifeless> ah right
[09:50] <lifeless> so the glue we use is limited
[09:50] <lifeless> the underlying facility is agnostic
[09:50] <lifeless> ?
[09:50] <stub> Yes. If we stick with tsearch2, we should hand roll the indexes and triggers in some or all cases
[09:51] <lifeless> wallyworld_: I thought all persons had to have an email address ?
[09:51] <stub> fti index exists on production now... doing staging and qastaging
[09:51] <stub> except teams
[09:51] <lifeless> ah right
[09:51] <wallyworld_> yes, what he said
[09:51] <wallyworld_> stub: the wife is getting anxious i'm not at dinner? you around for another hour or 2? i'll give you a new version of the query
[09:51] <lifeless> teams can't have irc etc
[09:51] <lifeless> I suspect a union for the team/nonteam case might be better.
[09:51] <wallyworld_> lifeless: yes, hence the left join
[09:52] <stub> wallyworld_: Sure
[09:52] <wallyworld_> thanks
[09:52] <lifeless> then you can use an inner join rather than a left join
[09:52] <wallyworld_> lifeless: fair point
[09:52] <lifeless> and skip the ircd check on teams
[09:52] <wallyworld_> i'll look into it after food
[09:52] <wallyworld_> thanks for the input. i've been looking at it too long :-(
[09:54] <lifeless> no worries
[09:55] <lifeless> will kibbitz more tomorrow
[10:05] <lifeless> fwiw there are 10K emails matching that query
[10:08] <lifeless> wallyworld_: https://pastebin.canonical.com/47949/
[10:08] <lifeless> wallyworld_: I think you want a union - one for fti, one for email
[10:08] <lifeless> at minimum
[10:08] <lifeless> I seem to recall that the old query had that
[10:10] <wgrant> lifeless: It's not clear how we want to rank.
[10:10] <lifeless> sure
[10:10] <lifeless> we can probably get 500 rows back (5 * union elements) and then rank & filter
[10:10] <lifeless> in 300-400ms
[10:10] <wgrant> And what if we get 10000 email address matches back?
[10:13] <lifeless> wgrant: reread what I said
[10:14] <wgrant> lifeless: How do you get 500 rows out of 10000 rows/
[10:14] <wgrant> ?
[10:14] <lifeless> wgrant: limit 100 in each union component
[10:15] <wgrant> So rank, filter, collate, rank and filter?
[10:15] <lifeless> yes
[10:15] <lifeless> its not ideal
[10:15] <lifeless> but triggering stupid plans isn't ideal either
[10:16] <wgrant> This is true, but hopefully missing a less bad solution.
[10:18] <bigjools> morning
[10:18] <wgrant> bigjools: Isn't the UK not here?
[10:21] <lifeless> wgrant: well, I'll take that under advisement, but its clearly possible to deliver a 500ms or so query using this approach.
[10:22] <lifeless> wgrant: so thats the bar to reach for any alternate solution
[10:22] <wgrant> lifeless: Sure.
[10:22] <bigjools> wgrant: looking around me, it's very much business as usual (pissing it down)
[10:26] <wallyworld_> lifeless: yes the original query had 4 or 5 unions but then proceded to mess up the ordering. i thought i'd see how it ran with fewer queries since it's all about the person table except for the join to email and irc. but if it's suboptimal i'll look to change the approach. i thought it was worth revisiting to see how it ran
[10:26] <lifeless> wallyworld_: I trimmed the query back to just emailaddress + fti and it triggered the left merge join
[10:26] <lifeless> wallyworld_: which is size(table) overhead
[10:27] <wallyworld_> ouch
[10:29] <lifeless> wallyworld_: individually the email address prefix search and the fti search are both 150ms
[10:29] <lifeless> combined 5000
[10:30] <wallyworld_> wow.
[10:30] <jtv> henninge: hadn't noticed your review — a belated vielen Dank!
[10:32] <bigjools> wgrant: any thoughts on my email about PCJs in the queue?
[10:32] <wgrant> bigjools: "aaaa"
[10:33] <bigjools> yes
[10:34] <wgrant> bigjools: I think we fairly clearly have to have single-source PCJs for now.
[10:34] <bigjools> yes
[10:34] <wgrant> And by the time we have multi-source ones we will hopefully have dropped PackageUpload.
[10:34] <bigjools> haha
[10:34] <bigjools> PCJ will end up a copy of PCJ
[10:34] <bigjools> err
[10:34] <bigjools> PCJ will end up a copy of PU
[10:35] <wgrant> Mm.
[10:35] <bigjools> wgrant: also lifeless doesn't like having a suspended job state
[10:35] <bigjools> which means PU will have to stay
[10:35] <wgrant> Neither do I.
[10:36] <wgrant> Well, something like PU will have to stay, yes.
[10:36] <wgrant> I have vague plans about unifying them.
[10:36] <wgrant> Into something sort of like PU, but not really.
[10:36] <wgrant> But that is too invasive for now.
[10:36] <wgrant> The PCJ solution will do.
[10:38] <bigjools> StevenK, wgrant: anyway, what did you think about the override problem I described ?
[10:38] <bigjools> we need PCJ.copypolicy and PCJ.overridepolicy I tihnk
[10:39] <wgrant> bigjools: I guess the initial pre-suspension run gets and stores the overrides?
[10:39] <bigjools> and the overriding done in copyTo() needs to be refactored - again
[10:39] <wgrant> That is trivial.
[10:39] <wgrant> It's like three lines.
[10:40] <wgrant> It always needed to be changed anyway.
[10:40] <wgrant> To detect newness.
[10:40] <bigjools> no, the overrides are added after it suspends
[10:40] <wgrant> How?
[10:40] <bigjools> I've already done newness detection
[10:40] <wgrant> It needs to be shown in the UI, you say.
[10:40] <wgrant> So it has to be done before suspension.
[10:40] <bigjools> it just uses the ancestry check again
[10:40] <bigjools> manual overrides are added when it's suspended
[10:41] <bigjools> auto overrides are applied as they are now, which is finew
[10:41] <wgrant> 4. Default overrides. - These are currently done at the copying stage in Steve's recent changes.
[10:41] <wgrant> We actually need them to apply before then, in the PCJ metadata when the job
[10:41] <wgrant> suspends itself so the defaults appear in the UI.
[10:41] <bigjools> correct
[10:41] <bigjools> that was my point in the email :)
[10:41] <wgrant> Sounds like you need to add the overrides before it suspends.
[10:41] <wgrant> Then the AA adds the missing ones.
[10:41] <bigjools> AAAAAAAAAAAAA
[10:42] <wgrant> I'm not sure whether that's a pun or a scream of realisation.
[10:42] <wgrant> Or both.
[10:42] <bigjools> I realised it over the weekend when I was writing lots of code to do all this
[10:42] <bigjools> wip branch: https://code.launchpad.net/~julian-edwards/launchpad/copies-must-use-queue-bug-789502/+merge/62745
[10:43] <LPCIBot> Project windmill-db-devel build #342: STILL FAILING in 1 hr 7 min: https://lpci.wedontsleep.org/job/windmill-db-devel/342/
[10:44] <bigjools> I've also done a change to fix overrideSource to add stuff to the metadata for PCJ
[10:45] <bigjools> but that failed in ec2 with 1400 errors.  WTF
[10:45] <wgrant> Hahah
[10:54] <lifeless> win
[10:57] <bigjools> wgrant: so you agree with me that I need to add those 2 policies as columns on the PCJ?
[10:57] <wgrant> bigjools: Why?
[10:57] <lifeless> bigjools: don't they apply to normal uploads too ?
[10:58] <wgrant> I don't understand why the PCJ can't find them itself. At least the override policy is trivial to find from Archive.
[10:58] <wgrant> Hm.
[10:59] <wgrant> 19:58:28 < wgrant> I don't understand why the PCJ can't find them itself. At least the override policy is trivial to find from Archive.
[11:00] <bigjools> no
[11:00] <bigjools> think about sync copies
[11:00] <bigjools> well, the override policy is probably ok
[11:00] <bigjools> but the copy policy needs to live on the PCJ
[11:01] <bigjools> since it depends on the type of copy operation
[11:01] <wgrant> Argh
[11:01] <wgrant> For now, yeah, probably.
[11:01] <bigjools> the other option is to have a SyncPackageCopyJob
[11:01] <bigjools> but.... <shudder>
[11:01] <wgrant> Don't ever say that again.
[11:01] <bigjools> and, I really hope my ISP is not playing up today
[11:02] <wgrant> 19:57:02 < bigjools> wgrant: so you agree with me that I need to add those 2 policies as columns on the PCJ?
[11:02] <wgrant> 19:58:25 -!- bigjools [~quassel@canonical/launchpad/bigjools] has quit [Quit: No Ping reply in 180 seconds.]
[11:02] <henninge> If a team is an administrator for another team then all members of that first team have administrator rights on the second team, correct?
[11:02] <wgrant> henninge: Yes.
[11:02] <bigjools> wgrant: that's twice now
[11:02] <henninge> thanks.
[11:02] <wgrant> bigjools: Yes. But you spoke just over a minute before you were timed out after three minutes.
[11:02] <wgrant> A little odd.
[11:03] <bigjools> now, how to implement policy lookups
[11:04] <bigjools> yeah odd
[11:04] <wgrant> Probably named adapters for now.
[11:04] <bigjools> could be a utility
[11:04] <wgrant> Er, that, yes.
[11:04] <wgrant> Wait.
[11:04] <bigjools> but adapter fits better
[11:04] <wgrant> A utility that takes names, or a set of named utilities?
[11:20] <stub> wallyworld_: http://paste.ubuntu.com/614872/ is where I seem to be ending up. Inner query selects all the rows that can be retrieved quickly using indexes, outer query filters unwanted rows. ~400ms on staging with 'jon'
[11:21] <stub> And the index on lower(displayname)
[11:22] <wallyworld_> stub: awesome thanks. i'll look. i was just in the middle of doing my own query refactoring. it would be easier if it were pure sql but we also have to weave it into storm
[11:22] <stub> wallyworld_: Aren't you supposed to be eating dinner?
[11:22] <wallyworld_> stub: finished :-) doing sql now
[11:22] <stub> wallyworld_: The with statement can be inlined I think without causing slowness
[11:23] <stub> wallyworld_: (And does storm support WITH now? I know there were bugs open on this, maybe patches too)
[11:23] <wallyworld_> stub: ah, i haven't used with before
[11:23] <wallyworld_> is that standard sql?
[11:23] <stub> wallyworld_: like a view or temporary table for just that query
[11:24] <wallyworld_> excellent. that's nice
[11:25] <stub> wallyworld_: I believe it is standard. Its the same syntax for recursive queries.
[11:26] <stub> SQL-99 or later I think
[11:28] <wallyworld_> right. shows my sql is a little dated
[11:30] <lifeless> stub: store.with_().find()
[11:30] <stub> wallyworld_: ^^
[11:31] <wallyworld_> yeah. just found some examples in branchcollection
[11:31] <wallyworld_> thanks
[11:32] <lifeless> stub: I was saying to wallyworld that filtering on displayname is likely unneeded
[11:32] <lifeless> stub: FWIW
[11:32] <stub> Yer, but it is cheap with an index so what the hey :)
[11:33] <stub> Just not substring - prefix or exact is fine.
[11:35] <wallyworld_> stub: thanks for the help. muchly appreciated.
[11:37] <stub> wallyworld_: Just remember if displayname matching stays in, we need an index: create index person__displayname__idx ON Person(lower(displayname));
[11:49] <lifeless> wallyworld_: that means you'll need to land this on db-devel
[11:49] <wgrant> Why?
[11:49] <wgrant> Can't we create it live?
[11:49] <wallyworld_> stub: ack that. we don't need the index though if i use a case statement for the rank. ie we don't need any where terms matching on name==? or displayname==?
[11:49] <lifeless> mmmm
[11:50] <wallyworld_> just a fti match and a case statement for the rank
[11:50] <lifeless> wgrant: we probably can, with a -1 patch
[11:50] <wgrant> lifeless: Exactly.
[11:50] <lifeless> wgrant: can you guide wallyworld_ through that if ineeded?
[11:50] <wgrant> No point db-develing it.
[11:50] <lifeless> <- ETIRED
[11:50] <wgrant> Sure.
[11:50] <wallyworld_> btw, i was also thinking we could do the index live *if* required
[11:50] <wgrant> We discussed this on the call a couple of days back.
[11:50] <wgrant> Seemed like it should work OK.
[11:50] <stub> wallyworld_: Correct. You only need the index if we are selecting on displayname, not using it in already selected rows.
[11:51] <stub> Yes, we can create the index live.
[11:51] <wallyworld_> indexes cost cpu cycles, disk space etc so if we can get away without....
[11:54] <wgrant> wallyworld_: That devel landing of yours should unbreak windmill?
[11:54] <wallyworld_> wgrant: some tests not all :-(
[11:54] <wgrant> wallyworld_: Well, most of the picker ones should work, at least.
[11:54] <wgrant> The others we can see in an hour.
[11:54] <wallyworld_> yep
[11:55] <wallyworld_> wgrant: afaiu, there were some onkeypress event handling issues with ff4
[11:55] <wallyworld_> and windmill
[11:55] <wallyworld_> hence some tests failed
[11:55] <wallyworld_> but the functiionality works on in real life
[11:55] <wallyworld_> /son/ok
[11:56] <wgrant> bigjools:  4. Write a new SyncCopyPolicy that auto-accepts everything not NEW
[11:56] <wgrant> Huh?
[11:56] <wgrant> Autosyncs don't have different acceptance rolls.
[11:56] <wgrant> Er.
[11:56] <wgrant> rules.
[11:56] <bigjools> yes they do
[11:56] <wgrant> Oh?
[11:57] <bigjools> see the existing Sync policy in the upload processor
[11:57] <bigjools> for a mass sync you don't want it all hitting the queue
[11:57] <lifeless> could someone give https://dev.launchpad.net/ArchitectureGuide/ServicesRoadmap a once-over for sanity ?
[11:58] <lifeless> I haven't brought in the full list of service opportunities from the analysis yet
[11:58] <wgrant> bigjools: Why not?
[11:58] <wgrant> bigjools: You're not going to be mass-syncing a frozen series.
[11:58] <bigjools> hmm good point
[11:58] <wgrant> And you probably don't want to accidentally do it.
[11:58] <wgrant> => no point having it bypass the freeze.
[11:59] <bigjools> although this is what sync-source -a does right now, we just rely on them only running it at the right time
[12:00] <wgrant> Yes.
[12:00] <wgrant> Mass syncs are first done immediately after opening, and last done at DIF.
[12:00] <wgrant> The archive does not normally freeze in the meantime.
[12:01] <bigjools> we probably still need a separate policy because we don't want to send emails
[12:01] <bigjools> need to add a send_email bool to them
[12:01] <bigjools> StevenK: note that --^
[12:02] <wgrant> bigjools: Right, a separate policy is reasonable for that, but your original reasoning had me a little surprised.
[12:02] <bigjools> yeah, I was mistaken
[12:06] <lifeless> stub: ^ can has your eyeballs ? :)
[12:06] <stub> I'm using them...
[12:06] <stub> The services road map
[12:06] <stub> ?
[12:11] <wallyworld_> stub: using lower(displayname) like ? picks up matches that fti misses so looks like we'll need that index
[12:11] <stub> k. Do you have an example query btw?
[12:11] <stub> query string I mean
[12:11] <wallyworld_> ie if displayname is "Jonathan Smith"
[12:12] <wallyworld_> then searching usinfg the term 'jon'
[12:12] <wallyworld_> will only match using the displayname term
[12:12] <wallyworld_> not the fti
[12:12] <stub> Right. Because 'jon' isn't a word in that displayname.
[12:12] <stub> Feel free to add that example into the doctests in case someone decides to pull it in the future :)
[12:13] <wallyworld_> it's a partial word. i was hoping it would match
[12:13] <stub> if you get lucky with stemming, it might.
[12:13] <stub> But not in this case :)
[12:13] <wgrant> I wonder if there's a name stemmer around.
[12:14] <wallyworld_> since fti on person is only name,displayname - can we match it match more loosely without costing too much?
[12:14] <wgrant> "more loosely" is very difficult to define :/
[12:14] <wallyworld_> sure. substring match then :-)
[12:15] <stub> fti searches are word searches. If you want substrings, we need a different sort of index
[12:15] <lifeless> stub: yes
[12:15] <wallyworld_> ah ok.
[12:15] <stub> (which is possible, but not yet in LP since most thinking is we want to get this sort of search out of the db)
[12:15] <wallyworld_> how does google do it?
[12:16] <stub> google doesn't do substring searches
[12:16] <wallyworld_> i meant searching in general
[12:16] <stub> pretty much the same techniques as tsearch2, but more intelligence.
[12:17] <stub> such as detecting typos etc. and much better ranking.
[12:17] <wallyworld_> ok
[12:17] <stub> tsearch2 doesn't do phrases though.
[12:19] <lifeless> not to mention a massively parallel index implementation
[12:20] <lifeless> right now we can't sanely do substring matches
[12:21] <lifeless> (by yes I meant the services roadmap)
[12:21] <wallyworld_> but at least we can do sensible thinks like startswith ie like which cover what most people expect when using the picker
[12:22] <wallyworld_> stub: do you feel like creating the displayname index given we will be needing it?
[12:22] <stub> lifeless: the in datacentre authentication stuff is assuming HTTP communication between a client and server, and that authentication will be handled by a proxy rather than the app. Might want to be explicit about this, and list this proxy feature as a infrastructure dependency.
[12:24] <stub> wallyworld_: Sure. I've added it to my list.
[12:24] <wallyworld_> stub: thank you.
[12:27] <lifeless> stub: we already have that in place with apache though, no ?
[12:28] <stub> lifeless: Which means in-datacentre http stuff will be going through both haproxy and apache, increasing latency and complexity
[12:30] <lifeless> stub: somewhat yes, but lowers the requirements for each service
[12:31] <stub> lifeless: sure.
[12:31] <stub> lifeless: Document seems fine anyway. I'm fuzzy today though so take my proofing with a grain of salt :)
[12:32] <lifeless> stub: I have revised that section
[12:32] <lifeless> stub: thanks for the loan of your eyeballs
[12:32] <jtv> bigjools: what should existing PackageCopyJobs have for copy_policy?
[12:35] <bigjools> jtv: InsecureCopyPolicy is the default
[12:35] <jtv> OK
[12:35] <bigjools> I am naming it 'insecure' in my branch
[12:35] <jtv> Going to be a bit nasty extracting all the source package names from the metadata.
[12:35] <bigjools> jtv: but I think a default of NULL is fine
[12:35] <jtv> So the string text should be 'insecure'?
[12:36] <bigjools> if it's NULL we can default it in code, which makes it more flexible
[12:36] <jtv> In this case I'd read NULL as "not applicable," really…
[12:36] <bigjools> jtv: also we don't have any existing copy jobs to worry about outside of dogfood, I'd be happy to blitz those, so you don't need to worry  about migrating the name
[12:37] <jtv> Excellent.
[12:53] <bigjools> what runes do I need to get push --stacked-on to work?  I tried a local file, lp:, bzr+ssh: all of which fail for different reasons
[12:54] <wgrant> --stacked-on=/~user/project/branch might work... I forget if it was fixed.
[12:54] <wgrant> A year ago it was impossible to do it cleanly.
[12:54] <wgrant> You had to --stacked-on=bzr+ssh://..., but then LP would fail to parse that, so you had to change the path manually to /~user/project/branch afterwards.
[12:55] <lifeless> bigjools: stacking normally occurs automatically
[12:55] <bigjools> lifeless: which is great until I want to override the default
[12:55] <bigjools> because pushing db-devel branches is far too painful now
[12:56] <bigjools> wgrant: yes, it all seems fecked
[12:56] <bigjools> my very ADSL has poor upstream :(
[13:04] <LPCIBot> Project windmill-devel build #153: STILL FAILING in 1 hr 8 min: https://lpci.wedontsleep.org/job/windmill-devel/153/
[13:08] <bigjools> 42MB and still pushing :/
[13:11] <lifeless> I suspect its not stacking
[13:11] <lifeless> thats -huge-
[13:12] <lifeless> pushing a new db-devel branch with the default behaviour should be much smaller than that
[13:15] <bigjools> I killed it
[13:15] <bigjools> it's usually around a 14MB push
[13:27] <bigjools> lifeless: so I am guessing that possibly my previous attempts to push on a stacked branch have tainted something, this bugger will no now longer push up and stack even on db-devel it seems
[13:27] <bigjools>  30908kB    37kB/s \ Fetching revisions:Inserting stream:Estimate 139517/1074537
[13:29] <lifeless> bigjools: yes, nuke it and start over.
[13:29] <bigjools> lifeless: gah
[13:29] <lifeless> from orbit if you can
[13:29] <bigjools> lifeless: you mean a local nuke?  I already nuked on LP
[13:29] <lifeless> I've documented what we need to do to make db-devel pushes fast ongoing
[13:29] <lifeless> bigjools: no, just on lp
[13:30] <lifeless> bigjools: 'delete branch' that is
[13:30] <bigjools> lifeless: well it dint wurk :)
[13:30] <lifeless> hmm
[13:30] <lifeless> 0030 here
[13:30] <lifeless> I has to go
[13:30] <bigjools> I will make an entirely fresh branch
[13:30] <bigjools> ah, go then :)
[13:30] <lifeless> perhaps spiv or vila or someone can give you a hand ?
[13:30] <lifeless> nn
[13:39] <LPCIBot> Yippie, build fixed!
[13:39] <LPCIBot> Project db-devel build #595: FIXED in 5 hr 1 min: https://lpci.wedontsleep.org/job/db-devel/595/
[13:49] <henninge> adeuring: Hi
[13:50] <henninge> adeuring: Can we have the call at half past, please?
[13:51] <henninge> adeuring: I'll am having lunch now.
[14:12] <adeuring> henninge-lunch: ok; let's do the standup at 1330 UTC
[14:34] <henninge> abentley: Hi!
[14:34] <abentley> hi!
[14:34] <henninge> abentley: stand up?
[14:34] <abentley> henninge: sure.
[15:07] <wgrant> bigjools: Before I disappear...
[15:07] <wgrant> bigjools: You're not supporting separate binary overrides?
[15:07] <bigjools> yarp?
[15:07] <bigjools> not for syncs
[15:08] <wgrant> Hmm. Interesting. OK.
[15:08] <bigjools> binary syncs?  no :)
[15:08] <wgrant> This isn't just syncs.
[15:08] <wgrant> It's going to immediately be used for security updates too.
[15:09] <wgrant> Still, should be better than it is now, as long as you make overrideBinary throw an error.
[15:10] <bigjools> security updates are not going through this job code yet, and I don't intend to complicate this project by extending it ad infinitum
[15:10] <wgrant> True.
[15:10] <wgrant> (three copy mechanisms, yay)
[15:10] <bigjools> so, I always intended it to happen later
[15:11] <bigjools> yes, but we're heading in the right direction
[15:11] <wgrant> Yeah.
[15:11] <bigjools> and we'll have the One True Way Of Copying
[15:11] <wgrant> This is something that will be able to subsume the other two, right.
[15:11] <bigjools> which will also make a shedload of oopses disappear
[15:11] <wgrant> And it's more easily mergable with uploads.
[15:13] <wgrant> At least we are really close to being able to delete delayed copies.
[15:13] <wgrant> That will all be worth it.
[15:13] <bigjools> also, the override policies are a bit of a pain with regards to detecting NEW
[15:13] <wgrant> Oh?
[15:13] <wgrant> I think they probably need extension.
[15:13] <wgrant> To return NEWness explicitly.
[15:13] <bigjools> the way they're written, you can only do it with a combo of two policies
[15:14] <bigjools> which is what one of them is doing by using .missing()
[15:14] <wgrant> So we seed it with the origin overrides and everything NEW, override them with target overrides (unsetting NEWness where appropriate), etc.
[15:16] <wgrant> Anyway, I should depart.
[15:17] <bigjools> I am doing it differently now
[15:17] <bigjools> good night anyway
[15:53] <henninge> adeuring: did you see Francis' comment on your  MP?
[15:53] <adeuring> henninge: not, not yet
[15:54] <adeuring> henninge: I'll add the things he suggested
[15:55] <henninge> adeuring: ok. Actually, I don't think I'll be able to finish your review today. Do you want me to give it back or shoudl I continue in the morning?
[15:56] <adeuring> henninge: I don't mind that much. If you fancy to look at it tomoorw, that would be fine, but i can also ask tomorrow's OCR
[15:57] <henninge> adeuring: ok, I'll give it back and see what the morning brings.
[16:06] <LPCIBot> Project windmill-db-devel build #343: STILL FAILING in 1 hr 8 min: https://lpci.wedontsleep.org/job/windmill-db-devel/343/
[16:50] <LPCIBot> Project windmill-db-devel build #344: STILL FAILING in 43 min: https://lpci.wedontsleep.org/job/windmill-db-devel/344/
[17:21] <abentley> bigjools: I am exposing Archive.external_dependencies over the web service.  Should validate_external_dependencies move to the model, so that invalid dependencies cannot be set?
[17:21] <bigjools> abentley: yes, there's no much choice since we don't have a browser layer for the api
[17:22] <abentley> bigjools: I guess the other option would be to export it read-only, and supply a mutator that accepted structured data.
[17:23] <bigjools> abentley: no, that would be a bad idea, we need to validate it or it can cause all builds to fail
[17:24] <abentley> bigjools: I think a structured mutator would make it impossible to supply invalid data.
[17:25] <bigjools> famous last words ;)
[17:25] <bigjools> the field is a *horrible* hack anyway, don't spend too much time on it because I want to remove it in the future
[17:26] <abentley> bigjools: Sure, happy to do it the easy way.
[17:27] <bigjools> once the people who use it are using derived distros in LP then it will get removed
[17:31] <LPCIBot> Project windmill-db-devel build #345: STILL FAILING in 41 min: https://lpci.wedontsleep.org/job/windmill-db-devel/345/
[18:27] <LPCIBot> Project windmill-db-devel build #346: STILL FAILING in 41 min: https://lpci.wedontsleep.org/job/windmill-db-devel/346/
[19:37] <lifeless> morning
[19:57] <lifeless> flacoste: hiya
[19:57] <lifeless> flacoste: can talk whenever you want.
[19:59] <flacoste> lifeless: give me 10 minutes
[19:59] <lifeless> cool
[19:59] <lifeless> I'll pat le chât some more
[20:04] <flacoste> lifeless: ok, skype me whenever you want
[20:37] <LPCIBot> Project windmill-devel build #154: STILL FAILING in 1 hr 12 min: https://lpci.wedontsleep.org/job/windmill-devel/154/
[21:05] <lifeless> flacoste: lib/lp/registry/model/person.py line 1309
[21:49] <lifeless> flacoste: launchpad-owner -
[21:49] <lifeless>  48 | -owner$              | Reserved for mailinglists                                           |
[21:49] <lifeless> flacoste: thats why
[21:55] <flacoste> lifeless: makes sense, then launchpad-manager?
[21:55] <lifeless> and done
[21:55] <lifeless> launchpad-leader
[21:55] <flacoste> thanks
[21:55] <lifeless> you can change if you like
[21:55] <flacoste> even better
[21:55] <flacoste> i prefer to be a leader than a manager :-)
[21:55] <lifeless> launchpad-leader launchpad-architect launchpad-strategist
[21:55] <lifeless> all setup
[21:55] <flacoste> awesome
[21:55] <lifeless> mailing -dev now
[21:56] <lifeless> the owner of launchpad-leader needs tweaking I guess
[22:00] <lifeless> and done
[22:01] <lifeless> flacoste: I've made you owner of -leader
[22:01] <lifeless> flacoste: you can hand it off to ~canonical-cdo-manager if you want :)
[22:02] <flacoste> :-)
[22:02] <lifeless> however https://launchpad.net/~launchpad-security/+members can be sorted out now \o/
[22:05] <flacoste> lifeless: done
[22:05] <lifeless> flacoste: not much point having jml & I as regular members ;)
[22:05] <lifeless> flacoste: we get that via ~launchpad
[22:06] <lifeless> Launchpad strategist2 minutes ago –Approved
[22:06] <lifeless> ahha! now done :)
[22:07] <lifeless> and now I can fix up the description :)
[22:07] <flacoste> :-)
[22:07] <flacoste> yep, all done
[22:07] <flacoste> and i did ~launchpad also
[22:08] <lifeless> cool
[22:09] <lifeless> I've changed the description to 'The contact point for security issues in the Launchpad software (https://launchpad.net/launchpad-project).'
[22:09] <lifeless> a little more open and a little less confusing IMNSHO
[22:10] <lifeless> flacoste: wow, we have 56 engineers !
[22:11] <flacoste> i wish!
[22:12] <lifeless> beuno and rockstar still there
[22:12] <lifeless> and tim
[22:12] <flacoste> and salgado and mwh
[22:12] <lifeless> I don't know if it matters
[22:12] <lifeless> the big thing for me was -security fixup
[22:13] <flacoste> does it matter, the trouble is, i don't know either
[22:13] <lifeless> now thats done, I'm going to go workup some fake numbers for test performance :)
[22:13] <flacoste> mwh and salgado do review branches from time to time
[22:13] <flacoste> but it might not matter
[22:13] <lifeless> I was wondering
[22:13] <lifeless> why does -security go to a mailing list ?
[22:14] <flacoste> archiving
[22:14] <flacoste> i think
[22:14] <flacoste> the same reason launchpad-bugs was in a way
[22:14] <lifeless> so we need those lists to accept any From: ?
[22:15] <lifeless> I wonder if removing the list would have any negative effect
[22:15] <lifeless> folk would get the mails by default (because -security gets a subscription to security bugs)
[22:15] <Ursinha> anyone here knows what dates launchpad use to search for modified_since tasks (lp.searchTasks)?
[22:16] <lifeless> the one on bug I think
[22:16] <cody-somerville> lifeless, -security is also the bug supervisor
[22:16] <cody-somerville> lifeless, so we'd start getting all bug e-mails
[22:16] <lifeless>  date_last_updated      | timestamp without time zone | not null default timezone('UTC'::text, now())
[22:16] <lifeless> cody-somerville: no, supervisor does not imply subscription
[22:16] <cody-somerville> when did that change?
[22:17] <lifeless> a while back - years.
[22:17] <lifeless> it surprised me too :)
[22:17] <Ursinha> thanks lifeless
[22:17] <flacoste> really?
[22:19] <lifeless> flacoste: cody-somerville: just checked
[22:19] <lifeless> you will laugh
[22:19] <lifeless> if there is *no* supervisor, the owner gets a pseudo structural subscription.
[22:19] <lifeless> If there is a supervisor, they do not get mailed.
[22:20] <cody-somerville> that can't be right. I just got an e-mail for a bug because of being indirectly a member of the team thats the bug supervisor
[22:20] <lifeless> lib/lp/bugs/model/bug.py line 2067
[22:20] <lifeless> cody-somerville: that team may have a structural subscription
[22:20] <lifeless> whats the team ?
[22:20] <cody-somerville> launchpadlib-developers
[22:21] <cody-somerville> either way, launchpadlib-developers don't show up on the bug as subscribed but I got notified which is confusing in its self
[22:21] <lifeless> cody-somerville: https://launchpad.net/~launchpadlib-developers/+structural-subscriptions
[22:22] <lifeless> so supervisor *stops* mail to owner and delegates setting some fields
[22:22] <lifeless> separately the supervisor may have a structural subscription
[22:24] <cody-somerville> something must have created subscriptions for all the bug supervisors
[22:25] <cody-somerville> btw, whats the difference between staging and qastaging?
[22:26] <lifeless> staging runs the proposed next schema
[22:26] <lifeless> qastaging runs the live schema
[22:26] <lifeless> we qa *all* our deploys on qastaging
[22:26] <lifeless> we check db patch times on staging
[22:26] <lifeless> there are some other minor differences but they are historical not intended: as and when we can we will eliminate them
[22:27] <cody-somerville> lifeless, I just tested. I created a project on qastaging and set the bug supervisor and it created a (structural?) subscription.
[22:27] <lifeless> flacoste: https://launchpad.net/~launchpadlib-developers is owned by leonardr
[22:27] <lifeless> cody-somerville: yes, thats to keep the old behaviour
[22:28] <lifeless> cody-somerville: you then delete the structsub
[22:28] <lifeless> and you're set
[22:29] <cody-somerville> lifeless, if private bugs are enabled by default, I assume the bug supervisor still gets directly subscribed?
[22:29] <cody-somerville> *private bugs by default is enabled
[22:29] <flacoste> lifeless: let's ask a losa to change ownership to launchpad-leader
[22:29] <lifeless> flacoste: I can't delete the launchpadlib-developers subscriptions atm. Should we re-own the team ? https://launchpad.net/~launchpadlib-developers/+members
[22:29] <lifeless> cody-somerville: I suspect so.
[22:30] <lifeless> cody-somerville: at least until the disclosure project gets structural-private-stuff-done
[22:30] <flacoste> lifeless: only a losa can change ownership, maybe ~launchpad should own the team
[22:30] <lifeless> flacoste: in the meantime, you're an admin - can you unsubscribe on https://launchpad.net/wadllib/+subscribe and https://launchpad.net/launchpadlib/+subscribe
[22:31] <lifeless> flacoste: ~launchpad works for me
[22:31] <flacoste> lifeless: done
[22:31] <flacoste> lifeless: if you can follow-up with the losa for the reown, i'd appreciate
[22:32] <lifeless> ok
[22:32] <lifeless> cody-somerville: I just realised my reply, meant to be a little cheeky could be read as snarky... i didn't mean it that way
[22:34] <lifeless> flacoste: elmo helped out. Tis done.
[22:39] <bigjools> "flacoste deactivated by lifeless" - best email subject evar
[22:43] <elmo> hahaha
[22:44] <flacoste> indeed, i lol when i saw it
[22:44]  * lifeless aims to please
[22:45] <flacoste> bigjools: do we have any soyuz components facility or it's SQL-maintained?
[22:46] <flacoste> for example, can we select which components are allowed within a distroseries
[22:46] <bigjools> flacoste: SQL, and yes in ComponentSelection
[22:47] <bigjools> although trying to change it might be futile since there's a lot of hard-coded crap :/
[22:47] <lifeless> bigjools: we want to add a component main to principia
[22:47] <bigjools> should be fine
[22:48] <bigjools> there's bits and bobs that expect universe to be there as well though
[22:49] <lifeless> in soyuz ?
[22:49] <bigjools> yes
[22:49] <lifeless> or more registryish code?
[22:49] <flacoste> what happens if there are no components selection
[22:49] <flacoste> ?
[22:49] <bigjools> I think it only affects uploading
[22:50] <lifeless> the former won't matter as we're not doing builds - nothing beyond pushing to branches
[22:50] <flacoste> well
[22:50] <lifeless> s/won't/shouldn't/
[22:50] <lifeless> :)
[22:50] <flacoste> i was going to reuse Archive.checkUpload for the official package branch permission
[22:50] <flacoste> and that's where i encountered components :-)
[22:50] <flacoste> seems like the parameter is required
[22:50] <lifeless> yes
[22:51] <bigjools> yes, because there's lots of ways of getting permission to upload
[22:51] <bigjools> component being one of them
[22:51] <flacoste> actually
[22:52] <flacoste> seems like component can be None
[22:52] <flacoste>         if (component is not None
[22:52] <flacoste>             and strict_component
[22:52] <flacoste>             and not self.checkArchivePermission(person, component)):
[22:52] <flacoste>             return NoRightsForComponent(component)
[22:52] <flacoste>         return None
[22:52] <flacoste> so not caring about component here might just work
[22:52] <flacoste> for principia at least
[22:52] <flacoste> for Ubuntu... what would component=None means
[22:52] <bigjools> yeah if you don't care about component don't specify ut
[22:53] <bigjools> it will check the other permissions; per-package and packageset
[22:53] <flacoste> bigjools: would using component=None work in the context of bug 365098
[22:53] <_mup_> Bug #365098: Anyone who can write to a sourcepackage should be able to set the official package branch <lp-code> <package-branches> <Launchpad itself:Triaged> < https://launchpad.net/bugs/365098 >
[22:53] <bigjools> flacoste: if it's per-package, should work yeah
[22:54] <flacoste> or per-package set
[22:55] <bigjools> yep
[22:55] <flacoste> from the code, i understand that the person must have permission to one component at least to get to the end of that method
[22:56] <bigjools> if it got that far and if you don't have any component permissions it'll fail you there