[00:00] thumper: i've been staring at this one all afternoon, https://bugs.launchpad.net/juju-core/+bug/1475056 [00:00] Bug #1475056: worker/uniter/relation: HookQueueSuite.TestAliveHookQueue failure [00:00] it happens super reliably for me [00:00] davecheney: with you shortly, writing big email [00:00] thumper: that's ok [00:00] no action needed [00:01] just letting you know 'cos I missed standup [00:06] davecheney: ok [00:08] i'm a bit worried [00:08] i cannot see anything in the logic that the test actually guarentees [00:08] ie, it's adding then removing a relatino [00:08] and hoping that happens fast enough that no events are generated [00:08] this is at best, a conincidence [00:12] haha [00:12] that's terrible [00:12] davecheney: uff, that relies on the uniter being busy in a different path on the loop :| [00:13] or not yet in it [00:27] Bug #1475056 opened: worker/uniter/relation: HookQueueSuite.TestAliveHookQueue failure [00:32] menn0: is there a chance bug 1469077 is caused by the mgo/txn issue you are working on? [00:32] Bug #1469077: Leadership claims, document larger than capped size [00:33] it has been raised again as an issue [00:33] for a 1.24 deployment [00:33] wallyworld: it's possible, not sure of the likelihood [00:33] wallyworld: do you know which collection has the out of control txn-queue fields? [00:34] not yet [00:34] wallyworld: also note that I'm not working on that one yet [00:34] wallyworld: i'm currently dealing with bug 1474195 [00:34] Bug #1474195: juju 1.24 memory leakage [00:34] wallyworld: that's going well [00:34] yay [00:34] cannot resume transactions: document is larger than capped size 1326012 > 1048576 [00:34] is the only error i can see so far [00:35] doesn't say what collection [00:35] wallyworld: yeah, you need to look at the DB to see where the problem is [00:35] ok [00:35] happens writing the lease token, so could be leadership related [00:36] * perrito666 yells at bot [00:39] thumper: which makes me wonder [00:39] should I just delete the test ? [00:40] there cannot be code relying on this behavior [00:40] 'cos [00:40] well [00:40] the behaviour only exists in tests [00:40] in real life [00:40] there is no way this timing could exist [00:41] wallyworld: didn't we fix that problem already ... when we saw this before it was lease/leadership related too [00:42] davecheney: what is it testing exactly? [00:43] menn0: a fix was made to error if any concurrent change was made to leadership document. not sure though how the previous implementation or the current one would impact txn queue [00:43] s/leadership/lease [00:43] ok [00:44] I have no idea what's going on then [00:44] by error, i mean return with error rather than trying again [00:44] exit txn loop early [00:44] if anything, that should have helped the situation [00:44] so the bug was marked as incomplete [00:45] but was recently reported as the issue still occurs :-( [00:46] test 0: Nothing happens if a unit departs before its joined is run [00:49] wallyworld: I think we need to point jam and fwereade and this one [00:49] at this one [00:49] yeah [00:49] i'll ping them later [01:05] wallyworld: would you PTAL at http://reviews.vapour.ws/r/2154/ ? [01:05] sure [01:09] axw: looks ok, just a quibble [01:09] wallyworld: ta [01:16] wallyworld, axw: is it important for there to be an assertion that the env is alive around createStorageOps? [01:16] yes [01:16] wallyworld, axw: I ask b/c it gets called as part of unit creation, and we're trying to avoid that assertion when units are created [01:16] because storage costs $$ [01:16] wallyworld: yes, for persistent storage anyway. we don't want to destroy an environment while there's persistent storage around [01:16] well some [01:16] err [01:16] menn0: :) [01:16] yes, just persistent [01:17] axw: blonde moment - how could line 28 in this pastebin result in a nil pointer given that "ch" is used just above [01:17] http://pastebin.ubuntu.com/11885503/ [01:17] * axw looking [01:18] wallyworld: so yes if there's persistent storage involved? [01:18] menn0: yeah [01:18] wallyworld: ch.URL() dereferences the charmDoc.URL field [01:18] wallyworld: well that sucks b/c we can't fully remove this bottleneck then [01:18] wallyworld: so if it's nil... [01:18] menn0: we want to avoid provisioning machines / volumes etc that could cost the user [01:18] wallyworld: yeah I understand [01:18] wallyworld: what actually provisions the storage/ [01:19] wallyworld: maybe we can block it there [01:19] axw: sure, so why isn't the line number where the charm doc is then? [01:19] inside ULR() [01:19] wallyworld: show me the panic? [01:19] menn0: there's a storage provisioner [01:20] similar to machine provisioner [01:20] axw: http://data.vapour.ws/juju-ci/products/version-2882/aws-upgrade-trusty-amd64/build-2233/machine-0.log.gz [01:21] wallyworld: I feel like I'm missing something, that panic points to the MigrateCharmStorage function [01:21] axw: yeah, it's in 1.22 [01:22] and not the state code [01:22] i have to move it [01:22] had [01:22] I see [01:22] because we needed to use the raw collection [01:23] wallyworld: not entirely sure, possibly inlining? [01:23] yeah could be, weird though [01:24] here's the new code https://github.com/juju/juju/blob/1.22/state/upgrades.go#L964 [01:24] i'll do some digging [01:24] yeah I found it, thanks [01:24] menn0: did you find it? [01:25] wallyworld: yep I found the storage provisioner [01:25] wallyworld: it'll be a bit of work to add watching of env life in there [01:26] menn0: it calls into state methods - may be able to modify one of those [01:26] wallyworld: I'll go for adding the assertion only for perisistent storage [01:27] axw: ^^^ so if there's a EBS volume involved, that is bound to the machine, the above approach will be ok i think? [01:28] maybe it sould assert the storage binding instead [01:29] or i mean do the assert if binding = env [01:29] but wait, this is 1.24 [01:29] so will be different [01:29] yes I think that'll work. machines will prevent env death, so machine-bound storage will be fine [01:30] so do that for 1.25 [01:30] menn0: why would you add env life watching? [01:30] axw: it's automatically added everywhere by the multi-env txn layer [01:30] axw: but that's created a massive perf bottleneck [01:30] so that's being ripped out [01:30] in favour of selectively adding it in a few key places [01:31] storage is one of those places [01:31] menn0: understood, by why does that mean adding a watcher? [01:31] b/c we don't want someone to be able to add storage to an env just has it's dying [01:32] menn0: the way things work atm with storage, we use cleanups to tirgger death of storage when the bound-to entity dies [01:32] menn0: so you destroy a machine with storage, then a cleanup is queued that destroys the attached storage [01:33] axw: but if storage is added as the env is dying and that txn takes a while to run the cleanup could miss it [01:33] axw: that cleanup is only in master though from memory [01:33] axw: but I guess the machine or unit will be dead so the txn will probably still fail [01:34] menn0: the env can't die while there's still machines right? [01:34] hrm [01:34] * axw ponders [01:34] we need a 1.24 solution too [01:35] clear [01:35] oops [01:37] menn0: if storage is added, then its life will be set to Dying by the cleanup regardless of whether it's been provisioned [01:37] axw: yes it can [01:37] axw: the first thing that happens is the env is set to Dying and then machines and everything else get killed off [01:38] but you're saying that the txn that adds the storage may happen after the cleanup... [01:38] ah wonderful a test that only breaks when run non isolated.... [01:38] axw: there's a slim chance that it could [01:39] axw: right now that's not possible because we have an automatically added env life assertion on almost all txns [01:40] axw: but that's going away [01:40] axw: seems like adding an extra check in the storage provisioners before it does anything might be sensible? [01:40] provisioner [01:40] menn0: sorry I mistyped before: the env can't be *removed* until there's no machines? i.e. it can go to Dying, but can't be Removed until the dependents are gone? [01:41] hrmph still doesn't really help [01:41] axw: yes that's right [01:41] menn0: we're going to have this problem with the machine provisioner too right? [01:42] no because the machine addition ops now include an explicit env life assertion [01:42] (but only for top level machines, not containers) [01:43] menn0: so why can't we do that in storage? they're no more plentiful than machine addition ops [01:43] we don't want that for units though because units are often added in huge bulk (this is where users are seeing the current bottleneck) [01:43] axw: b/c storage ops get added as part of unit addition [01:43] menn0: I think we could do it for machine storage (volumes, filesystems), but not storage instances [01:43] my unfamiliarity with storage is probably not helping here :) [01:43] so do machines, except if you're using --to [01:44] axw: b/c I'm slow can you please summarise :) [01:45] menn0: if a charm requires storage, then adding a unit will add a "storage instance". that will cause the creation of either a volume or filesystem when the unit is assigned to a machine [01:46] menn0: a volume can be e.g. a loop device, or an EBS volume [01:46] ok [01:47] menn0: actually we never create storage without an accompanying machine, so if the machine is prevented due to env being Dying, then we're fine [01:47] menn0: the storage provisioner won't create a volume or filesystem until the due-to-be-attached machine is provisioned [01:47] axw: ok that sounds promising then [01:48] axw: I think you were hinting at this before, but what about when a unit is added to an already provisioned machine [01:48] menn0: so I think we can drop the env life checks in storage [01:48] ah yeah [01:49] :| [01:49] axw: I guess the machine will be dying or about to die if the env is going down [01:49] axw: and that should clean up the storage? [01:50] menn0: it will... but only if the storage is bound to the machine. there's a concept of lifecycle binding, where storage is bound to either a unit/service, a machine, or the environment [01:50] axw: also, won't the storage provisioner itself die if the env goes to dying [01:50] menn0: currently we're fine because we always bind to either the unit, service or machine [01:51] menn0: there was an intention of binding storage to env initially if marked persistent though [01:52] menn0: I hope the worker would continue to run until the env is removed, not just Dying [01:52] * menn0 checks [01:53] menn0: otherwise the provisioner won't clean up any remaining things [01:55] axw: so it looks we're ok because there isn't a storage provisioner per env [01:55] axw: it's not run under the envWorkerManager [01:56] menn0: ok, cool [01:56] axw: the worker is up until the machine agent dies [01:56] the storage provisioner worker I mean [01:57] * axw nods [01:57] axw: ok so it looks like we don't need env life assertions for the state stuff in storage then [01:57] menn0: so... I think we're ok unless/until we allow storage to be created that is bound to an env [01:58] menn0: currently not the case, so we're fine atm [01:58] axw: we can do the assert only for the case where storage is bound to the env [01:58] yep, that should be fine [01:58] axw: which will be a fairly low frequency event I imagine so not a performance issue [01:59] yes I think so [01:59] axw: thanks for your help [02:00] menn0: nps, thank you for fixing. sounds messy :) [02:00] axw: it is [02:00] axw: found out why charm url is nil - serialisation changed between 1.20 and 1.22. which also means charm migration is broken in general and we didn't notice because migration function was never called [02:01] wallyworld: :( [02:01] fixing now :-) [02:12] menn0: based on axw's points above, we should at least get together to talk about environment destruction [02:12] menn0, axw: because I feel that we hav some bad interactions [02:12] and I'd like to check [02:47] thumper: sure. [02:47] thumper: now? [02:47] not just now, Rachel is arriving home shortly and I'll be stopping for coffee [02:47] but perhaps in 30-40 minutes? [02:48] thumper: sure just let me know [02:48] thumper: with axw too/ [03:16] axw: have you got some time? [03:36] waigani: how goes environment destroy? [03:37] thumper: merging cli command to jes-cli branch now. [03:37] thumper: and writing Will an email to review environ.Destroy branch [03:37] kk [03:37] coolio [03:39] thumper: Will usually starts around 8, so I'll check in with him this evening and hopefully finish off / land tonight. [03:40] cool [03:40] wallyworld: any idea if master is capable of being blessed at the moment? or are there known failures? [03:41] thumper: not sure, i'd have to look at build logs [03:41] i don't know of any failures [03:41] there was a windows issue at some stage [03:42] has that all been fixed now? [03:42] there's an open critical bug on 1.25 [03:42] #1468815 [03:42] Bug #1468815: Upgrade fails moving syslog config files "invalid argument" [03:46] * thumper sighs [03:46] why has it not been forward ported? [04:03] thumper, wallyworld: I have a likely fix to bug 1474195 ready... although I need to talk env destruction with thumper [04:04] Bug #1474195: juju 1.24 memory leakage [04:04] great [04:04] I'm waiting for axw before we talk destruction [04:04] menn0: I can look at the fix if you like [04:05] thumper: pushing now [04:11] thumper: https://github.com/juju/juju/pull/2801 [04:11] * thumper looks [04:16] menn0: for the machine insertion [04:16] menn0: does that method also do the containers [04:16] ? [04:16] or is there a different one to add containers [04:17] as I thought we were going to skip the alive assertion for containers [04:17] a different one does containers [04:17] kk [04:17] see the docstring at the top of the method I added the assert to [04:18] wallyworld, thumper: any tips of debugging an lxc container that is stuck in "pending"? [04:18] I can't ssh to it [04:18] and lxc-console gives me nothing [04:18] menn0: the logs are available locally [04:18] menn0: look here: /var/lib/juju/containers/... [04:18] /var/lib/lxc/blah/root [04:19] then look at cloud init logs [04:19] and also where wallyworld said [04:19] wallyworld: thanks, i'll look there [04:19] the cloud init logs are in the /var/lib/juju/containers dir [04:19] menn0: shipit [04:20] thumper: what about your concerns? [04:20] this branch doesn't touch the concerns I have [04:20] ok great [04:20] any bad thing we are doing, we are already doing [04:21] which is why I think we need to talk to axw about environment destruction of hosted environments [04:21] because we are going "bullet to the head" on all the machines, then removing all the docs [04:21] what impact is this going to have for any attached storage [04:21] thumper: I want to do some manual performance comparisons and if it looks like things are faster then I'll merge [04:24] thumper, wallyworld: this appears to be why that container didn't start: http://paste.ubuntu.com/11886010/ [04:24] any clues? [04:24] I'm guessing this line: WARN lxc_start - start.c:signal_handler:307 - invalid pid for SIGCHLD [04:24] NFI why though [04:25] * menn0 is googling [04:29] menn0: yeah, NFI sorry [04:30] this looks like the bug (a race) but it was fixed in lxc 1.0.0-alpha2: https://bugs.launchpad.net/ubuntu/+source/lxc/+bug/1168526 [04:30] Bug #1168526: race condition causing lxc to not detect container init process exit [04:37] menn0: what version of lxc do you have? [04:38] thumper: 1.1.2 (stock vivid) [04:38] (as far as I know) [04:38] so not fixed released then... [04:38] thumper: ? [04:38] menn0: try #lxcontainers [04:39] thumper: I will [04:39] menn0: because it is happening to you...\ [04:39] out of 10 containers 1 failed [04:39] but this happened earlier today and yesterday as well [04:39] yeah, but we create a lot of containers [04:48] wallyworld: master curse seems to be : bad record MAC, mongo not coming up, and intermittent failure collecting metrics in the uniter suite [04:48] sigh [04:49] those would all be intermittent right [04:49] yup [04:50] i'll look at the logs when i can [05:16] * thumper heading off until meeting later tongith [06:43] axw: could you look at http://reviews.vapour.ws/r/2181/ when you get a chance? it looks larger than it is because i reverted the move done previosly [06:51] wallyworld: ok [06:52] ty [06:55] wallyworld: LGTM [06:56] ty [07:13] Bug #1475163 opened: when the uniter fails to run an operation due to an error, the agent state is not set to "failed" [07:22] axw: and one more sorry http://reviews.vapour.ws/r/2184/ [07:42] wallyworld: reviewed [08:02] wallyworld: machine provisioning and hook errors are a bit different: they're coming from the IaaS provider and the hook execution respectively. Maybe I misunderstood, but it sounded like these errors might include, say, errors talking to the API server [08:03] axw: yeah, could be those. i think your idea not to include is good [08:03] fixing patching will be more work, but i have soccer now so will do later [08:04] wallyworld: ok. I have to go out soon anyway, so will check later [09:03] fwereade: dimitern: standup ? [09:11] Bug #1475212 opened: Environment destroy can miss manual machines and persistent volumes [10:01] fwereade: so I'm supposed to be in a call now, but he's not arrived yet. So on the concept of Token being resuable... [10:01] dooferlad, TheMue, fwereade, jam, sorry guys for missing standup - I had to renew my car insurance in the morning, but it took more time than expected :/ [10:02] dimitern: no worries [10:02] dimitern: jam just said my standard response, so ^^ [10:02] jam, listening [10:03] I've discovered yesterday after wasting almost a full day, that when running go test with both -race and -cover (or -coverprofile=) *itself* leads to races! [10:04] dooferlad: hehe, maybe the number of calls will get negative when passing a black hole. but you're right, a bool flag would be enough [10:04] dimitern: well, that sucks [10:04] supposedly fixed in go 1.3+, can be worked around by adding also -covermode=atomic (which is the default behavior in 1.3+) [10:04] TheMue: I was more thinking about uint [10:05] TheMue: but yes, types matter and sometimes we live with inappropriate choices [10:05] Morning [10:05] i'll send this to juju-dev as well, just in case I can save somebody else the same experience [10:06] s/the same/from the same/ even [10:06] fwereade: he showed, sorry. I did want to overview of how I felt tokens should work. [10:07] jam, just braindump whenever you get the chance :) [10:37] TheMue, hey [10:38] dimitern: heya [10:38] TheMue, didn't we discuss using bulk client-side api calls for the addresser? [10:38] TheMue, like RemoveIPAddresses taking params.Entites and returning params.ErrorResults, error, rather than forcing the worker to remove them one by one? [10:39] dimitern: have to take look in my notes [10:40] dimitern: we talked about where the "work" has to be done when I suggested that e'thing could be done via one call on server-side [10:41] TheMue, I don't insist on doing it now (just the addresser using api instead of state is already a big improvement, esp. around the entity watcher), but it seems to me it will be slightly better [10:41] Bug #1455628 changed: TestPingTimeout fails [10:41] Bug #1456726 opened: UniterCollectMetrics fails [10:41] dimitern: when I asked why we need an API usable only for the worker and providing its calls [10:42] TheMue, that's what *all* our apis are doing anyway :) [10:42] dimitern: tyvm for being adventurous and running tests with 2 flags not one :D [10:43] TheMue, however I see your point - we should (re)use better defined api interfaces across multiple workers/etc. [10:43] dimitern: and I oriented at your instancepoller, which is acting on one machine each too [10:43] anastasiamac, I'm even using -check.v :D [10:43] dimitern: \o/ [10:43] dimitern: that's why I implemented the IPAddress(Proxy) as type [10:44] dimitern: but n.p., I simply can change it, one tine missed gofmt dislikes my try to merge, hehe [10:44] tiny [10:45] TheMue, yes, as it was easiest to do - gradual improvement, over using state directly, but from design perspective we can do better for such workers that makes more sense to batch multiple ops in a single api call [10:45] and I thought I ran my pre-commit check *grmfplx* [10:46] TheMue: your git client doesn't auto-run the pre-commit hook? [10:46] TheMue, so I suggest you go ahead and still land this (if you can perhaps add a TODO somewhere in the code we can improve the behavior by using bulk calls) [10:47] dooferlad: different environment here, as you know. script integration didn't work, so I integrated it into my jdt (juju development tool) [10:47] dimitern: ok, will do so [10:48] TheMue, cheers [10:48] TheMue: Clearly you need to switch clients :p [10:49] dooferlad: it's not the client, it's more complex. will show you when having our next meeting. [10:51] dimitern: is the logic behind addSubnetsCache just to speed things up? Isn't state fast enough and the canonical source of information? [10:53] dooferlad, the main reason for its existence is to improve the case when multiple subnets are added in the same API call [10:55] dooferlad, so I guess it might be actually moot if we don't allow users to add multiple subnets with the CLI (unless we add an "import these subnets definitions as a batch" thing, which was discussed at some point) [10:56] dimitern: if we have the ability at some point to dump the output of juju status to a file, then load that back, then yes we will benefit. === psivaa is now known as psivaa-afk [10:57] dooferlad, ewww.. yeah, I got your point :) but we'll have state deltas before that happens most likely [10:59] dimitern: I mostly don't like caches because if somebody does something unexpected to what they are caching you can have "fun" finding bugs. In this case though, I was looking at it in terms of what I needed to do for space create. [10:59] (just imagined having to parse a moving target like the status yaml output) [10:59] dimitern: which seems to be, not caching. [11:00] dooferlad, for space create I don't think you need to do it the same way [11:00] dimitern: +1 [11:00] dooferlad, I've realize addSubnetsCache now looks totally over-engineered to me :/ [11:01] dimitern: well, I am sure it was fun engineering, so I am not worrying! [11:02] dooferlad, you bet :) [11:05] fwereade, jam leads call [11:20] TheMue, not tried lfe yet, but it's on my list of things to try [11:21] mattyw: it has a nice approach for lisplers, but it never will get a larger community *sigh* [11:22] dooferlad: btw, just found why my pre-commit failed. only one missing line [11:22] TheMue, I'd love to have sessions at sprints where we can just hack on stuff [11:22] TheMue, maybe we should make the time this sprint [11:24] mattyw: definitely would raise the experience with different approaches, avoiding to get routine-blinded [12:14] morning all [12:14] crap, perrito666 is back, time to go [12:17] Bug #1475271 opened: Intermittent test failure UniterSuite.TestUniterCollectMetrics [12:20] I see thumper does the same I do to figure EOD [12:28] has anyone noticed we are getting curses for no space left on device? mgz sinzui ? [12:29] yeah, I see the vivid build failing [12:35] we have tests running in the current still though, so I was not in a rush to retest [12:57] fwereade: ok. pie in the sky how tokens work feels like you would get the token at Auth checks, and then apply that token to each process you do. I feel like token failures are the sort of thing that wouldn't need to be retried if we knew they were the cause of the failure. [12:58] jam, right [12:58] For example, if I was leader, and I said X, then I failed to be the leader for a while, then I was leader *again*, my original X should actually be invalid. [12:58] jam, we could implement it like that but I'm not sure I think it's good [12:59] jam, tokens have to be reusable anyway [12:59] jam, other ops will cause ErrAborted [12:59] jam, next time through the buildTxn func we need to check again [12:59] fwereade: everything causes ErrAborted right? So we can't distinguish the why [12:59] jam, but we have to distinguish why [12:59] jam, hence the form of Runner.Run() [13:00] jam, refusing to check again once a token's failed might be an interesting optimisatioon [13:01] jam, but not relevant for my purpposes because I'll be returning the error as soon as I get one [13:01] fwereade: so I don't quite see how Token.Read() isn't reusable. [13:01] perrito666: I just woke up and yes I am disapointed. The machine only had to live for 4 more days [13:01] jam, it's a sinngle snapshot of past state [13:02] jam, unless it's able to get fresh state and return an error, it will push everyhing into ErrExcessiveContention [13:02] jam, by returning the same (failing) txn ops [13:02] jam, always corresponding to the reality-check that's now several cycles inn the past [13:02] fwereade: so is the use case that my leadership cert expired and I renewed it? [13:03] jam, it is to catch the situation when the leadership lease expires and is removed while some other component is running a txn that depends on it [13:05] jam, that other component (should!) have the looping form, in which it starts off using recent state from db or memory, interrogates that state for reasons to fail, then packages it up as asserts and sends it on to execute [13:05] jam, the txn fails [13:05] jam, what went wrong? [13:05] jam, we need to read current leadership state to be able to pin it on that [13:05] jam, sane? [13:06] fwereade: so I agree that we want to be able to read the current state at some point, but I worry that we'll read the current state and apply it as the new "its ok to do this as long as this holds true" [13:06] fwereade: so you want *a* token that says "the person who is making this request is the current leader" [13:07] jam, no [13:07] jam, I want a token that will, on request, tell me whether a unit is leader [13:07] jam, existence of a token implies nothing [13:08] jam, Check()ing a token implies that the fact the token is attesting to was recently true [13:08] jam, passing an out ptr into check gives you a very specific tool that allows you to check whether it still holds true inn the future [13:08] fwereade: so your Token interface only has Read() [13:08] jam, sorry, I renamed it Check [13:08] jam, otherwise the same [13:10] jam, and those still-hold-in-the-future things are critically important; but yes, I don't know how best to encourage people to use mgo/txn correctly :( [13:10] fwereade: so I think you're saying that Auth wants to return a Checker (and possibly calls it one time), but that the Checker is part of the inner loop [13:10] jam, yeah [13:11] jam, the initial call is technically redundant, am undecided, leaning towards not having it [13:11] jam, most/all the actual use of the Token will be inside state [13:11] fwereade: from an Auth func it is nice to fail early [13:12] SetStatus failing immediately with "you're not the leader" rather than waiting until it goes to update the DB with an actual change? [13:12] jam, agreed, there are forces pushing both ways :) [13:12] jam, it won't try to run a txn... [13:12] jam, I contend that constructing a txn is much cheaper than running one [13:13] fwereade: I certainly agree that stuff in memory vs once you've written it to the DB [13:13] jam, so what it will do is one up-to-date leadership check, and then hand over the ops representing it [13:13] it seems a little funny to have something like GetAuth not actually have checked your auth on the assumption that once you've actually processed the request you'll have finally checked they're allowed. [13:15] jam, point taken, but I think it follows from the mgo/txn dependency [13:16] jam, technically, any auth that isn't checked *at txn time* is leaky [13:17] jam, when working in state we just have to ...embrace the madness, and use the techniques that are reliable in this context :) [13:23] perrito666, http://reviews.vapour.ws/r/2185/ ? [13:23] perrito666, and whatever the other branch is [13:23] perrito666, does statusDoc have txn-revno or txn-queue fields? [13:25] fwereade: arent those added by txn? [13:25] perrito666, yes [13:26] perrito666, unless you have those fields specified in your doc, [$set, doc] is fine [13:26] fwereade: sorry I got distracted by watching a singer call ladybeard... odly hipnotizing [13:26] heh [13:26] good name :) [13:27] bearded man in japanese 5yo girl costume singing metal version of jpop songs, amazing [13:28] fwereade: this attacks the immediate issue with envuuid for this particular collection while a better fix is being worked for envuuid auto adding on Updates [13:29] perrito666, what makes you believe it changes anything? [13:29] perrito666, you have inserted a comment that is a straight-up lie [13:29] oh? [13:30] perrito666, https://bugs.launchpad.net/juju-core/+bug/1474606/comments/1 [13:30] Bug #1474606: Document replacements using $set are problematic [13:30] it is a partial lie, if I insert that doc as is it wipes envuuid [13:31] perrito666, ok, so you're saving a doc with an empty env-uuid field [13:32] perrito666, why do you not know the env-uuid? [13:32] perrito666, ohhh, right [13:32] fwereade: I might need to change the var name so the comment is not confusing [13:32] do not insert That doc [13:32] :) [13:32] perrito666, this just makes me more adamant that it's the leavy multiEnv stuff that is the problem [13:32] s/leavy/leaky [13:33] perrito666, ok, so [13:33] perrito666, that comment is certainly not accurate re txn [13:35] perrito666, and re env-uuid [13:35] perrito666, can we not just drop the dependency on the env-uuid field and take them off all the doc structs? [13:38] fwereade: I honestly do not know, I wouldn't think so [13:38] perrito666, well, we definitely can [13:39] perrito666, it's more "should we"? [13:40] perrito666, and the more I think the more I think "yes of course we should, it would take a day at the outside" [13:40] perrito666, counterpoint? [13:41] perrito666, which might mean 3 days in practice [13:41] perrito666, but how much dev time have these sorts of issues cost us already? [13:44] * perrito666 sits like a rubber ducl [13:44] duck [13:45] perrito666, haha [13:45] perrito666, so looking through state for EnvUUID it really doesn't seem like it's even used most of the time [13:46] perrito666, it exists only for the convenience of the multi-env layer [13:46] perrito666, but it also breaks the multi-env layer because you have to pay attention to that field all the time [13:47] perrito666, so [13:48] perrito666, if the multi-env layer just converted *everything* into bson.D *before* rewriting [13:48] perrito666, no more need for the fields [13:48] perrito666, right? [13:49] perrito666, there may be a couple of relevant fields we should keep [13:49] perrito666, but they're very much the minority [13:49] perrito666, quack. quack quack? [13:51] perrito666, and then we'd be able to insert docs that weren't pointers [13:51] perrito666, and we wouldn't have that scary surprising leakage out to the original docs either [13:52] * perrito666 re-reads [13:52] perrito666, (and my lease stuff would Just Work without having to know it's in a multi-env collection, too) [13:52] fwereade: ok a couple of things [13:52] 1st are you sure no one is working in anything whatsoever heavily dependent on this? [13:54] 2nd, even though I believe in the empirical proof you showed me, on the original discussion about txn a linke arose http://stackoverflow.com/questions/24455478/simulating-an-upsert-with-mgo-txn/24458293#24458293 which has gustavo saying it shouldn't [13:54] perrito666, that's my reading of it; I see 21 uses of .EnvUUID in state, and most of them are irrelevant [13:55] I was rather wondering about work in process [13:58] perrito666, in that link, where does gustavo suggest you shouldn't $set a struct? [13:59] axw: I'll handle the forward porting of that issue [14:00] axw: well, the patch to master that is [14:00] fwereade: the final paragrah seems to be implying it [14:02] perrito666, (1) "you can set every field in a value by offering the value itself to $set" [14:03] perrito666, (2) "If you replace the whole document with some custom content, these fields will go away" [14:03] perrito666, they are talking about different situations [14:03] fwereade: I see [14:03] that might have caused the missunderstanding [14:05] perrito666, yeah, it could be clearer [14:06] perrito666, in particular it *is* dangerous to do a $Set with any of our doc tyypes that include a txn-revno [14:06] perrito666, so we do need to keep an eye out for that [14:07] perrito666, but that's more a matter of watching the doc definitions, and only allowing TxnRevno when it's *really* necessary, and commenting it clearly === natefinch is now known as natefinch-afk [14:34] katco, do you have any time to review http://reviews.vapour.ws/r/2186/ ? [14:34] fwereade: today is my meeting day :( [14:35] katco, ah bother, not to worry [14:41] fwereade: I've been reading through https://pubsubhubbub.googlecode.com/git/pubsubhubbub-core-0.4.html and it doesn't feel like a great fit, as when you subscribe to a topic you pass an HTTP callback URL. We could do that internally but it does feel a bit odd. Certainly I don't really expect to have general routing back to a client outside of the current connection. [14:43] jam: get in touch with https://github.com/go-kit/kit. they are actively soliciting feedback on features like this [14:44] jam, agreed [14:44] jam: doh, nm: in the "Non-goals" Supporting messaging patterns other than RPC (in the initial release) — pub/sub, CQRS, etc [14:44] :) [14:44] fwiw, I rather like https://github.com/grpc/grpc [14:44] but it feels like we're rewriting our communication infrastructure a bit too much at that point. [14:44] jam i agree [14:45] there is https://godoc.org/google.golang.org/cloud/pubsub which is less about the HTTP aspects [14:45] though IIRC it is strictly a client for Google's cloud pub/sub and not a server implementation. [14:50] jam, btw, 2172 has been superseded by reviews.vapour.ws/r/2186/ which has new-style Token [14:51] jam, so, yeah, doesn't sound like very rich pickings [14:55] perrito666, LGTM [14:56] Bug #1475341 opened: juju set always includes value when warning that already set [14:57] fwereade: it sounds like a more sincere comment :) [14:57] * perrito666 is tempted of lunching a happy meal just to get a new minion toy [14:58] perrito666, can I hit you up for a review on reviews.vapour.ws/r/2186/ please? [14:58] * perrito666 looks [14:59] perrito666, it's just a rework of the leadership interfaces such that my stuff and katco's has matching interfaces (well, at least they both implement CLaimer) [14:59] perrito666, cheers [14:59] * perrito666 sees the lenght of the review and realizes hit was quite literal :p [15:02] davecheney, what part of the world are you in right now? [15:03] * perrito666 tries to aquire a second monitor of the same model than the one he has and notices the price is the exact double of what he paid less than a year ago :p inflationary countries are fun [15:04] wwitzel3: 1:1 [15:04] alexisb: san fran [15:05] damnit, i missed the opporutunity to say i was omnipresent [15:06] heh [15:06] * perrito666 looks over his shoulder just to make sure davecheney isnt [15:06] i'm watching, always watching [15:06] perrito666, it's almost all renames [15:06] fwereade: ? [15:07] ah the review [15:07] perrito666, the big review [15:07] perrito666, probably start with leadership/interface.go [15:07] I would kill for threaded conversations on irc [15:07] perrito666, sorry, I should have said that in the blurb [15:14] fwereade: for starters I would like the pr description to say more why than what [15:15] by reading the code I can assert that you did exactly what that list of changes say, but I am not sure Ill be able to say what is the end result of it. [15:22] perrito666, heh, good point [15:29] perrito666: is bug 1474606 fix committed in 1.24? [15:29] Bug #1474606: Document replacements using $set are problematic [15:32] sinzui: no, just a partial for 1.24 and master [15:32] thank you perrito666 [15:32] sinzui: that is why I did not change anything on it [16:16] so /me says goodbye, daughter has graduation ball today *proud-daddy-mode* [16:17] TheMue: congratulations to you both! [16:17] TheMue: congrats man :) have fun [16:20] ericsnow: ping [16:20] wwitzel3: hey [16:20] ericsnow: hey, is there anything you think you can break off of what you are doing or should I look in to destroy? [16:21] wwitzel3: halfway through this yak :/ [16:21] wwitzel3: so maybe you had better [16:21] wwitzel3: it will depend on my state patch [16:46] hello everyone [16:47] core: anyone familiar with this error showing up in the cloud-init-output.log on bootstrap node? [16:47] core: 2015-07-16 16:43:47 ERROR juju.cmd supercommand.go:430 relative path in ExecStart ($MULTI_NODE/usr/lib/juju/bin/mongod) not valid [16:48] then 2015-07-16 16:43:47 ERROR juju.cmd supercommand.go:430 failed to bootstrap environment: subprocess encountered error code 1 [16:48] and bootstrapping fails after [16:48] grr [17:01] ericsnow: ping? [17:01] perrito666: hi [17:01] hi :D [17:02] hey, are you still the reviewboardmonger? [17:02] perrito666: depends on what you need :) [17:03] I was wondering if I could see the logs for rb, I find the javacript for comment/response textbox failing too often and the browser console says its an api call failing to respond [17:03] also the js might need to be uncompressed [17:04] some paths fail with a syntax error [17:05] perrito666: its the reviewboard service in the juju-ci4 env [17:05] perrito666: I can take a look but not quite yet [17:05] no hurry just had the issue while we are in the same TZ so didnt want to let it pass [17:12] Bug #1475386 opened: unit not dying after failed hook + destroy-service === natefinch-afk is now known as natefinch [17:14] NOTICE: jujucharms.com is having a webui outage due to a failed redis. Charm deploys should work as normal and the API is available. [17:21] Bug #1475386 changed: unit not dying after failed hook + destroy-service [17:21] bdx: I think the problem is that $MULTI_NODE is not getting expanded [17:22] bdx: or not set or set weirdly [17:23] bdx: kind of a terrible error message, sorry about that [17:24] Bug #1475386 opened: unit not dying after failed hook + destroy-service === psivaa-afk is now known as psivaa [17:37] NOTICE: jujucharms.com webui is back up [17:48] rick_h_: \o/ [17:51] sinzui: I'm trying to reproduce https://bugs.launchpad.net/juju-core/+bug/1471657 but when I try to get juju's code on stilson-07 I get this error: [17:51] fatal: unable to access 'https://code.googlesource.com/google-api-go-client/': Received HTTP code 403 from proxy after CONNECT [17:51] seems like it must be a proxy/firewall issue? [17:51] Bug #1471657: linker error in procsPersistenceSuite unit test on ppc64 [17:53] natefinch: those machines are on a private network. They cannot access google or aws, or hp or joyent. They cann access canonistack. I think you need to move to another machine [17:54] sinzui: I'll take whatever PPC machine is available, I just knew how to connect to those. Is there a different PPC machine I can use that has connection to the public internet? [17:54] natefinch: those are the only ones, and they have special access . all others are more restricted [17:55] natefinch, yes, you'll have to raise an RT to get that firewall exception [17:55] or you could just scp in the code from your machine [17:55] that's what I do [17:56] yep, I do that all the time [17:56] davecheney: yeah, that was going to be my next thought - scp. I just igured, since so much of the rest of it worked, the fact that one random url didn't work seemed like more of a bug than intentional [17:57] davecheney: or maybe none of it worked and that's just the first leaf package to try to download. I didn't actually check [17:57] just part of life behind the firewall [17:57] this is a new dep for google gae [17:57] davecheney: I see [17:58] davecheney: are you still in the US? I presume you're not awake back home at this time of night [17:58] natefinch: I had a day last week spent taring, scping, untarring, go testing :( this situation is also true for our one machine that can run maas [17:59] sadness [18:00] davecheney: natefinch There is a plan to add ppc64el to canonistack. That might fix this situation [18:19] wwitzel3: how's that doc coming? [18:20] katco: good, I think we have a couple ideas [18:20] wwitzel3: mind if i tal? [18:23] katco: shared the doc with you, which is pasted irc logs in to, I haven't distilled anything yet, so haven't given any structure to the doc [18:26] wwitzel3: hrm. worried that this might be too complicated for a demo [18:29] katco: ok [18:29] wwitzel3: to give you some kind of idea. wallyworld's storage demo was bringing up postgres with external storage and then showing the contents of the external storage (i think) [18:30] wwitzel3: cool idea would be cool, but i don't want it to be anything so elaborate i mess it up and don't know enough about the charms to fix it [18:32] ericsnow: did you create a bug to track the OVA images card? [18:33] katco: #1468383 [18:33] ericsnow: ty... and is there an email i can piggy-back off to email ben? [18:33] katco: not really [18:36] ericsnow: the remaining wpm cards are created? [18:37] katco: not yet [18:39] ericsnow: wwitzel3: we need to be ready to go over the demo and how to get there by tomorrow [18:39] katco: k [18:48] katco: ok, in that case, updated the doc [18:48] wwitzel3: simple, love it :p [18:49] wwitzel3: not that i'm not *very* interested in what whit et. al. are working on (i.e. real-world use-cases) [18:49] wwitzel3: but for demo, just need proof that it works [18:50] wwitzel3: it would be cool to have a 2nd demo in case i'm feeling ambitious, if they have something ready to go [19:05] natefinch: 1:1 [19:08] katco: oops, sorry, coming [19:19] ericsnow: can you take a look at requirements section here: https://docs.google.com/document/d/1etgWYADQHVSY_yT5rd-_DqPXBNUIWYBj-z8-Cpxc2-U/edit#heading=h.u3tics2c141k [19:19] ericsnow: and update with what else needs to be done? [19:19] katco: sure [19:20] wwitzel3: also, do we need a mysql component there as well to prove they can talk to each other? [19:21] wwitzel3: whoop nm looks like that's there isn't it [19:54] natefinch, can you please take a look at http://reviews.vapour.ws/r/2188/ ? [19:55] natefinch, it's passing on hyperv [19:55] and linux of course ;) [20:03] cmars: np [20:03] natefinch, ty [20:03] cmars: gah... whoever wrote ReplaceFile did it backwards :/ [20:04] cmars: Go standard is foo(dest, src) [20:04] to mimic a = b [20:04] natefinch, i noticed that [20:04] cmars: well, there's no fixing it now, I guess. [20:04] natefinch, that'd be a heavy lift [20:05] natefinch, os.Rename is kind of the same way though, http://golang.org/pkg/os/#Rename [20:05] cmars: huh, weird, yeah [20:06] cmars: probably written before they settled on the other scheme. Oh well. Better to be consistent. [20:10] natefinch, i should return proper os.LinkErrors.. i'll fix that [20:10] cmars: reviewed [20:10] natefinch, thanks! [20:11] cmars: welcome. Anything to avoid working on this ppc bug ;) [20:42] Bug #1475425 opened: There's no way to query the provider's instance type by constaint [20:53] thumper: sorry i'm on another call [21:06] wallyworld: you are a bit frozen [21:07] * perrito666 hums let it go to wallyworld [21:12] Bug #1475056 changed: worker/uniter/relation: HookQueueSuite.TestAliveHookQueue failure [21:17] wallyworld: time to get a new modem? [21:17] perrito666: maybe, trying to join again now [21:18] perrito666: except now chome hates me [21:49] cherylj: still there? [21:55] thumper: sorry i missed the standup [21:55] was on another call [21:55] wrt the arm issue [21:56] is there a maas install that I can use to reproduce it [21:56] wallyworld: you were trying to get access to the system ? [21:56] did you succeed ? [21:57] davecheney: i didn't succeed, but maybe that's just me. there's access instructions in the bug [21:58] davecheney: if you aren't able to get access through the instructions in the bug, try bugging the hyperscale time, Andrew Cloke or Sean [21:59] davecheney, Sean specifically said he would provide any access needed [21:59] so we should hold them to that [21:59] are we talking about the same bug ? [21:59] there is nothing in the issue [21:59] https://bugs.launchpad.net/juju-core/+bug/1415517 [21:59] Bug #1415517: juju bootstrap on armhf/keystone hangs [21:59] davecheney, that is the one i am thinking of [22:00] are the instructions like hidden or something ? [22:02] cmars: what are the two return values of utils.MoveFile ? [22:03] cmars: or more specifically, why are you checking the ok value if err != nil? [22:03] cmars: isn't it more idiomatic go to not expect any other value to have meaning if err is not nil? [22:09] cmars: nm, went and read the source [22:12] davecheney: damn connection problems today, not sure if you saw last messages [22:16] nope [22:17] i kept saying "I'm not sure what access details you are seeing in that issue -- i cannot see them " [22:17] [08:09:58] davecheney: the issue is that state server jujud process dies on arm [22:17] [08:10:16] they can run workloads, but not state servers [22:17] ok [22:17] te jujud process just disappears [22:17] dmesg ? [22:17] i've asked for stuff like that [22:18] i think they want us to ssh in [22:18] ok [22:18] and see for ourselves [22:18] there's a whole maas cluster [22:18] ok [22:18] you need to use the vpn [22:18] fuk [22:18] that won't work from where I am [22:19] i can get http access to maas, but maas rejects my ssh attempts [22:19] and i known nothing about arm [22:19] this is linux [22:19] this is user space [22:19] it won't be arm specific [22:20] true, also not my specialty :-( [22:20] low level systen stuff [22:20] i'm not sure what the next step is [22:21] x wants us to do y [22:21] we've trued y [22:21] it didn't work [22:21] how can we break the stalemate [22:21] didn't work for me. i've asked them to attach any post mortem and relevant info to bug [22:21] +1 [22:21] i [22:21] m subscribed to the bug [22:22] i may need to poke them again [22:27] Bug #1466087 changed: kvmBrokerSuite TestAllInstances fails [22:52] Bug #1474291 changed: juju called unexpected config-change hooks after read tcp 127.0.0.1:37017: i/o timeout [22:52] Bug #1475386 changed: unit not dying after failed hook + destroy-service [22:52] fark... [22:52] davecheney: still here? [22:52] thumper: ack [22:52] * thumper is looking at bug 1474946 [22:52] Bug #1474946: kvmBrokerSuite worker/provisioner: tests are poorly isolated [22:52] I moved my /var/lib/lxc dir out of the way [22:52] it's a shitstorm [22:52] and confirmed that my user can't create a dir there [22:52] but when I run the tests, they pass [22:53] you have lxc installed [22:53] WT actual F [22:53] yes [22:53] bit the dir /var/lib/lxc doesn't exist [22:53] mkdir -p will always pass if the directory exists [22:53] because I moved it [22:53] what is the ownership of /var/lib ? [22:53] doesn't allow my user to create dirs [22:53] possibly installing lxc changes gropu ownershipts [22:53] possibly installing lxc changes gropu ownerships [22:53] that was the first thing I tested [22:53] puts you in wheel [22:54] * thumper digs more [22:57] FFS [22:57] this test is bullshit [22:57] it is a kvm test [22:57] that checks the lxc dir for networking setup [23:02] thumper, thanks for the review. i described the return bool here: https://github.com/juju/utils/blob/master/file_unix.go#L30 [23:02] thumper, did you want a comment in juju as well describing the use of it? [23:03] da fuq [23:03] just in that use of it, yes [23:03] thumper, ok, np [23:03] code should be obviously correct when you read it [23:03] davecheney: also, my version passes because for some reason, the lxc data dir is /home/tim/.local/share [23:03] more modern lxc I guess [23:04] * davecheney reaches for emoji [23:04] possibly, i'm on 14.04.2 [23:06] oh fuck [23:06] * thumper head desks [23:06] * thumper head desks [23:06] * thumper head desks [23:06] always a good sign ... [23:06] * thumper head desks [23:06] in order to be a good citizen... [23:06] we do this: [23:07] LxcContainerDir = golxc.GetDefaultLXCContainerDir() [23:07] which does this: [23:07] run("lxc-config", nil, "lxc.lxcpath") [23:07] for root, it is probably the right thing [23:07] for a user with modern lxc [23:07] it isn't [23:07] * thumper thinks [23:07] ugh [23:07] since the local provider jujud runs as root [23:07] I think we are ok [23:07] lxc-config won't exist if lxc isn't installed [23:08] but this is why the tests passes [23:08] ack [23:08] if there is an error [23:08] it returns /var/lib/lxc [23:08] which then doesn't exist [23:08] however [23:08] if lxc-config ... fails, we fall back to /var/lib/lxc ? [23:08] the bigger problem [23:08] is that the test is bullshit [23:08] derp-tastic! [23:08] we shouldn't be adding network config in lxc dir for kvm tests [23:10] * thumper renames the function so it is obviously wrong [23:10] and removes it [23:10] phase 1. delete test [23:10] phase 2. ?? [23:10] phase 3. build is green [23:11] phase 1: rename function to include LXC [23:11] phase 2: make it so the local dir can't be created [23:11] phase 3: run all tests [23:12] phase 4: remove lxc function from kvm test [23:12] phase 5: ensure no other failures [23:12] phase 6: send email to network folks to see what should be there [23:12] phase 7: profit [23:12] 7 steps ? [23:12] that's too enterprise [23:22] http://reviews.vapour.ws/r/2190/diff/# [23:26] wallyworld: the env life assert PR has now failed twice due to test timeouts in cmd/jujud/agent [23:26] wallyworld: makes me think it's an effect of the change [23:26] wallyworld: but of course it always works on my machine [23:27] menn0_: did you want me to try here? [23:27] thumper: if you have the time, yes please [23:27] menn0_: if you want to review said branch above [23:28] thumper, wallyworld: not sure if it's related but the race detector finds 11 races in that package [23:28] really? [23:28] menn0_: what did you do? [23:28] davecheney: have you been backporting your data race fixes to 1.24? [23:29] thumper: I haven't changed a thing in that package [23:29] menn0_: no, he hasn't AFAIK [23:29] no [23:29] i have not [23:29] thumper: that could be why the races are still there then [23:29] :) [23:29] yup [23:29] thumper: this PR only touches state [23:29] this is on 1.24 is it? [23:29] thumper: yep [23:29] the races might be nothing to do with the test hangs [23:30] but it could be to do with txns being decoupled, changing the timings of things [23:30] we should back port the apiserver wait group change [23:30] because that could be it [23:30] thumper: I already did that I think [23:30] * menn0_ checks [23:31] thumper: yep that's there === menn0_ is now known as menn0 [23:31] hmm [23:32] menn0: sorry was in meeting, but normally if agent tests timeout more than once there's an issue [23:35] wallyworld: it's been 2 different tests in that pkg that have gotten stuck but they're both upgrade related [23:36] wallyworld: i'm going to have peek at them in case something obvious jumps out [23:41] wallyworld: mm, that is the test that failed merging the patch yesterday, I think that it can only be reproduced by running the whole suite, I have been able to do it only once and no more so I could not get to it and thought it was one of the long standuing flaky testss [23:43] could be a flakey test but i think work has been done recently to fix a lot of the agent related tests [23:43] wallyworld: mm, could definitely be something in the change that fixes the issue with status, but that would mean that the test is waiting for the wrong assumption [23:44] wallyworld: did you ever re-merge the code for agent status? [23:44] perrito666: which code? [23:46] wallyworld: updateAgentStatus [23:47] wallyworld: on master, AFAIK, bootstrap will put image metadata directly into gridfs without using swift [23:47] perrito666: that code as missing would only have failed to report a failed state [23:47] the fix is merging now [23:47] the refactoring reported non error status elsewhere [23:48] wallyworld: it's just that we weren't searching it (the fix for that landed already I think?) [23:48] wallyworld: it is odd that fixing the code would break the test :( [23:48] perrito666: the code hasn't merged yet [23:49] axw: i didn't think it did put it into gridfs, or i don't recall if it did [23:49] wallyworld: I'll find the code. I'm 99% sure it does [23:50] axw: the search issue - that was cloud storage not being searched [23:50] ie swift [23:50] i didn't think 1.24 and master were different in that respect [23:50] wallyworld: oh... we're meant to be looking in gridfs as well [23:51] axw: i didn't realise at all the simplestreams data has been added to gridfs [23:51] wallyworld: https://github.com/juju/juju/blob/master/cmd/jujud/bootstrap.go#L237 [23:51] thumper: so these tests are hanging because the machine agent Stop call is not returning [23:52] wallyworld: we're writing the image metadata into "state storage", which is gridfs [23:52] heh [23:52] thumper: but it's not the apiserver... I can see that does stop [23:52] yeah... [23:52] oh? [23:52] interesting [23:52] which one is it? [23:52] thumper: still digging through the logs to figure out which workers are not stopping [23:52] * menn0 is very grateful to thumper for adding the extra logging in the runner [23:52] axw: i see, i had thought that the stor used was EnvironStorage [23:53] axw: need to talk to you about environment destruction [23:53] thumper: mkay [23:55] wallyworld: hm, so looking back over anastasiamac's change, I don't think that's actually what we should be doing. we're meant to be looking in gridfs, and the individual providers can add additional search paths if they want to (e.g. look in keystone) [23:55] axw: i'd prefer not to have a simplestreams blob [23:55] structyred data is much better [23:55] wallyworld: I understand, and that's being fixed, but atm we're talking about *where* the blob is [23:55] simplestreams should not be in env [23:56] in provider storage vs. gridfs [23:56] we should not be perpetuating provider storage [23:56] agreed, and we're not [23:56] i didn't realise we weren't writing to provider storage [23:56] wallyworld: the latest change reintroduces searching metadata in provider storage... [23:57] axw: when do you have some time? [23:57] because i thought we were writing metadata there based on the information i had [23:57] thumper: can chat now [23:58] thumper: looks like it might be the certupdater [23:58] haha [23:58] thumper: it's blocked on a channel send [23:58] bwa haha [23:58] naked send? [23:58] oh... [23:58] I remember that... [23:58] it is buffered [23:58] with one value [23:58] but sends twice [23:58] wasn't that fixed? [23:58] thumper: where aboots? [23:58] I thought so... [23:59] perhaps not [23:59] * menn0 keeps digging [23:59] axw: https://plus.google.com/hangouts/_/canonical.com/env-destruction [23:59] * menn0 loves tracebacks + decent logs