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

lifelesswgrant: tells haproxy the service hasn't crashed00:11
wgrantlifeless: What's the difference?00:16
wgrantThe only conceivable difference I can see is that in the case of a crashed service you might possibly want to kill leftover connections, but I doubt it does that.00:18
lifelessuhm, I looked into it, I don't recall now.00:20
lifelessit may have been to do with zope awfulness00:20
wgrantRight, but that only affects appservers.00:20
lifelessfeel free to dig, I don't want to try and page that in right now.00:20
wgrantIt would be nice to not have to add an HTTP service to every service.00:21
wgrantSure.00:21
lifelesswgrant: persistent connections00:23
lifelesswgrant: and no alerts generated00:23
wgrantlifeless: Do we use persistent connections?00:27
lifelesswe were; we should on twisted services; we don't on the appservers00:29
lifelesss/twisted/non-ultra-tuned/00:29
wgrantWhy would we use them on Twisted services?00:29
lifelessalso non-cpu-bound00:30
wgrantWhy do we care which service it gets dispatched to?00:30
lifelessless overheads00:30
lifelesstcp will already be open on the second request00:31
wgrantHm? That sounds like HTTP keepalive, not haproxy persistent connections.00:31
lifelesssame same00:32
lifelessat this point I'm going to say 'shoo, go read' - haproxy is terrifyingly evil in some ways00:32
lifelessyes we have room to rejigger things00:32
wgrantAFAICT the maintenance-mode persistence behaviour affects cookie-based persistence.00:32
lifelessalso 'how can we tell the service is really down'00:33
wgrantIt's not listening.00:34
lifelessI don't have any requirements that all our services use haprox the same way00:34
lifelesswgrant: that not at all the same as really down00:34
lifelesswgrant: (if we don't have a status page)00:34
wgrantlifeless: Does that matter?00:34
lifelesshell yes00:34
wgrant.. how?00:36
wgrantAssuming I'm using haproxy as a round-robin load balancer, not as a nagios or cookie-based load balancer.00:36
lifelessso, again, I don't care if some services are configured differently; the requirements are that its got a sane nodowntime upgrade mechanism, including all the aspects like telling the difference between crashed (so just start it) and going down (do not touch), and getting metrics out00:36
lifelessI expect different answers for different stacks and different services00:38
wgrantAnd I think our assumptions for appservers and codehosting are flawed.00:38
lifelessright now we have two services with status pages00:38
* lifeless shrugs00:38
lifelessit works, its introspectable, and aided us iding and fixing the root cause of hang-on-restart; preserve the functionality and I'm happy.00:39
wgrantHuh, how was it relevant to that?00:40
wgrantThe regular requests?00:40
lifelessI seem to recall you polling it too watch what was gong on00:42
wgrantOh, for codehosting, not appservers.00:43
lifelesswhat has you pulling on this thread ?00:43
lifelesswhy is it interesting to talk about now ?00:43
wgrantWell, I don't want to have to add a pointless HTTP service to poppy.00:43
lifelessI don't think status pages are pointless even if not used for haproxy00:44
lifelessthey provide a good place to hook useful metrics we (have in the past) wanted to poke at (vs publishing to *statsd which is also a good idea but not as watchable-by-F5)00:45
lifelessconversely, I don't think everything has to have one.00:46
lifelessHave you been told you have to add one?00:46
wgrantNo.00:47
wgrantBut if there's a reason that codehosting needs one for haproxy, then poppy needs it to.00:48
wgrantHowever, I suspect that neither does, and probably neither do the appservers.00:48
lifelesspoppy and codehosting aren't the same service, so I don't see that that holds00:48
lifelesshah00:58
wgrant?00:58
lifelessI've filed 6.2% of open LP bugs00:59
wgrantTimeouts do that :(00:59
wgrantBah, I'm just below 3% now.01:01
lifelesscould you add some technical info to bug 528459 please?01:02
_mup_Bug #528459: PPA does not delete old packages after new build <lp-soyuz> <ppa> <Launchpad itself:Triaged> < https://launchpad.net/bugs/528459 >01:02
wgrantlifeless: NBS01:03
lifelessI was hoping for a paragraph, to point future folk straight at the issue01:03
lifeless2-3 lines01:03
wgrantBut all Soyuz people will know basic stuff like NBS.01:04
wgrantOh wait :(01:04
StevenKlifeless: NBS == Not Built from Source. If you have a 'user' source package that builds 'libuser1', and then a new version of user is uploaded that now builds 'libuser2', libuser1 is now NBS.01:06
lifelessStevenK: yes, I am slightly familiar with packaging jargon01:07
lifelessStevenK: (thanks for chiming in :P)01:07
StevenKI was providing said paragraph01:07
lifelessStevenK: mmm; Something like 'ppas do not handle NBS binaries, look at <method> for how they are handled in primary archives' - that would be said paragraph01:08
lifelessStevenK: though it sounds like wgrant suspects its not NBS handling01:08
wgrantHm?01:09
wgrantIt is NBS.01:09
lifelessyou said 'Oh wait :('01:09
StevenKBut all Soyuz people will know basic stuff like NBS. *Oh wait :(*01:09
wgrantThat was imitating realisation that there is no longer a Soyuz team to know things.01:09
StevenKThat is what wgrant meant01:09
lifelessand there are now no lp medium bugs01:16
lifelessthat are not incomplete01:16
lifeless+ we need a release of loggerhead01:16
wgrantJust lots of bugspam :P01:16
wgrantIndeed.01:16
wgranterk01:35
lifelessare we able to use amqplib 1.0.2 ?01:35
wgrantgermanium:process-uploaded failed to run for at least 35 minutes.01:35
* wgrant investigates.01:35
wgrantlifeless: What are we using now?01:35
lifeless0.6.1 is in the downloadcache01:35
wgrantSeems like 1.0 was released at the end of July.01:37
wgrantTwo years after the previous release.01:37
wgrantUpgrade away.01:38
nigelbMorning!01:46
wgrantEvening nigelb.01:46
nigelbwgrant: Its alreay evening out there?01:49
wgrantNo.01:49
wgrantBut correctly timed greetings are silly.01:50
nigelbHeh, true.02:02
lifelessbwah, going to have to thread-sanitise errorlog.py02:03
lifelessunless; do we get one instance per thread? I seem to recall a hateful global in there. <grah>02:04
mwhudsonquick, stash it on the interaction!02:12
=== Ursinha is now known as Ursula__
lifelessmwhudson: separate non-threadsafe library02:26
lifelessmwhudson: giving it a callback to the interaction seems even uglier than a callback to make a connection02:26
mwhudsonah ok02:26
lifelessmwhudson: however, it won't have global tls; just per object tls02:26
lifeless(oops_amqp.Publisher will hold a threading.locals() containing the amqplib Connection object for a given threads oops reporting)02:27
=== micahg_ is now known as micahg
lifelesscan has revu?03:00
wgrantAs long as it doesn't involve oops_amqp and thread-globals, probably.03:01
lifelessoops-datedir-repo - support to act as a component in oops-tools03:02
lifelesshttps://code.launchpad.net/~lifeless/python-oops-datedir-repo/0.0.9/+merge/7879303:02
lifelessthe amqp thing I will want you to read, as one of the more amqp fluent folk around03:02
lifelessbut thats still largely scifi.03:02
pooliehi all03:05
StevenKwgrant: Can haz mumble?03:06
wgrantStevenK: Why?03:06
StevenKwgrant: I'd like a pre-impl about the enum that sinzui was talking about03:06
wgrantWhich enum?03:06
StevenKThe privacy enum03:06
wgrantThe one that probably isn't an enum at all?03:07
wgrantOh.03:07
wgrantTeam privacy?03:07
StevenKRight03:07
wgrantI think we really need Curtis for this as well.03:08
wgrantDo you know the history around private and private membership teams?03:08
StevenKNot really, so we probably want to do it after the stand-up03:08
StevenKwallyworld_: Your three cards in Deployment-Ready can probably be tossed into Done-Done.03:09
lifelessenum ?03:09
wallyworld_StevenK: ok03:10
StevenKwallyworld_: But check the linked bugs are Fix Released.03:10
* wallyworld_ checks03:10
wgrantlifeless: A less-private privacy level for private teams.03:10
wgrantlifeless: To reveal their name.03:10
StevenKgarbo-hourly is *still* crashing?03:11
wgrantStevenK: Yes.03:11
wgrantSomebody needs to fix it.03:11
StevenKFail.03:11
* StevenK looks03:11
wgrantIt started crashing on Friday night, and will crash for weeks if one of us doesn't fix the code, I expect.03:11
wallyworld_but isn't that a maintenance squad role?03:12
wgrantYes.03:12
wallyworld_so let them do it03:12
StevenK2011-10-10 00:13:10 ERROR   [BugTaskIncompleteMigrator] Unhandled exception03:12
StevenK -> http://launchpadlibrarian.net/82446649/vWceIFzREh8RMuyErP2OjLr1n4s.txt (can'03:12
StevenKt compare datetime.datetime to NoneType)03:12
StevenKwallyworld_: So we can get spamed with script-activity for weeks?03:12
wgrantBug #87103803:13
_mup_Bug #871038: BugTaskIncompleteMigrator blows up on bugs that were filed Incomplete <oops> <Launchpad itself:Triaged> < https://launchpad.net/bugs/871038 >03:13
wallyworld_StevenK: no, if someone else keeps doing it fot them then nothing will change03:13
lifelesswgrant: so we believe some teams will want to be islands and standalone ?03:26
lifelesswgrant: (I would question that, particularly for canonical ones)03:26
lifelessI suspect brad will see it on monday, as he is working that arc03:27
wgrantlifeless: I assume there was a reason that completely private teams were implemented.03:27
lifelesswgrant: thats a nice assumption03:27
lifelessthe history is messy03:28
lifelessrather than design a model that scales up as folk need more, we've special cased things with the team-type enum, and its been traumatic03:28
lifelessI would like to butt into this discussion03:28
StevenKlifeless: I've found a bunch of lines in BugTaskIncompleteMigrator that are either indented incorrectly, or >77 characters. :-(03:31
* StevenK nails Ursinha to the channel.03:34
UrsinhaStevenK, sorry03:34
Ursinhasetting up my bip server03:35
StevenKUrsinha: It's okay. Hopefully my nail didn't hit anything vital. :-P03:36
UrsinhaStevenK, haha03:36
poolielifeless, hi, i might have a go at the affectsmetoo timeouts later03:36
pooliei would appreciate some advice or reassurance though03:37
pooliebecause with ~20x variations in query speed on production03:37
pooliei feel a bit pessimistic about being able to write something that will be consistently fast :/03:37
poolieand trying it out by landing changes has a long latency03:37
StevenKCan haz review? https://code.launchpad.net/~stevenk/launchpad/fix-bugtask-incomplete-migrator/+merge/7879403:45
lifelesspoolie: its tricky, yes.03:50
lifelesspoolie: basically needs a wholistic approach - look at the whole work happening, what its doing and how, and come up with a way to answer it efficiently03:51
pooliehm03:51
poolieit doesn't seem like it should be that hard of a query to answer03:52
poolieit's not retrieving a large amount of data03:52
lifelesspoolie: I wouldn't underestimate the warm-up cost for doing that; you can easily spend a couple of days on a low hanging fruit timeout, and a week or more on one that has been previously optimised03:52
pooliemm03:52
pooliei hate to leave this half baked03:52
pooliei really like the feature but it's pretty flakey now03:52
lifelesspoolie: so, as a for-instance: its going to be cold data, nearly every time03:52
pooliei don't suppose we can up the timeout?03:52
lifelessso the question is 'how can we answer this query when the data is being read off of disk each time'03:53
poolieoh, and it got ~4 bug dupes about the timeout since it launched03:53
lifelesspoolie: yah, making it visible tends to do that :>03:53
lifelesspoolie: no, if we can't answer this efficiently, we should drop the feature.03:53
pooliere 'cold' - i had heard that the db fitted in memory03:53
pooliebut, it's not guaranteed to be all in memory, just mostly?03:53
StevenKLike fun it does03:53
lifelesspoolie: nope, not at al.03:53
StevenKpoolie: The DB is 300GiB, and the DB servers have 128GiB of RAM03:54
StevenKThere's math in there.03:54
lifelesspoolie: the DB exceeds main memory on our prod servers by -lots-l03:54
lifelessStevenK: re line length - meh; sure; shrug.03:54
poolie'drop the feature' - doing a bug search at all also generally times out :/03:54
StevenKlifeless: We have coding standards for a reason. :-(03:54
lifelessStevenK: if it wasn't in PEP8, I would be arguing that we should expand it03:54
StevenKIt makes me unhappy to see them not used.03:55
lifelessStevenK: there are standards and standards; amongst other things pragmatism over purity.03:55
poolieanyhow03:55
lifelessStevenK: line length violations don't cause crashes exceptions unbound variables etc03:55
poolieso this stuff might be cold03:55
lifelesspoolie: its pretty much guaranteed to be03:56
poolieok03:56
lifelesspoolie: its a separate table with no reason for it to be read until someone consults it for $user-FOO03:56
StevenKlifeless: Right, they don't, but we still have the standards for a reason, so they should be followeed.03:56
StevenKs/ee/e/03:56
poolieis it reasonable to do a query that may do 'a bit' of hard io, but not much, or will even that often be too slow?03:56
lifelesspoolie: its about 1 to 2 ms per row of IO (thats a terrible rule of thumb but close enough to be useful)03:57
pooliethanks03:57
poolieso it'd be reasonable to expect someone affected by 5 bugs would always be able to see this without timing out?03:57
lifelessStevenK: so fix them; if you're saying I put them there, 'sorry' - I have my editor configured to wrap at 80 and don't usually break the limit, but OTOH if its clearer as it is, then I think its better : standards are meant to help with clarity after all03:58
StevenKlifeless: I have fixed them -- I'm not complaining that you put them -- I'm just saying that they make me sad.03:58
lifelesspoolie: possibly; once it gets enough use for the table statistics to be hot, then it will probably be able to plan the queries quickly and execute in a reasonable timeframe03:59
lifelessStevenK: k03:59
lifelessStevenK: thanks for fixing the migrator03:59
lifelessStevenK: can I ask that you also comment it out :)03:59
lifelessStevenK: (see the bug about ProductSeries:+index and migrated bugs)03:59
StevenKEr?04:00
StevenKNow I'm confused04:00
lifelessthere were two issues with the branch04:00
poolielifeless: ok so if you were going to work on this, how, generally,  would you go about it?04:00
lifelessone is the migrator going boom04:00
poolietry different queries in the hope of finding one that's fast?04:00
lifelessthe other is that a migratde bug in a series causes a manually-mapping function on ProductSeries:+index to time out.04:00
poolieor, do some kind of more architectural change as far as ajax loading, or freshening them for active users, or something?04:01
StevenKlifeless: So we should revert the migrator wholesale?04:01
poolieor something about trying to create different indexes - and if so which?04:01
lifelessStevenK: I don't think the whole branch needs reverting; but the garbo job shouldn't convert any more until the web UI issue is fixed04:01
poolies/which/can they just be tested on staging to see how they perform on real data?04:01
lifelesspoolie: those are all valid strategies; doing ajax loading of just one number is something I'm suspicious off (when I started we had ajax things that themselves time out) - I figure if we can't do the whole page sanely in 5s time, splitting it into bits just lets us be inefficient in more places04:02
pooliei'm talking about loading the whole page, like bugs.l.n/~/+affectingbugs04:03
poolienot the number04:03
lifelessok04:03
poolieand yes, i shared that thing that doing it multiple roundtrips just seems more inefficient04:03
poolieah04:03
lifelessso for that, ajax is irrelevant anyhow, you need the batch to be efficient04:03
pooliewell04:03
pooliewe could load most of the page, then have the actual bug rows arrive later04:04
pooliethat would give a bit better of an impression04:04
pooliebut it would be a lot of work04:04
lifelessthe timeout though is coming from the batch04:04
poolieright, and it would still need a long timeout to actually load the rows04:04
lifelesswhich we won't do - long queries affect liveliness throught the system04:04
lifelesswe're driving *everything* down to 5s tops04:04
lifelessthere is a quote request in with IS to examine new hardware04:05
lifelesswhich would have more memory04:05
lifelessI think that that will make a significant difference to the 'this works if I keep hitting refresh' cases04:05
lifelessStevenK: I think something like removing the job from the garbo list, or putting it in the experimental list or something, is appropriate04:06
wgrantStevenK: Can't you just add another disjunct to the existing if?04:06
lifelessStevenK: reverting the whole branch would break existing migrated bugs in more ways04:06
wgrantStevenK: If either date is None, -> WITHOUT_RESPONSE04:07
pooliein case you don't know, i landed this with no count next to it, so there is no performance impact unless you actually click through to the new pages04:07
lifelesspoolie: yeah, I know :)04:07
nigelbIs there a guide somewhere on writing garbo jobs?04:07
lifelessnigelb: there are docs on it in the system about how to use the API etc04:07
wgrantlifeless: Product:+series OOPSes, it doesn't time out.04:07
lifelessnigelb: there isn't a 'for dummies' one AFAIK04:07
lifelesswgrant: I know04:07
nigelblifeless: HA.04:07
nigelblifeless: lol :)04:08
lifelesswgrant: why do you think I didn't ?04:08
wgrant"causes a manually-mapping function on ProductSeries:+index to time out"04:08
lifelesswgrant: ah, because I wrote bad words.04:08
lifelesswgrant: I meant go boom04:08
wgrantHeh04:09
StevenKwgrant: Right, fixed.04:09
StevenKIs there a bug for Product:+series bangness?04:09
nigelblifeless: Is it on the wiki?04:10
wgrantStevenK: Also, rather than using deprecated switchDbUser and testadmin, can you use 'with dbuser' and launchpad?04:10
lifelesspoolie: so the problem here is you need to consult 4 tables to generate the batch, one of will have a lot of pages loaded04:10
lifelesspoolie: its not a clustered table IIRC, so take me - 1K rows in the table04:10
wgrantStevenK: Bug #871076, but that can be left for maintenance people.04:10
_mup_Bug #871076: Product:+series OOPSes on INCOMPLETE_WITH_RESPONSE and INCOMPLETE_WITHOUT_RESPONSE bug tasks <oops> <regression> <Launchpad itself:Triaged> < https://launchpad.net/bugs/871076 >04:10
wgrantSince it isn't cronspamming incessantly.04:10
wgrantLP can choke and die, as long as it's quiet about it.04:11
StevenKwgrant: But then I'm just spreading the problem by fixing garbo-hourly ...04:11
lifelesspoolie: because they are spread out over the table, and there are 1M rows, its probably loading 1K pages of table data plus 10 or so pages of index, to calculate the query result04:11
poolieright04:11
wgrantStevenK: Yeah, but it's likely they'll be deployed together.04:11
StevenKwgrant: Hopefully.04:12
wgrantStevenK: As it's not as if we have any big series things happening this week.04:12
StevenKHah04:12
StevenKHahahahahaha04:12
lifelesspoolie: so, in short, personalisation of the bug tracker is -hard-, this is going to be very tricky.04:12
lifelesspoolie: probably we want a personalisation service on its own hardware that can run in-RAM totally and not get paged out, vs the one big DB which just LRU's everything.04:12
StevenKwgrant: I'd like to push back on switchDbUser -- I'm following the established pattern, and I'd rather not re-indent the entire function.04:13
poolieobviously there's going to be strong locality across actually-active users04:13
wgrantStevenK: You should only need to indent the makeBug.04:13
wgrantStevenK: It is the established pattern, but I deprecated it weeks ago.04:13
lifelesspoolie: the crazy thing here is that the table is only 40MB packed and 21MB in the index I would predict will be used.04:13
* StevenK looks for 'with dbuser' in the code04:13
wgrantStevenK: from lp.testing.dbuser import dbuser04:13
wgrantwith dbuser('launchpad'):04:13
poolieso i guess we *could* cluster on user id, but it's probably also used to count up affected users?04:14
wgrant  # ahaha I am god04:14
poolieor maybe that's cached? otherwise it seems it would always be hot04:14
lifelesspoolie: for instance, I have only 64K of the data in that table04:14
wgrantI have a suspicion that it'd be faster to do it in a few separate queries.04:14
pooliehave it where?04:14
wgrantThe enforce optimisation boundaries.04:14
lifelessselect * into temporary table lifelessbap from bugaffectsperson where person=2;04:14
lifelessSELECT04:14
wgrants/The/To/04:14
lifeless \dt+ lifelessbap04:14
lifeless                       List of relations04:14
lifeless   Schema   |    Name     | Type  | Owner | Size  | Description04:14
lifeless------------+-------------+-------+-------+-------+-------------04:14
lifeless pg_temp_40 | lifelessbap | table | ro    | 64 kB |04:14
poolieso how can it get so cold?04:15
StevenKwgrant: Fixed, re-running tests.04:15
lifelesspoolie: we have cron scripts that walk entire tables end to end04:15
lifelesspoolie: for some very big tables04:15
wgrantStevenK: I'll do a batch fix-up and remove switchDbUser eventually.04:15
wgrantAnd then pull some tests back to Functional layers.04:15
StevenKpoolie: Revision, for instance is nearly a billion rows04:15
lifelesspoolie: the point that that 64K is spread over everything is still valid04:16
lifelesspoolie: however - have you deployed stubs query fix yet ?04:16
poolienup04:16
lifelesspoolie: it was just a crazy query initially, and theres no point stressing until that is landed04:16
pooliemy point in talking to you was, whether it was too much of a shot in the dark04:16
pooliesince even the improved one is sometimes quite bad (>3000ms)04:16
pooliebut perhaps the typical case is better04:16
lifelessthe bad query is 9s; the improved one is 3x better to start with04:16
pooliei'll take that04:17
StevenKBring on longpoll04:21
StevenKwgrant: Changed pushed, diff updated.04:22
wgrantStevenK: Approved.04:25
StevenKwgrant: Thanks, tossing through ec204:26
StevenKwallyworld_: Your 518 ec2 AMI can be deleted.04:28
* StevenK looks at deleting 51904:28
wgrantAh, yes, was going to poke people about that.04:29
wgrantBut related stuff on Saturday didn't quite go smoothly.04:29
* wgrant thwacks buildbot and stuff.04:29
StevenKYes, the build of that old revision was lol-worthy04:30
wgrantAnd then the one afterwards caused a bzrlib exception.04:30
StevenKCome on, AWS! Surely you're not slower than SSO!04:30
nigelblol04:30
nigelbYOu'd be surprised.04:31
StevenKI would not.04:31
stubStevenK: Easiest way of handling a garbo job you don't want to run on production but might want to run on staging is to stick it in the 'experimental' list.04:32
nigelblib/lp/scripts/garbo.py is where garbo jobs go?04:34
StevenKYes04:34
* StevenK kicks AWS and re-loads04:34
stubnigelb: For now. It is growing a little unwieldy.04:35
nigelbstub: I'm still trying to figure out how it works :)04:35
StevenKwgrant: 519 binned04:37
wgrantStevenK: Great.04:37
* StevenK tries to understand bug 30753904:49
_mup_Bug #307539: bug attachment HostedFiles refuse to be deleted <lp-foundations> <oops> <tech-debt> <Launchpad itself:Triaged> < https://launchpad.net/bugs/307539 >04:49
StevenKAh. HostedFile is in lazr.restfulclient04:53
StevenKlifeless: You commented on bug 307539 -- writing a quick API script: bug = launchpad.bugs[17] ; bug.attachments[0].data.delete() ; results in a 405, not a 50005:04
_mup_Bug #307539: bug attachment HostedFiles refuse to be deleted <lp-foundations> <oops> <tech-debt> <Launchpad itself:Triaged> < https://launchpad.net/bugs/307539 >05:04
lifelessStevenK: sounds like its Fix Released already then05:06
wgrantlifeless: Do you have opinions on how to do per-artifact observer modelling?05:07
lifelesswgrant: some testing required but either partitioned FK columns or a single generic-reference intermediary table (which we may want to move BugTask etc to use as well)05:09
lifelessthe testing basically being tossing variations of existing prod data at both and assessing query performance05:10
wgrantlifeless: I was thinking it's probably best (for indices) to just have bugtask/branch FKs on the observer table for now.05:10
lifelessdo you observe a task or a bug ?05:10
lifelesswhat happens if you observe something thats not in your pillar anymore ?05:11
wgrantI'm not sure yet, but I think a task.05:11
wgrantBugs are horrible and will probably need several triggers anyway.05:11
lifelessI lean towards a separate table05:11
wgrantOh?05:12
lifelesssurrogate keys are a common part of query schemas, and generally good for performance05:12
lifelessbut like I say, needs testing05:12
wgrantWhat would this table look like?05:12
lifelessid, bugtask, branch, blueprint, question, milestone, series, sourcepackagename, distroseries05:13
wgrantOh, a universal generic reference table?05:13
lifelesspossibly a little less ambitious than totally generic, but yes.05:14
lifelessimmutable rows05:14
lifeless(except when we truely are moving the referenced thing around)05:14
lifelessby which I mean, if the observer changs from observing bug X to bug Y, you would add a row for bug Y and change the observer FK to its PK, rather than editing the dereference table05:15
wgrantAlso, I can't see any way around using triggers to ensure that an observer exists for every task if there is an observer for one of them.05:15
wgrantRight.05:16
lifelessyou will probably need a chunk of triggers, yes05:16
wgrantAnd I'm not sure how exactly we'll handle task retargeting, but I guess we can sort that out somehow.05:16
=== almaisan-away is now known as al-maisan
lifelessdo you mean observer policy ?05:17
lifeless'18:15 < wgrant> Also, I can't see any way around using triggers to ensure that an observer exists for every task if there is an observer for one of them.05:17
lifeless'05:17
wgrantlifeless: Well, that too, but that's far simpler.05:17
lifelessok, so why would you want to ensure observers exist for every task ?05:17
wgrantlifeless: The issue is that if I'm an observer for project A, and there's also a project B task on one of A's bugs, I need a restricted observer record for the project B task as well.05:17
wgrantOr disclosure views will have to query across bugtask.05:18
lifelessor are you suggesting for a 200 task bug, that the special exemption given to let A see the bug, will result in 200 (A, taskN) rules ?05:18
wgrantYes.05:18
lifelessuhm05:18
lifelessmy immediate reaction is to suggest two schemas05:18
lifelessa single non-duplicate schema05:19
lifelessand a derived query schema05:19
wgrantWhy?05:19
lifelessdepends on exactly what the page needs to show I guess05:19
lifelesswhy? so that web and API transactions to change things write a small amount of data05:20
wgrantWe need to be able to show everyone that has access to the project artifacts.05:20
lifelessyou have two very different statements here though05:20
lifelessone is a statement that (person or team X) has access to (asset Y)05:20
lifelessthe other is a statement that (anyone that has access to asset Y in project B) has access to (asset Y too)05:21
lifelessI presume you're not suggesting that you would expand out all the former statements from project B into restricted statements on project A05:22
lifelessbecause that would make any write to project B's observer list also write to project A05:22
wgrantWe need to something along those lines.05:22
wgrantOr we have to join across bugtask, which would be even worse.05:22
lifelessso, don't conflate primary storage with query storage05:23
lifelessyou need somewhere to record intentions *once*05:23
lifelessotherwise you can never audit and tell what things are meant to be where.05:23
lifelessDRY etc etc05:23
wgrantWhy can we never audit?05:23
lifelessseparately, you can do the math and see whether joining through task.bug to get the observer rules for project B is fast05:24
lifelesshowever, unless you're - ELOCAL05:24
wgrantEPARSE05:24
lifelessskype?05:26
wgrantSure05:26
StevenKwgrant: Are you still skyping?05:37
wgrantStevenK: Yes.05:40
poolie> ImportError: cannot import name OfficialBugTag07:48
pooliehalp?07:48
poolie    ZopeXMLConfigurationError: File "/home/mbp/launchpad/lp-branches/work/lib/lp/services/messages/configure.zcml", line 44.2-47.607:48
StevenKDo you remove it?07:51
StevenKOr move it?07:51
adeuringgood morning08:00
poolieStevenK: no08:09
poolieperhaps it's a knock-on import error, i'll shelve my changes and try again08:09
wgrantpoolie: We have lots of potential circular imports.08:16
wgrantBecause any sense of layering is for the weak.08:16
poolieyep, it was circularity08:16
pooliewell08:16
poolierequiring the imports be a strictly acyclic graph even between closely related modules would be a pretty high bar08:16
wgrantSure, but we are far worse than we could be :)08:17
poolie'we' meaning humans :)08:17
pooliealso launchpad08:17
pooliei will try not to make it worse08:17
pooliei would like to clean up the per-person bug views to be not entirely unrelated to the main ones08:18
lifeless\o/08:22
lifelessamqp oops publishing working08:22
lifelessjust need the receiver loop and am done08:22
lifeless-> family for a bit08:23
poolielifeless: and then zero latency?08:23
lifelessgmb: yo08:46
lifelesspoolie: then open source oops tools, and then add a oops-tools script using the bits to receive oopses over amqplib08:47
lifelesspoolie: somewhere in there I need to add spilling to disk if rabbit is down08:48
gmblifeless 'sup?08:49
lifelessgmb: wanted to check with you - I retriaged some bugs down to high; but if they were critical due to priority inheritance then I can put them back08:51
gmblifeless: I've not seen any yet that I disagreed with. Have you got any particular bugs in mind?08:52
lifelessjust the ajax fallout ones08:53
gmbOkay. I'm happy with those being High rather than critical.08:53
poolieshort review please? https://code.launchpad.net/~mbp/launchpad/866100-affectsme-timeout/+merge/7880609:21
pooliedo i need a db review for that?09:21
poolie lifeless, for your interest (realize it's late) i did do the change to a join, in that mp, and it seems it may help09:24
pooliestub: could you review it?09:31
=== al-maisan is now known as almaisan-away
=== almaisan-away is now known as al-maisan
stubk09:47
=== al-maisan is now known as almaisan-away
=== benji changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: benji | Critical bugs: 269 - 0:[########Segmentation fault (core dumped)
=== danilos changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: - | Critical bugs: 269 - 0:[########Segmentation fault (core dumped)
=== danilos changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: benji | Critical bugs: 269 - 0:[########Segmentation fault (core dumped)
danilosbenji, oh, you are actually in already, can you please take a look https://code.launchpad.net/~danilo/launchpad/bug-869089/+merge/78819 when you find some time? (mostly mechanical, replacing remaining uses of official_rosetta throughout the code)12:11
benjidanilos: sure12:11
danilosbenji, thanks12:16
deryckGood morning, all.13:01
=== almaisan-away is now known as al-maisan
bigjoolshas anyone seen "UploadFailed: Server said: 500 Internal server error" coming from the librarian when running tests?14:23
jmlHmm.14:37
jmlbigjools: Yes.14:37
jmlbigjools: But I can't remember what caused it.14:37
bigjoolsit's oneiric14:37
bigjoolshttps://bugs.launchpad.net/launchpad/+bug/87159614:37
_mup_Bug #871596: Can't run tests involving Librarian <build-infrastructure> <librarian> <Launchpad itself:Triaged> < https://launchpad.net/bugs/871596 >14:37
jmlHmm.14:37
jmlbigjools: no, I haven't seen that thing from the librarian log14:39
jmlbigjools: but I've only done one or two LP patches in oneiric, and that was weeks ago.14:39
bigjoolsjml: I only get it when running more than one test14:40
bigjoolssingle runs are fine14:40
jmlbigjools: it takes quite a while to get an updated tree with runnable tests.14:43
bigjoolsjml: not sure what you mean14:43
jmlbigjools: bzr pull; bzr up download-cache; ./utilities/update-sourcecode; make schema14:44
jmltakes time14:44
bigjoolsah, that :)14:46
=== al-maisan is now known as almaisan-away
* bigjools nails 5-digit bug to the wall15:30
=== micahg_ is now known as micahg
rvbaThanks for the reviews benji!15:51
benjirvba: my pleasure15:52
=== matsubara is now known as matsubara-lunch
=== deryck is now known as deryck[lunch]
=== matsubara-lunch is now known as matsubara
=== deryck[lunch] is now known as deryck
lifelessflacoste: 'yo'19:20
lifelessgary_poster: wheee, nice bug there19:23
gary_posterlifeless, :-)19:23
=== benji changed the topic of #launchpad-dev to: https://dev.launchpad.net/ | On call reviewer: - | Critical bugs: 269 - 0:[########Segmentation fault (core dumped)
=== lifeless changed the topic of #launchpad-dev to: Performance Tuesday | https://dev.launchpad.net/ | On call reviewer: - | Critical bugs: 269 - 0:[########Segmentation fault (core dumped)
=== matsubara is now known as matsubara-afk
lifelesswgrant: medical schedule change; I have to pop out quite a bit sooner; I should be on 3g successfully though, once I'm at the place we're going.20:57
=== jpds_ is now known as jpds
lifeless\o/ and handling of rabbit down done too. :)21:45
lifelesswgrant: can you do a review of the first two commits of python-oops-amqp ?  We don't have a sensible review-first-commit thing yet21:57
wgrantOh, bah, no Curtis today, I suppose.22:02
lifelesswgrant: I'm specifically looking for thinkos in my amqp handling22:03
wgrantYep, am looking, since it seems we don't have a standup without the US :)22:03
lifelessthanks22:03
lifelessjust drop me mail; I'll try to get back online ~your 10am22:07
wgrantk22:07
wgrantlifeless: Also, http://www.rabbitmq.com/faq.html#which-entity-should-declare-exchanges22:10
lifelessthanks22:15
* lifeless goes22:15
wallyworldwgrant: StevenK: have you had any issues landing stuff via ec2? The last few things I've thrown at it all fail with hung tests22:53
wgrantwallyworld: Which tests?22:53
wallyworldwgrant: doesn't specify. just says "A test appears to be hung..."22:54
wgrantCan you forward me the emails?22:54
wallyworldthe last successful test appears to be lp.archivepublisher.tests.test_publisher.TestPublisher.testReleaseFile22:54
wgrantOh.22:54
wgrantMerge devel.22:55
wgrantYou need my new AMI from Saturday.22:55
wgrant52222:55
wallyworldi think i'm using 52122:55
wallyworldthanks22:55
StevenKwallyworld: And 518 can be binned ...22:56
wallyworldStevenK: how do i do that?22:56
* wallyworld looks at the wiki22:56
StevenKwallyworld: https://dev.launchpad.net/EC2Test/Image22:56
StevenKwallyworld: Last section is 'Deleting AMIs'22:56
wallyworldthanks22:56
lifelessand on 3g23:12
wgrantlifeless:   File "/tmp/python-oops-amqp/eggs/testtools-0.9.12_r228-py2.7.egg/testtools/testcase.py", line 134, in gather_details23:40
wgrant    for name, content_object in source_dict.items():23:40
wgrantAttributeError: 'RabbitServerRunner' object has no attribute 'items'23:40
lifelesswgrant: reproduction instructions ?23:40
wgrantlifeless: bzr branch lp:python-oops-amqp; cd python-oops-amqp; ln -s ~/launchpad/lp-sourcedeps/download-cache; ./bootstrap.py; bin/buildout; bin/py -m testtools.run oops_amqp.tests.test_suite23:41
lifelesswgrant: on lucid ?23:41
wgrantlifeless: oneiric23:42
wgrantI could try lucid, I suppose.23:42
lifelessthats a mismatch with changed testtools api23:42
lifelessbetween fixtures and testtools23:43
wgrantlifeless: But both fixtures and testtools are from eggs.23:43
lifelessjust reproducing on my laptop (in my lucid lxc)23:43
wgrantAh, works.23:44
wgrantOn Lucid.23:45
wgrantHmmm.23:45
wgrantI suppose it could be a minor problem that I don't actually have rabbitmq-server installed on my oneiric host.23:45
wgrantStill, rather opaque error :)23:45
mwhudsonsuggests there's a mismatch in the specified versions then?23:46
lifelessyes23:47

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