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

mwhudsonjelmer: the diff on  https://code.launchpad.net/~jelmer/launchpad/bzr-code-imports/+merge/70684 *still* seems to have extraneous changes00:09
mwhudsonjelmer: which must be quite frustrating by now :)00:09
mwhudsonjelmer: ah, seems you merged db-devel?00:09
jelmermwhudson, yeah, as it has the bzr-2.4b4 branch merged, which is targetted to db-devel00:17
jelmermwhudson, let me resubmit00:17
lifelesspop quiz00:19
lifelesswho cares about informational oopses?00:19
mwhudsonlifeless: people presumably care about the ones made with ++oops++00:19
lifelessmwhudson: I don't think they would suffer if that was not 'informational'00:20
lifelessjelmer: does the code change depend on schema changes that are not yet deployed ?00:20
jelmerlifeless: No, but it has merged some revisions from an older revision of db-devel which seems to confuse the MP code00:24
lifelessso we don't deploy from db-devel00:25
lifeless-ever-00:25
lifeless-at all-00:25
lifelesslanding it on db-devel will just cause conflicts and pain00:25
jelmerok00:25
lifeless(conflicts when folk changing devel conflict with your code)00:25
lifeless(pain when conflicts happen :P)00:25
lifelessis it perhaps triggering a criss-cross merge case?00:26
lifelesswhat happens when you merge (but don't commit) devel into it ?00:26
jelmerconflicts :P00:27
lifelessjelmer: so, I would fix that :P00:27
lifelessand propose to devel00:27
lifelessmwhudson: I'm thinking to nuke the 'informational' flag00:27
lifelessmwhudson: and just use specific exceptions like 'ProfilingOops' instead to filter them on the reporting side00:27
mwhudsonlifeless: ah i see00:28
lifelessmwhudson: things like the hwdb code that logs an oops when it gets a POST missing a field00:28
lifelesssuggest that the informational side has been misunderstood and misused00:28
wgrantlifeless: I think it is useful to have an OOPS-like mechanism for non-critical logging.00:29
lifelesswgrant: well, I'm going through our uses00:29
lifelesswgrant: so far I've found one case that makes sense - profiling / ++oops++ - both of which use a custom exception00:30
lifelessthe disconnected handling in publisher, for instance - that deserves to be a real oops00:35
lifelessits a problem if its happening00:35
lifeless(it should never be happening)00:35
lifelessyep, all uses were either a) noddy or b) trivially classified on the exception anyway.00:52
lifeless*nuke*00:52
sinzuiwallyworld_, did you need me to look at something?00:55
wallyworld_sinzui: yes, just to approve the ff request: https://wiki.canonical.com/InformationInfrastructure/OSA/LaunchpadProductionStatus#Feature_Flag_Changes00:55
wallyworld_thanks00:55
LPCIBotProject devel build #976: STILL FAILING in 6 hr 7 min: https://lpci.wedontsleep.org/job/devel/976/01:44
lifelessjelmer: lol; meep - your branch is really confused isn't it :)01:47
wallyworld_StevenK: want a trivial review? https://code.launchpad.net/~wallyworld/launchpad/remove-answer-contact-827051/+merge/7163202:07
nigelbwallyworld_: heya02:32
wallyworld_nigelb: hi, got your email, still catching up with things, sorry haven't replied yet02:32
lifelessspeaking of reviews02:33
lifelesswallyworld_: still pending on loggerhead;sorry02:33
lifelesshttps://code.launchpad.net/~lifeless/python-oops-datedir-repo/extraction/+merge/71633 and https://code.launchpad.net/~lifeless/launchpad/useoops/+merge/7163402:33
wallyworld_lifeless: np. i was going to remind you later today :-P02:33
lifelessare the next stage of my ripping oops out of LP02:33
nigelbwallyworld_: great thanks :)02:33
wallyworld_nigelb: will look very shortly02:34
nigelb\o/02:34
lifelessI think the only thing left is an http module and either a canonical module or some sensible-defaults copied into the core oops system.02:34
jtvAny reviewers in the house?  Got a job for you!  https://code.launchpad.net/~jtv/launchpad/bug-826659/+merge/7163602:52
jtvShort diff, long cover letter because I vent some steam and formulate some rules for testing.02:53
wallyworld_jtv: i'll look if someone can mentor02:59
jtvhi wallyworld_!  Thanks.  I see a slight conflict of interest with me doing that, obviously.  :)02:59
wallyworld_jtv: yep :-) i and looking at something for nigelb just now but will do the review asap after that03:00
jtvThanks.  Let me know if you need any mentoring for branches other than mine.  And maybe it's time to look at graduation — I have a feeling we may have lost our procedure for that.03:01
wallyworld_nigelb: your @call_with(user=REQUEST_USER) is having no effect since it's in the wrong place.03:09
wallyworld_nigelb: you need to add this to an interface method and register the interface with the web service parsing infrastructure so it gets slurped up03:10
nigelbwallyworld_: oh. *thats* why.03:10
wallyworld_nigelb: there's various webservice.py files in the code base which is where the webservice stuff looks to see what it needs to register03:11
wallyworld_with your code at the moment, user is set to None03:11
nigelbah, that explains that.03:11
wallyworld_you could pick an example interface what is exported to the web service and model what you need to do on that03:12
nigelbso, write a wrapper over the search function using a webservice interface?03:13
wallyworld_you also should write a test for the web service side of it03:13
nigelbI should write a javascript test too. I've been lazy ;)03:13
wallyworld_nigelb: you don't need to write a wrapper - you just need to figure out how to get the current logged in user inside your check_bug_links method.03:14
nigelbah!03:15
wallyworld_your code looks ok so long as you know the user03:15
wallyworld_we uased to use ILaunchbag to arbitarily get the user for a given interaction but that's frowned upon now03:16
StevenKThat's because ILaunchBag needs to die horribly.03:16
StevenKAnd painfully.03:16
wallyworld_the @call_with is one way of doing it if the method is an existing web service03:16
wallyworld_there may be a better way without having to export teh method as a web service but i'm not sure off hand what that would be03:17
nigelbthis has been done before? and I just need to find some example code and work my code the same way?03:17
wallyworld_StevenK: yes, agree about ILaunchbag. do you know any other way to get the logged in user other than @call_with ?03:17
wallyworld_nigelb: @call_with is used in many places03:18
nigelbwallyworld_: heh, except I didn't understand the correct way of using it :)03:18
wallyworld_if you are in a view, you can type self.user i think. but we are not in a view here03:19
wallyworld_i don't know enough about the zope machinery to understand how the user is extracted from the request03:19
nigelbthe only place call_with works is in interfaces?03:21
wallyworld_nigelb: LinkChecker is initialised with the request object03:21
wallyworld_nigelb: i think you can get the user from in there03:21
wallyworld_nigelb: afaik, all web service decorators need to be added to interface methods03:21
nigelbah, cool.03:22
wallyworld_nigelb: try user = request.principal.person03:23
wallyworld_not sure if that's kosher but it works03:23
nigelbheh, okay :)03:23
wallyworld_nigelb: for anonymous requests, i suspect principal will be None so check for that03:24
nigelbsure, will do03:24
wallyworld_so forget the web service stuff03:25
mwhudsoni think IPerson(request.principal) might be more kosher03:28
lifelesswallyworld_: @call_with for web service methods/properties is best practice.03:29
wallyworld_mwhudson: ah, thanks03:29
wallyworld_lifeless: it's not exposed as a web service method atm03:29
wallyworld_otherwise @call_with would be the best solution i agree03:30
wallyworld_nigelb: see mwhudson's comment above - use IPerson(request.principal)03:31
nigelbwallyworld_: already changed code :)03:32
wallyworld_excellent03:32
lifelesswallyworld_: ah, I didn't think it could be anything -other- than a web service clal03:32
lifelesswallyworld_: :)03:32
wallyworld_lifeless: it's defined in zcml as a browser:page implementation03:34
wallyworld_and the __call__ method is implemented03:34
lifelessyeah, I can imagine03:34
wallyworld_web service is sort of overkill for what it does perhaps, it's only an "internal" api03:36
lifelessin principle the web service would take care of encoding, auth checking, marshalling etc03:36
lifelessdoing it by hand is, well, by hand.03:37
nigelberr, what's the result of a searchBugIds call? I don't seem to be able to understand this.03:37
nigelbHere's the call I'm making and its associated traceback http://paste.ubuntu.com/666969/03:38
lifelessa list of ids :)03:38
lifelessnigelb: your bug_ids set is full of strings.03:39
lifelessnigelb: also, that python loop will be -very- slow03:39
lifelessnigelb: you need to map it into a set -03:40
lifelessfound_ids = set(bug_ids)03:40
lifelessmissing_bugs = found_ids - bugs03:40
nigelboh.03:40
nigelbI didn't know I could do that :|03:40
lifelessnigelb: I wouldn't use an english description either, you want minimal data flowing - this is an implementation detail, not a UI03:41
lifelessso the thing you serialise out should just be the ids of the inaccessible bugs, no explanation why03:41
nigelblifeless: the why explanation shows up as tooltips.03:41
lifelessnigelb: there is only one explanation03:41
nigelbthat's how the javascript end of things seem to be configured.03:41
lifelessnigelb: sure, but you can do that on the client.03:42
wallyworld_jtv: you and your fancy latin words03:42
lifelessnigelb: disclosing whether the bug was private or just a gap in the bug sequence would leak information about the bug.03:42
nigelbheh, that means creating a new javascript function on the client ;)03:42
jtvwallyworld_: I'm sorry if I urinated you off, amice03:42
lifelessnigelb: well, up to you where you do it; just saying what I see ;)03:43
wallyworld_jtv: no, you didn't, just saying :-P03:43
jtv:)03:43
nigelblifeless: heh, my first non-trivial branch, so I think I might aim for perfection or as much close to it as I can get.03:43
lifelessnigelb: as long as its fit for purpose03:45
lifelessnigelb: beyond that, shrug :)03:45
nigelbheh03:45
nigelblifeless: for some reason the missing_bugs = found_ids - bugs isn't working04:14
lifelessnigelb: break in with pdb and have a look around04:17
nigelbin the middle of doing that04:18
nigelbwait, what.04:26
nigelbsearch returns bug ids as int.04:26
* nigelb cries04:26
nigelbis there a way to convert that to string or make it return strings?04:26
lifelessnigelb: like I said, your thing was full of strings04:27
lifelessnigelb: no, you should be converting your strings to ints before you query in fact ;)04:28
nigelblifeless: bug numbers can't exceed the length of ints, can't they?04:28
lifeless[because the data type is int]04:28
lifelessnigelb: do you mean as in MAXINT ?04:28
nigelbyeah04:28
lifelesswe can upgrade the column to 64-bit before that04:29
lifelessbut we'll be a few decades yet04:29
nigelboh. ok.04:29
nigelbIT WORKS \O/04:35
StevenKlifeless: So I should write a loop to create 200,000 bugs to help it along?04:36
lifelessStevenK: ...04:38
lifelesspoolie: around ?04:39
StevenKlifeless: :-P04:41
pooliehi lifeless, otp atm04:44
poolieto statik04:44
lifelesskk04:44
lifelesswgrant: you are terrible at leave.04:45
wallyworld_lifeless: like you can talk04:45
StevenKHaaha04:45
StevenKwallyworld_ is right, you so can't.04:45
wallyworld_mr pot, meet mr kettle04:45
lifelesswallyworld_: I'm talking from a position of knowledge.04:45
lifelessso I'm thinking about oopses here04:47
wgrantlifeless: And I've just fallen into the trap of correcting incorrect question answers.04:47
lifelesswgrant: i hope you take time in lieu :)04:48
wgrantHah.04:48
wgrantIt will only take a few minutes.04:48
lifelesscognitive overhead :)04:48
lifelessI *know* it takes me a fortnight +- to spin down from work, so I plan leave accordingly04:48
wallyworld_that's a loooong time04:49
lifelesswallyworld_: yes, and if you think back to last december - after about two weeks I was around much less04:49
wgrantIndeed.04:49
lifelesswallyworld_: if I take < 2 weeks leave with the intent of relaxing, its an utter fail04:50
wallyworld_lifeless: i was in NZ for most of Dec, so didn't notice :-)04:50
lifelesswallyworld_: nice, did you drive around ?04:50
lifelesswgrant: btw, talking about generic names04:50
lifelesshttp://pypi.python.org/pypi/Products.Collage/1.3.604:50
lifelesswgrant: 'Products' as a top level package in python.04:51
wallyworld_yes, started in Dunedin, all through south island, then onto north island04:51
wgrantlifeless: Sounds like Zope.04:51
wgrantIs it?04:51
lifelesswgrant: plone, so more or less yes04:51
wgrantI think Zope 2 is allowed to have the global namespace.04:51
wgrantRIght.04:51
wgrantSince Zope invented just about everything, and they use sensible namespaces now :)04:52
lifelessso anyhow04:52
lifelessI'm thinking about how to pass in things like the request object, urls, exc_info04:52
lifelessthe generic way to wire up for DI would be to supply a container callback04:53
lifelessbut this is going to be fuugly for the simple case04:53
lifelessso I'm thinking of having a 'context' parameter to config.create()', and documenting that on_create hooks will receive this, and it can be used to psas things to the hooks, and some well known hooks will look for things there.04:54
lifelesslike - attaching exception info would look for context['exc_infp']04:54
poolielifeless: is the preforking server unblocked now? or almost?04:54
lifelesspoolie: not until we have the disconnect stuff done04:54
lifelesswgrant: what do you think? The alternative seems to be tighter coupling between report population/creation and the point the report is created.04:55
lifelessStevenK: wallyworld_: ^04:55
wallyworld_lifeless: i'm not sure i have enough context - you want to do IOC with the new oops module?04:56
wallyworld_to allow the oops module to poke stuff back into the container?04:57
lifelesswallyworld_: I want it to play with IOC environments (like lp's) and with non IOC stuff (like LaunchpadScript, loggerhead, gpgverify)04:57
lifelesswallyworld_: so here is an example case04:57
lifelessin LP we use zope.exceptions.exception_formatter to format the traceback in an oops report04:58
lifelessthis is pretty zope specific04:58
lifelesseven though, thankfully, its a the edge of the dependency graph I think.04:58
wallyworld_yes, i can imagine it would be zope specific04:59
lifelessso oops *could* use that04:59
lifelessand have config.attachException(report, exc_info)05:00
lifelessthis would drag in zope.exceptions and zope.interfaces05:00
lifelesswhich isn't too bad05:00
wgrantDid you know that imposing Zope dependencies aparent from zope.interface and zope.component is considered a crime against humanity?05:00
wgrants/aparent/apart/05:00
lifelesswgrant: well this is why the thought going into this05:00
lifelessan alternative would be to say 'if you want to attach an exception, do it yourself', but thats cruel.05:01
lifelessa third way would be to have an explicit config knob 'call this function to configure the traceback formatter'05:01
wallyworld_lifeless: i'd rather pass in some sort of context with redirects to the preferred implementation as you say05:01
lifelessthe way I am considering is to say 'put your exception in content['exc_info'], and your exception on-create hook will format05:01
lifelessif you want a different formatter, don't put the supplyed on-create hook in there, instead put your own one.05:02
lifelesssupplied.05:02
lifelessthis kindof shifts the complexity around05:02
lifelessbut05:02
lifelessI think it starts to pay off when you consider handling of 'request' objects05:02
lifelessand the like.05:02
lifelesswhere the core really shouldn't have any concept of such a beast.05:03
wallyworld_i don't think it introduces too much extra complexity any simple case05:03
lifelessso create(content=dict(request=current_browser_request(), exc_info=sys.exc_info(), program=sys.argv[0])05:04
lifeless)05:04
lifelessand let the hooks suck out what they want05:04
lifelessI'm down to *one function* to pick apart05:05
lifelessand then launchpadloggerhead can lose a canonical import, and gpgverify can work.05:05
wallyworld_maybe a namedtuple rather than a dict?05:05
lifelesswallyworld_: blah :)05:05
lifelesswallyworld_: theres no particular reason to make it immutable05:06
wallyworld_not so much to make it immutable but for type safety and extensibility05:06
wgrantHow's that more typesafe or extensible?05:06
lifelessyou'll need to expand on how it gives those in a way a dict would not ?05:06
wallyworld_i guess you could subclass dict if you needed to05:07
StevenKTo do what?05:07
wallyworld_add extra functionality besides name-values pairs to the context05:07
lifelesswallyworld_: uhhh, you've *totally* lost me.05:07
lifelesswallyworld_: so the point of the context is to pass data from outside 'create' to each on_create hook, without needing create-and-every-callbacj to take **kwargs05:08
wallyworld_context could be more than just a container for name-value pairs- it couild actually provide some other encapsulated functionality05:08
lifelesswallyworld_: it could; what do you have in mind ?05:08
wallyworld_just a sec, otp05:08
wallyworld_lifeless: i dont' have any specific functionality in mind for this case, but in practice such context objects can be used for more than data passing - they can provide useful behaviour such as access to container specific services05:13
wallyworld_so a dict may be too simple05:13
lifelesswallyworld_: so, I would say that if someone in a container environment needs access to the container, they do:05:13
lifelesscontext=dict(container=realcontainer, exc_info=sys.exc_info(), ... etc)05:13
lifelesswallyworld_: and have their custom on_create hook do content['container'].containerservicecall()05:13
lifelesswallyworld_: or even implement __getitem__ on their container and pass it in directly, if the protocols line up well enough05:14
lifelesswallyworld_: remember we're duck typed, so there is no need for it to *be* a dict, not even a subclass :)05:15
wallyworld_that would work. i guess it comes down a little to personal preference. i tend to dislike using simple data structures as integration "glue" since often i find more is needed05:15
lifelessI've come to really appreciate minimalism05:15
wallyworld_but maybe duck typing removes the need for that as you say05:16
lifelessanyhow, that can be iterated on05:18
lifelessgiven we have 1(1!) user so far :P05:18
wallyworld_sure, so +1 for option 3 :-)05:18
wallyworld_however it's done, we just need to be clear on the contract between the modules and ensure that is satified from both sides05:20
wgrantNow now, clear and sensible contracts are not the Launchpad way.05:20
poolielifeless: i'm off the phone but i might have some lunch now05:22
pooliewill ping you after05:22
wallyworld_lifeless: quick question - what's the storm syntax for a query term checking for "is null" that I can pass to "where=And(*terms)"? instead of [MyClass.property == 'name'] I want [MyClass.property is null] or whatever05:30
lifelesspoolie: ok05:34
lifelesswallyworld_: ==None05:34
StevenKwallyworld_: == None05:34
wallyworld_lifeless: StevenK: thanks!05:35
StevenKwallyworld_: I think you've broken devel on buildbot05:36
StevenKFailure in test lp.answers.tests.test_questiontarget.QuestionTargetAnswerContactTestCase.test_canUserAlterAnswerContact_owner05:36
wallyworld_StevenK: i'll look05:37
wallyworld_StevenK: ffs. i didn't remove a test when i did the revert earlier05:43
StevenKFAIL05:43
wallyworld_yes :-(05:43
StevenKThere's a JS test and a python test both failing05:43
wallyworld_i'll check the js one05:44
StevenKRARGH05:45
StevenKStupid librarian logs attached to test failures05:45
StevenKUSELESS05:45
wallyworld_StevenK: which js test? bb only shows 1 failure, the py one05:46
wgrantStevenK: You should fix the fixture to only attach the log for the current test.05:47
StevenKwgrant: I should fix the fixture to not attach the log in the first place!05:47
StevenKwallyworld_: Read the summary, there are two.05:47
lifelessStevenK: attaching the log is great05:48
lifelessStevenK: what needs to change is to only attach the *new entries* for a test.05:49
StevenKSure, great. 3,800 lines between the test failure and the traceback05:49
jtvAny review mentors available?  https://code.launchpad.net/~jtv/launchpad/bug-826659/+merge/7163605:56
StevenKWell. Bugger.05:57
StevenKCalling the column sourcepackagename hurts when you join against SPR05:58
StevenK:-(05:58
wallyworld_StevenK: can you possibly +1 this? do I land with 'testfix' now or wait till bb barfs? https://code.launchpad.net/~wallyworld/launchpad/remove-tests-for-badrev-13696/+merge/7164206:02
jtvwgrant: are you reviewing today?06:02
StevenKjtv: wgrant is on holidays06:02
jtvThen he shouldn't be here!06:02
wallyworld_jtv:  *supposed* to be06:03
jtvAh yes06:03
StevenKwallyworld_: r=me06:03
jtvWell, I'll just go have lunch then or something.06:03
StevenKwallyworld_: If you land it now, you may have to force buildbot when it finishes.06:03
jtvwallyworld_: I added a follow-up note on my MP, even though I'm not formally mentoring that one.  :)06:04
wallyworld_jtv: thanks, will look06:04
wallyworld_StevenK: i'll be at soccer when it barfs but will force as soon as i return, about an hour later. so i'll land now so it's all ready06:05
lifelessStevenK: since you're familiar with the code... https://code.launchpad.net/~lifeless/python-oops/extraction/+merge/71510 please?06:06
StevenKlifeless: 1169 lines!?06:07
lifelessStevenK: bah, thats the old one.06:07
lifelessone sec06:07
lifelessStevenK: https://code.launchpad.net/~lifeless/python-oops-datedir-repo/extraction/+merge/71633 is the one I meant.06:07
StevenKlifeless: So, calling the new column on SPPH sourcepackagename leads to problems06:08
lifelessStevenK: existing queries barf ?06:08
StevenKRight06:08
lifelessStevenK: lets use a different name; easier and safer than fixing all queries in advance.06:08
lifelessspn_cache or something06:08
StevenKlifeless: I've switched to 'name'06:09
lifelessStevenK: I'd prefer something other than that, because of 'name' being the url component in so many other classes.06:09
lifelessStevenK: however, up to you.06:09
StevenKlifeless: 'spn' / 'bpn' ?06:09
lifelessStevenK: sure06:09
lifelessSubject: RETURNED MAIL: DATA FORMAT ERROR06:11
lifelessheh06:11
StevenKlifeless: r=me, with a slight wrist-slap06:12
lifelesssexy times06:14
lifelessah yes, the version number.06:15
lifelessthat was oversight in the move before06:15
wallyworld_StevenK: if you are around in about 1hr30 and force a build, i'll buy you a beer :-)06:48
StevenKwallyworld_: You should have landed it with [testfix]06:50
wallyworld_StevenK: bollocks. can i change it now?06:51
StevenKNo, it's landed.06:52
wallyworld_bollocks x 206:52
* wallyworld_ gotta run to soccer06:53
poolielifeless, hello?07:05
lifelesscan has reviews? tiny: https://code.launchpad.net/~lifeless/python-oops/extraction/+merge/71644 and getting big but its really simple stuff... just rearranged code: https://code.launchpad.net/~lifeless/launchpad/useoops/+merge/7163407:09
lifelesspoolie: hi07:09
lifelesspoolie: sure, if you want to ring the landline ?07:09
lifelesspoolie: ?07:25
LPCIBotProject db-devel build #812: STILL FAILING in 5 hr 50 min: https://lpci.wedontsleep.org/job/db-devel/812/07:35
poolieoh sorry, sure07:42
adeuringgood morning07:48
stubhttp://bazaar.launchpad.net/~launchpad-pqm/launchpad/stable/view/head:/lib/canonical/launchpad/webapp/dbpolicy.py?file_id=x_Andrew_Bennetts_%3Candrew.bennetts%40canonical.com%3E_Fri_Oct__1_11%3A57%3A48_2004_12702.0 is failing for me, but otherwise code browse was reasonably snappy08:09
stub"redirecting the request for this address in a way that will never complete"08:10
lifelessstub: bug 81944408:12
StevenKstub: O hai. I've had to rename {binary,source}packagename to {b,s}pn, but you think an index on just that column is fine to start with?08:14
stubWhy the rename, apart from long names suck?08:15
stubAn index on just that column is fine. If you know the queries it is needed for, we might be able to make a compound index that satisfies those queries as well as the population job.08:15
StevenKstub: Breaks existing queries that join against SPR and SPN08:16
stubI'm not sure I like that rationale. We know we need to fix code when changing the schema.08:16
lifelessstub: we can't be sure we've caught all the existing queries08:17
stubI would go for 'because the long names suck, so we should just use spn and bpn everywhere' but that doesn't solve your problem.08:17
lifelessstub: the reason for the breakage was a previously unique column name becoming non-unique + hand crafted queries not putting the table name in place08:18
stublifeless: You could say that about every new column addition we make, and it has never been a problem in the past.08:18
lifelessstub: previously we did code + schema changes in lockstep, with several days (or more) qa on staging08:18
lifelessstub: we're explicitly not doing that now...08:18
stubYes, and now we need to run the test suite with both /stable and /db-devel08:19
stubOr we are going to have to start naming new columns with UUIDs08:19
lifelessstub: well, its a risk assessment.08:19
stubYes, and next time we denormalize further we are going to call the column spn2?08:20
lifelessstub: I guess I'm saying I'm fine with a name that reduces the risk; if you want a more risky but more consistent name, I can live with that08:20
lifelessstub: I'd hope that we don't use spn unqualified, having learnt that lesson08:20
StevenKstub, lifeless: So, I will kill this ec2 run, and I will investigate fixing the queries that use the full name of SPN and BPN unqualified.08:21
stubI want consistent names. If we want to switch to spn/bpn  I'd like it to be consistent. This also gets tied up with migrating to text strings over integer ids08:21
lifelessstub: such a migration might be a pessimisation for some queries (absent trigrams...)08:22
stubYes. We don't know yet.08:22
lifelessstub: I think we need more investigation on that particular thing (though I know I was one of the proponents of it before :P )08:22
stubFor now, I'd rather stick with the full names and do two ec2 test runs (-b launchpad=stable, -b launchpad=db-devel)08:23
lifelessstub: given stable is merged to db-devel all the time, just db-devel should be robust08:23
StevenKstub: I know the test failures for db-devel anyway, so I will investigate those tomorrow.08:24
stubTrue. So this isn't any different from before then?08:24
lifelessstub: remember that someone could land a break in devel at any time; we probably need a deploy rule 'can only deploy a schema change if the current *live* revno has been tested by buildbot on db-devel'08:24
lifelessstub: we'll figure out all the corner cases soon :P08:24
lifelessmatsubara-afk: are you around ?08:25
=== matsubara-afk is now known as matsubara
stubYes. We knew there would be extra landing complexity and more branches for allowing live patches. People thought the trade off was worth it.08:25
matsubaralifeless, hey, yes. I'm in the QA sprint08:25
lifelessstub: yup, and I still do :P08:25
stubWhich reminds me, I have branches to land since I couldn't get my branch to push last night due to major sucky 'Net.08:26
lifelessmatsubara: I want to patch oops-tools. It wants its own db cluster - is that still correct ?08:26
matsubaralifeless, what do you mean by it wants its own db cluster?08:27
lifelessmatsubara: are there any docs on hacking it ? [the README.txt only talks about running locally...]08:27
=== almaisan-away is now known as al-maisan
matsubaralifeless, hmm README.txt is the closest I have for docs.08:28
stubStevenK: So you need to do what I was doing yesterday - separate branch from stable containing the required test fixes to land on devel, which gets merged into your db-devel so you can run the tests to ensure the required fixes really are the required fixes. And don't use devel for the source of your fixes or you risk leaking untested changes from devel -> db-devel.08:28
matsubaralifeless, are you not able to run it locally to test your changes?08:31
lifelessmatsubara: I don't know how to run its test suite ;)08:33
matsubaralifeless, make check08:33
lifelesslet me have another go at it :)08:36
lifelessmatsubara: I want to get rid of the custom oops parser08:39
matsubaralifeless, right. basically you'll have to add your package to the download-cache, update versions.cfg and setup.py with the new package, remove the code from src/oopstools/oops/models.py and update it to use the code in the package. Do you need help with this?08:42
lifelessmatsubara: hopefully not :P08:42
nigelbwallyworld_: my MP now works. I think I'll spend tonight / tomorrow morning writing tests.  Is there any more clean up that you'd suggest?08:44
=== gmb changed the topic of #launchpad-dev to: Performance Tuesday | https://dev.launchpad.net/ | On call reviewer: gmb | Critical bugs: 238 - 0:[#######=]:256
henningejml: Hi!09:13
StevenKDear Thunderbird, why are you taking up 1.2 cores?09:13
henningeStevenK: you will have to email that question, not put it on irc ...09:13
StevenKBwaha09:14
lifelessgmb: oh hai09:14
gmblifeless: Wotcher09:14
lifelesscan haz review?09:14
lifelesshttps://code.launchpad.net/~lifeless/python-oops/extraction/+merge/7164409:15
lifelessand09:15
lifelesshttps://code.launchpad.net/~lifeless/launchpad/useoops/+merge/7163409:15
gmblifeless: Sure. I'll attend to those presently.09:15
* gmb grabs a cup of tea before getting down to work.09:15
lifelessgmb: thanks!09:16
gmbnp09:16
Ursinhahey guys :)09:28
UrsinhaI have a team subscribed to several packages, is it possible to mute bugmail in only one of them?09:29
DavieyUrsinha: yes09:32
UrsinhaDaviey: using the ui?09:35
DavieyUrsinha: It might be team admins only.. but for example, https://bugs.launchpad.net/ubuntu/+source/euca2ools/+subscriptions09:36
DavieyI can edit the, "Ubuntu Server Team subscription" listed there09:36
UrsinhaDaviey: pedro was trying to edit the subscription of desktop-bugs of a package but there was no mute option09:42
lifelessmatsubara: so updated all the bits, ran make check:09:43
lifelessbin/test09:43
lifelessCreating test database for alias 'default'...09:43
lifelessTraceback (most recent call last):09:43
lifeless  File "/home/robertc/source/launchpad/oops-tools/parts/django/django/db/backends/postgresql_psycopg2/base.py", line 140, in _cursor09:43
lifeless    self.connection = Database.connect(**conn_params)09:44
lifelesspsycopg2.OperationalError: could not connect to server: No such file or directory09:44
lifeless        Is the server running locally and accepting09:44
lifeless        connections on Unix domain socket "/var/run/postgresql/.s.PGSQL.5433"?09:44
matsubaralifeless, does `psql -p 5433 lpoops` works for you? it looks like your postgres db for oops tools is not there09:45
lifelessmatsubara: thats what I was asking about needing a special cluster ! :)09:54
lifelessmatsubara: so the answer is 'yes, it needs a special cluster'09:54
danilosUrsinha, I believe muting is person-only, teams can't have mutes (i.e. since you can't stop bug mail without leaving the team, we introduced muting; if teams don't want bug mail for a certain package, they should unsubscribe basically)09:55
Ursinharight, doesn't apply for ubuntu use case :/09:57
pooliejelmer, re your mps for lptools09:58
pooliei think it's better to bring them in than to quibble about exactly how they're written09:58
poolieso, 3x +109:58
jelmerpoolie: gracias09:59
lifelessjelmer: btw that loggerhead open-branch thing is failing 1000x a day09:59
jelmerlifeless, I'm working on fixing it as we speak09:59
lifelessjelmer: so if you're going to do other stuff first, let me know so I can roll it back09:59
lifelessjelmer: ah cool09:59
matsubaralifeless, :-)10:00
lifelessmatsubara: the README.txt tells how t make a pg 8.3 cluster10:02
lifelessmatsubara: does that need to be updated ?10:02
matsubaralifeless, it should work the same for 8.4. if you can update: s/8.3/8.4/, I appreciate10:04
lifelessmatsubara: that seems happier10:06
allenapjelmer: It looks like the prereq in https://code.launchpad.net/~jelmer/launchpad/bzr-code-imports/+merge/71625 might be out of date; the diff is >3000 lines suddenly.10:11
jelmerallenap: Whoops, thanks - I'll set it back to wip for the moment while I get these other things sorted.10:12
gmbjelmer: I just approved https://code.launchpad.net/~jelmer/launchpad/bzr-2.4b4/+merge/71624. Want me to run it through EC2 for you?10:16
* gmb does so anyway10:20
jelmergmb: Thanks, though my current branch will actually conflict with it (and has higher priority)10:20
gmbjelmer: Oh, okay.10:20
jelmergmb: Thanks for the review though :)10:21
gmbnp :)10:21
lifelessgmb: thanks; sorry about the size10:21
gmblifeless: No worries. After years of reviewing Celso's branches, 1500 lines is nothing.10:22
lifelessgmb: and all fairly focused :)10:22
gmbIndeed10:22
tumbleweedquery: archive.getPermissionsForPerson returns an empty list when connected anonymously. Is there any good reason for this? (I can't find a related bug)10:40
lifelessprobably means yiou have no permission to read that persons details anonymously10:44
tumbleweedare such details not provided to non-ubuntu-developers?10:45
tumbleweedfor per-component permissions, it's pretty obvious from team membership10:45
lifelessubuntu has nothing to do with it10:46
lifelessif you're getting an empty list the api probably got a list with inacessible entries in it10:46
lifelesswhich it will filter10:46
lifelessso try logging in :)10:46
tumbleweedwhat I'm getting at is why does one need to be authenticated to read these10:46
lifelessthats a good question10:48
lifelesswhy shouldn't you be authenticated though ?10:48
tumbleweedbecause this is for ubuntu-sponsoring. There is no good reason to be authenticated10:48
tumbleweed(except this)10:48
poolie what does "expired token" mean?10:50
pooliethat the actual login has expired, or something else?10:50
lifelessoauth tokens can be time limited10:50
lifelesse.g. to a month o fuse10:50
lifelessyou need to request a new one when that happens10:50
pooliegar10:51
poolie        # TODO: handle the case of having credentials that have expired etc10:52
poolie 10:52
tumbleweedlifeless: would you like a bug report? its easily worked-around, but very non-obvious to the API client10:57
adeuringlifeless: I sent an email about a batching issue (too long for IRC) to the lp-dev mailing list. could you have a look at itß10:58
adeuring...it?10:58
lifelessß sure10:58
lifelesstumbleweed: up to you, but I'm not convinced its a bug10:59
tumbleweedlifeless: what is it then? It seems wrong to have to authenticate to read public information10:59
tumbleweedlifeless: and having to authenticate cronjobs is an administrative pain10:59
tumbleweed(IIRC this isn't the first time we've tried to do this, but we didn't remember the issue)11:00
lifelesstumbleweed: we have restrictions on visibility on a lot of data11:00
lifelessI'm not saying there is a good reason for this particular case11:01
tumbleweedI have notice that I can use isSourceUploadAllowed (packageset authorisation), unauthenticated. But I can't determine PPU or component-based upload rights11:01
lifelessanyhow, its much better for us if cronjobs are authenticated11:02
lifelessbecause when they go rogue and use a tonne of resources, its a pain to track anonymous sessions down11:02
tumbleweedfair enough11:02
tumbleweedthis one is quite a beast (~10 min running time)11:03
wgrantUrsinha: Why can't the team unsubscribe?11:06
poolieoh ffs11:07
poolieany http error maps into keyerror11:07
Ursinhawgrant: because we used the list of packages a team is subscribed to to say which packages should the team care about11:08
Ursinha*we use11:08
jmlhenninge: hi11:09
pooliewhich is bug 62696011:10
_mup_Bug #626960: Collection dictionary access should not return KeyError when the server is down <lazr.restfulclient:Triaged> < https://launchpad.net/bugs/626960 >11:10
henningejml: Hi! I resolved it already.11:10
henningejml: testtools' setup.py does not know egg_info11:10
henningeand does not need it11:10
jmlindeed it shouldn't :)11:10
henningeI am quite new to setuptools, so I am not sure why11:11
henningebut sdist produced the right package11:11
poolieo/ jml11:11
jmlpoolie: hi11:13
wgrantUrsinha: Ah :(11:14
Ursinhawgrant: so we're workarounding it by creating teams only to be collections of packages, let's say11:15
wgrantYou could also just keep a list of names around :)11:15
wgrantBut yeah, using the subscription list is handy.11:15
Ursinhawgrant: haha no way...11:15
wgrantI have a few teams that I do it for.11:15
wgrantMuch easier to manage.11:15
Ursinhayet another list of things... better keep in launchpad11:16
wgrantBut unfortunate for notifications, indeed.11:16
pooliehello gmb11:18
pooliecould you review https://code.launchpad.net/~mbp/lazr.restfulclient/626960-keyerror/+merge/71667 please11:18
poolieand perhaps land https://code.launchpad.net/~james-w/lazr.restfulclient/reject-non-json-responses/+merge/1696011:18
=== al-maisan is now known as almaisan-away
gmbpoolie: Sure, I'll take a  look shortly.11:35
pooliethanks matey11:53
jtvdanilos: did you just make qastaging send me email?  I thought that was supposed to be captured?11:59
=== henninge is now known as henninge-lunch
jelmerpoolie: can you land my lptools branches or should I apply for team membership?12:07
=== almaisan-away is now known as al-maisan
lifelessmatsubara: so, have tests running, I will fiddle with this tomorrow more12:13
matsubaralifeless, cool.12:13
jelmeris there a publically accessible list of things that are in a specific package set?12:20
StevenKjelmer: You can query that sort of thing over the API12:20
jelmerStevenK: close enough - thanks12:25
danilosjtv, hum, interesting, I did some QA this morning for subscribing large teams to PPAs, but qastaging shouldn't send any emails12:26
jtvThat's what I thought.12:26
jtvAnd then I got that email about your privates.12:26
jtvAbout your empty privates, in fact.  Which, on reflection, may not have been your first choice for a message to be sent out to the world.12:27
danilosjtv, empty privates, though12:27
danilos:)12:27
danilosjtv, actually, it sucks that the emails have gone through (all of ~canonical would have gotten it)12:27
jtvWe can only hope that qastaging email is at least whitelisted.12:27
jtvAs they were at the time.12:27
lifelessI didn't see any such mail12:27
danilosjtv, I didn't get anything, so I hope we are all good12:27
jtvI got two.12:28
jtvBut then I think I'm whitelisted for staging email.12:28
danilosjtv, right, that explains it then12:28
jtvI hope it does!12:29
jtvWow.  Still hearing a thunderclap that started about 20 seconds ago.12:31
jtvThe lightning was pretty far off (5km at least) but shockingly bright.12:32
daniloslifeless, hi, do you perhaps know what's our limit for storm caches? I am trying some load_referencing and similar magic, and it seems I am hitting the limit because depending on the order, different statements show up12:32
lifelessI don't, no. I am rather of the opinion that we need to set it as high as it can be without thrashing, because otherwise it just forces pathological behaviour - and we wipe the cache between requests anyway.12:33
lifelessdanilos: there is a policy knob in the lazr config that controls it, IIRC12:33
lifelessall that said, every time I've looked at similar symptoms, we haven't had a cache limit problem, rather the cache working on the 2nd page in a test12:34
lifelessor similar12:34
lifeless(because test view instantiation doesn't reset the cache - the storm resetting only happens in thread 1+, not 0+12:35
nigelb5612:35
daniloslifeless, right, thanks, I'll try to dive deeper (I am using ++profile++show to look at the queries being issued)12:35
lifelessdanilos: qastaging, or dev?12:36
daniloslifeless, dev12:36
lifelessdon't forget celebrities do get cached12:36
lifelesshmmm, way past bedtime. I have to crash()12:37
lifelessgnight all12:37
danilosnight-night, lifeless12:41
deryckMorning, everyone.13:07
=== henninge-lunch is now known as henninge
LPCIBotYippie, build fixed!13:22
LPCIBotProject devel build #977: FIXED in 5 hr 46 min: https://lpci.wedontsleep.org/job/devel/977/13:22
bigjools5 hr 46 min!13:22
=== al-maisan is now known as almaisan-away
=== almaisan-away is now known as al-maisan
jtvgmb: got reviews for you if you've got time.  You'll enjoy this one: https://code.launchpad.net/~jtv/launchpad/more-820456/+merge/7168913:39
gmbjtv: Just nomming at the moment. Queue 'em up, though and I'll come to them when I return.13:41
jtvgmb: there's one that may not jump out at you from the queue—brad started on it once but never had time to finish it.13:42
jtvSo it's claimed, but actually looking for a new reviewer.13:42
jtvBon appétit.13:42
gmbjtv: okay. Can you add me as a reviewer so I don't lose track of it?13:42
jtvAye-aye.  Thanks.13:42
gmbCool, and np13:43
deryckabentley, ping.  I can chat whenever you like now.13:55
abentleyderyck: I'll just get coffee...13:55
deryckabentley, hmmm, me too :)13:55
deryckWhat's the old qa report page we used to cut-n-paste bug numbers from when asking for a nodowntime deploy?14:08
deryckmatsubara, can you point me at it? ^^14:08
matsubaraderyck, You mean the report that used to be on lpqateam.devpad.com? If yes, see: https://bugs.launchpad.net/lp-devops-dashboard/+bug/82388614:10
_mup_Bug #823886: New dashboard design removed available deployable revision and fixed bugs list <Launchpad DevOps Dashboard:Triaged> < https://launchpad.net/bugs/823886 >14:10
deryckmatsubara, yeah, I was looking for that list.  Didn't know it didn't exist anymore.14:11
matsubarasorry about that. I'll get to it once I get back from the QA sprint. Meanwhile I guess the only way to get that info is to see the deployment report itself14:12
deryckmatsubara, gotchas.  no worries, thanks!14:14
abentleyderyck: actually, wallyworld has landed a rollback as 13696.14:32
deryckabentley, ah, nice!  So we should be deploy ready then, once the qa pages catch up?14:32
abentleyderyck: Looks like.14:33
deryckabentley, awesome.14:33
=== al-maisan is now known as almaisan-away
abentleymatsubara: buildbot approved revision  13697 an hour ago, but it's not included on https://devpad.canonical.com/~lpqateam/qa_reports/deployment-stable.html Do you know why?14:38
matsubaraabentley, will look into it in a moment14:41
abentleymatsubara: thanks.14:41
jelmergmb: can I add another MP to your queue?14:44
nigelbbigjools: I haz success \o/14:51
nigelbWell, not entirely, but mostly :)14:51
bigjoolsnigelb: congrats14:52
nigelbThe MP looks small now, but I need ta add tests :)14:52
gmbjelmer: Sure.14:56
jelmergmb: Great :) The MP is https://code.launchpad.net/~jelmer/launchpad/safe-opener-threading/+merge/7167014:56
gmbk14:57
stubWho is the owner of imported bug comments?14:59
gmbstub: The Person who made the comment (we create one if they don't exist in LP)15:01
stubk. not a robot. good.15:01
matsubaraabentley, r13697 is in the deployment report now15:10
abentleymatsubara: thanks.15:10
matsubaranp15:11
abentleyderyck: The board is green for a deployment.  Can you talk me through it?15:12
jtvthanks for the review gmb15:13
deryckabentley, yay!  Indeed I can.15:13
gmbjtv: np.15:13
deryckabentley, looking for links....15:13
deryckabentley, so it's really only a matter of filling out the table under "Requested stable Deployments" on the LaunchpadProductionStatus wiki page....15:14
deryckabentley, you have to paste all the bug numbers fixed with links in that table.  but the revno is the highest revno to deploy.15:15
deryckabentley, approved by is "qa-tagger" and deploy to is "nodowntime"15:16
deryckabentley, and you can see example just above that have been deployed.  then you ping a losa once the wiki page is filled out.15:16
abentleyOkay.15:16
deryckabentley, it takes around 2 hours to do the deploy and you want to be on hand for that time.15:17
deryckI think that's it.15:17
jelmerabentley: great to see that fix for bug 386596, that also helps towards build-from-branch-into-primary.15:22
_mup_Bug #386596: pushing to a packaging branch can't create a new package <codehosting-ssh> <escalated> <lp-code> <not-pie-critical> <package-branches> <principia> <qa-ok> <stakeholder> <Launchpad itself:Fix Committed by abentley> < https://launchpad.net/bugs/386596 >15:22
abentleylosa: please deploy 13697.  I have updated LPS.15:27
abentleyjelmer: cool.15:27
allenapgmb: Fancy a short one? https://code.launchpad.net/~allenap/launchpad/wrong-needs-linking-count-bug-795359/+merge/7171515:31
gmballenap: I'll add it to the queue.15:31
allenapgmb: Ta :)15:31
gmbnp15:31
jtvthanks again gmb!  And I just put up another one.15:51
gmbjtv: Hah. Might just be able to get that one done before my head melts.15:51
gmb:)15:51
jtvgmb: I'll stop here then.  :-)15:51
gmbPerformance Tuesday | https://dev.launchpad.net/ | On call reviewer^W^W^Wjtv's review monkey: gmb | Critical bugs: 238 - 0:[#######=]:25615:52
* gmb is glad he forgot to put /topic in there, actually :)15:52
jtvcjwatson: did you get my email about custom-uploads copying?  Unless you see any problems with the design, it's all set to go in at your word.15:56
allenapThanks gmb :)15:58
gmballenap: np :)15:58
=== gmb changed the topic of #launchpad-dev to: Performance Tuesday | https://dev.launchpad.net/ | On call reviewer: - | Critical bugs: 238 - 0:[#######=]:256
=== deryck is now known as deryck[lunch]
gmbjtv: approved.16:05
jtvgmb: thanks, and feel free to take the rest of the day off.  :)16:05
gmbTa :)16:05
=== beuno is now known as beuno-lunch
=== deryck[lunch] is now known as deryck
=== beuno-lunch is now known as beuno
mtaylorlifeless: if I'm consuming launchpad openid auth, are timeouts your end, my end, or just the way life is?18:25
LPCIBotYippie, build fixed!19:10
LPCIBotProject db-devel build #813: FIXED in 5 hr 48 min: https://lpci.wedontsleep.org/job/db-devel/813/19:10
abentleyderyck: there's no OCR, so could you please review https://code.launchpad.net/~abentley/launchpad/fix-unicode-path/+merge/71762 ?19:18
deryckabentley, yeah, definitely.19:18
abentleyderyck: thanks.19:19
derycknp19:19
lifelessmtaylor: +login ?19:25
mtaylorlifeless: yeah?19:26
mtaylorlifeless: (basically, I keep having to re-auth to launchpad all the time in my jenkins, and I was wondering if that was a config thing on my end, or just the way life goes)19:26
lifelessoh, you don't mean 'the login process times out', you mean 'the tokens seem to run out of life' ?19:27
abentleylifeless: are you around when the LOSAs BOD?19:28
lifelessBOD ?19:29
lifelessoh, start.19:29
lifelessI can be.19:29
abentleylifeless: We've done a no-downtime deploy of the push-creates-source-package, but they didn't have time for the codehosting deploy.19:30
abentleylifeless: I can handle it tomorrow if it's not convenient for you.19:30
lifelessabentley: the losas want stuff RT'd while they are sprinting; can you: put it on LPS as a request, RT it (and cc: me on the mail to RT so I get copied), and if I'm around I will touch base with the first losa to show up and see about doing it19:31
abentleylifeless: Okay.19:32
lifelessthanks19:32
abentleylifeless: can I use you for "Approved by"?19:36
lifelessyes19:38
deryckabentley, r=me on the review.  Looks good.19:41
abentleyderyck: thanks.19:42
deryckabentley, np!19:42
sinzuijcsackett, do you have time to mumble?19:44
jcsackettsinzui: 15 min?19:45
sinzuisure19:45
sinzuideryck, bug 173019 may not be as easy as you think and I doubt it is high given the age of the bug and the lack of duplicates19:50
_mup_Bug #173019: "Renewal period" is marked as "(Optional)" when it isn't <lp-registry> <teams> <ui> <Launchpad itself:Triaged> < https://launchpad.net/bugs/173019 >19:50
derycksinzui, hey.  I thought I marked that low actually.19:52
sinzui:)19:53
deryckmaybe my fingers didn't do what my brain did :-)19:53
sinzuideryck, Past discussion was to use a multistep form, or an overlay to only ask for information that is needed19:53
derycksinzui, and I just thought "easy" because I assumed we could drop the "optional" label.  If that's not possible without a larger fix, forgive my lack of knowledge.19:54
sinzuideryck, understood. We do not know how to express invariants as a state between optional and required19:55
derycksinzui, ah, gotchas.19:56
jcsackettsinzui: i'm on mumble whenever you're free.20:08
lifelesscan we delete shipit.css now ?20:10
baclifeless: could i get your thoughts on https://code.launchpad.net/~bac/launchpad/bug-813322-2/+merge/71733?  not asking for a code review, just feedback on the approach.20:34
lifelesssure20:35
lifelesslooking20:35
lifelesssweet20:36
lifelessbac: looks fine; I think that we will find we need to another pass for backend efficiency (e.g. perhaps a separate xaction for each dup we move across, but thats a different ratchet - we're not at that point in our optimisation arc yet.20:37
lifelessbac: so a big +1 from me.20:38
baclifeless: great, thanks20:38
lifelessI need brainstorming help20:45
lifelesswe have page ids20:45
lifelesswhich are kindof a unique part-of-the-codebase-to-look-at20:45
lifelesscronscripts are also unique-parts-of-the-codebase-to-look-at20:46
lifelessbut putting 'sendbranchmail' in as a pageid rubs me the wrong way.20:46
lifelessI want to find a generic term that I can use in the public contract for oopses, and migrate towards for the serialized form as well20:47
benji"task-id", "action-id", "activity-id", "functionality-something"20:48
lifelessgood, good, keep em coming!20:48
lifelessanother one I thought of was 'context'20:48
benjiI like "facet" but we already use that term in LP20:49
lifelessthats ok20:50
lifelessthis is for python-opos20:50
lifelesspython-oops20:50
lifelesswhich LP will use20:50
lifelessbut needs to be suitable for u1, landscape, possibly isd, possibly ubuntu, package-importer20:50
lifelessits kind of like user-agent20:50
lifeless'agent' ?20:51
lifelesslike, agent: zope3/Person:+index20:51
benji"concern"20:52
lifelessthats good20:52
benji"agent" is very close to "client" in my head, so that seems a little confusing20:52
lifelessI see20:52
benjiI don't really like it, but "relm" comes to mind.20:53
lifelessrealm ?20:54
lifelessthats another possibility20:54
benjiheh, yeah I typoed the "a"20:54
lifelessif you saw : "Lucid/apport;program=evolution" , would that make sense to you ?20:55
lifelessor would : "evolution" with other fields noting it was from a lucid box be better?20:56
lifelessI'm thinking about how to write up a recommended use20:56
benjito me, "Lucid/apport;program=evolution" communicates well (I think, here's what I think it means: "this error was reported by apport on Lucid but the app generating the error was evolution")20:57
lifelessbac: yeah20:58
benjiyou might break those into two fields, the reporter (which might well be an "agent") and the topic being reported ("program: evolution")20:58
lifelessbah20:58
lifelessbenji: yeah20:58
lifelesstopic and reporter, I like.20:58
* lifeless things20:58
* lifeless thinks.20:58
lifelessso the difference between pageid and url20:59
lifelessis that one pageid applies to many urls.20:59
lifelesstheres one other concept we might want, which is for multitenancy20:59
lifelesswhich I think reporter really fulfils21:00
lifelessclaiming a reporter of launchpad gets you into the launchpad oops bucket that only lp devs can see21:00
lifelessfolk can inject crap in there if we have an anonymous submission thing, but we can filter that out programattically.21:00
=== almaisan-away is now known as al-maisan
=== al-maisan is now known as almaisan-away
benjiI wonder if some loose hierarchy would work.  Something like "ubuntu/lucid/appport" and "canonical/launchpad".21:01
benjiAlthough, you can get in several forms of one-size-fits-all trouble with that approach.21:02
lifelessso reporter: 'Describes the program reporting the oops. For instance you might put your program name in here, or your website domain.'21:03
lifelesstopic: 'The subject or context for the oops. For instance with a command line program you might put the subcommand in here, in a website you might put the template or function name (something that is common to many different urls)'21:04
lifelessapport would do 'reporter: lucid/apport' topic:'evolution'21:05
lifelessgpverify would do 'reporter: launchpad/gpgverify' or just 'reporter:gpgverify' and for topic the api being called.21:06
benjiwhy would apport include "lucid"?  I would think that'd be included in some other field if needed (along with all kinds of other environmental info).21:06
lifelessour main appservers would do 'reporter: launchpad/main' or just 'launchpad' and for topic what we currently put in pageid21:06
lifelessbenji: oh, so one of the big things ubuntu have is that cross-release crashes are generally considered irrelevant21:07
lifelessbenji: that would just be an easy way to trigger partitioning of the analysis21:07
benjiseems reasonable, "lucid" really is intrinsic to the identity of the reporter then21:08
lifelessI like this - thanks for the brainstorm21:09
* lifeless goes to make it realityish21:09
benjiyep, any time21:10
mtaylorlifeless: yes - I mean "the tokens seem to run out of life"22:11
lifelessmtaylor: I don't believe we have a mandatory expiry.22:11
lifelessmtaylor: what expiry are you choosing when you create the tokens?22:11
mtaylorlifeless: ok- so that's more likely something on my side then22:11
mtaylorlifeless: not sure - let me poke around (it's in java, so it takes a moment) :)22:11
lifelessback in a ninute22:13
lifelessback22:35
lifelessmtaylor: ^22:40
lifelesssinzui: I had a wtf moment when I saw your branch name 'private-bug-1'22:42
sinzuilifeless, I think I could make that bug private without a brach23:03
lifelesssinzui: I think yo ucould too23:05
lifelesssinzui: still, I had a moment :)23:05
sinzuiWe could retitle the bug to be Microsoft has a dominate share of the increasing irrelevant desktop market23:06
lifeless:)23:07
lifelesswell23:07
lifelesswe could try.23:07
lifelessWho knows, it might not timeout.23:07
sinzuiyeah. We probable cannot close the bug without making Lp twice as fast23:08
StevenKsinzui: http://irclogs.ubuntu.com/2011/08/10/%23launchpad-dev.html23:34

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