[00:05] <davecheney> jcastro: no it does not
[00:05] <davecheney> this is probably a problem
[00:05] <davecheney> it is both one of the remaining command line things to do
[00:05] <davecheney> and also not super simple as in zk we used to tail a zk key
[00:05] <davecheney> which isn't as straight forward in mongo
[00:05] <davecheney> two secs
[00:05]  * davecheney search documents
[00:05] <jcastro> on top of that we have a few charms using it
[00:06] <jcastro> I can sub to a bug or whatever it is
[00:06] <davecheney> jcastro: ahh, is this on the charm side (what we call the hook commands) ?
[00:06] <jcastro> davecheney: so it deployed the other charm too
[00:06] <jcastro> man, it's visibly faster, that's the first thing I noticed
[00:06] <davecheney> you're not talking about debug-log ?
[00:06] <davecheney> jcastro: about speed
[00:07] <jcastro> http://jujucharms.com/charms/precise/postgresql/hooks/install
[00:07] <jcastro> line 40, is what breaks there
[00:07] <davecheney> i had a report from the folks who can't be named in this channel
[00:07] <davecheney> that the charmers who were charming their things were suffering from 10min round trip times
[00:07] <davecheney> can you tell me more about that
[00:07] <davecheney> (maybe we should get back on the phone)
[00:07] <jcastro> so like, status, etc is much faster
[00:07] <jcastro> from hitting enter to getting a prompt
[00:07] <davecheney> jcastro: if you pass -v
[00:07] <davecheney> you'll see we don't use an ssh tunnel
[00:07] <davecheney> which really improved speed
[00:08] <davecheney> and reliability
[00:08] <jcastro> yeah so that's pretty awesome
[00:08] <davecheney> for small envs
[00:08] <davecheney> status is great
[00:08] <davecheney> i'm concerned about large envs
[00:08] <davecheney> which is one place where _not_ having the topology node isn't great
[00:08] <jcastro> Can we hop on tomorrow? I'm pushing my EOD++ limits and it's affecting my wife's ability to want to punch me right now. :)
[00:08] <davecheney> jcastro: understood
[00:08] <davecheney> please raise bugs, we'll take it from there
[00:09] <davecheney> jcastro: the line 40 issue is the path to juju-log is hard coded
[00:09] <davecheney> raise an issue anyway
[00:09] <jcastro> nod
[00:09] <davecheney> this is a good case to explain how it is both different, and the same
[00:09] <davecheney> if you get my meaning
[00:10] <davecheney> jcastro: please _please_ raise this with the charmers tomorrow in the call
[00:10] <davecheney> if nobody else, i'm here to traige bugs
[00:11] <jcastro> nod
[00:11] <davecheney> jcastro: it may be that too many charms use /usr/bin/juju-* for their tools
[00:11] <davecheney> and we have to support that as legacy
[00:11] <jcastro> I can file and fix those, I'll see how many we have
[00:11] <davecheney> or maybe that is just a mistake, and was never actually how you were supposed to interface with charms
[00:11] <jcastro> if it's like a handful, nbd
[00:11] <davecheney> charm-hooks
[00:12] <davecheney> either way, maybe charm-lint can help
[00:12] <davecheney> but this is why I want to get with m_3 and abuse his charm testing harness
[01:14] <wallyworld_> anyone seen long delays in mails to juju-dev coming through before?
[01:15] <davecheney> wallyworld_: rog complains a lot that he doesn't get the mesasges at all
[01:15] <davecheney> have seen some weird shit this morning
[01:15] <wallyworld_> :-(
[01:15] <wallyworld_> ok, thans, not just me then
[01:15] <wallyworld_> i sent a message over an hour ago and nothing received yet
[01:21] <wallyworld_> the is guys say they are moving to a new mailing list server this morning, so that probably explains it
[01:21] <davecheney> the mail queues on LP are probably massive
[01:22] <davecheney> that thing sends lots of mail
[01:22] <wallyworld_> yeah, you noticed :-
[01:22] <wallyworld_> )
[05:44] <wallyworld_> jam: g'day, got time for a quick catch up?
[05:44] <jam> wallyworld_: certainly, mumble, or IRC?
[05:44] <wallyworld_> mumble
[05:49] <wallyworld_> jam: http://169.254.169.254/1.0/meta-data/instance-id
[05:50] <jam> wallyworld_: http://docs.openstack.org/trunk/openstack-compute/admin/content/metadata-service.html
[05:51] <jam> http://169.254.169.254/openstack
[05:51] <jam> http://169.254.169.254/openstack/2012-08-10/meta_data.json
[05:51] <jam> http://169.254.169.254/openstack/latest/meta_data.json
[06:01] <wallyworld_> curl http://169.254.169.254/openstack/2009-04-04/meta_data.json
[06:06] <wallyworld_> status-error: instance i-000d85a9 for machine 0 not found
[06:08] <wallyworld_> https://pastebin.canonical.com/85724/
[06:24] <bigjools> people still use mumble?
[06:54] <wallyworld_> why not?
[06:54] <wallyworld_> bigjools: why you not like mumble?
[06:55] <wallyworld_> jam: btw, i apt updated today and lsb_release just started working, go figure
[06:57] <jam> bigjools: it tends to work better with high-latency low-bandwidth situations than G+
[07:06] <bigjools> mumble is far worse every time I use it
[07:06] <bigjools> far far worse
[07:06] <bigjools> now that g+ has a bandwidth slider, it's very usable with slower links
[08:39] <dimitern> fwereade: ping
[08:55] <rogpeppe> mornin' all
[09:01] <dimitern> rogpeppe: morning
[09:02] <dimitern> rogpeppe: is there a way to get into a mongo shell while some test is running to see what's getting set in the db?
[09:03] <dimitern> rogpeppe: maybe pause it for a while, so i can inspect the collection
[09:07] <rogpeppe> dimitern: not AFAIK
[09:07] <rogpeppe> dimitern: there are probably a few ways you could hack it if you wanted to do that
[09:08] <dimitern> rogpeppe: hmm... maybe if I put a time.Sleep in the test just after the change and try to connect to the mongo shell?
[09:08] <rogpeppe> dimitern: that's definitely a possibility
[09:08] <rogpeppe> dimitern: you'll probably want to print out the port number that mongo's listening on (or you could get it from the mongo command line args from ps i suppose too)
[09:09] <dimitern> rogpeppe: i'll try that
[09:15] <jam> rogpeppe: I'm trying to write some code that uses a function pointer, and I'd like to assert that it points to what I think it should.
[09:15] <jam> However, if I do: c.Assert(myPointer, Equals, TheFunc)
[09:15] <jam> I get "comparing uncomparable type"
[09:15] <rogpeppe> jam: you can't compare function pointers
[09:15] <rogpeppe> jam: (what does it mean to compare closures?)
[09:15] <jam> rogpeppe: but (a) Why not? and (b) what is the workaround so that you know what you are actually pointing to
[09:15] <jam> rogpeppe: It is an instance of a function
[09:16] <jam> which would have a unique value (IMO)
[09:16] <jam> but regardless, there are *lots* of funcs which are not closures
[09:16] <rogpeppe> jam: originally you could compare func pointers, but the functionality was removed
[09:16] <rogpeppe> jam: because it leaves the implementation free to do different things
[09:16] <jam> rogpeppe: so, what is a sane way to ensure that "after doing X, my function pointer is pointing at Y" ?
[09:17] <rogpeppe> jam: in particular, if i have: func foo() func() {return func(){}}, does foo() == foo() ?
[09:17] <rogpeppe> jam: you could call it and check it does the expected thing
[09:18] <jam> rogpeppe: well generally I would say no, but I'm fine with that being implementation defined.
[09:18] <rogpeppe> jam: i think they wanted to avoid implementation-defined equality
[09:18] <jam> but for "var myFunc func() = goose.Func" I'd like to actually assert what it points to.
[09:18] <rogpeppe> jam: you can actually do it with reflect
[09:18] <jam> rogpeppe: not allowing comparison of closures (because they are pointers + state) is diff than not being able to inspect this pointer I have.
[09:19] <jam> rogpeppe: reflect.?
[09:19] <jam> http://stackoverflow.com/questions/9643205/how-do-i-compare-two-functions-for-pointer-equality-in-the-latest-go-weekly I guess
[09:20] <rogpeppe> jam: comparing reflect.ValueOf(f).Pointer() will probably work
[09:21] <rogpeppe> jam: the representation of function pointers has just changed in tip, BTW
[09:21] <rogpeppe> jam: closures are a lot more efficient now
[09:23] <rogpeppe> jam: https://groups.google.com/forum/#!searchin/golang-dev/plan$20for$20two-word$20funcs/golang-dev/x328N8hiN5k/YSzpv2DxPiIJ
[09:25] <rogpeppe> jam: FWIW i was a bit disappointed we lost function equality, but i can see their point too.
[10:06] <dimitern> I have a review of medium complexity about upgrade-charm stuff, which I'd appreciate your comments about https://codereview.appspot.com/7363060/ (my first dealings with state/, although with a lot of help from fwereade - tyvm!)
[10:48] <rogpeppe> fwereade: any chance you could take a look at https://codereview.appspot.com/7390043 ? its prereqs are now merged - i think it should be ready to go.
[10:55] <fwereade> rogpeppe, ok, looking now
[10:58]  * TheMue today has early lunch
[11:01] <dimitern> fwereade: ping
[11:01] <fwereade> rogpeppe, LGTM
[11:01] <fwereade> dimitern, pong
[11:02] <dimitern> fwereade: hey, can you take a look at this please? especially the tests for refcounts https://codereview.appspot.com/7363060/
[11:02] <fwereade> dimitern, sure
[11:05] <rogpeppe> fwereade: thanks!
[11:08] <rogpeppe> fwereade: i wouldn't mind a chat about some of the stuff i'm planning for the gui folks, perhaps sometime later this morning?
[11:09] <fwereade> rogpeppe, might end up being this afternoon... grab me at 2 if I haven't pinged you before then
[11:09] <rogpeppe> fwereade: k
[11:22] <fwereade> dimitern, LGTM with some things to address
[11:22] <fwereade> dimitern, I like the refcount tests but I don't like the ServiceSettingsRefCount func itself, I think it can be simpler
[11:22] <fwereade> dimitern, tyvm for that
[11:30] <dimitern> fwereade: cheers
[11:30] <dimitern> fwereade: i'm open to advice how to simplify it :)
[11:31] <fwereade> dimitern, I think just treat mgo.ErrNotFound as 0, and pass all other errors through directly
[11:31] <fwereade> dimitern, the looping in only necessary when writing, reading should Just Work
[11:31] <dimitern> mgz, jam, wallyworld_: i'll be 10m late for the standup
[11:32] <dimitern> fwereade: yeah, I did that because it failed for some reason unknown (until I saw the svcName was wrong :)), i'll remove the loop
[11:32] <fwereade> dimitern, cool
[11:40] <dimitern> fwereade: in the process i learned a lot about mongo's QL and some internals :)
[11:42] <dimitern> fwereade: am I right to assume this CL fixes bug 1063621 ?
[11:42] <_mup_> Bug #1063621: upgrade-charm should handle config changes <upgrade-charm> <juju-core:In Progress by dimitern> < https://launchpad.net/bugs/1063621 >
[11:48] <mgz> jam, wallyworld_: around yet for standup?
[11:51] <dimitern> fwereade: I addressed the issues
[11:51] <dimitern> anyone else for a review of https://codereview.appspot.com/7363060/ ?
[12:04] <jam> mgz: wallyworld_ is at his conference today
[12:19] <rogpeppe> jam: reviewed https://codereview.appspot.com/7406054/
[12:20] <rogpeppe> dimitern: i'll have a look
[12:20] <dimitern> rogpeppe: cheers
[13:01] <rogpeppe> dimitern: just a quick question: why do the settings ref counts need to be in a separate collection from the settings themselves?
[13:08] <rogpeppe> dimitern: reviewed
[13:16] <dimitern> rogpeppe: tyvm
[13:20] <dimitern> rogpeppe: well, that was fwereade's suggestion
[13:20] <rogpeppe> dimitern: i'm interested in the reasoning behind it (i'm not saying it's wrong, just wondering)
[13:20] <fwereade> dimitern, rogpeppe: I'm not sure that it's a good idea to have refcount changes counted as config changes
[13:21] <dimitern> rogpeppe: can't recall the exact reasoning, but it was something to do with the settings being used in more places than just for the services
[13:21] <rogpeppe> fwereade: ah, i see
[13:21] <dimitern> fwereade: right :) sorry
[13:21] <fwereade> dimitern, rogpeppe: also, I don't really love the existing field-stripping magic , and don't really want to do more of it especially when there are multiple settings users but only one case where we need refcounting
[13:21] <rogpeppe> fwereade: mind you, the changes are so rare it probably makes no difference (and we have to deal with the case of a change with nothing actually changed anyway, right?)
[13:22] <rogpeppe> fwereade: where's the field-stripping magic?
[13:22] <fwereade> rogpeppe, we certainly do, but I thnk an extra config-changed for every unit in a service adds up to quite a lot of unnecessary churn
[13:23] <fwereade> rogpeppe, the _id, txn-revno stuff
[13:23] <fwereade> rogpeppe, we unmarshal the doc into a dict and strip out the magic keys
[13:24] <rogpeppe> fwereade: hmm, does this mean we can't have a charm config with a setting called "txn-revno"?
[13:25] <fwereade> rogpeppe, I think you are probably right about that
[13:25] <rogpeppe> fwereade: hmm, seems wrong. we should probably prefix all the config map keys
[13:26]  * fwereade adds another line to his "why I hate Settings" list
[13:31] <rogpeppe> dimitern: might be good to add a comment somewhere explaining the reasoning behind having the refcounts separate from the things they're refcounting
[13:31] <rogpeppe> dimitern: LGTM overall
[13:31] <dimitern> rogpeppe: will do, thanks
[13:34] <dimitern> rogpeppe: so txn.Op{..., Insert: map[string]interface{}(nil), ...} should be fine you think?
[13:34] <rogpeppe> dimitern: i don't see why not.
[13:35] <dimitern> rogpeppe: ok then
[13:35] <rogpeppe> dimitern: if it doesn't work then i'd consider it an mgo bug
[13:35] <dimitern> :) indeed
[13:36] <rogpeppe> dimitern: for read only purposes, a nil map is usually considered the same as an empty map
[13:36] <dimitern> rogpeppe: even if you access a key inside?
[13:36] <rogpeppe> dimitern: yeah
[13:36] <rogpeppe> dimitern: it just returns the zero value for the key
[13:37] <dimitern> rogpeppe: cool!
[13:37] <rogpeppe> dimitern: and you can range over a nil map just fine too
[13:37] <dimitern> rogpeppe: yeah, i knew that, just wasn't sure m[k] would
[13:39] <rogpeppe> dimitern: from http://golang.org/ref/spec#Map_types: "A nil map is equivalent to an empty map except that no elements may be added."
[13:39] <dimitern> rogpeppe: right! so append and set will fail, other stuff works
[13:40] <rogpeppe> dimitern: no append on maps, but yeah
[13:40] <dimitern> rogpeppe: ofc :) multi-tasking..
[13:49] <fwereade> dimitern, rogpeppe: https://codereview.appspot.com/7375059 should be simple, and I've checked it actually works
[13:49] <dimitern> fwereade: looking
[13:52] <dimitern> rogpeppe: I addressed you suggestions wrt https://codereview.appspot.com/7375059 , so I'm submitting it, unless you want to take one last look?
[13:52] <rogpeppe> dimitern: looking
[13:53] <rogpeppe> dimitern: i presume you meant https://codereview.appspot.com/7363060/
[13:53] <dimitern> rogpeppe:  :) oops, yeah - sure
[13:55] <rogpeppe> dimitern: replied (LGTM with one trivial)
[13:55] <dimitern> rogpeppe: thanks
[13:58] <dimitern> fwereade: btw, am I right to assume my CL fixes bug 1063621 ?
[13:58] <_mup_> Bug #1063621: upgrade-charm should handle config changes <upgrade-charm> <juju-core:In Progress by dimitern> < https://launchpad.net/bugs/1063621 >
[14:01] <fwereade> dimitern, you, know, I think it does :) nice
[14:01] <dimitern> fwereade: cheers :)
[14:09] <rogpeppe> fwereade: reviewed
[14:09] <rogpeppe> fwereade: any chance of a chat?
[14:10] <fwereade> rogpeppe, yeah, sgtm
[14:11] <rogpeppe> fwereade: https://plus.google.com/hangouts/_/0b304dec0f851f247e957bc221cae25bb5a5d8e4?authuser=0&hl=en-GB
[14:11] <fwereade> rogpeppe, cheers, there in a sec
[14:11] <rogpeppe> fwereade: i'll juju pop downstairs for a sec too
[14:14] <dimitern> fwereade: nice one, reviewed
[14:21] <mgz> wait, what does `juju pop downstairs` do? :)
[14:23] <dimitern> mgz: pretty cool, eh? that's the new command :D
[14:24] <dimitern> it has to have --force as well
[14:58] <rogpeppe> mgz: good question. things are getting quite sad when "just" becomes "juju"
[15:03] <mramm> joining meeting, computer just slow...
[16:13] <dimitern> fwereade: when you have some time, can you take a look at https://codereview.appspot.com/7363061
[16:14] <dimitern> fwereade: this should cover all the relation compatibility checks and, combined with the previous CL should resolve bug 1032557 (part of the bug was actually fixed with the prev CL I think)
[16:14] <_mup_> Bug #1032557: upgrade-charm should handle relation changes <upgrade-charm> <juju-core:In Progress by dimitern> < https://launchpad.net/bugs/1032557 >
[16:17] <fwereade> dimitern, sorry, it's a bit trickier than that -- you need to check the endpoints for all relations the service is in, rather than *all* the endpoints that *might* be being used
[16:17] <dimitern> fwereade: hmm I wasn't sure Endpoints() includes only active ones
[16:17] <dimitern> fwereade: but this is a good start, no?
[16:19] <fwereade> dimitern, I'm not 100% sure it's leading in the right direction, let me think a mo
[16:19] <fwereade> dimitern, g+ maybe?
[16:19] <dimitern> fwereade: ok
[16:19] <fwereade> dimitern, https://plus.google.com/hangouts/_/818eb5f2e744d376413650e8413f1865123d1e27?authuser=0&hl=en
[17:21] <rogpeppe> fwereade: oh yes, i've remembered the reason for having the key generation in environs.Bootstrap rather than in the command itself
[17:21] <fwereade> rogpeppe, oh yes?
[17:22] <rogpeppe> fwereade: it's because we want people to be able to bootstrap easily even if they're using the juju Go interface rather than the command line
[17:23] <rogpeppe> fwereade: although to be honest, i wouldn't mind an extra step there to generate the certs
[17:24] <fwereade> rogpeppe, yeah, I probably wasn't clear -- I didn't think the actual functionality should be in the bootstrap command, just its onvocation
[17:25] <rogpeppe> fwereade: the important thing is that nothing in the environs package *needs* to be able to access the user's home directory.
[17:26] <fwereade> rogpeppe, yes, indeed
[17:26] <rogpeppe> fwereade: at least, that was a significant consideration in the current design
[17:26] <fwereade> rogpeppe, I agree that assuming access to home is not sensible
[17:27] <fwereade> rogpeppe, btw, I submit for your consideration without comment: http://paste.ubuntu.com/5571065/
[17:28] <fwereade> rogpeppe, does that look crazy to you?
[17:28] <fwereade> rogpeppe, I'm thinking of Environ.Servers rather than StateInfo
[17:28] <rogpeppe> fwereade: i'll be interested to see the design you end up with. i'm sure it's possible to do better than the current one.
[17:28] <rogpeppe> fwereade: looking
[17:28] <fwereade> rogpeppe, it's a matter of figuring out what I can do step by step
[17:30] <rogpeppe> fwereade: i'm not really sure that it's worth separating the port from the addresses
[17:30] <rogpeppe> fwereade: we might want the ability to serve on different ports
[17:30] <rogpeppe> fwereade: and the usual "host:port" syntax works ok
[17:31] <fwereade> rogpeppe, hmm... I'm not sure it's worth passing the port around separately, either
[17:31] <fwereade> rogpeppe, I wouldn't feel too bad about making an environment pick ports at startup time
[17:31] <rogpeppe> fwereade: so we add Environ.Servers() Servers ?
[17:32] <fwereade> rogpeppe, yeah
[17:32] <rogpeppe> fwereade: that sgtm
[17:32] <fwereade> rogpeppe, it seems like the clients won;t be bothered -- it'll actually be more convenient to pass in entityName, password, rather than futz with the returned *Infos
[17:32] <fwereade> rogpeppe, and it also makes it much more convenient as an input when generating machine config
[17:33] <rogpeppe> fwereade: yeah, i think the Servers idea works well. i like the distinction between entity-less Servers and entity+password Info
[17:34] <fwereade> rogpeppe, ok, I'll explore that a little more... I have something on the tip of my brain, iykwim, but the whole thing's not quite there yet
[17:34] <fwereade> rogpeppe, but that feels like it'll eliminate some of the accidental complexity that is slowing me donw
[17:34] <rogpeppe> fwereade: i'd stick to the usual APIHosts []string with port numbers as part of the string though.
[17:35] <fwereade> rogpeppe, I kinda want the struct to still be meaningful with "localhost" tacked on
[17:35] <rogpeppe> fwereade: i'm not sure i understand. what's wrong with localhost:17007 ?
[17:36] <rogpeppe> fwereade: ah, i see
[17:37] <fwereade> rogpeppe, I can pass a Servers, with or without addresses, into some sort of machine-configgy thing, and it will work when setting up (1) a bootstrap state server, add localhost to [], (2) a normal machine, don't add anything, and (3) a state server with others already existing, add localhost to [other,servers]
[17:37] <rogpeppe> fwereade: isn't that up to the thing managing bootstrap - it should know what port it's starting the server on, and therefore be able to attach the right port number to localhost
[17:38] <rogpeppe> fwereade: the machine-configgy thing is responsible for starting the server, right?
[17:38] <fwereade> rogpeppe, it's really just about how we pass that information around
[17:39] <fwereade> rogpeppe, indeed -- so knowing the ports and not always keeping them bound up inside addresses is kinda convenient
[17:40] <rogpeppe> fwereade: i think there's a significant difference between "these servers are listening on these ports" and "i want to start this server listening on this port"
[17:40] <rogpeppe> fwereade: that's why APIPort is a separate field in agent.Config
[17:40] <fwereade> rogpeppe, what's your use case for varying ports within an environ?
[17:41] <rogpeppe> fwereade: i have a vague thought in my head about running a dynamic number of API servers on the same box
[17:41] <rogpeppe> fwereade: particularly when stress testing
[17:43] <fwereade> rogpeppe, not quite sure what case that simulates
[17:44] <fwereade> rogpeppe, wait a sec... agent.Config? need to check that
[17:45] <rogpeppe> fwereade: i'm not sure either currently. perhaps that particular use case is bogus. it just seems to me that it's trivial to get this generality at this point, and might be hard to get it back later.
[17:45] <rogpeppe> fwereade: sorry, agent.Conf
[17:45] <rogpeppe> fwereade: (not really sure why i chose Conf rather than Config as a name there :-])
[17:45] <fwereade> rogpeppe, hmm... so we squish *all* the fields that *might* be used for an agent into the same file?
[17:46] <rogpeppe> fwereade: yeah. beats having lots of different files.
[17:47] <fwereade> rogpeppe, not quite convinced there, but I need to go to the shops
[17:47] <rogpeppe> fwereade: ok
[17:48] <fwereade> rogpeppe, have a good night, might be off for a while
[17:48] <rogpeppe> fwereade: you too
[17:48] <rogpeppe> fwereade: i'll be around until about 8pm your time
[17:50] <niemeyer> fwereade: Any chance of a review on this today: https://codereview.appspot.com/7387054
[17:51] <niemeyer> Oh,  I guess William is the one leaving
[17:51] <niemeyer> rogpeppe: ^
[17:52] <rogpeppe> niemeyer: looking
[18:28] <rogpeppe> niemeyer: ping
[18:29] <niemeyer> rogpeppe: Yo
[18:29] <rogpeppe> niemeyer: just looking at sortableCounters.Less
[18:29] <niemeyer> rogpeppe: yep
[18:30] <rogpeppe> niemeyer: i'm not sure i understand your Key logic - can't you just do if ki != kj { return ki < kj } ?
[18:30] <niemeyer> rogpeppe: []string
[18:30] <rogpeppe> niemeyer: doh!
[18:32] <rogpeppe> niemeyer: the ordering isn't fully done though, istm, if len(kj) > len(ki)
[18:32] <rogpeppe> niemeyer: or don't you care about that?
[18:34] <niemeyer> rogpeppe: No, you're right.. if there are pending items there it can return
[18:34] <rogpeppe> niemeyer: cool. worth fixing.
[18:34] <niemeyer> rogpeppe: +1
[18:40] <rogpeppe> niemeyer: reviewed
[18:46] <niemeyer> rogpeppe: Thanks!
[18:48] <niemeyer> rogpeppe: Responded
[20:16] <rogpeppe> g'night all
[20:17] <thumper> night rogpeppe
[20:36] <thumper> hi mramm
[20:37] <mramm> hi
[20:37] <thumper> mramm: want to get started early?
[20:45] <mramm> sorry was in a meeting
[20:45] <mramm> done now, so we can start a little early
[21:22] <benji> I /think/ my mongodb has become dirtied.  I have a test failure on a clean trunk branch that I'm pretty sure I didn't have before.  Is that a reasonable hypothesis?
[21:46] <benji> any suggestions as to what could be going wrong here: http://paste.ubuntu.com/5571811/
[22:25] <niemeyer> benji: Pointer vs. non-pointer?
[22:28]  * thumper sighs
[22:33] <bac> benji: that has been fixed in trunk i think
[22:33] <thumper> davecheney, mramm:  Question: I'm wanting to merge my branch, but when I run the tests locally (just prior to merging) I get an unrelated test failure in openstack storage, should I fix that separately first, or merge my code in then fix it?
[22:41]  * thumper sighs more
[22:41] <thumper> I get multiple test failures on trunk in quantal
[22:42] <thumper> does anyone else get them?
[22:43] <thumper> one obvious one is environs/openstack/storage.go where the List interface says the results are in alphabetical order, but the method doesn't sort the results
[22:43] <thumper> and the test fails
[22:43] <thumper> and 9 failures for worker/uniter
[22:44]  * thumper unmerges trunk so he can continue to work with confidence
[22:45] <benji> yay! the tests pass on a freshened trunk; one thing that threw me off was that "bzr pull" didn't work without a "from"; I wonder if that is a cobzr thing
[22:46] <thumper> benji: I just pulled trunk, and I get test failures :(
[22:47] <niemeyer> Anyone up for a quick review?
[22:47] <niemeyer> https://codereview.appspot.com/7407052
[22:50] <thumper> niemeyer: let me say how much I hate bool flags to change the functionality
[22:50] <thumper> especially in a public api
[22:51] <niemeyer> thumper: You feel like it obscures the call?
[22:51] <thumper> it means you see things like: SumCounter(true) or SumCounter(false) and have NFI what it means
[22:51] <thumper> well, with extra strings
[22:52] <thumper> it is something I've been trying to avoid since reading Clean Code
[22:52] <niemeyer> thumper: Yeah, that's a fair point
[22:52] <thumper> niemeyer: have you read it?
[22:52] <niemeyer> thumper: It's not what the CL is about, though
[22:52] <thumper> it is a very good book
[22:52] <thumper> no, I can see that
[22:52] <niemeyer> thumper: I've read a few of the articles there
[22:52] <niemeyer> thumper: Haven't read it all
[22:52] <niemeyer> thumper: I should
[22:53] <thumper> but I don't have enough context to know if the change is a good thing or not
[22:53] <thumper> I can say the code looks fine, but can't approve the functionality
[22:53] <niemeyer> thumper: Cool, you can kind of trust me on the functionality side
[22:54] <thumper> haha
[22:54]  * thumper trusts no one
[22:54] <thumper> no one I tell you
[22:54] <niemeyer> thumper: The property on the CL description is sensible is what I mean
[22:56] <thumper> niemeyer: do I read this right, we are creating javascript functions to pass to mgo to do stuff?
[22:56] <niemeyer> thumper: ATM counting mysql:* includes mysql itself, which means we don't get the count for the user branches only
[22:56] <niemeyer> thumper: Which isn't very useful
[22:57] <davecheney> thumper: short version to get your trunk passing
[22:57] <davecheney> rm -rf $GOPATH/src/launchpad.net/goose
[22:57] <niemeyer> thumper: and makes listing and summing uneven
[22:57] <davecheney> go get launchpad.net/goose/...
[22:57] <thumper> again?
[22:57] <niemeyer> thumper: If fixing that isn't a good idea I'll be surprised at least :)
[22:57] <davecheney> goose and whatever openstack expects are out of sync
[22:57] <niemeyer> thumper: and yes, you read it right.. map reduce is MongoDB is done like that
[22:57] <davecheney> probably because your branck contains an older openstack
[22:58] <niemeyer> davecheney: Hey Dave
[22:58] <davecheney> niemeyer: hey mate, long time no talk
[22:58] <niemeyer> davecheney: Indeed!
[22:58] <davecheney> congratulations btw
[22:59] <niemeyer> davecheney: On? :)
[22:59] <davecheney> oh, sorry, never mind
[22:59] <davecheney> forget i said anything
[22:59] <niemeyer> davecheney: Ok, can I keep the congrats at least? ;-D
[23:00] <davecheney> always
[23:00] <davecheney> never turn down praise
[23:00] <niemeyer> davecheney: Btw, any chance of a review on https://codereview.appspot.com/7407052/?
[23:00] <niemeyer> davecheney: LOL
[23:00] <davecheney> just smile and look humble :)
[23:00]  * davecheney looks
[23:00]  * thumper will beat the secret out of davecheney later
[23:01] <niemeyer> davecheney: This is just a smoothing out change.. nobody will even care much, I think
[23:02] <davecheney> niemeyer: i'll keep my gob shut until it's announced then
[23:04] <thumper> davecheney: even with latest goose, trunk fails 9 tests in worker/uniter
[23:04] <niemeyer> davecheney: I was talking about the branch.. LOL
[23:07] <davecheney> niemeyer: branch LGTM, i'll leave it to you to argue about the bool with thumper
[23:07] <niemeyer> davecheney: Cool, thank you
[23:07] <davecheney> i take the position that it was there before ths CL, so you can argue about it out of context with this change
[23:07] <niemeyer> davecheney: I agree with him that bools aren't great as an interface
[23:07] <niemeyer> davecheney: But that's not part of this CL
[23:08] <niemeyer> fwereade: Heya
[23:09] <thumper> what do you guys mean when you say "CL"
[23:09] <niemeyer> davecheney: Good idea, I'll add it
[23:09] <niemeyer> davecheney: I mean, a:b:c
[23:10] <niemeyer> thumper: Change List.. It's a historical name for the issues in Rietveld that, to be honest, I don't even know where it comes from.
[23:10] <thumper> davecheney: I don't suppose I could get you to pull trunk and see if the tests pass for you could I?
[23:10] <thumper> ah...
[23:10]  * thumper goes to look for food in the kitchen
[23:15] <davecheney> thumper: doing so now
[23:17] <davecheney> thumper: i'm moderatly confident that trunk isn't broke
[23:17] <davecheney> as my daily build has not broken
[23:17] <davecheney> but that still means we need to find the right versions of goose to match environs/openstack in your branch
[23:24] <thumper> well, I pulled trunk of both
[23:24] <thumper> so they should work, right?
[23:26] <davecheney> testing now
[23:27] <davecheney> hmm, two build failures in worker/uniter/charm
[23:28] <thumper> davecheney: I'll pastebin my errors
[23:28] <davecheney> thumper try to up to rev 942
[23:28] <davecheney> jacuse rev 943
[23:32] <thumper> jacuse?
[23:32] <davecheney> http://en.wikipedia.org/wiki/J'accuse
[23:34] <davecheney> thumper: got that paste ?
[23:35] <thumper> http://paste.ubuntu.com/5572091/
[23:36] <thumper> heh
[23:36] <thumper> oops
[23:36] <davecheney> hmm, that error may be spurious @ 943
[23:36] <thumper> http://paste.ubuntu.com/5572096/
[23:37] <davecheney> thumper: i think those are genreal test flakeyness errors
[23:38] <davecheney> there are a few similar errors logged on LP
[23:38] <thumper> I get them consistently
[23:38] <thumper> like, every time
[23:38] <thumper> didn't get them before
[23:38] <davecheney> yeah, they are very timing related
[23:38] <davecheney> get a slower machine (not helpful)
[23:39] <thumper> davecheney: this is running in a vm...
[23:39] <davecheney> that explains why sleeps don't work properly
[23:39] <davecheney> there is some other weird shit in that paste
[23:39] <davecheney> value *os.PathError = &os.PathError{Op:"open", Path:"/tmp/gocheck-63205844/0/agents/unit-u-0/state", Err:0x15} ("open /tmp/gocheck-63205844/0/agents/unit-u-0/state: is a directory")
[23:40] <davecheney> it is possible the test isn't stopping properly at that error
[23:40] <davecheney> thumper: please raise a critical on LP
[23:40] <thumper> saying what exactly?
[23:40] <thumper> on juju-core?
[23:41] <davecheney> yes
[23:41] <davecheney> worker/uniter: multiple test failures
[23:41] <davecheney> desc: can't run tests reliably, fail every time (see attached)
[23:42] <thumper> well... just ran the worker tests without everything else, and they passed FFS
[23:42] <thumper> running all again to see what happens
[23:45] <thumper> oh FFS, all pass now
[23:53] <wallyworld_> davecheney: hi, a quick clarification on your concern about returning an unexported error
[23:53] <wallyworld_> i coped the pattern used already in the state package for notFoundError
[23:54] <wallyworld_> i guess the original author didn't want people to access anything other than Error() ?
[23:55] <wallyworld_> that fact that we don't need the error exported (it's not used anywhere) - does that imply it can stay as is for now?
[23:56] <davecheney> wallyworld_: on da phone, two secs
[23:57] <wallyworld_> np
[23:58] <wallyworld_> my preference is for consistency, so it i change one, the other should be changed to match