[00:12] wallyworld_: haha I see you're fixing the http bug in the other providers then [00:14] yeah [00:23] bigjools: turns out the goamz lib sets Close = true [00:23] fancy that [00:41] rogpeppe1: don't suppose you are still around? [01:02] bigjools: what's the process for landing gomaasapi changes? looks like landing bot is not set up for that project. do i need to merge to trunk manually? [01:02] it should be owned by the bot I thought [01:02] hmmm maybe it's still running in the qa lab [01:02] doesn't appear to be [01:02] yes I think it's a bot in the lab [01:02] needs to be migrated [01:03] bigjools: can you land it for me then? [01:03] https://code.launchpad.net/~wallyworld/gomaasapi/fix-request-eof/+merge/191537 [01:03] just set it approved [01:03] ah ok [01:06] bigjools: I wonder if it still works since I changed the owner... [01:06] yeah :) [01:06] wallyworld_: if that doesn't work, merge and push to trunk directly [01:06] \o/ [01:06] alright [01:10] bigjools: ffs :-( can you please add me to ~maas-maintainers [01:10] how';s that gonna help? [01:11] There was a problem validating some authors of the branch. Authors must be either one of the listed Launchpad users, or a member of one of the listed teams on Launchpad. [01:11] Persons or Teams: [01:11] maas-maintainers [01:11] oh ffs [01:11] let me see if I can remove that [01:11] ta [01:12] oh fuck sake this is all fucked [01:12] wallyworld_: merge manually [01:12] ok [01:12] it's using jenkins tests on quantal and raring ffs [01:12] \o/ [01:20] thumper: did I break the local provider with the bootstrap storager changes? [01:20] * thumper nods [01:20] sorry :( [01:20] or it could have been the prepare work [01:20] * axw looks closer [01:20] not sure exactly where the problem lies [01:20] mk [01:20] axw: it's fixed now [01:20] I didn't think it was broken, it's optional [01:20] neither did I [01:21] something changed in bootstrap, so it tried to do some stuff earlier [01:21] I do remember changing some bootstrap stuff [01:21] too [01:21] ok. I'll have a dig, I'd like to know why it broke [01:21] it'd be ironic if I broke it :) [01:21] hehe [01:22] you know what... [01:22] I think I may have been me [01:22] with an early fail if already bootstrapped [01:22] heh [01:22] ahhh [01:22] that makes sense [01:23] it does the check after the enable bootstrap storage [01:23] although I thought I did that before my other lxc fixes [01:23] * thumper shrugs [01:23] the log file indicates other stuff happening around prepare [01:24] well anyway, it makes sense to have an EnableBootstrapStorage for local too [01:24] it does [01:25] sorry, I didn't think to add it before [01:25] found out that lxc is broken right now with precise anyway [01:25] so we can't really use it [01:25] :( [01:25] some other bug [01:25] leaving apt in a bad state [01:25] charm install hooks fail [01:25] anyway [01:26] I'm supposed to be looking at a problem for gary around the all watcher [01:26] so I'll have to fire up lots of machines in ec2 [01:27] thumper: or containers ? [01:28] davecheney: or containers what? [01:29] for gary's allwacher problem ? [01:30] davecheney: lxc is broken because of a procps update that landed in precise-updates [01:31] *sadface* [01:31] * thumper nods [01:50] davecheney, axw: I know that in C++ you should never modify a map while you are iterating over it, how does go handle this? [01:51] thumper: iirc it's not completely specified. I'll have to look it up [01:51] in C++ it can segfault [01:51] normally considered bad form modifying a container you are iterating [01:52] although can be done if careful [01:52] yeah I'm all too familiar with those bugs ;) [01:52] the C++ language is very careful about what invalidates iterators [01:52] spent many hours debugging other people's ugly C++, not to mention my own [01:52] I'm just looking inside the multiwatcher code [01:52] where it is responding to things [01:53] under load when there are likely to be multiple requests pending [01:53] the code iterates over the response map, and deletes things from the map as it is iterating [01:53] thumper: "The iteration order over maps is not specified and is not guaranteed to be the same from one iteration to the next. If map entries that have not yet been reached are removed during iteration, the corresponding iteration values will not be produced. If map entries are created during iteration, that entry may be produced during the iteration or may be skipped. The choice may vary for each entry created and from one iteration to the next [01:53] . If the map is nil, the number of iterations is 0." [01:53] it just raises my suspiciions [01:53] ignore the first sentence [01:53] that's just saying iteration order is random [01:54] hmm... [01:54] what if you remove the current element? [01:54] yeah, that's the "not fully specified" bit [01:55] I can look it up in the runtime, but that won't help if it's not specified [01:55] * thumper nods [01:56] we are keeping a map of singlely linked lists [01:56] it has been forever since I've had to manage that myself [01:59] * thumper considers a race condition [02:02] arg... gotta go get a child [02:10] back [02:20] I have a horrible feeling about this [02:21] ? [02:22] ? [03:10] hmm... [03:10] can't seem to reproduce the problem [03:27] bigjools: pretty please https://code.launchpad.net/~wallyworld/gwacl/fix-request-eof/+merge/191545 [03:37] wallyworld_: done [03:37] ta [03:54] * thumper gets back to look at wallyworld_'s branches [03:55] \o/ [03:55] wallyworld_: hangout? [03:55] ok [03:56] https://plus.google.com/hangouts/_/7912539c41441cc8e5dc4021f78f9c48c48c9e69?hl=en [04:39] thumper: https://codereview.appspot.com/14769043 [05:28] huh, nothing on ubuntu.com front page about the release ... [05:30] i'm too scared to try it [05:54] bigjools: release is tomorrow [05:56] davecheney: no it's today... [05:57] stilll yesterday in the states, [05:57] barely today in the UK [05:57] meh [05:57] anyway there's normally a countdown and at least *some* mention of it [05:59] good point [07:30] mornin' all [07:31] thumper, axw: it's fine (and well defined) to remove the current element of a map when iterating over it [07:31] rogpeppe1: morning. well defined where? [07:32] axw: "If map entries that have not yet been reached are removed during iteration, the corresponding iteration values will not be produced." [07:32] axw: i.e. yes, it's ok to remove an entry, and no, you won't see that entry again [07:33] axw: nowhere does it say you cannot delete an entry from a map during iteration [07:33] rogpeppe1: not saying something you can't do something is not the same as saying you can do it :) [07:34] rogpeppe1: not really sure how that sentence says you can safely remove the current element either [07:34] it's talking about past elements [07:34] axw: in the spec, not saying you can't do something *is* equivalent to saying you can do it [07:35] axw: and i know from past discussions that that is indeed the case here [07:36] rogpeppe1: that sounds slightly scary from an implementer's perspective, but okay :) [07:36] axw: i'm actually a bit surprised if even you don't know this - some stronger wording in the spec is perhaps called for, although ISTR that's been pushed back on in golang-dev before this [07:36] rogpeppe1: I know it works, I just didn't know if it was guaranteed in the spec [07:37] axw: basically the spec says (unqualified) "The built-in function delete removes the element with key k from a map m." [07:37] axw: the fact that it's unqualified means you can do it anywhere (memory model permitting of course) [07:38] axw: otherwise you'd need loads of qualifiers everywhere [07:38] axw: however... this is indeed an unusual property in this case and could probably do with an additional sentence. [07:39] axw: i should have said: in the spec, not saying you can't do something *is* equivalent to saying you can do it *if* there's something *saying* you can do it [07:39] rogpeppe1: the fact that this has come up on golang-nuts (and in this channel ;)) before adds merit to that [07:43] rogpeppe1: you may be interested to know, I started to rewrite parts of llgo to use adonovan's ssa package [07:43] should be a bit more robust now :) [07:44] well, when it's working. I'll have to stop warping the definition of interfaces to get it to work [07:47] axw: cool! [07:47] axw: how were you warping the definition of interfaces? [07:47] rogpeppe1: llgo represents them as {runtime-type, value, method1, method2, ...} [07:48] ugly hack [07:48] should be done inside the runtime [07:48] rogpeppe1: when you have a moment, can you please look at this: https://bugs.launchpad.net/juju-core/+bug/1239550 [07:48] <_mup_> Bug #1239550: juju should warn if .jenv doesn't match environments.yaml [07:49] well actually, the summary says it all [07:49] rogpeppe1: bigjools and I were debugging and issue where he'd changed the oath token in his environments.yaml, but it wasn't taking effect [07:49] morning [07:49] turns out he'd already prepared, and then changed it [07:50] morning TheMue [07:50] axw: hiya [07:59] rogpeppe1: that aside, it's a bigger problem for the null provider, which doesn't implement destroy-environment (yet) [08:18] rogpeppe1: i've landed 2 branches; i have 2 more to go to fix the http issue https://codereview.appspot.com/14769043/ https://codereview.appspot.com/14668044/ [09:38] wallyworld_: did you see my response on https://codereview.appspot.com/14769043/ ? [09:38] wallyworld_: i think it's possible to be much less invasive with this fix [09:39] axw: sorry, only just saw your remark above [09:39] rogpeppe1: nps [09:40] axw: in general it has always been the case that changing something in your environments.yaml won't have any effect on an already-bootstrapped environment [09:41] rogpeppe1: https://bugs.launchpad.net/juju-core/+bug/1240708 [09:41] <_mup_> Bug #1240708: API server falls over repeatably during AllWatcher Next, killing GUI [09:42] rogpeppe1: I've been looking at that bug a little today [09:42] rogpeppe1: all I have been able to discern so far is that somewhere, someone is calling Stop on the watcher [09:42] thumper: i hadn't seen that bug [09:42] * rogpeppe1 has a look [09:43] rogpeppe1: hmm, what about if bootstrap failed? or someone did sync-tools and not bootstrap yet? in the past, the environments.yaml change would take effect [09:43] rogpeppe1: yeah, filed by gary while you slept [09:44] thumper: are we still going to have a meeting in a bit? [09:44] axw: aye [09:44] that is why I'm back :) [09:44] makes sense :) [09:45] thumper: when are you flying out? [09:45] api client crashed. [09:45] irc client, even [09:45] axw: sunday morning (from here), sunday night AKL -> SFO [09:45] arrive 11:15am SFO [09:45] sameish [09:46] I arrive a bit later I think [09:46] and it doesn't seem to be notifying me when someone mentions my nickname any more, which is why i didn't see earlier remarks [09:46] rogpeppe: what about when you don't have a 1 at the end of your name? [09:46] axw: just testing - could you mention my irc nick, please? [09:50] huh, weird [09:50] this is the first time i've ever had a problem with this IRC app [09:51] rogpeppe: testing [09:55] axw: thanls [09:55] axw: thanks even [09:55] np [09:55] axw: still buggered [09:56] axw: if i bring up the "configure notifications" panel, the whole app halts when i click Ok [09:56] rogpeppe: in case you missed all this: [09:56] thumper: i hadn't seen that bug [09:56] * rogpeppe1 has a look [09:56] rogpeppe1: hmm, what about if bootstrap failed? or someone did sync-tools and not bootstrap yet? in the past, the environments.yaml change would take effect [09:56] rogpeppe1: yeah, filed by gary while you slept [09:56] rogpeppe: i just saw your comments, thanks. so setting DisableKeepAlives=false has exactly the same effect as Close=true? [09:56] wallyworld_: yes [09:57] ok [09:57] wouldn't DisableKeepAlives=true be the same as Close=true? [09:57] thumper: yes [09:57] double negative would be like "enable keep alives" [09:57] whatever :-) [09:58] thumper: yeah i missed the =false thing above [09:58] i knew what i meant :-) [09:58] wallyworld_: no one else did [09:58] thumper: i did [09:58] rogpeppe did :-) [09:59] * thumper ignores them both [09:59] axw: i think that if bootstrap fails and we've prepared the environment in that step, that we should destroy the environment there and then [10:00] axw: the sync-tools-then-bootstrap case is interesting [10:00] rogpeppe: ideally, but you could still end up with a stale .jenv file if juju died half-way through [10:00] axw: true - in general if you want to change attributes you need to destroy-environment first [10:01] axw: warning about mismatched attributes may be a reasonable thing to do [10:01] axw: we'd also want to check that a provider doesn't override any of the attributes at Prepare time (currently that's allowed) [10:02] rogpeppe: I was thinking of adding in a provider.Validate call there, passing in .jenv/env.yaml as args [10:02] rogpeppe: ? [10:02] don't understand that bit [10:03] rogpeppe: meeting is on [10:06] rogpeppe: meeting [10:53] rogpeppe: about the destroy-environment change I was proposing... I agree that you need to be able to script it. I just want it to require a little more thought than just throwing a -y on the end, if we're talking about taking down an entire network of services and destroying all the user's data [10:54] rogpeppe: how about juju destroy-environment --confirm destroy-my_env_name ? [10:54] rogpeppe: confirmed just maas provider changed for the agent_name [10:55] natefinch: if -y is good enough for fsck, it's good enough for me :-) [10:55] thumper: yeah, i also confirmed that [10:56] natefinch: how long do you have to make a name before it's hard enough to type? [10:56] natefinch: that's the reason it's called "destroy-environment" rather than just "destroy" [10:56] rogpeppe: yes, but the point is that people could destroy the *wrong* environment. That's why I want the environment name in the confirmation. [10:57] rogpeppe: also, fsck will only fuck up one computer. destroy-environnent will fuck up potentially dozens or more [10:58] natefinch: i dunno - have we actually encountered cases where this has been a problem? [10:59] natefinch: a nicer solution would be to be able to deliberately "lock" an environment so that it's not possible to destroy until explicitly unlocked [11:00] rogpeppe: then people have to remember to lock it [11:00] natefinch: sure - you lock it if it's important to you [11:00] rogpeppe: if you even realize that function exists [11:00] natefinch: for many people destroying an environment isn't that big a deal - you can deploy everything again quite easily [11:00] natefinch: -y or --yes-I-know-what-Im-doing [11:01] :) [11:01] natefinch: personally, i find even the current behaviour of destroy-environment to be annoying [11:02] rogpeppe: which is more important, 10 keystrokes, or helping the users not shoot themselves in the foot? [11:02] natefinch: that's a false dichotomy [11:02] rogpeppe: this is the bug I was basing the work on: https://bugs.launchpad.net/juju-core/+bug/1057665 [11:02] <_mup_> Bug #1057665: juju destroy-environment is terrifying; please provide an option to neuter it [11:03] brb sorry [11:03] natefinch: that bug report makes a similar suggestion to mine above [11:04] rogpeppe: yes, but this solution is simpler and more effective. [11:05] natefinch: i don't believe it's more effective [11:05] thumper: looking at bug 1240708: it could be a problem on the gui server side (aborting the connection) [11:05] <_mup_> Bug #1240708: API server falls over repeatably during AllWatcher Next, killing GUI [11:05] natefinch: although it is simpler, i agree [11:05] thumper: working on it [11:05] frankban: it certainly looked as if the API server saw a connection drop [11:06] rogpeppe: it's more effective because it's automatic. Otherwise it's like having to turn on the airbag in your car. [11:07] natefinch: i don't believe that making people type more makes an effective barrier - people will type *anything* without thinking [11:07] natefinch: we've already got a written warning that mentions the name of the environment, and a user prompt [11:07] rogpeppe: it's not just more, it's the fact that it's environment specific. You can't think you're destroying the test env when you're actually destroying production [11:07] rogpeppe: no one reads [11:08] rogpeppe: especially after the first couples times [11:10] natefinch: we could potentially make it so that the -e flag is mandatory for destroy-environment [11:10] rogpeppe: I had thought of that. That would be fine with me. [11:11] rogpeppe: I'd be happy to do both, make the lock command and require -e. [11:12] natefinch: (i'll just make a script, jujudestroy, which finds out the current env name and passes that as the -e arg :-]) [11:13] rogpeppe: you're welcome to do that. Anyone can script a gun to shoot themselves in the foot... I just don't want juju to hand them one loaded with the safety off, in an ankle holster [11:13] natefinch: the lock/nodestroy command is interesting, as it's not clear what we should do if you can't connect to the environment [11:14] natefinch: if the environment instances have been destroyed, for example, we should still be able to destroy the environment [11:14] natefinch, Did this branch also get merged into to trunk? https://code.launchpad.net/~natefinch/juju-core/fix-win-bootstrap/+merge/190461 [11:14] hey rogpeppe, I'm here (in mtgs but here) to discuss bug 1240708. Whether it is an issue in core (as I diagnosed) or gui (which is possible but seems unlikely to me), it's critical for gui [11:15] <_mup_> Bug #1240708: API server falls over repeatably during AllWatcher Next, killing GUI [11:15] rogpeppe: that's a good point. Kinda hard to keep a central lock on the environment, when you might not be able to connect to the environment [11:15] gary_poster: frankban seems to think it might be a problem on the gui server [11:15] sinzui: hmm... lemme check [11:15] rogpeppe, ah! ok, will check with him thx [11:18] sinzui: not in trunk. good catch, I'll move it over [11:20] https://bugs.launchpad.net/juju-core/+bug/1240927 [11:20] <_mup_> Bug #1240927: os.rename does not wotk with windows [11:20] ^ natefinch your bug [12:12] rogpeppe: just coming back from lunch and reading the log here I've seen your statement that destroying an environment isn't a big deal because everything can be deployed quite easy again [12:12] rogpeppe: but how about lost data in that case [12:13] rogpeppe: think of our typical blog example and kick you blog entries of the past two years -> ouch [12:13] and that's one of the most harmless examples [12:19] Is juju aware of neutron security groups? [13:29] geh, hopefully internet is stable and alive for now [14:14] mgz: i wondered why we didn't see you. has your internet been down? [14:16] yeah, went screwy for most of yesterday afternoon [14:16] seems okay now though at least [14:21] rogpeppe, I see your merge into 1.16 branch. I updated two bugs that I think you will also want to update: https://bugs.launchpad.net/juju-core/+bug/1229275 and https://bugs.launchpad.net/juju-core/+bug/1081247 [14:21] <_mup_> Bug #1229275: [maas] juju destroy-environment also destroys nodes that are not controlled by juju [14:21] <_mup_> Bug #1081247: maas provider releases all nodes it did not allocate [does not play well with others] [14:21] rogpeppe, Are the bugs fix committed or in progress [15:08] sinzui: the fixes are committed [15:08] fab [15:08] aargh, i wish i knew why my IRC client had suddenly stopped notifying me [15:08] rogpeppe, any more bugs that need backporting? [15:08] rogpeppe: I had the same problem with empathy not notifying me anymore [15:09] sinzui: there are varying opinions on that [15:13] rogpeppe: but nothing else we urgently need asap after release, right? [15:14] just the question over whether most of what's on trunk should actually get into saucy too at some point [15:15] mgz: i *think* so [15:18] mgz I am looking for bugs that need to be backported before the 1.17.0 release. 1.17.0+ will be made available to saucy like our other series [15:18] sinzui: right. [15:19] mgz: fancy spending an hour on the addressing stuff? [15:19] rogpeppe: sounds like a plan [15:20] mgz, rogpeppe I really don't know if I should begin blessing 1.16 tip now. I see this bug that stakeholders may want backported https://bugs.launchpad.net/gomaasapi/+bug/1222671 [15:20] <_mup_> Bug #1222671: Using the same maas user in different juju environments causes them to clash [15:20] mgz: https://plus.google.com/hangouts/_/calendar/am9obi5tZWluZWxAY2Fub25pY2FsLmNvbQ.mf0d8r5pfb44m16v9b2n5i29ig?authuser=1 [15:20] sinzui: I'm not sure what the status of that is, it required several changes to both juju and maas [15:21] oh good. I think that disqualifies the bug [15:21] without both parts back, it doesn't make much sense to include the juju changes [15:21] I believe SRUs must be limited to fixes to just the package [17:45] off for today, cu tomorrow [17:54] rogpeppe: thanks, see you tomorrow [17:54] mgz: ha, i pressed ^R in my web browser, not ^T [17:54] mgz: so lost the connection [17:54] mgz: cheers! [17:54] guessed that :) [17:56] g'night all [18:10] i All I am trying to test the MAAS/JUJU from cloud tools from precise but stuck at know issue where mongodb with ssl was not installed. And mongodb listens on 27017 instead of 37017. Since i am using proxy so can not add the ppa of mongodb. If someone can tell me the ppa name for mongodb with ssl support for precise I can manually tried to update the mongodb and have bootstrap node working with juju-core? [18:34] Guys, how do I force juju to forget about a install hook lock? [18:36] I deployed service A, then service B, realized that I didn't need A, remove-unit'ed it, but now B's not moving because it still thinks A exists. [18:38] Oh, all on the same machine. [18:52] jpds: sorry, I don't know, an this is kind of a dark time of the day for juju devs. Thumper should be coming online in the next hour or so. [18:56] natefinch: No worries. [23:07] thumper: a trivial goose review https://codereview.appspot.com/14769043 [23:08] and a small juju-core one https://codereview.appspot.com/14668044/ [23:08] +! [23:08] or 1 [23:08] you mean lgtm? [23:10] thanks :-) [23:11] done [23:11] I was going to be helping at the daughter's school's sports day [23:11] but rain cancelled it after two hours [23:11] so home agani [23:11] again [23:12] final trip prep... [23:12] and stuff [23:12] will be on and off irc periodically [23:12] me too [23:12] thanks [23:13] thumper: what do you mean multiple times? init() is only called once isn't it? [23:14] wallyworld_: but init() will be called for gwacl, goose, juju... [23:14] each one replacing the default in the http lib [23:15] that is true [23:15] but i'm not sure what can be done [23:15] but not really a big deal [23:15] yeah [23:15] * thumper shrugs [23:15] I wouldn't bother [23:15] ok, will land :-) [23:15] * thumper takes a wet kid to school for the afternoon [23:15] she doesn't wanna go [23:16] so I'm being a mean dad [23:17] hah