/srv/irclogs.ubuntu.com/2011/03/31/#launchpad-yellow.txt

gmbdanilos: Can I just check something about the team subscription opt-out story that I'm working on (I'm assuming you'll be able to answer this question based on my vague memory of what Gary said yesterday; if you can't, no worries)11:02
gmbdanilos: Is the opt-out supposed to be for team *structural* subscriptions or for direct team subscriptions or both?11:02
gmbE_BRAIN_NOT_FIRING. Lunch11:51
danilosgmb, I think this was mostly about structural subscriptions12:08
danilosgmb, but, you are making a good point about direct team subscriptions12:17
gmbdanilos: Damn, I was hoping you'd say "no, we don't care about direct subscriptions."12:47
gmbBut thanks anyway :)12:47
danilosgmb, :)12:47
gmbgary_poster: Just the man! To repeat my question to danilo earlier: Is the opt-out from team subs supposed to be for team *structural* subscriptions or for direct team subscriptions or both?13:09
gary_postergmb, only structural13:09
gmbHURRAH13:10
gmbI mean, cool.13:10
gmb:)13:10
gary_posterif it is direct, people can just mute the bug13:10
gary_poster:-)13:10
gmbRight.13:10
* gmb goes to finish the DB patch.13:10
gary_postergmb...spanner in the works, but thinking about how we are presenting this, either we need to be able to mute *filters* or we need to think about a good UI for muting the entire structural subscriptions13:18
gary_posterfilters are the natural way to approach this from a UI perspective13:19
gary_posterfrom the DB perspective, that's no biggie...13:19
gmbgary_poster: Hmm. At the moment I've got a StructuralSubscriptionMute table; it doesn't take much to tie it to the filter rather than the subscription.13:19
gmbAnd I agree, filters are what we present to the user as "subscriptions"13:19
gary_posterfrom the perspective of how the muting would work, and efficiency, that's a bit more concerning...13:20
gmbYou mean in terms of things-to-check-for-mutes-when-sending-emails?13:20
gary_posteryeah13:20
gmbHmm.13:20
gary_posterlemme look at the code I'm trying to get reviewed...13:21
gmbok13:21
gary_posterok, so here's the good news...13:22
gary_posterwe already have code that gets the pertinent filters for each person13:22
gary_posterand hopefully it is fairly efficient13:22
gary_posterwith my branch that is to be reviewed13:22
gmbAh, cool.13:23
gary_posterit will need slight tweaks but no big deal13:23
gmbSo we could adapt that code so that "pertinent" doesn't include "muted"?13:23
bachi gary_poster, my branch didn't get reviewed.  do you want to do it or shall i hit up gavin who is OCR?13:24
gary_posterwell, sort of, yes.  It would always start out by giving all of the filters per person; then we would need to look for any mutes13:24
gary_posterbac, try gavin first; if he has a backlog, I can get to it within an hour I'd guess13:24
bacwill do13:25
gary_posterthanks13:25
gmbOkay, cool.13:25
gary_posterso gmb, I *think* that we will be adding a single query per person13:25
gmbgary_poster: Right, okay. First things first, I'll update my DB patch, then I can come back to the code surrounding it. I think that updating your code will come late on in the process, so we've time to thrash out a solution to any performance issues.13:26
gary_postersomething like "given this person and all of the possible filters that might be involved, [give me the ones that are muted and I'll subtract them and if they are all muted then nevermind OR give me the ones that are not muted]13:26
gary_poster"13:26
gary_postercool13:26
gmbRight. That makes sense.13:27
gary_posterbac benji danilos gmb, mumble/kanban in 213:28
bacyep13:28
gmback13:29
bacthis https://wiki.canonical.com/2011Calendar shows week of june 2713:44
gary_posterQuestion for the Committee:13:45
bacbased on danilos' problem with the renaming of the feature flag i think we should move to defining a symbol and never use the actual string in code13:45
gary_posterI have a test failing thusly:13:45
gary_poster    + ERROR   Unhandled exception13:45
gary_poster    +  -> http://localhost:56152/96/oG1i6vRy0DfzXWgDOpRsv7iAq4e.txt (permission denied for relation account13:45
gary_poster    + )13:45
gary_posterbac, good idea, +113:46
bachmm, that might be hard in the template...13:46
gary_postercould be request/feature_flag_names/THE_NAME maybe13:46
gary_posterbut that would take a bit of doing13:46
gary_posternot much13:46
gary_posterbut some13:46
gary_posteralternatively we could say that views should expose the constant13:47
gary_posterso it could be view/THE_NAME13:47
gary_posterthat would be a bit lighter weight but also require a bit more coding for every template13:47
gary_posterso anyway, about my failing test...13:48
gary_posterI've looked for the file that is mentioned13:48
gary_posterin . and in tmp13:48
gary_posternot there13:48
gary_posterI assume that it is about SQL security13:48
gary_posterbut it would be nice to actually see the traceback13:48
bacgary_poster: what is the failing test?13:49
gary_posterlp/registry/doc/distribution-mirror.txt line 65013:50
bacgary_poster: we won't be breaking the assurances you made to wgrant about xss if we turn on the feature flag on qastaging, will we?14:05
gary_posterbac, I thought about it and I don't see how.  qastaging does not use the prod db.  Please share your concerns!  Thinking about it some more...14:06
gary_posterturning on the feature flag for ourselves (~yellow, say) means that we might be able to be evil and hack data from the db14:06
gary_posterbut there would presumable be much easier ways for us to di that than this XSS thing14:07
bacgary_poster: my concerns are ill-formed and i need to re-read the thread.  i just recall part of your argument for leaving the code in was that it wasn't turned on14:07
gary_postertrue.  In this context, I would say this:14:07
bacgary_poster: well, i had intended to do malone-alpha14:07
gary_poster1) It is not turned on in prod14:07
bacbut i can request ~yellow instead -- a much better lpan14:07
bacplan14:07
gary_poster2) qastaging for ~yellow sounds ok14:08
gary_posterok cool bac14:08
bacgary_poster: while i wait on my review to be done i'm going to work on peer reviews.  i've got a bunch.14:11
gary_postercool bac14:11
gmbHah, Marianna has just emailed the list about Dublin. So now we know.14:12
danilosgmb, she seems to have forgotten to mention the month :)14:14
gmbdanilos: It's in the subject.14:14
gmb27th June.14:14
gmb(Week beginning)14:14
danilosgmb, ah, true :)14:14
gmbBut yeah, that threw me for a moment :)14:14
gary_posterdanilos or someone else, if I change security.cfg that means I have to land on db-devel (not good for this branch) right?14:25
danilosgary_poster, I don't think you do, but I might be wrong; maybe LOSAs know if security.py is run on "stable" rollouts if stub is not around14:28
gary_posterack danilos, I'll check, thanks14:28
danilosgary_poster, (also, there's the pqm check which stops landing certain changes on devel, not sure if that includes security.cfg changes)14:29
gary_posterack danilos.  I thought that code was actually in the tree somewhere but can't seem to find it14:36
gary_postergmb, mumble?  now, or in a few?14:36
gary_posterdanilos, security.py is in fact run for no-downtime deploys, so good.  If I want to just run the security changes such that tests will see them, will running "./database/schema/security.py" do the trick?14:40
danilosgary_poster, you'll have to do it for all the appropriate databases (i.e. launchpad_ftest_template I think), check "--help" :)14:42
gary_posterdanilos, ack, I just did it "./database/schema/security.py -d  launchpad_ftest_template" and "./database/schema/security.py -d  launchpad_ftest_playground" ....we'll see14:42
danilosgary_poster, good luck :)14:43
gary_posterthanks :-)14:43
gary_posterworked, yay (both the security.py call, and the fix for at least one of the two failures)14:46
gary_posterboo, not the other one, but should be same idea...14:46
gmbgary_poster: Sorry, dropped offline for a bit... you were talking to my proxy.14:50
gmbI'm free now if you are.14:51
gary_poster:-) ok, 1 min the I'll be ready gmb.  thanks14:51
daniloscrap, I'll need Irish visa (or, alternatively, I can land in Belfast and then travel to Dublin by bus/train :)14:56
benjigary_poster: no need for me to email about Windmill tests; Ian has a branch to fix them (although I do worry a little about our process: why didn't I know they were broken and how could I have found out (if I'd thought to go looking))15:19
danilosgary_poster, I've noticed that in JS setup_bug_subscriptions() wraps everything inside Y.on('domready') and it's further wrapped in Y.on('domready') in all callsites in templates; if I am to remove one, which one would you prefer? :)15:22
gary_posterbenji: good point and not the first time. :-/15:29
gary_posterbenji, I guess I'll bring it up to flacoste unless you want to take the initiative?  I think it bears raising15:29
benjihave at it15:30
gary_posterk15:30
gary_posterdanilos, I thought I vaguely remebered something like that.  We can talk about it on call :-)15:30
gary_poster(which I'm ready for anytime)15:30
danilosgary_poster, not sure what's wrong, give me a minute15:31
danilosI can15:32
danilosgary_poster, I don't get to see any input from my microphone15:33
gary_posterdanilos, hm :-(15:33
gary_posterso Skype would not work either, I assume15:33
danilosgary_poster, let me try the test call15:33
gary_posterk15:33
danilosI hope my headset didn't die in the middle of the day15:34
gary_posteror just try me, whatever is convenient, danilos15:34
gary_posterI just logged on15:34
danilosgary_poster, nothing in the test call :(15:35
gary_poster:-(15:35
gary_posterok...15:35
gary_postermaybe the computer mic?15:35
danilosgary_poster, I am looking if anyone of my friends have it here15:35
gary_postersometimes headset output plus computer mic input is OK15:35
gary_posterok cool15:35
danilosa desktop here, no mic on it :(15:36
danilosI'll try a windows technique now, rebooting15:36
gary_posterheh15:36
danilosgary_poster, didn't seem to have helped, I guess I am microphoneless right now :(15:42
gary_posterdanilos, :-(15:43
gary_posterok15:43
danilosgary_poster, just tried the headset on my friends computer, microphone is apparently dead15:44
gary_posterdanilos, as to your question above, I'd prefer we do things similarly, and the .setup function uses domready on the template.  I don't really have a preference as to which approach we use15:44
gary_posterit would be easier to just use the one on the template15:44
danilosgary_poster, right, I'll make sure it's consistent across setup/setup_bug_subscriptions15:45
gary_posterbecause then you only change one thing15:45
gary_posterbut do whichever you want15:45
danilosgary_poster, ack, was just wondering if you have any preferences15:45
gary_posterdanilos, I'll make a card for us to have a replacement call tomorrow, assuming you have the mic sorted out by then15:45
danilosgary_poster, yeah, I'll make sure I do15:45
danilosgary_poster, sorry about this (I hope the fact that I muted on the headset and never silenced or muted mumble itself didn't kill it, because that would be very weird)15:46
gary_posterdanilos, preference: naah, make a choice and I'll be happy with it.  I have reasons to prefer both approaches.15:46
danilosgary_poster, heh, ok, thanks for the input15:46
gary_posterdanilos, np.  comuters suck ;-)15:46
danilos:)15:47
gary_posterok gmb, I actually can start work on the mute thing now.  So, let's see: we need code that handles the muting, and we need to expose the table in the webservice, and we need JS changes.  I'm probably being crazy, but I think we can get this done pretty quickly.15:51
gary_posterThe webservice part is the only thing I'm not sure how to do, amusingly enough given my Foundations background.15:51
gary_posterSo...what should I do?  I think one of us should work on the webservice exposure, and one of us should work on the script.  I'm interested in the webservice change, but I also have a fair amount of knowledge of the email-sending script, so either would work for me.15:51
gary_posterI'd say my default choice would be the email, because I think I know exactly where the bodies are buried for that one.  What do you think?15:51
gmbgary_poster: I'm happy to work on the webservice side of things since it's close to the front of my brain right now.15:52
gary_posterok cool15:52
gmbI'm just making final tweaks to my DB patch (so that it, yanno, works)15:52
gary_posterwhat's your branch, gmb?15:52
gary_posteroh ok15:52
gary_posterping me when it's ready for me to run with it15:52
gmbSQL doesn't take kindly to missing keywords.15:52
gary_poster:-)15:52
gmbgary_poster: Sure. Should be ready in < 5 mins.15:53
gary_posterawesome15:53
danilosbac, are you able to QA any stuff on qastaging? (I can see the flag should be on for malone-alpha but the links don't turn green)16:05
bacdanilos: you see a similar but different feature flag.  ours is not yet turned on.16:06
bactom said he'd do it but was very busy ATM16:06
bacapparently some ISD issues are on fire16:06
danilosbac, ah, ok16:06
gmbZCML, I hate you.16:08
gmbgary_poster: Branch is up here: lp:~gmb/launchpad/team-subscription-opt-out. It contains the DB patch and model / interface definitions.16:10
gary_posterawesome gmb, thanks.  I'll merge it with my optimization branches under review and work from there for the script.16:11
gmbCool.16:11
gmbI'll ping you as I update things that might have an impact on what you're doing.16:11
gary_postercool16:16
bacdanilos: here is the FF request i made: http://paste.ubuntu.com/587806/16:23
danilosbac, looks good, shall we try with other LOSAs or are they all busy with the same emergency?16:25
gary_posterWeird.  Getting Graham's branch is taking the most work of any LP branch I've had in a long time16:25
gary_posterFetching revisions:Inserting stream:repacking chk:chk node 422334/55964316:25
gary_postermost work in bzr I should say16:25
gary_posterbizarre16:25
gary_posterheh.  heh.16:25
danilosbac, btw, what does 16 indicate here? (I know I have 10 in my local set-up)16:25
bacit is the priority.  TBH i just stole the line from the other related FF.  it only comes into play if there are other flags with the same name in other scopes...maybe?16:26
danilosbac, ah, ok, thanks for the clarification, I was just wondering what it was supposed to be in the first place16:27
gary_posterwow... it is *still* going...16:28
gmbgary_poster: Might be something to do with it being a db-devel branch16:30
gmbI noticed the same thing when I pushed.16:30
gary_posterhuh16:37
bacdanilos: as to the LOSAs, i peeked into lp-ops a bit ago and they still seemed quite busy.  ping them later if you want.16:37
gary_posterwell, I got it now16:37
danilosbac, yeah, I will thanks16:41
gary_posterbiab16:57
=== _mup__ is now known as _mup_
gmbgary_poster: I'm about to EoD. I haven't added anything of note to my branch. If you need to add any APIs or what have you to IBugSubscriptionFilter or *Mute just add them and send me an email so I know to merge the changes.18:18
gary_postergmb, sweet.18:19
gary_posterdanilo, you around?  I have database things to ask you, if you are :-018:49
gary_poster:-)18:49
gary_posterStorm, to be precise18:50
danilosgary_poster, I am18:50
gary_postercool18:50
gary_posterso, if I want to get only fields as results from storm18:50
danilosgary_poster, you get tuples of actual values :)18:51
danilosgary_poster, but I suppose that's not the question18:51
gary_poster :-) yeah sorry someone came to door18:54
gary_posterso yesterday I had a bit of annoyance18:54
gary_posterStorm was trying to cast values18:54
gary_posterand the values were sometimes None18:54
gary_posterwhich the casting didn't like so much18:55
gary_posterThey were None for expected reasons18:55
gary_posterbut the fields couldn't handle it18:55
danilosgary_poster, ah, interesting, did it happen with foreign references?18:55
gary_posteryeah18:55
gary_postermaybe18:55
gary_poster:-)18:55
danilosgary_poster, you should probably use "columnID" then18:55
danilosgary_poster, and probably file a bug against storm if there isn't one already18:56
gary_posterThat worked well, actually, but...oh, here's my concrete example...18:56
danilosgary_poster, I am guessing it's a left join then :)18:56
gary_posterright18:57
gary_posterI had a left join18:57
gary_posterand I wanted to get a status18:57
gary_posterEmailAddress.status to be precise18:57
gary_posterand sometimes it would be None18:58
gary_posterbecause of left join18:58
gary_posterand things would fall over18:58
gary_posterand I wondered if there were a way to get the value without processing18:58
gary_posterlike you can do columnID18:58
gary_posterIs there a trick like that?18:59
danilosgary_poster, how about coalesce?19:00
gary_posterooh, sounds magic :-)19:00
danilosgary_poster, basically Coalesce(Something, -1) will return -1 if Something is NULL19:01
gary_posterI'll try googling storm coalesce19:01
danilosgary_poster, it's regular SQL COALESCE, just wrapped in Storm as Coalesce I believe19:01
gary_posterI'll play with it.  Thanks danilos!19:02
danilosgary_poster, it's probably no surprise that most of the occurrences are in lp/translations :)19:02
gary_poster:-)19:02
gary_posterdanilos, btw, I had another idea on how to reduce SQL in sending email.  I think it might be important, since we are going to be adding yet more for the team subscription mute19:03
danilosgary_poster, ah, sounds nice :) what is it?19:03
gary_posterI'm trying to get all of the data for each notification batch at once (roughly), only retrieving the columns I want, and then divide things up in Python.  I'm not sure if its a win in the big picture yet, but it should certainly reduce our SQL.19:05
gary_posterI keep thinking I should make a harness to produce something like what we have in production...I'm not even entirely sure what that would look like.19:05
gary_posterAnyway, I'm experimenting.  I'll show you if I think it looks OK to see if you have any thoughts19:06
danilosgary_poster, yeah, probably having a script which creates a number of targets with a bunch of bugs, adds a few structural subscriptions and then does a few changes on existing bugs and files new ones would be nice for testing all this19:07
gary_posterThe test factory seems like the easiest way to do that19:08
danilosgary_poster, yeah, definitely19:09
gary_posterI did a little bit of that for my last branch.  Maybe I'll do some more this time around19:09
danilosgary_poster, and, on the topic of getting everything once, what do you mean with "notification batch"? for a single bug notification?19:09
gary_posterthe notification batch that construct_email_notifications gets19:10
danilosgary_poster, fwiw, that's also why we have split-up sample data between test and playground, you can probably commit some of it if you use nice product names and such :)19:10
gary_posterdanilos, I was just going to write a "test" and use that, rather than anything permanent.  that way I can change things more easilt19:11
gary_postery19:11
gary_posterdo you suggest something diff?19:11
danilosgary_poster, I like the idea behind notification batches with a small finite number of queries, so big +++1 on that19:12
gary_postercool19:12
danilos(that was stupid, +1000 is more like it :)19:12
gary_poster:-)19:12
gary_posteronly stupid to a mathematician like you :-)19:12
gary_posterit won't be finite everywhere, but this last main loop can be finite, yeah19:13
danilosheh, yeah, to a developer like me, it evaluates to +(++1)==+2 :)19:13
gary_poster:-)19:13
danilosanyway, regarding testing, a test is good, but I always miss the actual data to easily test stuff, though it's probably better to have scripts that produce the data at will instead of including it in sample data19:14
gary_posterok cool19:15
danilosgary_poster, the biggest win, though, will be from getting stuff for multiple persons at the same time, but as we all know, that's a "bit" more work19:18
gary_poster:-) well, that's what I'm trying to do.  Like I said, I'll ping you for your thoughts later.19:19
danilosgary_poster, but isn't a batch construct_email_notifications gets restricted to a single person?19:21
danilosgary_poster, or are you changing that to take batches with different recipients as well?19:21
gary_posterdanilos, it's restricted to a single "owner" or "actor".  There are many recipients19:21
danilosgary_poster, aaaahhhh19:21
danilosgary_poster, sorry then, yeah, that'd be very good then :)19:22
gary_postercool :-)19:22
gary_posterbac, no rush, but ready for call when you are19:32
gary_posterbac, Skype test call did not have static when I called them. :-/20:00
gary_posterjust now I mean20:00
baci'm all for using skype again20:00
gary_posterYeah ok20:00
gary_posterbenji, can you give me 10?20:59
benjisure20:59
gary_posterthx20:59
benjiif anyone needs a task I have some html generation refactoring I can farm out21:05
gary_posterbenji, sorry, took longer than expected but ready now.21:18
bacbenji: i'm up for share cropping21:20
benjibac: can you take on setup_overlay21:20
bacsure.  branch?21:20
benjibac: lp:~benji/launchpad/better-HTML-generation (pushing now)21:21
bacbenji: ok.  i'm in the middle of something ATM but can look soon21:21
bacgary_poster: doesn't this seem like an easier way to go that should be more efficient? http://pastebin.ubuntu.com/587978/21:25
gary_posterbac, if that is transitive, then yes, looks great, thank you21:27
gary_posterbac, please don't forget to claim "potential performance" card and move it into "Coding"22:03
bacgary_poster: ok22:04
gary_posterthanks22:04
bacdone22:05

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