[06:50] <TheMue> morning
[08:09] <TheMue> fwereade, rogpeppe: hi
[08:09] <fwereade> TheMue, heyhey
[08:09] <fwereade> rogpeppe, heyhey
[08:10] <rogpeppe> TheMue, fwereade: yo!
[08:12] <rogpeppe> fwereade, TheMue: i was planning to take a swap day today, but the weather is minging
[08:12] <rogpeppe> fwereade: so maybe i won't
[08:13] <TheMue> rogpeppe: understandable
[08:15] <fwereade> rogpeppe, yeah, I haven't quite decided yet myself... I think I'll still be in figuring-it-out mode for a bit
[08:17] <fwereade> I will at least get the rename-kill-die branch in though
[08:17] <fwereade> should be ready, but a full test run will take forever
[08:17] <fwereade> (couldn't figure out how to prevent the sync on open yet, and it's a distinct change anyway...)
[08:19] <rogpeppe> fwereade: i took a little break from juju yesterday, and did a little JSON-compatible encoding i'd been wanting to do for ages: http://go.pkgdoc.org/launchpad.net/goson
[08:20] <fwereade> rogpeppe, cool, I remember you mentioning that idea
[08:20] <rogpeppe> fwereade: it seems to work well
[08:20] <rogpeppe> fwereade: (i forked the go JSON package, so i got the advantage of a pretty good test suite)
[08:21] <rogpeppe> fwereade: see the MarshalIndent example to see how it looks
[08:22] <fwereade> rogpeppe, the example links appear to be broken
[08:22] <rogpeppe> fwereade: i'm going to use it for displaying and editing JSON even if i don't actually store or transmit anything in this format.
[08:22] <rogpeppe> fwereade: hmm, works for me
[08:22] <rogpeppe> fwereade: http://go.pkgdoc.org/launchpad.net/goson#_example_MarshalIndent
[08:22] <rogpeppe> fwereade: you need to click on the Example link inline
[08:23] <fwereade> rogpeppe, yeah; doing so takes me to an arbitrary top level doc for some reason
[08:23] <rogpeppe> fwereade: weird
[08:23] <fwereade> rogpeppe, ah no, it takes me *just* below but doesn't expand
[08:24] <rogpeppe> fwereade: you can also look at the example source: http://bazaar.launchpad.net/+branch/goson/view/head:/example_test.go#L85
[08:24] <fwereade> rogpeppe, just go getting it :)
[08:24] <rogpeppe> fwereade: :-)
[09:17] <rogpeppe> fwereade: now there's a command "goson" - takes goson or json on stdin and produces goson or json on stdout; launchpad.net/goson/cmd/goson
[09:17] <fwereade> rogpeppe, neat :)
[09:26] <rogpeppe> fwereade: goson -indent '' (compact output) reduces json size by 7% on average too. that's quite nice.
[09:26] <fwereade> rogpeppe, sweet :)
[09:36] <rogpeppe> fwereade: here's a nice before/after comparison: before: http://paste.ubuntu.com/1224159/; after: http://paste.ubuntu.com/1224160/
[09:51] <fwereade> rogpeppe, weird, the before doesn't exist
[09:51] <fwereade> rogpeppe, TheMue: btw, I really ought to know what exactly you guys are working on
[09:52] <fwereade> rogpeppe, I am torn between, y'know, fixing what looks like avoidable ugliness and noise in the tests, and doing the RelationUnitsWatcher I think I really *should* be working on
[09:52] <TheMue> fwereade: currently i'm going through the reviews in gustavos last mail
[09:52] <fwereade> rogpeppe, but just convincing myself that what I just merged made the test suite no worse than it was before took a disturbingly long time
[10:39] <rogpeppe> fwereade: i'm working on getting environs/ec2 working live, currently.
[11:37] <fwereade> rogpeppe, cool, I'm sticking with RUW for the time being
[13:29] <TheMue> lunchtime
[13:58] <niemeyer> Good morning!
[14:00] <TheMue> morning
[14:04] <rogpeppe> niemeyer: yo!
[14:04] <rogpeppe> niemeyer: nice work on the plane, BTW
[14:24] <fwereade> niemeyer, heyhey
[14:27] <niemeyer> rogpeppe: Thanks
[16:06] <fwereade> ok, my brain is melted for now... bbl
[16:06] <niemeyer> fwereade: Cheers
[16:07] <niemeyer> I'm just off a meeting, and will grab some lunch
[16:13] <fwereade> GAAAAH
[16:13]  * fwereade now better understands StartSync's place in the ecosystem
[16:13]  * fwereade kinda wants to kick something
[16:14] <fwereade> (it emerges that -- obviously, in hindsight -- just StartSyncing before waiting for a watch is *not* enough if the event you're watching for hasn't happened yet)
[16:19] <TheMue> fwereade: does the current ServiceRelationsWatcher what you expected in https://bugs.launchpad.net/juju-core/+bug/1032539 ?
[16:26] <rogpeppe> fwereade: ah, good point.
[16:26] <rogpeppe> fwereade: i wonder if StartSync should really be SetPollInterval(somethingSmall)
[16:27] <rogpeppe> fwereade: then it won't be so vulnerable to buffering between request and reply
[16:41] <niemeyer> -1 in principle.. the current behavior is pretty great in that it forces races conditions to be visible. I'm pretty sure there were never seen races with zk just because it happened to return fast enough from the watch locally.
[16:42] <niemeyer> The observable delay between action + watch is real
[16:42] <rogpeppe> niemeyer: the problem with StartWatch is that the delay might be >1s
[16:42] <niemeyer> and it'll be even more real in a loaded and distributed system
[16:42] <niemeyer> rogpeppe: Just make the logic deterministic then
[16:42] <niemeyer> rogpeppe: See both the provisioner and the firewaller for examples of it working fine
[16:44] <rogpeppe> niemeyer: i'm wondering if perhaps those are easier because they're making changes directly to the state, whereas (i hypothesize) perhaps some operations on the uniter do not respond to the state directly.
[16:45] <rogpeppe> niemeyer: maybe that's not true though
[16:45] <niemeyer> rogpeppe: I'm sure there are trickier cases waiting to be seen, even if that's not the case now.. I don't think yet that those guarantee a change in the rules, though
[16:51] <rogpeppe> niemeyer: you may well be right. we'll see how things develop.
[16:54] <niemeyer> TheMue: ping
[17:14] <niemeyer> Hmm.. uh oh.. merge race
[17:26]  * rogpeppe is off for the day. see y'all tomorrow.
[17:27] <niemeyer> rogpeppe: Have a good evening man
[20:06] <TheMue> re
[20:06] <niemeyer> TheMue: Yo
[22:08] <fwereade> niemeyer, if you're in the mood for some light reading: https://codereview.appspot.com/6567044/
[22:30] <fwereade> niemeyer, not sure if you saw: https://codereview.appspot.com/6567044/ has a RelationUnitsWatcher (and a few Uniter tests passing)
[22:31] <niemeyer> fwereade: I haven't seen it yet
[22:31] <niemeyer> fwereade: I'm trying to get the uniter tests to pass as-is as well
[22:32] <fwereade> niemeyer, very recent -- but I mentioned it shortly before you timed out
[22:32] <niemeyer> fwereade: Ah, no, I didn't get that, thanks
[22:32] <niemeyer> fwereade: I have a few fixes for the uniter already
[22:32] <fwereade> niemeyer, ah, I was doing more uniter tests on top of that
[22:32] <niemeyer> fwereade: Mainly ports from the specific watches to the entity ones
[22:33] <fwereade> niemeyer, mostly fixing up unit/service watchers
[22:33] <niemeyer> fwereade: Oh, but do you have uniter tests passing yet?
[22:33] <fwereade> niemeyer, ha, we are colliding right now
[22:33] <fwereade> niemeyer, only some so far but it seems healthyish
[22:33] <niemeyer> fwereade: I imagined we could, but I wasn't too worried about having *two fixes* for the uniter :-)
[22:33] <niemeyer> fwereade: I'm about to "time out"
[22:33] <fwereade> niemeyer, ha, yeah :)
[22:33] <fwereade> niemeyer, np, I should too
[22:34] <niemeyer> fwereade: So perhaps I can push a branch for your enjoyment so that you can merge what you find useful, and drop what you don't
[22:34] <fwereade> niemeyer, we can look at the fixes tomorrow :)
[22:34] <fwereade> niemeyer, cool
[22:34] <niemeyer> fwereade: Hold on, I'll send the WIP
[22:34] <fwereade> niemeyer, yes please :)
[22:34] <niemeyer> fwereade: Curious about what you find
[22:35] <niemeyer> fwereade: I was just starting to debug a non-stopping watcher.. but I have to visit a relative that has an injured leg in a bit
[22:35] <fwereade> niemeyer, no worries
[22:36] <niemeyer> Pushing
[22:36] <niemeyer> fwereade: It all works, btw
[22:36] <niemeyer> fwereade: Surprisingly, even the uniter
[22:36] <fwereade> niemeyer, surprisingly?
[22:36]  * fwereade looks smug
[22:36] <fwereade> ;)
[22:37] <niemeyer> fwereade: I did a full deployment of builddb
[22:37] <fwereade> niemeyer, awesome :D
[22:37] <niemeyer> fwereade: Well, considering we did no work after we moved the state, I was expecting it to need tweaks, as we're doing now :)
[22:37] <fwereade> niemeyer, yum yum dogfood ;)
[22:37] <niemeyer> fwereade: I was surprised that it worked despite we not touching it
[22:37] <niemeyer> fwereade: Good job :)
[22:38] <niemeyer> fwereade: https://codereview.appspot.com/6562045
[22:38] <fwereade> niemeyer, sweet, thanks
[22:38] <niemeyer> fwereade: Oops.. I missed the pre-req.. please ignore the changes in unit
[22:38] <fwereade> niemeyer, np
[22:38] <niemeyer> fwereade: These are already up for review in an independent branch
[22:38] <fwereade> niemeyer, cool, I must catch up with those tomorrow
[22:39] <niemeyer> fwereade: Very quickly, did we do the same thing: https://codereview.appspot.com/6562045/diff/1/worker/uniter/modes.go
[22:39] <fwereade> niemeyer, yeah, give or take a var name or two ;)
[22:39] <niemeyer> fwereade: This is awesome.. for awesome, I appreciate the duplication of efforts :-)
[22:39] <niemeyer> s/for awesome/for once
[22:40] <fwereade> niemeyer, haha, yeah :)
[22:42] <niemeyer> fwereade: I know it's late there, but in case you want the no-error unit.Resolved in trunk by the time you wake up, just have a quick look at: https://codereview.appspot.com/6570043/; I'll do required changes and merge when I'm back, if so.
[22:42] <niemeyer> fwereade: Otherwise, we can easily handle it tomorrow
[22:42]  * fwereade looks
[22:43] <fwereade> niemeyer, LGTM, much nicer
[22:43] <niemeyer> fwereade: cheers
[22:44] <niemeyer> fwereade: Bootstraps are working again with trunk, btw
[22:44] <fwereade> niemeyer, excellent
[22:44] <niemeyer> Well, with the branch I'm merging right now
[22:49] <niemeyer> Alright, I'm stepping out..
[22:49] <niemeyer> fwereade: Have a good sleep there
[22:50] <fwereade> niemeyer, cheers, I hope your relative mends soon
[22:50] <niemeyer> fwereade: Thanks!