[01:19] <axw> wallyworld: took a look at your PR. mostly looks fine, left some questions about possible simplification
[02:16] <thumper> axw: got a minute?
[02:16] <thumper> axw: trying to debug a prodstack issue
[02:17] <axw> thumper: ok
[02:18] <thumper> axw: 1:1 HO ?
[02:19] <axw> thumper: brt
[03:58] <wallyworld> axw: thanks for review. i commented on the caas model update worker - i think we can keep it as we will surely be adding upgrade support etc soon. plus it sets model status to "available"
[03:59] <axw> wallyworld: seems like a bit of an odd place to be setting the status, but fair enough on keeping it for probable future use
[03:59] <wallyworld> axw: thst's what the IAAS model upgrade worker does - i just cribbed from that
[04:00] <wallyworld> i guess it sets to available when everything like upgrades etc has been done
[04:01] <axw> wallyworld: I've approved, please see my comment on the authoriser. I'm going for a ride to get some lunch, bbs
[04:01] <wallyworld> axw: tyvm
[04:06] <thumper> babbageclunk: I'm hitting an upgrade-juju problem
[04:06] <thumper> babbageclunk: got 5 minutes to discuss?
[04:14] <babbageclunk> thumper: oops, yup?
[04:14] <babbageclunk> in 1:1 HO?
[04:15] <thumper> yeah
[04:16] <thumper> babbageclunk: yeah
[04:28] <axw> poop, rear wheel is buggered, no ride for me
[04:42] <babbageclunk> axw: bums
[04:42] <babbageclunk> flat tyre or something more serious?
[04:44] <axw> babbageclunk: wobbling, rubbing against the brake pads. also the kick stand was getting in the way of the pedals... not sure what happened
[04:45] <babbageclunk> axw: I've had something similar with a broken spoke (although not the kick stand part).
[04:45] <axw> babbageclunk: yeah there's a broken spoke too :) probably has warped on the way home after it broke
[06:05] <admcleod_> is there a way to specify options for the lxd profile when deploying a unit?
[07:20] <wallyworld> jam: small PR based on yesterday's work - logs are not as noisy https://github.com/juju/juju/pull/8119
[08:06] <jam> wallyworld: lgtm
[08:14] <axw> wallyworld jam: if either of you have time, https://github.com/juju/juju/pull/8120 fixes https://bugs.launchpad.net/juju/+bug/1733259
[08:14] <mup> Bug #1733259: API server validator should allow other API server connectings during upgrade process <apiserver> <upgrade-juju> <juju:In Progress> <https://launchpad.net/bugs/1733259>
[08:54] <jam> axw: so what is the Pinger for the controller agent now? Just when it is a controller logging in exactly to itself? Does that mean we always have exactly 1 pinger, or do we have 2 (one for RPC one for Logging)
[08:55] <axw> jam: if you looked earlier than a few minutes ago, you would've caught a mistake. the old code for starting the pinger was correct, just highly confusing (to me at least)
[08:56] <jam> axw: because of the "is controller" stuff and it only being set when a controller logs in for a different model?
[08:56] <jam> I don't think that logic is very clear
[08:57] <axw> jam: we should be starting the pinger if it's a non-controller connecting, or if it's a controller connecting to the controller model
[08:57] <jam> axw: arguably the latter isn't 100% true. it should be if the controller is connecting to itself in the controller model (IMO)
[08:57] <jam> axw: Tim's changes to pubsub mean that the controllers connect to each other
[08:57] <jam> but we shouldn't treat them as alive/dead based on that
[08:58] <axw> jam: sorry, which "latter" are you referring to? controller connecting to controller model is what I said just before...
[08:59] <jam> axw: Tim changed pub-sub so that machine-0 will connect to machine-1 in the controller model, but IMO we still shouldn't start a Pinger for it
[08:59] <jam> we should only start one when machine-0 connects to machine-0 for the controller model
[08:59] <axw> jam: right, I see
[09:02] <axw> jam: if we were to do that, then older API servers that didn't prefer localhost wouldn't have a pinger at all
[09:02] <axw> maybe no big deal, because they should upgrade pretty quickly
[09:02] <jam> axw: we never have mixed api servers
[09:02] <jam> axw: they wait to upgrade for the other ones to notice
[09:03] <jam> because otherwise they can't talk to the db schema
[09:03] <jam> axw: we might have machine agents older than controllers, but the controllers actually wait for all controllers to ack that they're ready to upgrade before any will upgrade.
[09:04] <axw> jam: and they do that through state directly, without involving the API server?
[09:04] <jam> axw: that's actually the cause of the deadlock, because machine 0 & 1 go into "we're ready to upgrade, waiting for 2" and 2 ends up in a reboot loop
[09:04]  * axw is trying to find the code
[09:04] <jam> axw: yeah, they record in the database ready-to-upgrade-to, IIRC
[09:08] <axw> jam: I think I'd like to move the pinger for controller agents outside of the apiserver, but will do after 2.3. I'll have it run only if the tag matches the local machine
[09:11] <axw> jam: by which I mean presence pingers. we currently don't run connection pingers for user connections, or for connections from controller-to-controller-model; that doesn't seem right, does it?
[09:12] <jam> axw: we stopped doing connection pingers for users because of long lived connections that were dying (maybe that was gui issues?, or maybe just transferring data issues).
[09:13] <jam> axw: personaly, I'd rather have the connection-keep-alive-pinger *be* the presence trigger
[09:13] <jam> rather than 2 separate things
[09:13]  * axw nods
[09:16] <axw> jam: pushed a small change to stop running pingers for other controllers
[09:48] <wallyworld> jam: just back from dinner, ty for review
[11:12] <axw> jam: I don't understand your comment on https://github.com/juju/juju/pull/8116. why would $gt fail with a time.Time?
[11:12] <jam> axw: the record in the database is a ISODate
[11:12] <jam> and ISODate is never $gt: 0
[11:12] <jam> we need to compare to a {$gt: time.Time{}}
[11:12] <axw> jam: but it can be $lt something else?
[11:13] <jam> axw: Time struct vs integer
[11:13] <axw> jam: my point is we already compare with integers using $lt, why is $gt different?
[11:13] <jam> axw: it doesn't
[11:13] <jam> axw: there is an iportant "if p.unitTime == Nanoseconds" earlier
[11:14] <jam> axw: so for the statusesC collection, it uses UnixNano and compares with 0
[11:14] <jam> axw: for actions, it is a "GoTime" and compares against a time.Now().Sub(somtehing)
[11:14] <axw> jam: aha, my bad
[11:14] <axw> thanks
[11:15]  * axw disappears again
[11:15] <jam> axw: I worked with eric on debugging why some tests were failing, and just did a quick bootstrap and then was playing with db queries
[12:32] <mup> Bug #1733847 opened: same ip got assigned to two different container  <juju-core:New> <https://launchpad.net/bugs/1733847>
[21:44] <babbageclunk> thumper: so I should be ripping out all of the observer stuff? Is it ever used for anything other than audit logging?
[21:45] <babbageclunk> It's kind of vague
[21:45] <thumper> no
[21:45] <thumper> lets talk
[21:45] <thumper> but otp just now
[21:50] <babbageclunk> ah, metrics
[21:51] <babbageclunk> thumper: ok, ping when you're ready
[22:13] <thumper> ready
[22:14] <thumper> babbageclunk: now?
[22:14] <thumper> babbageclunk: 1:1
[22:15] <mup> Bug #1733968 opened: virtual IP addresses should not be registered <sts> <juju:New> <juju-core:New> <https://launchpad.net/bugs/1733968>
[22:21] <thumper> babbageclunk...
[22:21] <thumper> bueller
[22:21] <thumper> bueller
[22:21] <thumper> bueller
[22:21] <babbageclunk> gah sorry, looking at the bottom of the monitor, didn't notice the bubbles at the top