[01:18] <poolie> losa ping, i'd like help qa'ing bug 855150
[01:18] <_mup_> Bug #855150: excessive translation import template mails (also poor phrasing) <mail> <qa-needstesting> <spam> <translations> <Launchpad itself:Fix Committed by mbp> < https://launchpad.net/bugs/855150 >
[01:18] <poolie> wgrant, lifeless, wallyworld, can you help me work out how to qa it at all?
[01:18] <poolie> i'm not sure manual qa would have a good tradeoff in this case
[01:19] <poolie> since there is a fairly good unit test, and the dependencies for it (branches, mail) are a little annoying on qas
[01:19] <wgrant> I was not a minute away from asking you about that.
[01:20] <wgrant> poolie: You can't do it with a manual upload?
[01:20] <hloeung> poolie: how can I help you?
[01:20] <wgrant> Without branches?
[01:20] <poolie> hloeung, i'm just trying to work that out
[01:21] <poolie> hloeung, can you tell me how i'd find out if the poimport cron job runs on qas?
[01:21] <poolie> wgrant, ok i'll upload a tarball and we'll see
[01:30] <hloeung> poolie: I've checked and it seems there isn't any poimport cron jobs for QAStaging
[01:31] <poolie> could you run rosetta-poimport for me please?
[01:32] <hloeung> poolie: sure!
[01:35] <hloeung> poolie: https://pastebin.canonical.com/53423/
[01:36] <wgrant> That looks like success.
[01:36] <wgrant> There's an email about the error, but nothing about the successes.
[01:37] <poolie> hloeung, also send-bug-notificatinos?
[01:40] <hloeung> poolie: done
[02:05] <poolie> wgrant, unless you can think of anything else i'm going to say that's qa-ok
[02:06] <wgrant> poolie: It looks fine to me.
[03:40] <wgrant> Lifelrss: Back yet?
[04:00] <StevenK> Does Y.Assert have a isNotNull ?
[04:01] <wgrant> Y.Lang.isValue?
[04:01] <wgrant> false for null/undefined, true for everything else.
[04:01] <wgrant> Except possibly NaN. That might be false as well.
[04:02] <wgrant> I forget.
[04:02] <StevenK> This is for a test, mind.
[04:02] <StevenK> Y.AssertTrue(Y.Lang.isValue()); ?
[04:03] <StevenK> wallyworld: ^ ?
[04:04] <wallyworld> StevenK: if you are checking that variable xxx is not null and not defined, that will work
[04:04] <wallyworld> but you don't need the isTrue
[04:04] <wallyworld> assrtTrue
[04:05] <wallyworld> or maybe you do
[04:05] <wallyworld> it's in a test, so yes i think
[04:06] <wallyworld> there is also isNumber, isBoolean etc
[04:06] <StevenK> It's a node
[04:07] <wallyworld> ah, right, then isValue i think is what you want
[04:07] <wallyworld> solves the == vs [04:11] <wgrant> wallyworld: Are you on top of your two QA items?
[04:11] <wallyworld> wgrant: nope, finishing off something else
[04:11] <nigelb> Hrm, I wonder why I havent got email from the landing last evening :|
[04:12] <wgrant> wallyworld: Any ETA on the QA? I'd like to deploy in the next hourish, before sending it off to the downtime hosts tonight.
[04:13]  * wallyworld sighs. i was hoping not to have to context switch :-(
[04:13]  * wallyworld looks at bugs again
[04:13] <wgrant> It doesn't look like it should take long :)
[04:14] <StevenK> wgrant: Which revision were you planning?
[04:14] <wgrant> 14041
[04:14] <wgrant> Send it out to ndt+librarian2 ASAP, then ftpmaster/ppa/librarian1 tonight if nothing blows up.
[04:15] <StevenK> Poor mizuho. It will be 150 revisions behind after that NDT.
[04:15] <wgrant> I'd been putting off librarian1 updates until it was HA, but that could still be weeks away, given what happened on Thursday :/
[04:16]  * StevenK wonders if there is any update with galapagos
[04:16] <wgrant> It's only been down for more than a month :)
[04:16] <wgrant> It makes https://devpad.canonical.com/~wgrant/production-revnos ugly :(
[04:16]  * wallyworld stabs qas. qa would be so much easier without the timeout errors
[04:17] <wgrant> wallyworld: Indeed :(
[04:17] <StevenK> wgrant: You should generate pretty HTML :-P
[04:18] <wgrant> StevenK: The script to generate it is, er, slightly unpleasant, due to the format of the input.
[04:18] <wgrant> carob:~wgrant/bin/parse-revnos.py, if you have a strong stomach.
[04:19] <StevenK> Yes, that is disgusting
[04:19] <StevenK> Perl!
[04:21] <StevenK> wgrant: Will you add forster in, or that can be done after?
[04:21] <wgrant> StevenK: forster/crowberry can be done without downtime later.
[04:21] <nigelb> StevenK: I dedicate this one to you :D https://twitter.com/#!/DEVOPS_BORAT/status/117613205576089601
[04:22] <wgrant> But since spm is not here, I shall not ask too much of hloeung :)
[04:22] <wgrant> Speaking of Perl.
[04:23] <hloeung> wgrant: I can try do those too if you like
[04:23] <wgrant> Best Practical appears to have the bzr colocated branch syntax, and are now importing even more RT code into LP :(
[04:23] <StevenK> "Source of Oracle is tell me latest version of PostgreSQL can be able download from mysql.com."
[04:23] <nigelb> lol
[04:23] <wgrant> hloeung: I know codehosting is a pain...
[04:26] <wgrant> Forgive me, Unity. I did not mean to offend you by closing Empathy.
[04:27] <StevenK> Hah
[04:27] <StevenK> I am disappoint. wc -l of my diff is 235
[04:29] <wallyworld> wgrant: done
[04:30] <wgrant> wallyworld: Thanks!
[04:46] <StevenK> Can haz review? https://code.launchpad.net/~stevenk/launchpad/private-bug-unsubscribe-confirm-2/+merge/77091
[04:46] <wallyworld> StevenK: i'll grab it
[04:48] <StevenK> Awesomeness.
[04:48] <StevenK> Or something.
[04:49] <StevenK> My two garbo populators are doing nothing on prod
[04:50] <StevenK> Continiously blocked by postgres or archivepublisher transactions
[04:50] <wgrant> Not continuously.
[04:50] <wgrant> But often.
[04:50] <wgrant> I'm not sure why they're making no progress.
[04:50] <StevenK> I'm trying to figure that out
[04:52] <lifeless> so for archivepublisher... we should fix that ;)
[04:52] <wgrant> We should.
[04:52] <wgrant> It's probably process-death-row.
[04:53] <wgrant> Which is now taking 1.5 hours instead of 8 minutes.
[04:53] <wgrant> And yes, there's a lot of stuff that should be fixed.
[04:53] <wgrant> But we cannot fix them.
[04:53] <wgrant> There are no resources to fix them.
[04:53] <lifeless> wgrant: i spoke with flacoste and sinzui about security / privacy and implementation
[04:54] <lifeless> wgrant: I can give you a summary if you haven't had one already; the next step is for one of us to nab mrevell and run some questions by him
[04:54] <wgrant> lifeless: I was about to ask if you wanted to talk about that. I discovered another larger issue overnight.
[04:54] <wgrant> Discussed it with sinzui in the standup, and we have no idea how to solve it.
[04:55] <wgrant> Apart from going back to 2004 and hitting people who suggest multitask bugs :)
[04:55] <wgrant> lifeless: I've not had a summary of the discussions you had, however.
[04:56] <StevenK> process-death-row would make sense
[04:56] <wgrant> It'll be far more obvious tomorrow.
[04:56] <StevenK> If it isn't p-d-r, it's backups, and if its not those two it's replication lag
[04:56] <wgrant> Because they'll be using custom DB users.
[05:01] <wgrant> lifeless: So, a summary would be nice :)
[05:03] <wallyworld> StevenK: done, with comments :-)
[05:04] <wgrant> StevenK: What if I try to unsubscribe the team that confers visibility?
[05:05] <lifeless> wgrant: skype ?
[05:44] <poolie> cinerama, https://bugs.launchpad.net/launchpad/+bug/860273
[05:44] <_mup_> Bug #860273: private ppa 'technical details' incorrect for admins <affects-canonical-is> <confusing-ui> <p3a> <private> <Launchpad itself:Triaged> < https://launchpad.net/bugs/860273 >
[07:29] <adeuring> good morning
[07:40] <huwshimi> mrevell: Can you think of a better title than "Customise visible information"
[07:43] <poolie> huwshimi, "show/hide"?
[07:43] <poolie> (8 letters)
[07:44] <poolie> lifeless, i'm going to write a braindump pre-lep for ssh oauth and git to get it off my brane
[07:44] <lifeless> sure
[07:46] <huwshimi> poolie: It's for choosing what bug info will appear in the list (the link opens a popup)
[07:47] <lifeless> edit result/report columns
[07:49] <huwshimi> lifeless: Without using the word columns?
[07:49] <huwshimi> I also don't want it to sound like it will be filtering anything
[07:49] <huwshimi> tricky
[07:49] <huwshimi> visible properties?
[07:50] <poolie> put a disclosure triangle next to the column headings?
[07:50] <lifeless> huwshimi: so we're editing more than columns ?
[07:50] <huwshimi> lifeless: This mockup doesn't have columns
[07:50] <lifeless> huwshimi: or we're avoiding the word column ?
[07:50] <lifeless> huwshimi: the search result doesn't ?
[07:52] <huwshimi> lifeless: it's just for a normal listing of bugs (except that the bugs are not being displayed in columns)
[07:52] <lifeless> fields ?
[07:52] <poolie> dare i ask how are they being displayed?
[07:52] <huwshimi> poolie: In a list
[07:52] <lifeless> views, properties, attributes, fields - easy to hand synonyms
[07:53] <poolie> mm
[07:53] <poolie> i guess what i'm getting at is, perhaps we can do without text and just show the things that are available
[07:53] <poolie> perhaps not
[07:54] <lifeless> huwshimi: this is the solution for arbitrary things being included yes ? I like poolies suggestion of showing a single row 'sample' and letting folk drag/drop to-from it
[07:55] <lifeless> or perhaps show a sample with greyed out fields for things not being shown and clicking on them enables that field
[07:59] <huwshimi> ok, that will have to do for today. Night all
[07:59] <lifeless> nn
[09:59] <lifeless> teal is sinzui, wally, wgrant, stevenk and <memory fail>
[09:59] <lifeless> ?
[09:59] <wgrant> lifeless: jcsackett
[09:59] <lifeless> thanks
[10:02]  * wallyworld wishes were were the purple team
[10:02] <wallyworld> we were
[10:09] <bigjools> wallyworld: could be arranged
[10:11] <poolie> itym maroon
[10:12] <nigelb> For a suffient bribe?
[10:12] <nigelb> *sufficient
[10:13] <nigelb> bigjools: YOu sound right out of Godfather there :P
[10:13] <lifeless> bigjools: python-oops-twisted 0.0.2 is in trunk, I'm going to cut a release in a minute
[10:13] <wallyworld> bigjools: ok, when you are out here i'll see what i can do
[10:13] <lifeless> bigjools: I couldn't reproduce that wtf thing, so I've asked for you to gather some info
[10:14] <bigjools> ok
[10:14] <lifeless> bigjools: it may be something like 'something somewhere using cStringIO
[10:14] <bigjools> I'll reproduce
[10:14] <lifeless> bigjools: I also added support for filtered oopses
[10:14] <bigjools> cool
[10:15] <lifeless> bigjools: if its filtered it now won't call the fallback at all; if its not published it forwards the event unaltered.
[10:15] <bigjools> lifeless: generally I want both
[10:16] <jtv> stub: ReadOnlyLaunchpadDatabasePolicy is only for full-on read-only mode, right?  Wasn't there also some policy to get read-only transactions, but on the master store?
[10:17] <jtv> We need to get object modifications in buildd-master under control so we know when we're committing what.
[10:20] <lifeless> bigjools: is that endorsing my change or asking for something different ?
[10:21] <bigjools> lifeless: it sounds ok, if it's not you can be sure I'll let you know, or fix it :)
[10:21] <lifeless> \o/
[10:21] <lifeless> The filtering is so that if you e.g. ratelimit, the fallback doesn't end up not being ratelimited.
[10:21] <lifeless> the publishing is the case you identified yesterday
[10:22] <lifeless> tarball on pypi now
[10:22] <lifeless> bigjools: I need to chase a few other things; can you add it to the download cache yourself?
[10:23] <bigjools> lifeless: excellent, I can sure
[10:24] <stub> jtv: I don't recall a policy for only read-only transactions on the master store.
[10:24] <jtv> :(  There's @read_transaction, but that still gives you a regular transaction (it just aborts it).
[10:24] <jtv> (And actually it should probably abort even on failure)
[10:25] <stub> jtv: What are you trying to do? Might be best to write a context manager that does 'set transaction_read_only to true' (or whatever it is) if necessary and resets on exit.
[10:25] <jtv> Yeah.
[10:26] <jtv> I'm trying to make sure that builders and builds do not get modified except from specific, well-bracketed pieces of code.
[10:26] <stub> jtv: I think the only place we set transaction to read only mode is in the test harness so 'slave' connections fail writes.
[10:27] <jtv> Then I suppose I could try to promote whatever we have there to something production-usable.
[10:27] <stub> jtv: We can remove access to them entirely except via stored procedures?
[10:27] <jtv> That may be taking it a bit too far; the code does rely on having the ORM.
[10:28] <jtv> I'm not sure how far down into various class hierarchies the object changes go.
[10:28] <stub> jtv: So various db users need write access to the tables, but you want to ensure modifications only happen in certain code paths.
[10:29] <jtv> Yes, I think that's right.
[10:29] <jtv> The latter part is definitely right.
[10:29] <stub> The logic you are enforcing is too complex to do this in the Storm database classes? Or are you scared of people bypassing the ORM?
[10:30] <jtv> No, not particularly worried about people bypassing the ORM.  Just don't know how to do it in Storm.
[10:30] <stub> This *might* mean we need a service that is responsible for making the modifications, and everything else just gets SELECT access to the tables.
[10:30] <jtv> That may already be the case.  The immediate problem is that that single service is complex and twisted.
[10:31] <lifeless> jtv: properties?
[10:31] <stub> Yes, so maybe easiest and best in the long run to split it into bits.
[10:31] <lifeless> jtv: and/or validators?
[10:31] <bigjools> lifeless: oops_twisted is not installing
[10:31] <stub> We have examples for enforcing some stuff like this at the Storm level...
[10:31] <bigjools> error: Setup script exited with error: package directory './oops_twisted' does not exist
[10:31] <jtv> lifeless: that's approaching it from the wrong end.  The code is already there, and complex; I want to get a handle on what it's already doing.
[10:32] <bigjools> lifeless: and bootstrapping doesn't work on a new checkout so I can't debug
[10:32] <jtv> stub: right now it's too many small bits.  That's part of the problem, in a way.
[10:32] <lifeless> bigjools: wow thats one messed up tarball
[10:32] <jtv> So as the first step I want database changes explicit, and then I want to use that to make sure no unrelated changes go into the same transaction.
[10:32] <lifeless> bigjools: Have I mentioned my... disdain for setuptools?
[10:33] <bigjools> lifeless: :(
[10:34] <jtv> stub: although to achieve that, the transactions may well get chopped into smaller bits.  But first we need to be very sure that we understand their boundaries.
[10:34] <stub> Anyone know why we are emitting long poll specific events on object creation/deletion instead of general events any service can listen for?
[10:34] <lifeless> bigjools: new tarball up
[10:34] <bigjools> lifeless: 0.0.3?
[10:35] <lifeless> bigjools: 0.0.2
[10:35] <lifeless> bigjools: it had 0 downloads ;)
[10:35] <bigjools> lifeless: tut tut
[10:35] <bigjools> I downloaded it
[10:35] <lifeless> bigjools: EPIC SHRUG
[10:35] <wgrant> lifeless: You are the bane of packagers everywhere :)
[10:35] <bigjools> how will I know I have the fixed one?
[10:35] <lifeless> bigjools: specifically, because it was barfing on build, you can't have an egg for it, so it won't hit the failure mode of not updating for someone
[10:36] <lifeless> bigjools: if it was building brokenly, it would be different
[10:36] <bigjools> lifeless: fancy updating the lp code too? :)
[10:36] <lifeless> bigjools: not a code problem
[10:36] <bigjools> why is bootstrapping buggered?
[10:36] <lifeless> bigjools: bad MANIFEST file
[10:36] <lifeless> bigjools: so the 0.0.2 tarball file had no contents beyond setup.py
[10:37] <bigjools> lol
[10:37] <lifeless> README, PKG-INFO and an oops_wsgi directory.
[10:37] <lifeless> totally epically fucked
[10:37] <bigjools> BTW electrician in the house, I may lose connectivity
[10:37]  * stub wonders if Storm has a facility for putting a store into read only mode.
[10:37] <jtv> stub: blast.  I thought you were referring to knowledge of such a thing earlier.
[10:38] <wgrant> stub: If it did, would we have *_ro? :)
[10:38] <bigjools> gah Makefiles
[10:39] <wgrant> stub: Can't we just use SET TRANSACTUION READ ONLY?
[10:39] <wgrant> s/U//
[10:39] <stub> wgrant: We create all the _ro users such as their default transaction mode is read only
[10:39] <stub> So the test harness stuff is not applicable here
[10:40] <stub> But 'with read_only(store):' is little effort
[10:42] <stub> store.execute('show transaction_read_only').get_one()[0] for the current value, store.execute('set transaction_read_only = true') to set it...
[10:42] <jtv> I could extend the @read_transaction we have now, provided we only use it in fresh transations.
[10:43] <stub> jtv: if it aborts at the end, it would be a fail to use it for anything that wasn't a fresh transaction
[10:43] <stub> Unless it stacks or something
[10:43] <jtv> Exactly.
[10:44] <jtv> Stacking it could be risky given its retry behaviour.
[10:45] <lifeless> .
[10:46] <jtv> Librarian uses it in one place.  Unfortunately the code seems to have celebrate obscurity, but it doesn't look as if it has fresh connections.
[10:46] <bigjools> lifeless: still seeing both bugs with latest oops_twisted
[10:46] <jtv> It also uses twisted's deferToThread; allenap, one thing I wondered about there is that storms are not supposed to be thread-safe.  Is that all taken care of?
[10:46] <lifeless> bigjools: you've updated your versions.cfg ?
[10:46] <bigjools> lifeless: I am not using LP
[10:47] <bigjools> this is txlongpoll
[10:47] <lifeless> bigjools: sure, but its a buildout project too right ?
[10:47] <bigjools> lifeless: yeeesssss
[10:47] <lifeless> bigjools: so it has its own versions.cfg, right ?
[10:47] <bigjools> nope
[10:48] <bigjools> that's an LP thing
[10:48] <jtv> DigestSearchResource... another one of those ancient, under-documented classes that used to make our lives a living hell.  I'm sure it'll be clear to someone out there, but not to me.  :(
[10:48] <stub> jtv: stores are retrieved through zstorm, which hands out a store specific to the thread. You would have to go out of your way to hand your store to another thread.
[10:49] <bigjools> lifeless: I have rebuilt my entire egg from scratch, and oops_twisted 0.0.2 is in dists
[10:49] <bigjools> since I specified that in setup.py ;)
[10:49] <jtv> stub: does twisted keep a worker thread with a dedicated store for this kind of thing?
[10:50] <lifeless> meep. Well, you may want one ;)
[10:50] <lifeless> so that you don't get new releases of $stuff without warning.
[10:50] <lifeless> bigjools: anyhow, run buildout with -v or something and confirm that you have 0.0.2 in use. Or check your sys.path etc
[10:50] <lifeless> bigjools: you can specify versions in setup.py ?
[10:50] <stub> jtv: I don't know about twisted worker threads. I just know that when you request a store, you get a store for the current thread and not a store used by some other thread.
[10:50] <bigjools> Getting required 'oops-twisted>=0.0.2'
[10:50] <bigjools> lifeless: of course you can
[10:50] <lifeless> bigjools: anyhow, I believe you. So put a breakpoint in the 0.0.2 code and see what happes
[10:51] <jtv> stub: ah, so it's on-demand.  I think that means this is safe, thanks.
[10:51] <allenap> jtv: Each bit of code that is passed to deferToThread() needs to get its own store.
[10:51] <jtv> And does it?  :)
[10:51] <allenap> jtv: I don't know about the librarian...
[10:51] <jtv> Apparently it gets its own store on demand, so that sounds like it's alright.
[10:52] <lifeless> bigjools: in the 'if ids:' if block at the end of log.py
[10:52] <jtv> allenap: Yeah, never mind the librarian.  This bit of code is probably from the days when we thought that cryptic code was better because it was By And For Geeks(tm).
[10:52] <bigjools> ok, re-rinning
[10:52] <jtv> bigjools: lather, rin, repeat.
[10:53] <bigjools> jtv: FUGU
[10:53] <jtv> $ dict fugu
[10:53] <bigjools> jtv: like FUBU
[10:53] <lifeless> mmm noms
[10:53] <jtv>  fugu
[10:53] <jtv>        n : delicacy highly prized in Japan but highly dangerous
[10:53] <stub> Why are we emitting LongPoll specific events rather than generic events on Storm lifecycle that any process can subscribe to?
[10:53] <bigjools> allenap: ^
[10:54] <jtv> bigjools: thank you, that helps.  I think the other one was fgbg.
[10:55] <stub> Just wondering if there is a reason, or if services that listen for new rows to be created in the database are going to be listening for misnamed events
[10:55] <allenap> stub: I don't understand. The longpoll code subscribes to the generic events and then re-emits them via Rabbit.
[10:55] <stub> oh... I thought I saw us explicitly emitting LongPollSomething events on Storm object creation and deletion, rather than StormSomething events.
[10:56] <stub> Which might just be naming
[10:57] <bigjools> lifeless: http://pastebin.ubuntu.com/697804/
[10:57] <jtv> stub: not taking the risk on @read_transaction; I can't be sure what games people play with it.  A "with" sounds good.  I'll also need one that gives a temporary exemption.
[10:58] <allenap> stub: There are subscription handlers for (Storm, IObject{Created,Modified,Deleted}Event) so far, so it does rely on code to explicitly emit those lifecycle events. We can add more subscription handlers for other events later, this just fits our needs so far and should fit a lot of other situations.
[10:58] <stub> jtv: I don't know the details of your problem, but a pair of context managers that can be nested would be nice and potentially useful elsewhere.
[10:59] <jtv> stub: yup.  By "would be nice" by the way I do not mean that I expect you to do it; I'll whip something up and if you're interested, let you know when I think it's in a reviewable shape.
[10:59] <stub> allenap: As long as we don't end up emitting 3 specific messages per row updates when 1 general one would do and can be routed with rabbit.
[11:01] <allenap> stub: That will be the case. By default no lifecycle events are emitted for Storm stuff; it needs to be done explicitly.
[11:01] <stub> cool
[11:02] <stub> Might be able to use this for real time karma updates...
[11:02] <allenap> Yeah :)
[11:03] <stub> Still needs the daily job if we want degradation though so not a major win unless we decide on a new design
[11:05] <stub> allenap: Originally I was thinking of hooking up zope.event, but I didn't know about the Storm event model back then and I don't think we gain anything by hooking zope.event up in addition.
[11:05] <stub> (Maybe Storm should be using zope.event :) )
[11:08] <stub> jtv: I'm happy to review it. It should be maybe 10 lines plus boilerplate?
[11:09] <jtv> stub: I'm more worried about design than I am about the code.  Who commits when.
[11:12] <stub> jtv: I worry that we spend too much time working around a flawed design rather than rewriting - some of this stuff has been a problem for years and most people are too scared to mess with it. I certainly don't know enough to know if the existing design can be rescued or needs to be replaced.
[11:12] <wgrant> stub: That comes up a lot nowadays...
[11:12] <wgrant> But buildd-manager was rewritten like 2 years ago.
[11:12] <jtv> My fingers ache to do it again, but realistically...
[11:13] <jtv> See the "read-only transactions" part as a way of getting a grip on what the existing design really does.
[11:13] <jtv> Once we have that under control, we'll have a much better idea of our options.
[11:14] <allenap> stub: This does rely on zope.event, but there are no automagically emitted events as Storm objects change state. Storm model instances do have EventSystem which can be used to track changes at a very fine-grained level, but I think piping those out over a message queue would be like a fire hose.
[11:14] <stub> allenap: Isn't that why we have this high performance messaging system ;-)
[11:15] <stub> It can handle a zajillion messages per whatsit!
[11:15] <allenap> stub: We have yet to see if it's high performance :)
[11:15] <stub> allenap: I also considered database triggers emitting events...
[11:15] <jtv> (In practice I hear it's often more like 0.6 zajillion per whatsit.)
[11:16] <allenap> stub: Oh, in that case, I think we should hook into sys.settrace().
[11:16] <stub> You win
[11:16] <stub> Unless I suggest.... ptrace!
[11:16] <allenap> Dammit!
[11:18] <jtv> On a sidenote, I see that raw_connect defaults to SERIALIZABLE.  I thought it was READ COMMITTED nowadays.  Will we go REPEATABLE READ with 9.1, or upgrade to the new SERIALIZABLE?
[11:19] <danilos> gmb, hi, got time for a short review? https://code.launchpad.net/~danilo/launchpad/bug-847485/+merge/77142
[11:20] <gmb> danilos: Hi, sure.
[11:20] <stub> wgrant was talking about serializable/read committed by default the other day. Scripts should be defaulting to read committed since they almost certainly won't handle serialization exceptions.
[11:20] <jtv> Yes, I thought we made them default to read committed some 3 or 4 years ago.  So surprising to see this in raw_connect.
[11:20] <stub> And one day I'll read the docs and learn what the difference between repeatable read and serializable is
[11:21] <lifeless> jtv: oh, 9.1 adds explicit repeatable read ?
[11:21] <wgrant> jtv: So, I've been far too deep in this stuff lately...
[11:21] <stub> jtv: Is raw connect what scripts use or what the appserver eventually relies on for its connection?
[11:21] <bigjools> lifeless: did you see my debugger results?
[11:21] <jtv> lifeless: sort of.  It's the new name for the existing "serializable."
[11:21] <lifeless> jtv: and there is a new serializable ?
[11:21] <lifeless> bigjools: no
[11:21] <wgrant> jtv: initZopeless, may it rest in peace, override the default to read_committed.
[11:21] <wgrant> s/override/overrode/
[11:22] <wgrant> jtv: All scripts called that, so scripts ended up read_committed.
[11:22] <stub> its more serializable than the old serializable I hear
[11:22] <jtv> lifeless: yes.  Turned out there was a purely optimistic implementation for true SQL serializability for MVCC databases.
[11:22] <wgrant> jtv: While the appserver didn't, so ended up with the default in the config file: serializable.
[11:22] <bigjools> lifeless: http://pastebin.ubuntu.com/697804/
[11:22] <jtv> wgrant: thanks for explaining that.
[11:22] <bigjools> lifeless: the report dict has no "type" entry
[11:22] <wgrant> jtv: Scripts now override this explicitly.
[11:22] <jtv> I say "SQL serializable" because there's been great confusion over it.
[11:22] <wgrant> jtv: Rather than it being hidden in the default of one of initZopeless' arguments.
[11:23] <jtv> The standard describes two symptoms that you don't want in transaction isolation: "phantom reads" and, er, another thing.
[11:23] <jtv> One is basically "you've seen a row in this transaction, you read it again, and now it's changed."
[11:23] <lifeless> bigjools: ok, new bug :) - what does the original event have in it ? (first line of that function, print event)
[11:23] <jtv> The other is, if I recall correctly, rows not suddenly appearing in or disappearing from the results of your query.
[11:24] <jtv> SQL described the isolation levels in terms of the exclusion of these two symptoms, and said that neither can happen in SERIALIZABLE.
[11:24] <jtv> So that's what postgres implemented.
[11:24] <bigjools> lifeless: http://pastebin.ubuntu.com/697815/
[11:24] <jtv> It didn't have the changing rows, so two of the lesser isolation levels (read uncommitted & repeatable read) were utterly meaningless in postgres.
[11:24] <jtv> Instead you always got one of the better isolation levels.
[11:25] <jtv> But then it turned out that what SQL said about phantom reads etc. in SERIALIZABLE was descriptive, not definitive.
[11:25] <bigjools> lifeless: different problem, *same* bug :)
[11:25] <stub> which is the sort of behavior ODBC encoded in its api (you get the isolation you requested or better)
[11:25] <jtv> The *definition* of SERIALIZABLE is that the result must be as if no two transactions overlapped in time.
[11:25] <lifeless> bigjools: same top level symptom agreed.
[11:26] <jtv> And so postgres 9.1 has an optimistic technique to guarantee serializability, at the cost of more serialization failures obviously.
[11:26] <lifeless> bigjools: what has me confused here though is how the type key is missing
[11:26] <jtv> But no new locks, which is incredibly cool in itself.
[11:27] <jtv> REPEATABLE READ in postgres actually guarantees more than it does in SQL, but it was the next step down for the old, dishonoured SERIALIZABLE implementation.
[11:27] <stub> At this point I have no idea if the appserver would benefit or suffer from the new isolation level. Scripts will remain with read committed by default.
[11:28] <lifeless> bigjools: you've got a tb_text and a time, which  means emit didn't crash
[11:28] <lifeless> bigjools: can you print config.on_create
[11:29] <stub> I suspect we need to instrument our transaction retry handling to see what sort of genuine overhead we get with the extra protection
[11:29] <jtv> Might be useful to know at any rate.
[11:29] <stub> Yup
[11:29] <bigjools> lifeless: what scope?
[11:29] <bigjools> it's not in that func
[11:29] <lifeless> bigjools: self.conf
[11:29] <lifeless> bah
[11:29] <jtv> FWIW the only paradoxes that the existing "serializable" leaves us open to involve cross-table consistency.
[11:29] <bigjools> ah
[11:29] <lifeless> self.config
[11:30] <bigjools> lifeless: you want the function or it's invocation?
[11:30] <bigjools> its
[11:30] <lifeless> its a list of functions, I hope
[11:30] <lifeless> self.config.on_create
[11:30] <bigjools> 2011-09-27 12:30:01+0100 [-] (Pdb) [<function attach_exc_info at 0x2ba5488>, <function attach_date at 0x2ba5410>, <function copy_key at 0x2ba5230>, <function copy_key at 0x2ba52a8>, <function copy_key at 0x2ba5320>]
[11:30] <lifeless> ok, so we need to look at whats going on with emit
[11:31] <lifeless> line 58
[11:31] <lifeless> it should branch into the 'if 'failure' in eventDict: block
[11:31] <lifeless> and before we call
[11:31] <lifeless> report = self.config.create(context)
[11:32] <lifeless> our context should have an exc_info key with a (type, value, tb) tuple in it
[11:32] <bigjools> lifeless: I think you need to re-create this locally
[11:33] <lifeless> bigjools: yeah, probably.
[11:33] <bigjools> it's not hard
[11:33] <lifeless> bigjools: I have tomorrow off
[11:33] <lifeless> bigjools: for baby stuff, but I'll see what I can do
[11:33] <bigjools> I'm in hospital later :p
[11:33] <lifeless> bigjools: can you shoot me a mail with 'do this you daft bugger and it should break for you' instructions ?
[11:33] <bigjools> yarp
[11:34] <lifeless> defensive programming says we should tolerate the type etc being missing
[11:34] <lifeless> and I'll do that
[11:34] <lifeless> but we also want good output, so we need to figure out whats up.
[11:34] <bigjools> lifeless: I'll put it on the bug
[11:34] <lifeless> bigjools: a new one please!
[11:34] <gmb> danilos: approved.
[11:34] <lifeless> bigjools: it really is a different issue, though its hitting the same area of code
[11:34] <bigjools> lifeless: you didn't close the old one, and I consider it still unfixed
[11:35] <lifeless> bigjools: there may be multiple root causes
[11:35] <bigjools> bugs are to report symtoms, not causes
[11:35] <lifeless> sure, and your symptoms have changed :)
[11:35] <bigjools> not at all, it crashes in exactly the same way AFAIAC
[11:36] <lifeless> bigjools: if you have no publisher, it shouldn't crash now
[11:36] <lifeless> bigjools: and I *know* you have a publisher here, because I can see the publisher assigned OOPS id
[11:36] <bigjools> the d o u b l e spaced log is still happening too
[11:36]  * bigjools caves in
[11:36] <lifeless> bigjools: sure, and that hopefully the repro instructions will let me see
[11:36] <bigjools> for a quiet life
[11:37] <lifeless> bigjools: try without --date-dir=... or whatever the option is - I bet it won't crash.
[11:37] <bigjools> lifeless: it isn't, correct
[11:38] <lifeless> so, this is a flip in your symptoms :)
[11:38] <lifeless> now with a publisher, its barfing, and thats because attach_exc_info isn't attaching the info for some really odd reason
[11:38] <lifeless> which I'll track down, and separately make it not crash if that happens.
[11:39] <bigjools> https://bugs.launchpad.net/python-oops-twisted/+bug/859545
[11:39] <_mup_> Bug #859545: Fallback code corrupts the output <python-oops-twisted:Triaged> < https://launchpad.net/bugs/859545 >
[11:39] <lifeless> bigjools: gl with the op
[11:39] <bigjools> added it there
[11:39] <bigjools> lifeless: ta
[11:40] <lifeless> from pypi ?
[11:40] <lifeless> {from where should I grab the gg}
[11:41] <lifeless> bigjools: ^
[11:42] <bigjools> https://launchpad.net/txlongpoll
[11:42] <bigjools> not on pypi
[11:42] <bigjools> (yet)
[11:47] <lifeless> https://bugs.launchpad.net/python-oops-twisted/+bug/860490
[11:47] <_mup_> Bug #860490: oops reports with no type/value crash the fallback reporting code <python-oops-twisted:Triaged> < https://launchpad.net/bugs/860490 >
[11:54] <lifeless> bigjools: http://pastebin.com/GrvVx1ZM is the direct fix (but we need to see why you aren't getting those values regardless)
[12:04] <jelmer> hmm, am I supposed to be able to upload to maverick-proposed if it is for a package in a package set that is in my permission set?
[12:11] <wgrant> jelmer: Remember that packagesets and their permissions are series-specific.
[12:13] <jelmer> wgrant: ah, that must be it
[12:13] <jelmer> wgrant: I figured I would've been added to the packageset in all active series but that doesn't appear to be the case
[12:14] <jelmer> and I could swear I uploaded to lucid-proposed earlier, but apparently not.
[12:23] <StevenK> nigelb: r14041 is now live everywhere, so your DB patch can land.
[12:26] <lifeless> adeuring: your wiki docs are confusing :)
[12:26] <lifeless> column1 > value1 AND column2 > value2 -> that would be wrong, and the implementation using tuples now doesn't it ?
[12:26] <adeuring> lifeless: any suggestions for improvements?
[12:26] <lifeless> (column1, column2) > (value1, value2)
[12:27] <adeuring> right
[12:33] <lifeless> adeuring: that was the only thing
[12:33] <lifeless> adeuring: nice stuff
[12:33] <adeuring> lifeless: thanks :)
[13:02] <deryck> Morning, everyone.
[13:05] <nigelb> StevenK: \o/ Thanks!
[13:05] <nigelb> StevenK: Do I propose an MP?
[13:57] <StevenK> nigelb: Yes, put up an MP for it.
[14:29] <wallyworld> sinzui: hi. this bug subscription thing is a bit of a mess. if you agree with my branch to stick it behind a feature flag as requested by rob, would you be able to push it to ec2 for me? i believe folk are keen to see it land asap but i'm quite tired now and need sleep.
[14:30] <sinzui> wallyworld, The bug looks to be invalid. I would not want to land any branch that make Lp lie to 99% of users
[14:31] <wallyworld> sinzui: np. i was following orders :-) i'll let you discuss it with rob, matthew etc.
[14:31] <sinzui> wallyworld, does you branch revert Lp to lie?
[14:32] <sinzui> wallyworld, your branch looks like it is changing flags, which is not what the bug talks about
[14:32] <wallyworld> i think they just wanted launchpad back to how it was 48 hours ago - the branch does tha by putting the new stuff behind a ff
[14:32] <wallyworld> sinzui: yes, i commented on the bug to change the description
[14:33] <sinzui> okay. I will review the branch an land it if I am satisfied that the correct behaviour is still in the code base
[14:33] <wallyworld> originally i was proposing a compromise or whatever, but then it was decided just to stick it all behind a ff just to revert lp
[14:33] <wallyworld> so that the ubuntu folks wouldn't get very upset
[14:35] <sinzui> wallyworld, I am approving your branch and will land it now
[14:35] <wallyworld> thanks! i'm frustrated somewhat by the confusion
[14:37] <wallyworld> but it seemed from irc that we needed to take this action quite urgently, hence i staryed up to catch you and get your +1 on it. we can discuss more tomorrow at the standup i guess
[15:18] <nigelb> StevenK: thanks! Will do
[16:37] <jcsackett> sinzui: have a few moments to mumble?
[16:39] <sinzui> yes
[17:02] <sinzui> jcsackett, 770213
[17:02] <sinzui> jcsackett, bug 770213
[17:02] <_mup_> Bug #770213: globalsearch's submit button has no value, thus is strangely represented for screen reader users as unnamed <trivial> <wai> <Launchpad itself:Triaged> < https://launchpad.net/bugs/770213 >
[17:48] <nigelb> benji: hi
[17:50] <benji> nigelb: hi
[17:50] <nigelb> benji: I didn't get a success/failure email for yesterday's landing. Did something go wrong?
[17:51] <benji> nigelb: it may well have; I've had trouble lading things of late.  I'm doing another run on a different branch now; once I figure out the problem I'll re-run your branch.
[17:51] <nigelb> benji: cool, thanks!
[17:52] <benji> np
[18:03] <mtaylor> hey guys - bugs email interface - setting fix committed doesn't seem to work if the bug is attached to multiple projects
[18:03] <mtaylor> https://bugs.launchpad.net/nova/+bug/854614
[18:03] <_mup_> Bug #854614: metadata service local-hostname is not fqdn <server-o-rs> <OpenStack Compute (nova):Fix Committed by smoser> <nova (Ubuntu):Fix Committed by smoser> < https://launchpad.net/bugs/854614 >
[18:04] <mtaylor> see the email from our gerrit, and then that the status did not update from the email
[18:15] <mtaylor> nevermind - jeblair found the affects feature (or already knew about it, he's smart like that)
[19:11] <sinzui> jcsackett, do you have pqm power now?
[19:20] <jcsackett> sinzui: alas, no. i tried several combinations of settings to no avail, and then realized it was getting on in the afternoon and i hadn't had lunch.
[20:00] <benji> jcsackett: what kind of pqm problem are you having?  I'm having issues with it too.
[20:00] <jcsackett> benji: pqm-submit is throwing an smtp error.
[20:01] <benji> hmm, so you're not using ec2 land?
[20:01] <jcsackett> benji: no, i have other problems with ec2 land. :-P
[20:02] <jcsackett> since some issues when i updated to oneiric i've been essentially unable to land. it's a bit frustrating.
[20:03] <jcsackett> sinzui has been helping me diagnose, but we have not yet solved the problems.
[20:03] <sinzui> jcsackett, maybe you should paste the error
[20:03] <sinzui> and maybe use canonical's pastebin
[20:07] <jcsackett> sinzui: https://pastebin.canonical.com/53486/
[20:07] <jcsackett> not terribly informative.
[20:08] <sinzui> jcsackett,  and you are using the same smtp_* rules as I have in my bazaar.conf?
[20:08] <jcsackett> sinzui: yup.
[20:09] <sinzui> do you have other directly matching rules?
[20:12] <jcsackett> you mean like via locations.conf?
[20:13] <jcsackett> i have some smtp_ stuff set there, but it's the same as in bazaar.conf
[20:13]  * jcsackett takes another look,
[20:15] <bac> abentley: i took care of that private project
[20:16] <abentley> bac: thanks!
[21:16] <lifeless> morning
[21:31] <abentley> lifeless: you know how we're upgrading all branches to 2a-based formats?  loom branches can't even be upgraded to other loom formats.
[21:33] <abentley> https://pastebin.canonical.com/53491/
[21:35] <lifeless> they used to be able to
[21:35] <lifeless> I don't know whats changed there, but I assume its a bzrlib core thing