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

=== Ursinha is now known as Ursinha-afk
jtvlifeless: I see you were playing with the idea of sacrificing bug-count accuracy for private bugs.  I sometimes wonder if it makes sense to treat them as the same thing in the first place.06:08
jtvUI-wise, that is.06:09
jtvIf we had, say, private-bug portlets then we'd get more caching, less low-level decision-making ("which bugs should I count here exactly?") and maybe even less of the narrow-deep/wide-shallow query antipattern as a matter of course.06:11
jtvIn that example (private-bug portlets), I imagine bug counts etc. including only public items, and logged-in users with access to private items getting something extra on the side to show those items.06:13
jtvIn some ways that'd be worse UI, but in some ways it might be better: less "oh you can't access this it's private" and more confidence that private things really are private.06:13
lifelessjtv: its an interesting discussion to have for sure06:14
lifelessjtv: doesn't really impact the coding though - its easy enough to union in on search generation to avoid shallow-wide issues06:14
lifelessjtv: caching of public stuff doesn't really interest me06:16
jtvshallow is rarely an issue when it comes to db query performance.  :)06:16
lifelessjtv: users seem to notice stale data06:16
lifelessso I'm very keen on use ripping out caches that aren't keep fresh06:16
jtvOf course.06:17
jtvBut how often do we need e.g. the Ubuntu bug count?06:17
lifelessdunno :)06:17
jtvIn fact...06:17
lifelessI can tell you of course06:18
jtvthis is way too generic, but06:18
jtvjust a thought:06:18
jtvimagine we had support for short-lived caches with optional aggressive pre-seeding.06:19
jtvSo basically on-demand caching with short lifetimes, but separately from that imagine we could pick the most popular items and refresh them before they expire.06:19
lifelessthere is a common antipattern that turns up there06:20
jtvThat'd be a way to head off the thundering herd.06:20
lifelesswhich is that the generation time is high06:20
lifelesssaid generation time is then the lowest latency for updates to the cache06:20
jtvWhy would a high generation time be the lowest latency for updating the cache?06:21
lifelesseither the data is incrementally updatable06:22
lifelessin which case a cache is a bit of a misleading description (its more a memo that can be edited - like my fact table)06:23
lifelessor the data has to be regenerated after a change occurs06:23
lifelessin which case the shortest latency between change and inserting the updated cached item is the time it takes to generate the the item from scratch06:24
jtvSo you're really saying the problem there is we lose sight of the time it takes for a change to become visible to the user?06:27
lifelessyes06:27
lifelessthe key is to build data structures that let us do /all/ the work we need to do efficiently06:28
lifelesse.g.06:28
lifeless'update the bug'06:28
lifeless'update the aggregates the bug appeared/now appears in'06:28
jtvlifeless: ISWYM06:50
jtvlifeless: got a moment to discuss something else?  Pre-imp, basically.06:51
lifelesssure06:52
jtvThanks.  It starts at this page: https://wiki.ubuntu.com/NewReleaseCycleProcess06:52
jtvLots of manual steps on there, many of which could be automated, when a new Ubuntu distroseries is created.06:53
jtvSome of those steps apply to other distros as well.06:53
jtvI've been asked to automate steps 12 & 14.06:54
jtvBasically, two script runs for a new distroseries.06:55
jtvAFAICT those script runs can be done right after initialise-from-parent (step 10).06:56
jtvFor Debian series, it basically doesn't matter whether we do that script run or not.06:57
jtvAnd I think for the foreseeable future, every series that matters is going to have a parent to initialise from.06:58
jtvThe way I think I'd like to handle that is:06:58
lifelessman, that whole thing should be automated06:58
jtvExactly.06:58
StevenKWe don't follow that process for Debian at all, since we don't publish it06:58
jtvAnd I don't want my solution to get in the way of that, but also not go overboard on the design.06:59
jtvStevenK: no, I'm just using that page as a starting illustration here.06:59
jtvStevenK: as I said earlier, many of those steps are not Ubuntu-specific on the one hand, and on the other we can take or leave steps 12 & 14 for Debian.07:00
jtvWhat I have in mind for a solution when it comes to just steps 12 & 14, is to have a DistributionJob type that is handled by a runner on cocoplum.07:01
jtvIf it fails, I'm thinking it should notify the distro owners who can then sort it out with us LP people.07:01
lifelessjtv: so, what about the cron job disable/enable?07:02
lifelessseems you need to fit in with that / make it unneeded07:02
wgrantjtv: Debian's archive won't have its publish flag set, so you won't try to publish it.07:02
jtvWhat cron job disable/enable is that?07:02
lifelessstep 5 and 1507:03
lifelessthat bracket the step syou're automating07:03
jtvwgrant: AIUI it doesn't matter whether we run this or not for Debian series.07:03
wgrantjtv: Debian has nowhere to publish to, so it will fail if you try.07:03
jtvwgrant: you mean it doesn't have a publisher config?07:04
wgrantjtv: Indeed, that is the case now.07:04
jtvlifeless: sorry if I left that bit out -- I was thinking to create this job in initialise-from-parent, so the run won't happen before the cron jobs are disabled.  We'll want a notification to the distro owners in the case of success as well then, as one of the preconditions for re-enabling them.07:06
wgrantjtv: We need to automate the disablement.07:06
jtvwgrant: you mean "yes it doesn't have a publisher config" or "yes it does have a publisher config"?  (Asking because where I live, people tend to answer negative questions with "yes")07:06
wgrantjtv: That is the case: it doesn't have a publisher config.07:07
wgrantA month ago that wasn't the case.07:07
wgrantBecause there were no publisher configs.07:07
jtvwgrant: we ought to automate the whole bally lot of this.  But that's for another day.  I'm trying to solve a specific problem in such a way that it doesn't stand in the way of a wider solution.07:07
wgrantSo it would have happily published into completely the wrong place.07:07
jtvThat's fine too, as long as it's not a place used by someone else.07:08
jtvI do wonder though whether a new non-Ubuntu, non-Debian distroseries will have a publisher config at this point.07:08
jtvIf not, there's not much point to any of this.07:08
wgrantNot right now, no.07:09
wgrantBut as soon as DDs are in use, yes.07:09
lifelessas a DD, I object to that07:09
lifelesswe don't get 'used'07:09
wgrantHa ha.07:09
jtvBefore I make the joke none of us wants to see me make... what's a DD?07:09
lifelessdebian developer07:09
jtvI don't think that's what wgrant meant...07:10
wgrantI believe I meant Derivative Distros, but now I am not so sure.07:10
jtvWell this is _for_ derived distros (if you don't mind changing your words a bit) so will a new distroseries for a new derived distro have a publisher config right from the outset?07:11
jtvmind *me* changing your words, that is07:11
wgrantjtv: A new distro had better have a publisher config before its series is initialised, yes.07:12
jtvIf that job is not on the board yet, perhaps it should be.07:12
wgrantMm, not sure that's the case.07:13
wgrantIt's one of those things that can/will be done at the end once everything else is worked out.07:14
wgrantIt doesn't affect much else.07:14
wgrantUnlike the other stuff that people seem to be pushing through excessively quickly :P07:14
jtvBy the way, I suppose that the disabling/enabling the cron jobs can in future be done for just the distro.07:15
wgrantCan't it already?07:15
jtvDon't think so, no.  All the locking is still per-script.07:16
wgrantAh, assuming you're publishing multiple distros on a single machine, yeah.07:17
jtvWell otherwise there's not much difference, is there?  :)07:17
wgrantWhat do you mean?07:18
wgrantThere is one instance of each job for each distribution.07:18
jtvYes, so disabling the cron jobs for all distributions on a machine would be pretty much the same thing as disabling the cron jobs for the one distribution on the machine.07:19
jtvBy the way, we do have a ticket for making the scheduling of publisher jobs db-driven.07:20
jtvThat'd be helpful in managing this.07:20
wgrantHave you actually discussed how the scheduling is going to work?07:20
wgrantAnd what the requirements for setting up a new distro are?07:20
jtvNo, the scheduling thing is a lower-priority task.07:20
jtvThe requirements for setting up a distro is effectively what we're discussing right now.07:21
jtvI imagine the Ubuntu procedure is about the best template we have for that.07:21
wgrantThe best template for what is necessary for creating a new series in an existing distribution.07:22
wgrantNot for what we want creating a new series to be like, let alone creating a new distribution.'07:22
lifelessgrag07:25
lifelesswhats the bug # for users being confused about login.launchpad.net07:25
lifelessjtv: I just remembered a great example about cache update latency07:29
lifelessgoogle used to run their search index in readonly mode07:29
lifelessthey would process newly scanned pages into a new index07:29
lifelessand then run around their datacentres pivoting the new index into place07:29
lifelessthis was a fortnightly or something even07:29
lifeless*event*07:29
lifelessso a new page wasn't findable for weeks - as an expected thing07:30
lifelessthen, they made it transactionally updatable (they did a whitepaper on this, adding transaction abstraction to bigtable); and now scan pages directly into the live index, with sub-minute latency on event driven changes (like pingthesemanticweb) and 1/2-refresh-frequency for polled content07:31
lifelessall about data structures07:31
jtvwgrant: yes, that is a big question right there.  I have a feeling we'll either have to do another round of design (which will probably still miss things, I guess) or create a manual list similar to this one as we learn, and automate as a separate process.07:32
jtvlifeless: that's very much down to investing effort into the specific case though.  There's often _also_ a lot to be gained from more generic partial solutions: partly as a stopgap while you direct the effort elsewhere, and partly as an actual solution for the more mundane problems.07:36
lifelessjtv: perhaps.07:37
jtvFor instance, caching can be bad in that it hides worst-case latency problems, but it can be good for reducing load-driven latency and a stopgap for average-case latency.07:38
lifelessso, the latter two cases do make sense for judicious use of caching07:39
lifelesshowever07:40
lifelessidentifying them is harder than you might think07:40
jtvwgrant: have you had a chance to look at the pythonic publish-ftpmaster again by the way?  I'm really quite dependent on your judgment when it comes to Q/A.07:40
lifelessjtv: at a guess, not till wed07:41
lifelessjtv: its easter07:41
lifeless+ anzac day07:41
wgrantjtv: lifeless speaks the truth.07:41
wgrantWhen are we going to switch over to it?07:42
wgrantI don't really have much idea of the timeframe of this whole thing.07:42
jtvanzac?  aus&nz asomething csomething?07:42
wgrantOther than suspicions that everyone's being very optimistic about timing.07:42
jtvwgrant: totally concur there, but I suspect the answer depends largely on "when wgrant is satisfied that it works properly."07:42
lifelessjtv: australia new zealand armed core07:43
lifelessjtv: gallipoli remembrance basically07:43
jtvSome kind of independence movement?07:43
jtvJoking, joking.07:43
jtvPerhaps not a good idea to joke about Gallipolli with the antipodeans...07:43
StevenKI thought it was Army Core?07:43
lifelessStevenK: probably07:44
wgrantYUou mean Corps?07:44
lifelesswgrant: I do07:44
jtvThat makes slightly more sense.07:44
lifeless<- tired07:44
StevenKAt 6:45pm?07:44
lifelessStevenK: late night + early kitty-wake-up07:44
jtvA full corps would be a sensible unit for those population sizes, I guess.07:44
jtvlifeless, StevenK, wgrant: thanks for your help with this.  The salient points have been recorded in notes.  Which after an urgently approaching meal I shall start to turn into code.07:49
wgrantjtv: I wish we had Julian this week :(07:50
jtvHaving Julian is always good.07:50
=== jtv is now known as jtv-eat
=== stub1 is now known as stub
=== jtv-eat is now known as jtv
=== almaisan-away is now known as al-maisan
jtvwgrant: do you think anyone would mind terribly if I added an --all-suites option to publish-distro?09:03
wgrantjtv: As opposed to omitting the '-s' option..?09:06
jtvwgrant: well I would have _expected_ omission to mean "all," but I don't see that in the code.09:06
wgrantIt does.09:06
wgrantIt leaves allowed_suites empty.09:06
jtvIs it hidden in getPublisher somehow?09:06
wgrantWhich means everything is allowed.09:07
jtv*somewhere09:07
wgrant    def isAllowed(self, distroseries, pocket):09:07
wgrant        return (not self.allowed_suites or09:07
wgrant                (distroseries.name, pocket) in self.allowed_suites)09:07
wgrant                if (self.allowed_suites and not (distroseries.name, pocket) in09:07
wgrant                    self.allowed_suites):09:07
wgrant                    self.log.debug(09:07
wgrant                        "* Skipping %s/%s" % (distroseries.name, pocket.name))09:07
jtvThat's not in publishdistro.py, is it?09:07
wgrantetc.09:07
jtvwgrant: intriguingly, I see different code for isAllowed.09:09
jtvOh wait, you've got stuff after the return... what is that?09:09
jtvAnd more importantly, don't the publish-distro invocations in the Ubuntu release procedure manually specify all Ubuntu suites?09:10
jtvThat plus the publishdistro.py code made me think that omitting -s couldn't mean "all suites"09:11
wgrantjtv: The stuff after the return is from another method, doing a similar thing.09:12
wgrantjtv: NRCP runs publish-distro for all suites in the new series.09:12
wgrantNot all suites.09:12
jtvIt passes "-s DSN -s DSN-updates -s DSN-security -s DSN-proposed -s DSN-backports" -- what's missing?09:13
wgrantDSN-1, DNS-1-updates...09:13
jtvAh OK.09:13
wgrantPlease don't imbue it with the knowledge of series.09:13
wgrantIt should operate on suites opaquely as far as is practical.09:14
* jtv scribbles note09:14
jtvBy the way, the distsroot that's passed for the partner archive looks to me like it's exactly what we would now get (thanks to archive configs, I take it) without the -R option.09:14
wgrantWe don't use .new?09:15
jtvNot there, no.09:15
stubHow to I get from a project page to its PPA? Do we have a link yet?11:03
stubnm. projects can't specify an official ppa yet11:05
lifelessand due to w----aacky UI choices its hard to  it now11:25
deryckMorning, all.11:59
jtvhi deryck12:03
=== al-maisan is now known as almaisan-away
bacmorning deryck12:36
danilosmrevell, hi, we should have all the bits ready on production for feature review to start (a bit late because qa took longer than expected)12:49
mrevelldanilos, Superb. I'm working my way through the feature review notes at the mo. Ursinha should be around soon, too.12:50
danilosmrevell, cool12:51
=== benji changed the topic of #launchpad-dev to: We have a 9s timeout!!! (2 months early!) | https://dev.launchpad.net/ | On call reviewer: benji | https://code.launchpad.net/launchpad-project/+activereviews
benjigary_poster: two will enter, one will leave13:30
benjiheh, but I will enter the wrong room13:30
gary_posterlol13:31
magciuswhere did jam go? :(13:35
jelmermagcius: it's a holiday here in .nl13:36
gary_posternot in US13:37
jelmergary_poster: jam moved to Eindhoven in March13:37
gary_posteroh, cool!13:37
* gary_poster mildly jealous :-)13:37
jelmergary_poster: there's no second easter day in the US? Do you at least get judgement day off?13:38
gary_posterheh, there's no first easter day off in the US.  judgement day is still up in the air.  we'll probably have off for the heat death of the universe.13:39
wgrantIn .au we have Tuesday off this year as well :D13:40
gary_posterheh :-P13:40
jelmerwgrant: a third easter day? Don't they only have that in very catholic countries?13:41
wgrantjelmer: ANZAC Day falls on Easter Monday this year, the so its public holiday is shifted to Tuesday.13:41
wgrantSo two Easter days plus ANZAC Day.13:41
jelmerah13:41
jtvgary_poster: I think I want a lib/lp/archivepublisher/configure.zcml, where there currently is none.  Could you help with this?13:46
gary_posterjtv, sure, 1 sec, trying to tie something up13:48
jtvThanks.  I find one shoe at a time is easier.13:49
gary_poster:-)13:50
jtv(In this vague and poorly thought-out pun, I am the other shoe)13:51
gary_posterheh13:56
gary_posterjtv, ok, what's up13:56
gary_posterthat is to say, what do you need help with?13:56
jtvHi.  I'm adding a job class in archivepublisher, and it has its own utility.13:57
gary_posterok13:57
jtvSo I reckon there ought to be a configure.zcml.13:57
jtvThere is not.13:57
gary_posterlol, end of thought?13:57
wgrantGet your dirty XML away from that innocent code!13:57
jtvgary_poster: I just discovered the zcml directory though.13:58
jtvI guess it goes in there now.13:59
gary_posterI don't think so13:59
gary_posterbut maybe I'm wrong13:59
gary_posterI know the machinery, but I don't know our policies13:59
jtvAh13:59
jtvWell there's a lib/lp/archivepublisher/zcml/configure.zcml that already has a utility...14:00
gary_posteroh *that* zcml directory14:00
jtvSo at a minimum I suppose I wouldn't be making things substantially worse.14:00
gary_posteryeah that sounds fine14:00
gary_posterI thought you meant the top-level zcml directory14:00
jtvWhoooah no14:01
gary_poster:-)14:01
jtvFunny how these things always get rolling when you're explaining the problem.14:01
gary_poster:-)14:01
gary_posterok, so you have found a happy home for your ZCML snippet, and all is well in this small corner of the world?14:01
jtvYup.  So thanks for, er, listening.  :)14:01
gary_posterheh, yeah, np14:02
gary_posterbenji, very small MP when you have a chance, please: https://code.launchpad.net/~gary/launchpad/bug770217/+merge/5895814:38
benjigary_poster: will do it now as I'm in the middle of a deep review that will take a while14:38
gary_posterok thanks benji14:39
benjigary_poster: if I only apply the patch to the test (and leave out the change to lib/lp/bugs/javascript/subscription.js, the new test doesn't fail14:47
gary_posterbenji, huh, did for me14:47
gary_posterthat's how I developed it anyway :-)14:47
gary_posterLemme see...14:47
benjiI wonder if I did something wrong, double-checking.14:47
benjigary_poster: my fault: I was running lib/lp/bugs/javascript/tests/test_subscriber.html instead of lib/lp/bugs/javascript/tests/test_subscription.html14:51
gary_posterbenji, great.  Thank you for checking14:51
benjigary_poster: review done14:52
gary_posterthanks benji14:53
benjimy pleasure14:53
=== salgado is now known as salgado-lunch
beunohello hello16:09
beunoLaunchpad seems to be doing funny things in code hosting: http://paste.ubuntu.com/598761/16:10
=== deryck is now known as deryck[lunch]
sinzuibeuno: I just confirmed I can push a new branch. Can you try pushing you branch with a letter at the start of the branch name16:18
beunosinzui,  I can, but branches i nPQM are failing for us now16:19
=== Ursinha-afk is now known as Ursinha
sinzuiI wonder if this related to thumper's change to branch ids to permit stable renames16:20
sinzuibeuno: I do not know how to test this kind of issue :(16:20
=== salgado-lunch is now known as salgado
=== beuno is now known as beuno-lunch
=== beuno-lunch is now known as beuno
sinzuijcsackett: are available to mumble about question activity and email. My next step is pretty uncertain18:21
jcsackettsinzui: sorry, was brewing up coffee, missed your ping. i can mumble.18:43
sinzuifab18:43
sinzuijcsackett: can you hear me?18:45
jcsackettsinzui: i can hear you, i believe that you cannot hear me. i am rebooting mumble.18:45
* sinzui too18:45
deryckhas anyone online run windmill tests on natty?19:15
deryckI know wallyworld has, but anyone else?19:16
gary_posterbenji, have a moment for https://code.launchpad.net/~gary/launchpad/bug770287/+merge/58979 ?  Should be another short one.19:18
gary_poster(no)19:18
benjigary_poster: sure19:18
gary_posterthanks benji19:18
gary_postersorry, the "no" was to deryck19:18
gary_poster("not me" would be more accurate :-) )19:19
deryckheh, thanks for answering gary_poster :-)19:19
gary_poster:-)19:19
deryckI'm guessing no one has.19:19
gary_posterI'm guessing they are badly broken?19:19
=== Ursinha is now known as Ursinha-lunch
deryckgary_poster, a couple reporting on jenkins.  I just want to verify a fix locally, but can't get it to run.19:22
gary_postergotcha :-/19:22
deryckNo default or local profile error for windmill running FF 4.  FF 4 doesn't have a profile template anymore.19:23
benjigary_poster: done19:24
gary_posterbenji, yippee! :-) thanks19:24
sinzuijcsackett: ping20:05
jcsackettsinzui: pong.20:06
lifelessmorning20:09
jcsackettsinzui: hi, what's up?20:11
sinzuijcsackett: did you update hide-comment.py to work with questions?20:12
jcsackettsinzui: i did locally, but it's periodically failing for reasons i haven't diagnosed; thanks for the reminder. i will prioritize that for the rest of today.20:13
jcsackettif you are encountering question spam, just assign to me.20:14
sinzuiI am updating my copy of the script now to close two questions. You may have already done this since I do not see spam comment on https://answers.launchpad.net/ubuntu/+question/14409020:14
jcsackettsinzui: yes, i whacked spam from that earlier.20:16
sinzuiHow do you know which comment to deactivate?20:16
sinzuihide20:16
jcsacketti believe the question that points out the spam for that is already assigned to me, isn't it? i can update.20:16
jcsackettsinzui: right now? you have to count the messages. which is terrible. the ui work needs to add numbers to the message (a la bug comments).20:17
sinzuiokay. I will run my script20:17
sinzuijcsackett: This is my updated script. Question comment silently fails: http://pastebin.ubuntu.com/598898/20:45
jcsackettsinzui: fails as in you go to the page and the comment is still there?20:47
jcsackettif that's the case, wait a bit. i've found i was seeing delays between firing off setCommentVisibility and seeing it removed.20:48
sinzuijcsackett: comment hiding is queued?20:49
jcsackettsinzui: i don't believe so. i haven't determined the cause of the delay.20:49
sinzuijcsackett: were you anonymous...if so you get the cached page from the proxy20:50
jcsackettsinzui: i was not anonymous.20:50
sinzuiI was viewing the page logged in, then  using an anon browser with a query string appended to ensure I do not get the cached20:52
sinzuipage20:52
jcsackettsinzui: ah, i see what you mean.20:52
lifelessbug 69135220:53
jcsackettsinzui: so, you are not observing anything happening after a delay, i take it.20:56
sinzuijcsackett: that is correct20:59
* jcsackett resists the urge to swear.20:59
sinzuijcsackett: I can also state the comment is number 1000021:00
* jcsackett ceases resisting the urge.21:01
sinzuiI am pretty sure there are no questions with 10,000 comments21:01
sinzuiI already swore.21:01
jcsackettthe latter is especially vexing, as you should get an index error on trying to do anything to comment 10000.21:01
sinzuiI have decided that I need to make questions faster so I will make that my top priority today21:01
sinzuiI have confirmed the script gets the correct question too21:02
jcsackettsinzui: i'll start a branch in a sec to see if the setCommentVisibility stuff became unbolted by something.21:03
jcsacketti will probably do my analysis far away from people, perhaps in a cave somewhere.21:07
lifelesssinzui: hey21:20
sinzuihi lifeless21:20
lifelessI'm trying to find a bug21:21
lifelessit was about how users get confused by login.launchpad.net21:21
lifelessI think bug 770107 is a dup of it21:21
sinzuicanonical-identity-provider21:21
=== lifeless changed the topic of #launchpad-dev to: Performance Tuesday | https://dev.launchpad.net/ | On call reviewer: benji | https://code.launchpad.net/launchpad-project/+activereviews
lifelesssinzui: thats the project21:21
lifelessI thought we had a task on LP21:21
lifelessbut I can't find the darn thing21:21
lifelessI was wondering if you remembered such a bug?21:21
sinzuiI am not seeing it either21:22
sinzuiBut I think I can find a question that links to it21:22
=== Ursinha-lunch is now known as Ursinha
sinzuilifeless: I am not hunting my email. This is infuriating21:28
lifelesssinzui: s/not/now/ ?21:28
sinzuiyes21:28
lifeless:) makes more sense21:29
sinzuilifeless: I give up. I cannot find a login.launchpad.net  bug in c-i-p or a login.ubuntu.com bug in launchpad.21:39
lifelessthanks for looking21:54
=== benji changed the topic of #launchpad-dev to: Performance Tuesday | https://dev.launchpad.net/ | On call reviewer: - | https://code.launchpad.net/launchpad-project/+activereviews
lifelessflacoste: ping22:18
thumpersinzui: my change wouldn't have effected beuno's branch like that22:21
sinzuifab22:22
lifelessI really wish we had full bug federation22:57
lifelesssinzui: did you mean to /part #launchpad ?23:01
sinzuiNo, emapathy is being a complete and utter prick23:02
lifeless:(23:02
lifelessits not being empathetic :)23:02
sinzuiWell I cannot workout where to report bugs about that launchpad-bugzilla, so I unconfigured the bugtracker. But since we are the maintainers, shouldn't we be tracking bugs in Lp?23:09
sinzuiLooks like empathy want me to be in one freenode channel at a time23:22
sinzuilifeless: http://pastebin.ubuntu.com/598960/23:23
sinzui^ My thoughts are really scattered23:23
lifelessSeems reasonable23:26
lifelessthe snapshot things seems overly generic to me23:26
lifelessits one of those attractive until you use it patterns23:26
sinzuilifeless: I prefer putting the snaptshot/copy of the current question into the event. Let a subscribed function queue a job with the question and the event as metadata.23:29
lifelesssinzui: sure; I think that the json should be quite targeted though.23:29
sinzuilifeless: I am unsure now if QuestionNotification needs to change if I build something that Implements IQuestion, but is acutally using values instead of references.23:30
lifelesssinzui: I'm confused about the implementing of IQuestion23:31
sinzuilifeless: I was looking a PersonTransferJob that requires json-compatible values. Instead of keep a reference to the reviewer that is optional, the job has a property that instanties the user from the id in the metadata23:32
sinzuilifeless: I do not want to build a schema for the job that  create lots of references to other objects. I think the question plus a dict of values will work most of the time. Some of those values need to turned back into users, bugs, faqs and messages.23:33
sinzuilifeless: I cannot put the snapshot into the db, so I need a light way to store the changes23:34
lifelesssinzui: AIUI other deferred mailers23:35
sinzuiI think create a ro-implementation of question that uses values instead of objects to make the email may work23:35
lifelessthey generate the message23:35
lifelessor a template for th message23:35
lifelessand a list of subscribers23:35
lifelessand they shove that into the queue to be processed on the backend23:35
sinzuiWell I want to put an end to timeouts and thoses tasks you mentioned are part of the time out23:35
lifelessright23:35
lifelessI'm just saying that /most/ or even /all/ of the objects you're mentioning are not needed23:36
sinzuipersonMemebershipJob an PersonMergeJob do all the email building, themselves23:36
lifelessbut perhaps I misunderstand the problem23:36
sinzuiI think you do23:36
sinzuiAs I said, I cannot get my thoughts in order23:36
lifelessAIUI the work required is:23:37
lifeless - update the db to show the event23:37
lifeless - build a message to send to each of [long list of subscribers], and its customised per subscriber23:37
lifeless - spool and send the message23:38
sinzuiHow do I queue the event23:38
sinzuiQuestionNotification does th last two points perfectly23:38
lifelessI was thinking you wouldn't queue the event at all23:38
lifelessbut generate the common message text /once/23:39
lifelessand then queue a job to do a mail-merge of the subscribers & the mail template23:39
lifelessbut I haven't looked at this code23:39
lifelessif what I describe sounds harder or worse, you should ignore me :)23:39
sinzuilifeless: That is doable by extracting the QuestionNotification.getBody() implementation to the subscriber function I envision. I think there are a few nuances  though. headers and footers assume the current question state is correct, but infact, the state of things like assignee or target may have several changes in the same jobqueue23:45
sinzuiThus I started to envision a very elaborate way of serialising the existing state.23:45
lifelesswouldn't the state of things like assignee or target be captured when building the template to use for all subscribers ?23:46
lifelessnot as explicit fields, but as things injected to said template23:46
sinzuiThe build op needs to create the common body, common header and common footer. We merge the to addresses, and the header/footer reasons later>23:48
sinzui?23:48
sinzuilifeless: I think the X-Launchpad-Question and the body must be queued with the question since those describe the current state. Other headers, and the footer can  created using the current question and its current subscribers23:52
lifelesssinzui: sounds reasonable to me23:52
sinzuiSo I think the schema is (question, body, header) header can be a string at this moment. It could be a serialised dict for extension.23:53

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