/srv/irclogs.ubuntu.com/2017/04/27/#juju-dev.txt

stokachuwallyworld: any word on the oracle provider not listed anymore?00:39
stokachus/provider/cloud00:39
axwmenn0: any chance of a review on https://github.com/juju/juju/pull/7278?01:52
menn0axw: looking01:55
menn0axw: done02:05
axwmenn0: awesome, thanks02:06
axwmenn0: I've simplified the SetSSHKeys as suggested, but left the other one alone. can you please see if my reply is reasonable?02:35
menn0axw: all good, thanks. merge away02:37
axwmenn0: thanks02:37
axwbabbageclunk wallyworld: ready whenever you two are02:41
wallyworldrighto02:41
* thumper unpicks convoluted code02:42
wallyworldaxw: i'll see you in HO once babbageclunk pings back02:43
axwokely dokely02:43
babbageclunkSorry guys, was on the phone, finished now02:44
babbageclunkaxw, wallyworld: ^02:45
thumperhmm...02:57
thumperwallyworld: do you have 5 minutes?02:57
thumperthis code looks and feels wrong02:57
thumperand I want to double check02:57
wallyworldthumper: sure, just otp with andrew and xtian, soon?02:57
thumpersure, ping when done02:57
wallyworldthumper: free now03:44
thumperwallyworld: 1:103:44
wallyworldthumper: sorry, cut you off04:00
thumpernm04:01
thumperwas just going to ask if you were ready for karaoke next week04:01
anastasiamacwallyworld: axw: do u know if this is something expected? https://bugs.launchpad.net/juju/+bug/168658504:23
mupBug #1686585: Juju deploy via UI fails on Azure <juju:New> <https://launchpad.net/bugs/1686585>04:23
axwanastasiamac: nope04:24
anastasiamacaxw: :D 'nope' = dunno or 'nope'='not expected'?04:24
wallyworldyou mean is a failure to dpeloy expectedz?04:24
axwanastasiamac: not expected. it's a bug.04:24
axwwhat wallyworld said. it would be pretty odd for a basic deploy of mariadb to be expected to fail04:25
anastasiamacwallyworld: yes, mayb under some circumstances we know there could b failures.. kind of like under some circumstance we know we have difficulties ;)04:25
wallyworldus? never :-)04:25
anastasiamacaxw: wallyworldyes. this was my expectetation too.. just finding way to flag to u - 'failure' :D04:26
* wallyworld saw the bug04:27
axwanastasiamac: I'll have a look into it after I'm done landing ssh things04:28
axwalso gotta do some azure auth changes04:28
anastasiamacaxw: awesome \o/04:29
thumperwallyworld: fyi, there are other tests that make sure you can only use --force with --series04:54
thumperso ... whatever04:54
wallyworldi should have remembered that04:55
wallyworldbeen a while04:55
thumperso...04:55
thumpermuch of that other code is bollocks04:55
thumperbecause it is only valid if force is true and series is passed in04:55
wallyworldyeah04:55
thumperoh well04:56
wallyworldmaybe we intended to allow --force without series at one point04:56
thumperso... the LTS case will never happen04:56
thumperyeah...04:56
thumpermaybe04:56
thumperI'll leave it that way for now...04:56
thumperbut perhaps we should look to fix it later04:56
wallyworldyep04:58
thumperI'll leave a note04:58
thumperwallyworld: https://github.com/juju/juju/pull/728505:08
wallyworldlooking05:08
wallyworldbabbageclunk: for tomorrow when you start your day and can't face writing code straight away https://github.com/juju/juju/pull/728605:10
babbageclunkwallyworld: I mean, I guess it's net deletion so should be easy right?05:12
wallyworldsupposedly05:12
wallyworldcut and paste05:13
wallyworld99% of it05:13
wallyworldi am still finishing the hand testing05:13
wallyworldthumper: lgtm, just a minor niggle05:14
thumperta05:15
thumperaxw: you have snap install go?05:17
anastasiamacanyone cares if i self-approve a typo fix? https://github.com/juju/juju/pull/728705:18
thumperapproved05:18
anastasiamacthumper: \o/ tyvm!05:21
axwthumper: yes I have05:22
thumperaxw: what do you do about gofmt?05:22
thumperI'm still on 1.6, so I'll move to using the snap05:22
axwthumper: nothing yet, but you can add /snap/go/current/bin to $PATH. gofmt is in there05:23
axwit's just not exposed in /snap/bin05:23
thumperah05:23
thumperright05:23
thumperor I may just symlink from ~/bin because that's in my path already :)05:23
thumperdid you remove the golang package?05:23
thumperor did you have go from source?05:24
thumperwallyworld, menn0: either of you move to the snap from the deb?05:24
axwthumper: depends on the machine. I was mostly building from source before05:24
axwjust took it out of my path05:24
menn0thumper: same for me05:24
wallyworldi'm still using deb05:24
thumperI'm just thinking since /snap/bin is at the end of my PATH05:25
thumperI'll probably have to remove the deb05:25
menn0actually, i've got a symlink to /snap/bin/go05:25
thumperthis is my first snap apart from the live patch05:26
thumper:)05:26
thumperheh...05:28
thumpergo 1.8.1 from 'mwhudson' installed05:28
axwanastasiamac: actually, that azure bug has been fixed in 2.2. so I guess it is expected after all :)07:26
* axw goes to find the bug #07:26
anastasiamacaxw: nice :) so it's a dupe? these are the best :)07:27
axwanastasiamac: not exactly, just happened to be the same underlying issue07:34
axwanastasiamac: I've just linked it a comment and marked Fix Committed07:34
rogpeppewallyworld: hiya07:41
wallyworldhi07:42
rogpeppewallyworld: i just ran across a line of code that does nothing, and was wondering if it is intended to do something...07:42
rogpeppewallyworld: just asking before i delete it :)07:42
wallyworldsure07:42
rogpeppewallyworld: (and your name is on it)07:42
rogpeppewallyworld: the line is url.Source = ""07:43
rogpeppewallyworld: in cmd/juju/crossmodel/show.go07:43
rogpeppewallyworld: around line 6607:43
rogpeppewallyworld: was the intention to remove the source from the string set in c.url ?07:44
wallyworldrogpeppe: it doesn't do nothing does it? it sets the Source to empty07:44
rogpeppewallyworld: except it sets it in the local url variable which is immediately discarded07:44
rogpeppewallyworld: unless ParseApplicationURL returns a reference to some persistent value, i guess07:45
wallyworldoh i see, no that's a bug07:45
wallyworldbut that line will never execute right nw07:45
wallyworldI don't think, as source will always be "" from memory07:45
rogpeppewallyworld: why not? it's not possible to specify a source?07:45
wallyworldit's for when we support cross controller cmr07:45
wallyworldthe CLI won't let you07:46
wallyworldwe only support single controller cmr for now07:46
rogpeppewallyworld: at a quick glance, it looks like the url parsing code does support returning a source07:46
wallyworldthe Source attr is there for futyre use07:46
wallyworldit does07:46
wallyworldbut the CLI errors from memory07:47
rogpeppewallyworld: so someone *could* type in a url with a source07:47
wallyworldif you try and create an offer an a different controller to the current one07:47
wallyworldthey could but the CLI won't let the get very far07:47
wallyworldthis is all WIP07:47
wallyworldbehind a feature flag07:47
rogpeppewallyworld: ok. shall i just remove that line then?07:48
wallyworldyeah, or i'll fix it as a drive by07:48
wpkbabbageclunk: pong07:58
wpkbabbageclunk: timezones suck..07:58
rogpeppewallyworld: thanks - i've removed it for now07:59
wallyworldrogpeppe: no worries, thank you07:59
axwwallyworld: did you say something about QA tools and such being moved to git?08:19
wallyworldaxw: no08:27
wallyworldi asked heather to file a bug for a CI change08:27
axwwallyworld: ok08:32
axwit would be nice if all our things were together08:33
wpkjam: https://pastebin.canonical.com/186915/ does this look OK to you? Or do we want something more there?09:09
=== salmankhan1 is now known as salmankhan
=== frankban|afk is now known as frankban
jamwpk: looks like a good start.10:29
jamwpk: as we discussed, its probably better to start with a minimal interface that is actually all in use and then grow it as we need to10:32
jamwallyworld: axw: ping if you're around12:06
wallyworldjam: i am somewhat12:14
jamwallyworld: so I'm looking through some of the facade registries, and we're registering the *same* object with multiple versions12:14
jamhow can that be correct?12:14
jamif we had the same object, we didn't need a version12:14
jamif we changed the object, then we're violating the old api by exposing it with the new object12:15
wallyworldthey're not supposed to be the same - new or changed apis are there12:15
wallyworldwhich one?12:15
jamall of them that I saw12:16
wallyworldoh application12:17
jamwallyworld: I just sent an email about Application12:17
jambut also SSHClient12:17
jamand others, IIRC12:17
wallyworldfrom memory, application facade adds new methods12:17
jamMachineManager12:17
wallyworldso the version 3 does use the same object as v412:17
jamwallyworld: but it *shouldn't*12:17
wallyworldbut v 3 clients don't see the new metjhod12:17
jamwallyworld: it means we're exposing the new method on the old version12:17
jamand things like libjuju12:17
jamwill expect it12:17
jamwallyworld: they *see* it, they just don't know to ask for it12:18
jambut something like libjuju will create code that will *fail* against old versions12:18
jambecause it expects the api to be there, because 'develop' says that it is12:18
wallyworldthat is something that wasn't apparent at all at the time12:18
wallyworldit all works with juju's versioning mechanism12:18
wallyworldbut if libjuju imposes other restrictions, we'll meed to change12:19
jamwallyworld: if you have (4, NewMethod), with the code written there you will also have (3, NewMethod)12:19
wallyworldsure, but v3 juju clients won't see it12:19
jamwallyworld: again, if they ask, they see it12:19
jamits there12:19
jamit can be called12:19
jamits exposed12:19
wallyworldand nothing breks12:19
jamyou're just assuming nobody ever inspects the api12:19
wallyworldif they inspect it they can use it though12:20
wallyworldthey use what they see12:20
jamwallyworld: but then they write code against a version of Juju and it breaks against the real version12:20
jamwallyworld: the point of a versioned API is to *not change* the old version12:20
wallyworldthat is true. the assumption was that a it worked for juju clients so would have been ok12:21
jamI'm also a bit surprised we've managed 4 revisions of Application with only 2.0, 2.1 and 2.212:22
jamnot sure where the extra version comes in12:22
wallyworldwe reved the facades when we went to 2.012:22
wallyworldto avoid 1.x clients accidentally calling 2.x facades12:22
wallyworldso 2.0 juju started with v2 application facade12:23
wallyworldi guess we should fix the facades for 2.212:24
rogpeppewallyworld, jam: i'm about to move cookie jars into the jujuclient.ClientStore interface so we don't get tests accidentally creating cookie files. does that seem reasonable to you?12:24
jamrogpeppe: I don't quite have the context to immediately say yes/no, but I'd really like us to move cookie jars to be less of a 'global' thing12:25
jamso steps in that direction sound goo12:25
jamgood12:25
rogpeppejam: yeah, that's what i'm working on currently12:25
rogpeppejam: cookie jars will be per-controller12:25
wallyworldi guess it will be a new embedded interface12:25
rogpeppewallyworld: CookieJar(controllerName) http.CookieJar12:26
rogpeppewallyworld: or something like that12:26
wallyworldthat's the method, a new interface as well12:26
wallyworldto follow the pattern already in place12:26
wallyworldwhere ClientStore is composed of other interfaces12:27
rogpeppewallyworld: yeah, i guess so12:27
rogpeppewallyworld: type CookieStore interface {CookieJar(controllerName string) http.CookieJar}12:27
wallyworldsgtm, ty12:28
rogpeppewallyworld: actually, the returned jar needs a Save method, but otherwise the same as http.CookieJar12:28
wallyworldok12:29
jamrogpeppe: you did the work to allow Runner.Worker() to return the underlying worker?12:37
rogpeppejam: yeah12:37
jamrogpeppe: bug #1686711 I'm trying to track down our test suite getting a nil panic12:38
mupBug #1686711: panic() during lease manager <panic> <worker> <juju:Triaged> <https://launchpad.net/bugs/1686711>12:38
jamand it *might* be that Worker() is returning nil without returning an error12:38
rogpeppejam: you can't reproduce it?12:38
jamrogpeppe: its a random test failure12:39
jamrogpeppe: my guess is that we happen to call a leadership function at exactly the right time while something else is tearing down12:39
rogpeppejam: i'm pretty sure that the Manager instance isn't nil12:40
rogpeppejam: if that's what you're thinking12:40
jamrogpeppe: well, Secretary pretty much can't be nil and 'config' isn't a pointer12:41
jam(all places that create it in our code pass in a Config with a valid Secretary12:41
jamif workerInfo.worker was nil it would get returned12:42
jamas long as workerInfo was there12:42
rogpeppejam: the stack trace shows that the first argument (the receiver) is non-nil12:43
rogpeppejam: how often is this happening?12:44
jamrogpeppe: not sure, it just rejected a merge request12:44
jambut nil panics in code are serious so worth investigating so that we know they aren't production issues12:44
rogpeppejam: you've seen it before?12:44
jamrogpeppe: I have not, but it certainly isn't my code that is changing this12:45
jamrogpeppe: and unless you're going with "bit flips due to cosmic rays" its a latent bug in our code12:45
rogpeppejam: indeed12:45
jamrogpeppe: so the stack trace, Claim() only takes 3 arguments and is a method, but the stack trace shows 8 parameters to the function12:47
jamrogpeppe: is it expanding 'string' objects ?12:47
rogpeppejam: yeah, that's right12:47
jamrogpeppe: time.duration is only an int64, they're still too many parameters12:48
rogpeppejam: args in turn are: receiver, str ptr, str len (9), str ptr, str len (11), duration (60s)12:48
jamrogpeppe: there are still 2 more12:48
rogpeppejam: i don't think the stack-printing logic knows how many args there are12:48
rogpeppejam: given that args 2-6 look plausible, i think the first one is probably correct12:50
jamsome of them have ... and some don't so it seems it might know something12:50
jamrogpeppe: anyway, i'm happy to agree that the receiver is probably not nil12:50
rogpeppejam: it looks like another string at the end.12:53
jamrogpeppe: indeed, but not sure where that is coming from12:53
jamNewManager calls config.Validate() to make sure config.Secretary != nil12:53
jamI haven't found any code that changes the Secretary at runtime12:53
jamrogpeppe: we *have* seen a different nil pointer panic in one of witold's submissions, wpk, do you remember which?12:56
wpkSec12:56
jam1072212:56
rogpeppejam: BTW I'd suggest that you set GOTRACEBACK=all in your CI setup12:56
jamI added it to the bug12:56
wpkhttp://juju-ci.vapour.ws:8080/job/github-merge-juju/10722/artifact/artifacts/xenial.log this one12:56
jamrogpeppe: its the same failure12:56
rogpeppejam: then you'd be able to tell which test was running12:56
jamrogpeppe: that one has 0x0 0x0 as the last two params12:57
jamfeels a bit like 'print the stack that might happen to still have stuff on it'12:57
rogpeppejam: yeah, i think it probably is12:57
rogpeppejam: FWIW http://paste.ubuntu.com/24466503/13:00
rogpeppejam: same thing when it's called through an interface13:01
rogpeppejam: i'd suggest setting GOTRACEBACK=all and waiting for it to happen again13:02
rogpeppejam: this kind of thing will be better in go1.9 - we're getting column positions on error messages13:06
rogpeppejam: i'm certain that Secretary is nil. look at this: http://paste.ubuntu.com/24466590/13:11
rogpeppejam: it faults on exactly the same address (0x30)13:12
jamrogpeppe: you're saying that would be the offset of the function we're calling?13:12
rogpeppejam: i suspect something is using an uninitialised Manager somewhere13:12
rogpeppejam: no, that's the address it's trying to get a value from13:12
rogpeppejam: it's probably the offset into the interface value of the CheckLease method13:13
rogpeppejam: or of the method table13:13
rogpeppejam: ok, i know what's going on13:18
rogpeppejam: and it's all my fault :)13:18
rogpeppejam: i'm not quite sure what the best fix is though13:19
rogpeppejam: actually, not too hard to fix. i'll raise a bug for it.13:22
rogpeppewpk, jam: actually, is there an existing bug report for this?13:22
jamrogpeppe: https://launchpad.net/bugs/168671113:28
mupBug #1686711: panic() during lease manager <panic> <worker> <juju:Triaged> <https://launchpad.net/bugs/1686711>13:28
jamrogpeppe: what is the bug?13:28
jamwell, what is the underlying issue/13:28
jam?13:28
rogpeppejam: ha! you sent that message at *exactly* the same time i clicked on Submit on https://bugs.launchpad.net/juju/+bug/168672013:28
mupBug #1686720: worker/lease: NewDeadManager returns manager that crashes <juju:New> <https://launchpad.net/bugs/1686720>13:28
rogpeppejam: i'll leave it up to you to decide which one to go with :)13:29
rogpeppejam: i need lunch13:29
wpksmacznego13:33
jamrogpeppe: I'll mark a duplicate13:34
jamrogpeppe: I went with yours13:35
jamsince it explains what is actually wrong13:36
=== akhavr1 is now known as akhavr
Hetfieldhi guys, i need a fast help i could not find in the docs. basically is there something like juju resolved for "machines" instead of units?14:30
Hetfieldi have juju with maas, it tried to deploy some apps on a machine, but, due to wrong tags, juju could not get a machine. now i fixed the tags and i would like to tell juju "try again" or juju add-machine and relocate units to the new machine14:31
rick_hHetfield: so there's a retry-provisioning command that might help you there14:38
rick_hHetfield: check out the command reference here: https://jujucharms.com/docs/2.1/commands (basically juju retry-privisioning --help)14:39
Hetfieldrick_h: thx but it's not working14:39
Hetfield   machine-status:       current: provisioning error       message: 'cannot run instances: cannot run instance: No available machine matches14:40
Hetfieldrick_h: now i manually added a new machine. any way to tell juju to move all units to new machine? because they are 4 lxd so i need to manually add them, so boring14:52
rick_hHetfield: no, unfortunately there's no migration path/tool there14:53
Hetfieldok i'm going to open a bug for this so14:53
Hetfieldi just opened https://bugs.launchpad.net/bugs/168676715:45
mupBug #1686767: juju lacks manual unit relocation on new machines (retry-provisioning not working) <juju:New> <https://launchpad.net/bugs/1686767>15:45
Hetfieldhope you can give some love :)15:46
rick_hty Hetfield15:58
wpkbabbageclunk: ping?21:08
babbageclunkwpk: hey - still around? I was just wondering if you'd had an answer to your API versioning question21:29
wpkbabbageclunk: Yes, around, and yes21:35
wpkbabbageclunk: there was quite a discussion about it today, as e.g. application API presents 4 versions using the same struct21:35
wpk4 API versions with the same API21:35
babbageclunkwpk: oh cool - I figured you probably would have given that it was yesterday21:35
wpkbabbageclunk: timezones sucks...21:36
babbageclunkwpk: weird!21:36
wpkeveryone should be on CET!21:36
frankbanwallyworld: ping, could you please take a look at https://github.com/juju/juju/pull/7290 . it is a change to the gui handler code that you helped implementing22:00
wallyworldfrankban: sure, otp but after that22:01
frankbanwallyworld: thanks, and have a good day22:01
wallyworldyou too22:04
wallyworldballoons: oracale call just finished. what's the tl;dr; on the release?22:05
=== frankban is now known as frankban|afk
=== mup_ is now known as mup
balloonswallyworld, seems we can ship 517722:14
wallyworldawesome22:14
menn0wallyworld, anastasiamac, axw: now that we require Go 1.8 our install instructions in README.md and CONTRIBUTING.md might give people trouble (as per bug 1662857)22:16
mupBug #1662857: cannot go get the source code  <juju-core:Confirmed> <https://launchpad.net/bugs/1662857>22:16
menn0people are most likely to have Go 1.6 installed and when they do  go get -d -v github.com/juju/juju/... it'll fail22:17
menn0i'm thinking we should change the instructions to tell people how to get Go 1.8 first22:17
menn0and then direct them to do  go get -d -v github.com/juju/juju/...22:17
menn0I also think the "install-dependencies" make target then shouldn't install Go for people22:18
menn0thoughts?22:18
anastasiamacmenn0: sounds great - feel free to update ;)22:26
menn0anastasiamac: I will. just wanted some concensus22:26
anastasiamacmenn0: since we r taking 5177 as per balloons ^^ for beta3, this will end up on beta422:26
anastasiamacmenn0: well, u have my +1 - anythign to improve docs and user experieneces22:27
menn0thumper: repeating in a summarised way for thumper.22:27
menn0we now require Go 1.822:27
anastasiamacthumper: can we talk now-ish?22:27
thumpermorning22:27
thumperyeah22:27
menn0people are likely to have Go 1.6 installed22:27
menn0this means our instructions of go get github.com/juju/juju/... in the README and CONTRIBUTING docs will fail for them22:28
menn0thumper: I'd like to change the instructions to tell people how to get Go 1.8 first22:28
menn0and then get them to pull the code22:28
menn0also change "install-dependencies" target not to install Go22:29
menn0thumper: sound ok?22:29
menn0thumper, anastasiamac : oh man... some of the instructions in the README as Juju 1.x specific22:32
menn0embarrassing22:32
thumperheh22:32
anastasiamacmenn0: yeah :( i think noone looked at the full contents of these files in a while... I've lloked at one paragraph recently... but did not have a chance to have a comprehensive  scan/update...22:50
anastasiamacmenn0: thank you for doing it ;D22:50
axwmenn0: (hours later) sounds fine to me23:25
menn0axw: cheers23:26
babbageclunkwallyworld: take a look at the tiny PR here? https://github.com/juju/juju/pull/729123:26
wallyworldsure23:26
babbageclunkwallyworld: Once we're happy with that I'm tempted to try implementing the API code that will use the methods first.23:27
babbageclunkaxw: oh, you're up! Could you look at ^ as well to check it matches your thinking?23:29
axwbabbageclunk: okey dokey23:29
babbageclunkta!23:29
wallyworldbabbageclunk: you certainly could implement th api methods which use IsRouteable23:36
babbageclunkhow can daylight savings changes feel so confusing for so long?23:36
anastasiamacthumper: oh, this one looks to be not-quiet-fixed :( https://bugs.launchpad.net/juju/+bug/168039223:57
mupBug #1680392: Model migration fails on large model <juju:New for thumper> <https://launchpad.net/bugs/1680392>23:57

Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!