/srv/irclogs.ubuntu.com/2015/09/09/#juju-dev.txt

mupBug #1493598 opened: dblogpruner uses *state.State <tech-debt> <juju-core:Triaged> <https://launchpad.net/bugs/1493598>00:26
* thumper is filing bugs for the workers00:29
mupBug # opened: 1493600, 1493601, 1493602, 149360400:44
mupBug # changed: 1493600, 1493601, 1493602, 149360400:47
mupBug # opened: 1493600, 1493601, 1493602, 149360400:53
mupBug #1493606 opened: envworkermanager uses *state.State <tech-debt> <juju-core:New> <https://launchpad.net/bugs/1493606>00:56
mupBug #1493606 changed: envworkermanager uses *state.State <tech-debt> <juju-core:New> <https://launchpad.net/bugs/1493606>00:59
sarnoldwhat's the deal with the n.mu mutex protecting assignment and reading tag_ in ./apiserver/apiserver.go ? are assignments not atomic operations in go?01:06
mupBug #1493606 opened: envworkermanager uses *state.State <tech-debt> <juju-core:New> <https://launchpad.net/bugs/1493606>01:08
=== akhavr1 is now known as akhavr
=== natefinch-afk is now known as natefinch
natefinchsarnold: assignments aren't guaranteed to be atomic, no.  There's sync/atomic if you need some specific atomic assignments, or for most things, there's locks.01:31
sarnoldnatefinch: can you aim me towards some documentation? that seems like it might be fairly subtle, and I'd like to know more01:34
natefinchsarnold: https://golang.org/ref/mem01:35
sarnoldnatefinch: thanks!01:35
natefinchsarnold: welcome.  The tldr is right there at the top: If you must read the rest of this document to understand the behavior of your program, you are being too clever.  Don't be clever.01:36
sarnoldnatefinch: indeed :) it's just that tag() and login() both look like they ought to work fine without the mutex, and the fact that it has one is surprising...01:36
natefinchsarnold: the string assignment isn't atomic.  If you call login from one goroutine, which modifies the tag, and call tag() from another goroutine, it's possible that login could have only half-written the pointer inside the string, and tag() would return garbage01:39
natefinchsarnold: also, what's more likely is that the pointer gets updated but the length doesn't get updated... so you could read past the end of the string01:44
davecheneythumper: wallyworld did someone justa dd a worker/uniter/relations package ?02:00
mwhudsonnatefinch: writes to word sized quantities really should be atomic in the sense that another thread will either see all the write or none of it02:02
mwhudson*of02:02
mwhudsonthe thing about the pointer vs length write is 100% valid02:03
natefinchmwhudson: yeah, I was thinking that - it's not guaranteed, but it really should be02:03
mwhudsonnatefinch: ot02:03
davecheneynatefinch: mwhudson word aligned writes are atomic02:03
davecheneyanother thread will not see a torn write02:03
mwhudsonto be fair i've only read the arm64 manual closely on this02:03
davecheneybut it is also true that another thread may not see the write at all02:03
wallyworlddavecheney: yes, that was me i think when i merged in the uniter v2 work02:04
davecheneyhttp://paste.ubuntu.com/12318103/02:11
davecheneyreally unstable02:11
davecheneyand there are data races02:11
davecheneysorry, i meant to say02:11
davecheneythe tests are unstable and have races02:12
natefinchworst test failure output ever? http://pastebin.ubuntu.com/12318026/02:13
davecheneys/worst/longest02:14
natefinchdavecheney: I guess it's not actually incorrect or misleading... just useless and long02:14
natefinchmore impressive with the line returns in my terminal02:14
* natefinch wonders how hard it would be to embed some ascii art as a test failure output without making it too obvious in the code02:15
mwhudsonnatefinch: i am still scarred by the fact that the mongodb package build logs have/had a line that is something like 120k long02:16
natefinchmwhudson: wow, winning.02:16
mwhudsontotally02:16
mwhudsonscons for the win, indeed02:16
natefinchI built mongodb from source... once.  It was horrible.02:17
davecheneyhttps://bugs.launchpad.net/juju-core/+bug/149362302:17
mupBug #1493623: worker/uniter/relation: relationsSuite.TestCommitHook tests fail <juju-core:New> <https://launchpad.net/bugs/1493623>02:17
mupBug #1493623 opened: worker/uniter/relation: relationsSuite.TestCommitHook tests fail <juju-core:New> <https://launchpad.net/bugs/1493623>02:17
menn0thumper: you able to chat?02:24
thumpermenn0: sure02:27
menn0thumper: standup?02:29
thumperah... yeah.02:29
natefinchgah, I hate it when rebase gives me a merge conflict that I know has nothing to do with the changes I made02:35
wallyworlddon't use rebase :-)02:35
wallyworldrebase sucks02:35
natefinchwallyworld: I don't really have a choice.  I pushed some code based off of what was evidently an old copy of master... it's either rebase or have a merge commit in my branch02:36
natefinchwallyworld: or create a new branch and cherry pick my changes. ... I mean, if anyone has a fix that is not rebase, I'm all ears.02:36
wallyworldmerge commit isn't so bad is it?02:36
wallyworldit's just an extra commit02:36
natefinchwallyworld: sometimes it makes your branch look like it has changed everything in that merge commit.02:37
wallyworldgad, i wish we still used bzr02:37
natefinchwallyworld: sometimes it's fine and sometimes it screws me. I never really now which it'll end up being02:37
wallyworldthat crap just doen't happen02:37
natefinchI hear betamax was pretty good too, but what can you do?02:38
* natefinch goes with door #2 - new branch and cherry pick02:44
natefinchdunno why git rebase master is different than making a new branch off master and cherry-picking my changes... but the latter works 100% of the time, whereas rebase is batting about 50% for me.02:49
natefinchahh, I think the difference is git rebase vs. git pull --rebase02:52
wallyworldthumper: why mark that bug as a blocker? has CI failed? they need fixing sure, but not a blocker03:50
thumperwallyworld: it's a blocker if people can't get tests passing locally, surely?03:50
wallyworldthis is the first i've hear dof them not passing for anyone, they passed for all of us on the sprint03:51
wallyworldand the bot03:51
thumperwallyworld: dave has them failing every time for him03:51
wallyworldhmmm, ok03:51
thumpera key question then would be "what's different?"03:51
wallyworldindeed03:51
wallyworldppc maybe?03:52
thumperwallyworld: also, there are races in the code that landed03:52
thumperwallyworld: did you check with -race?03:52
wallyworldno :-( the races need fixing03:52
natefinchI have a few tests on master failing 100%03:52
wallyworldbut just races is not a blocker, but if there's a genuine failure there...03:52
wallyworldnatefinch: uniter/relations?03:53
natefinchwallyworld: no, weird random crap... /cmd/plugins/local  and /mongo  ... both seems to be some difference in quoting03:54
wallyworldok, not related then i don't think03:54
natefinchccd03:54
thumperdamn...03:55
thumperI can't get the tests to run at all03:55
natefinchahh, I'm dumb, didn't update godeps03:55
thumperdavecheney: any ideas ? http://paste.ubuntu.com/12318539/03:56
wallyworldthumper: i don't see the need to block people landing stuff for the sake of fixing tests in one package03:56
wallyworldespecilly if CI is not broken03:56
thumperwallyworld: the alternative that was agreed on is reverting the revision03:56
wallyworldwell i don't agree it's a blocker03:57
natefinchthumper: that looks like a difference in stdlib03:57
wallyworldbot passes, CI is not failed03:57
thumperwallyworld: if you want to make that call, change it, bit know that I'm grumpy03:57
wallyworldtests only fail in one instance for one person so far03:57
wallyworldyou're always grumpy :-)03:58
thumperI can't get them to run either03:58
wallyworldoh, ok03:58
wallyworlddamn03:58
wallyworldwtf did the bot pass then03:58
* thumper shrugs03:58
wallyworldand everyine else testing that branch03:58
thumperI have the lxd ppa03:58
wallyworldsigh03:58
thumperwhich brings in a later golang03:58
wallyworldah03:59
wallyworldthat could wee be it03:59
wallyworldi think we're still on 1.403:59
natefinchwe're on 1.2.x last I heard03:59
wallyworldthe ppa builder is03:59
natefinchworking on upgrading to 1.503:59
wallyworldmost devs are on 1.403:59
thumper1.4.2 is my local version03:59
natefinchthe official version we must build with is 1.204:00
thumperI wonder why my stdlib changed?04:00
wallyworldnatefinch: "we" = ppa packager yes04:00
wallyworldfor now04:01
natefinchyes, sorry.. I meant, juju is officially built with 1.204:01
natefinchwe as devs can build with whatever we want, but may introduce problems if we rely on stuff that isn't in older versions of go04:01
wallyworldyep04:02
natefinch....like references to stuff that isn't in older versions of the stdlib04:03
natefinchhowever, worker/uniter/relation builds fine with go 1.2.2 on my machine04:05
natefinchand evidently the bot04:05
natefinchthumper: what is really bizarre is that you're getting undefined symbols inside the standard library itself04:06
natefinchthumper: I'd say your standard library is hosed somehow04:06
mwhudsonthumper: can you update loggo to import gopkg.in/check.v1 rather than launchpad.net/gocheck pls?04:10
wallyworldthumper: i see a data race in one place. maybe fixing that will solve your issue04:13
thumpermwhudson: sure04:13
thumperI may well reboot to see if it fixes the issues :)04:15
thumperworks for windows right?04:15
mwhudsonthumper: do you have GOROOT set?04:19
mwhudsondoh04:19
thumperhmm.. rebooting didn't fix it04:20
thumperperhaps I need to reinstall golang?04:20
natefinchthumper: probably a good idea04:21
natefinchthumper: build from source, it's better04:22
thumperno, I'm not that kinda person04:22
natefinchit's really easy, but ok :)04:22
thumperhmm...04:23
thumperreinstall brought in 1.2.104:23
thumperwhich didn't fix the problem04:23
thumpernatefinch: it is more a philisophical reason04:23
thumpernot because I can't, but I shouldn't have to04:23
mwhudsonthumper: do you have GOROOT set?04:24
mwhudsonoops need to run04:24
* thumper looks04:24
natefinchit just makes it easier to switch between versions, for the most part... plus then you're not tied to whatever ubuntu ships04:25
thumperno just GOPATH04:25
natefinchthumper: that's good, you generally shouldn't set goroot04:25
thumpernatefinch: I understand, and I was working more with Go and cared, I would04:25
thumperbut Juju needs to use the version in the distro04:25
thumperso best to use the version in the distro to compile locally04:26
natefinchthumper: certainly04:26
thumperknowing that some are using later versions to test for incompatibility04:26
thumperI bet I have part of newer versions installed04:26
thumper...04:26
natefinchyep04:26
natefinchif you installed from source you could do git status and see what was out of place ;)04:27
natefinchblow it away and reinstall04:27
natefinchit would be good to know how it got that way, though... if there's some package stomping on the go install, that's a really bad thing04:28
wallyworldthumper: works for me, but that doesn't mean it will work for you http://reviews.vapour.ws/r/2613/04:29
natefinchok, way past EOD for me (literally and figuratively)  g'night all04:29
thumperyep...04:35
* thumper now has golang 1.504:35
thumperI had disabled the lxd ppa before04:35
thumperand that left me in a weird state04:35
thumperreenabled04:35
thumperupgraded, and now seems to be compiling at least04:36
wallyworldthumper: that fix eliminates the race (well test --race is happy) so maybe it will solve your problem with go 1.504:37
wallyworldi still can't reproduce04:37
thumpermy build problem was a local issue04:38
thumperI've fixed my build problem04:38
thumperrunning all the tests now04:38
wallyworldthumper: could you take a look at the pr and i'll land if you're happy04:39
thumperwallyworld: one big problem, and one stylistic04:47
wallyworldok04:47
thumperI think I must be going crazy04:48
thumpermwhudson: where are you looking? github.com/juju/loggo does use gocheck from gopkg.in04:50
thumperwallyworld: I get worker/uniter/relation tests failing every time too04:54
thumperwallyworld: when you have tweaked the load, I'll test your fix04:54
wallyworldthumper: pushed04:54
thumperwallyworld: is the int32 cast really needed? does golang complain?04:55
wallyworldthumper: sadly yes04:55
wallyworldi didn't have it at first04:56
thumperwell, you could change the expected arg to be int32 instead of int04:56
thumperthat would get the compiler doing the right thing04:56
wallyworldthumper: hang on, i removed it and it worked, ffs04:56
wallyworldah no04:57
wallyworldit didn't, tests fail04:57
wallyworldgc.Equals complains04:57
wallyworldif one arg is int and oter is int3204:57
wallyworldchanging arg worked04:58
thumperstill fails for me04:59
wallyworldwot04:59
wallyworldworks for me with --race and without04:59
thumperwhy is the test running asynchronously?04:59
thumperit is checking in parallel04:59
thumperone is happening before the other05:00
thumperyou can't guarantee synchronisation across go routines05:00
thumperunless you synchronise them05:00
thumperthis is why it is failing05:00
wallyworldwhat's running aync?05:00
thumperhttp://paste.ubuntu.com/12318735/05:01
thumperrequest 6 is being checked05:01
thumperand while it is saying it is failing05:01
thumperrequest 7 is being checked05:01
thumperand fails05:01
thumperboth are expecting the other value05:01
wallyworldbut the test just sts up a mich api caller and makes some api calls to it in order05:01
wallyworldthere's no go routines in  the tests05:02
wallyworldi'll dig into it05:02
thumperthere are go routines somewhere05:02
* thumper looks too05:02
thumperwallyworld: btw, OOPS: 15 passed, 7 FAILED05:02
thumperfor the relations package05:02
wallyworldand yet passes for me and other and bot05:03
thumperthey aren't using golang 1.505:03
thumperso it is passing by accident05:03
thumperwallyworld: FWIW,  `go test -check.f relationsSuite.TestHookRelationDeparted` I've had pass, and fail in two different ways05:07
wallyworldthe tests are all synchronous so it must be in code somewhere05:07
wallyworldthumper: are the failures always Stop/Next ordering?05:08
thumpernope05:08
wallyworldhow did you install go 1.5 i sthere appa?05:09
thumperhttp://paste.ubuntu.com/12318767/05:09
wallyworldi looked for a ppa a while back and didn;t see one05:09
davecheneyit's in wily now05:09
thumperadd-apt-repository ppa:ubuntu-lxc/lxd-stable05:09
thumperapt-get update05:09
thumperapt-get dist-upgrade05:09
thumperget it if you want lxd :)05:09
thumperwallyworld: seems to be always ordering related05:10
wallyworldi could skip the tests on go 1.505:10
thumperbut not always Stop/Next05:10
wallyworldand then fox05:10
wallyworldfix05:10
thumpernah05:10
wallyworldto unblock05:11
thumperthat's terrible05:11
wallyworldi do want to remove the blocker tag05:11
wallyworldi'll get 1.5 and reproduce05:11
wallyworldthumper: if i get lxd, will it stuff up anything else in juju?05:12
thumperwhy not just get the deb out of the ppa by downloading directly and install?05:12
wallyworldsure, but lxd looks interesting :-)05:13
=== urulama_ is now known as urulama
thumperwallyworld: if there aren't async calls, why would I get request 7 written to the test log before request 6?05:25
thumperthe only way that would happen is if the active goroutine switched after incrementing the value but before writing to the test log05:26
wallyworldthere must be in the underlying code, but no tthe tests which is what i thought you were referring to05:26
thumperI've not been able to find it05:26
thumperbut I need to head out shortly05:26
thumperdinner date, anniversary05:27
wallyworldi just installed go 1.5 and now go is broken, so i'll look into that05:27
thumpersorry I couldn't be more help05:27
davecheneywaigani: here is a simple one https://github.com/juju/juju/pull/323605:27
davecheneywaigani: actaully scratch that05:32
davecheneyno05:33
davecheneyactually, i think this is ok05:33
davecheneywaigani: http://reviews.vapour.ws/r/2615/06:29
davecheneyslightly larger change06:29
wallyworldfwereade: running a bit late07:30
TheMuedimitern: ping08:30
dimiternTheMue, pong08:31
TheMuedimitern: inside the space commands I wanted to differentiate between "not supported" and other API errors08:31
TheMuedimitern: today the API client simply passes the error through08:32
dimiternTheMue, yes08:32
TheMuedimitern: so also the params.NotSupported08:32
dimiternTheMue, you mean in the feature tests or?08:32
TheMuedimitern: a errors.IsNotSupported so doesn't match08:32
TheMuedimitern: the feature test is working, it only compares output08:32
dimiternTheMue, the equivalent of errors.IsNotSupported as a satisfier is params.IsCodeNotSupported (when testing an api error result)08:33
TheMuedimitern: but inside e.g. the list subcommand, here an API error could be this not support, but also a connection error or else08:33
dimiternTheMue, yes, that's true, but for the end user shouldn't matter - it's just an error we should display08:34
TheMuedimitern: yep, but I dislike the usage of params outside the API. so my proposal: check this inside the API client and in this case convert the error to a regular IsNotSupported08:34
TheMuedimitern: surely using params.IsNot... makes it more simple for me ;)08:35
dimiternTheMue, sorry, I'm not sure I follow you08:35
dimiternTheMue, let's discuss this at standup?08:36
TheMuedimitern: ok, we can do, it's better then08:36
TheMuedimitern: simply to describe my concerns, params to me is only a package to transfer data between api and apiserver and it shouldn't used outside (clean interfaces)08:37
dimiternTheMue, that's not entirely correct though - params types are used as well for anything that's returned from an api call (at the client-side), e.g. params.Life08:38
=== ashipika1 is now known as ashipika
TheMuedimitern: I know, but exactly this is my concern :D it's not ... clean08:39
dimiternTheMue, the client-side api method (e.g. returning one result/error) that's calling the apiserver facade bulk method can return the result and an error, which can still effectively be a params.Error08:40
TheMuedimitern: yes, and so the user has to know, if an "errors" error or a "params" error is returned. my wish is that the API client always returns "errors" or own errors (phew, so many errors *lol*)08:42
dimiternTheMue, params.Error is just an error - you shouldn't expect the client-side api to hide its origin (a wrapped errors.NotSupported for examle)08:43
dimiternexample*08:43
dimiternTheMue, so an error you get from the api is not the same as calling the respective state package method directly (which returns e.g. errors.NotSupported)08:44
TheMuedimitern: yes, exactly, that's why my errors.IsNotSupported failed and I wondered. a %#v then showed that it's a params and I looked into the API client08:48
dimiternTheMue, right :) - well, that's as expected; I don't consider it "unclean" :) - i.e. we shouldn't act like the API layer's not even there08:49
TheMuedimitern: yes, I think that's the way. but in my "optimal" world it would be kind of transparent *dream*08:50
TheMuedimitern: that's IMHO the task of the API client package, otherwise we could call the server directly like the UI does08:51
dimiternfwereade, jam, hey guys - are you joining standup?09:02
jamdimitern: I'm there09:02
TheMuedimitern: to get this one in before my vacation I'll add a card and TODOs and continue with params.IsNot...09:50
TheMuedimitern: will assign this card to me09:50
dimiternTheMue, TODOs about what?09:50
TheMuedimitern: as we discussed a help to convert params errors into their according counterparts (missed the word, unpacking?)09:51
dimiternTheMue, unwrapping :)09:52
TheMuedimitern: yeah, exactly, that's what I meant, thanks09:53
dimiternTheMue, well, it's a couple of lines of code for SupportSpaces, but ok I'm ok with a TODO+follow-up09:53
TheMuedimitern: for this one yes, it's small. thought about a more global approach later, that can be used elsewhere too09:54
TheMuedimitern: but I could start with the IsNotSupported as a first and only one *g*09:55
dimiternTheMue, I'm -1 on a global approach09:55
dimiternTheMue, as discussed - it's the api client-side method's job to do the conversion, if needed09:55
dimiternTheMue, doing it automagically sounds like opening a deep deep can of worms :)09:56
TheMuedimitern: yes,only thought about our generic errors we've got in juju/errors AND params09:56
TheMuedimitern: hehe, no, not automatically, only as a helper for inside the API client09:57
TheMuedimitern: kind of params.Unwrap(error) error09:57
dimiternTheMue, which will do something like if params.IsCodeXYZ(err) { return errors.NewXYZ(nil, err.Error()) ?09:58
dimiternTheMue, but it's simpler to do this as needed I think, rather than having a giant switch block in a helper like this09:59
TheMuedimitern: yeah, you may be right, feels better and more targeted. especially if there are also API specific errors that always have to be handled extra10:00
TheMuedimitern: so yes, will do it directly, no card, no todo. *lol*10:00
dimiternTheMue, cheers :)10:01
frobwaredimitern: is there a standup on Thursdays? I don't see anything in my calendar. I have a conflict (P&C) so will skip either way.10:09
dimiternfrobware, there is, I'll add you10:10
dimiternfrobware, it was scheduled separately, because it used to overlap with the core leads call at some point10:10
bogdanteleagafwereade, jam, so, about the retrying hooks on startup thing10:20
bogdanteleagafwereade, jam, it seem it would be more productive to talk here10:20
bogdanteleagafwereade, jam, does it sound like a good idea?10:20
jamsure10:21
fwereadebogdanteleaga, sure10:26
rogpeppefwereade, jam: ping10:45
jamhi rogpeppe10:45
rogpeppejam: hiya10:45
rogpeppejam: we're just thinking of doing a reasonably wide-ranging change to juju/cmd/...10:46
rogpeppejam: just thought i'd run the idea past you before we do the work10:46
rogpeppejam: in fact, have you got a moment or two for a hangout?10:46
jamI can listen on a hangout, but I have a bit of a cough so I try not to talk too much.10:46
rogpeppejam: ok, understood. https://plus.google.com/hangouts/_/canonical.com/gogogo?authuser=110:47
rogpeppejam: or we can keep it here if you'd prefer10:47
jamjoining, that way you can talk10:48
fwereadejam, rogpeppe, can't join you just now, will drop in when I can in case you're still there10:48
fwereadejam, rogpeppe: I presume you're not still there? conversations extended...11:41
fwereadejam, rogpeppe: would love to hear the high points11:41
ashipikafwereade: i can only try to recap11:44
ashipikafwereade: but the thing is that for the macaroon based login to work we need to persist macaroons and discharges in a cookiejar.. and to do that we placed the logic in the environCommandWrapper, which now has a Run method11:45
ashipikaand that method loads the cookie jar, creates a httpbakery client and uses it to establish an API connection11:46
ashipikabut now all commands need to be wrapped.. and test do not do that..11:46
ashipikaand that was the whole point of the debate.. whether to create a constructor for each command that would return a wrapped command and use wrapped commands in tests..11:47
ashipikafwereade: ^11:48
fwereadeashipika, my comfort level is proportional to how explicit we're being -- if all the commands are now constructed via funcs that accept explicit httpbakery clients -- so they can be tested by explicitly passing a mocked client -- then great11:52
fwereadeashipika, the more magic/globals/whatever is involved, the less I'll like it11:53
rogpeppefwereade: it's no more magic that what's there already11:54
rogpeppefwereade: we're putting the logic inside EnvCommandBase11:54
* fwereade suddenly gets nervous because he can't remember how the magic is distributed ;p11:54
fwereaderogpeppe, but I jest, that sounds like the right place for it11:55
rogpeppefwereade: cool11:55
perrito666ericsnow: ping me when you are back please12:10
mupBug #1493850 opened: 1.22 cannot upgrade to 1.26-alpha1: run.socket: no such file or directory <1.22> <blocker> <ci> <regression> <run> <upgrade-juju> <juju-core:Triaged> <https://launchpad.net/bugs/1493850>13:22
mupBug #1493850 changed: 1.22 cannot upgrade to 1.26-alpha1: run.socket: no such file or directory <1.22> <blocker> <ci> <regression> <run> <upgrade-juju> <juju-core:Triaged> <https://launchpad.net/bugs/1493850>13:25
mupBug #1493850 opened: 1.22 cannot upgrade to 1.26-alpha1: run.socket: no such file or directory <1.22> <blocker> <ci> <regression> <run> <upgrade-juju> <juju-core:Triaged> <https://launchpad.net/bugs/1493850>13:34
natefinchanyone else having trouble with the tests not passing on master?13:55
ashipikanatefinch: go 1.5?13:56
natefinchashipika: nope, running 1.2.2 like a good boy ;)13:56
mgznatefinch: the tests do not pass on master13:56
natefinchmgz: ok, good to know13:57
natefinchmgz: should I make bugs for the failing tests?13:57
ashipikanatefinch: ack.. asking because there were some test failures with 1.513:57
mgzhm, one of the failing ones actually passed on a retest13:58
mgznatefinch: you should file bugs for any that CI does not have in the most recent run13:58
frobwaredimitern, do you have time for a 5 minute HO, though probably more. :)14:22
dimiternfrobware, sure :), i'll be in the standup HO in ~2m14:23
mupBug #1493877 opened: TestImplicitRelationNoHooks fails intermittently <blocker> <ci> <intermittent-failure> <regression> <test-failure> <juju-core:Triaged> <https://launchpad.net/bugs/1493877>14:31
=== natefinch is now known as natefinch-afk
abentleymgz: When you create an issue, remember to link the bug.14:35
mgzabentley: going back and doing it now14:37
mupBug #1493887 opened: statusHistoryTestSuite teardown fails on windows <blocker> <ci> <regression> <test-failure> <windows> <juju-core:Triaged> <https://launchpad.net/bugs/1493887>14:46
mupBug #1493887 changed: statusHistoryTestSuite teardown fails on windows <blocker> <ci> <regression> <test-failure> <windows> <juju-core:Triaged> <https://launchpad.net/bugs/1493887>14:49
perrito666really?14:50
mupBug #1493887 opened: statusHistoryTestSuite teardown fails on windows <blocker> <ci> <regression> <test-failure> <windows> <juju-core:Triaged> <https://launchpad.net/bugs/1493887>14:55
mgzmup likes rubbing it in.14:57
mgzI have done nothing but created the bug and subscribed ian, so how that comes out as three mup echos in channel I do not know14:58
mgzI am joining the standup ahngout now so I don't forget in 20 minutes15:07
xwwtjog: I am running a little late17:57
jognp... just ping me when you're ready17:58
cmarscherylj, i've got a fix for LP:#1493887 to unblock master if you have a moment, http://reviews.vapour.ws/r/2617/18:00
mupBug #1493887: statusHistoryTestSuite teardown fails on windows <blocker> <ci> <regression> <test-failure> <windows> <juju-core:Triaged> <https://launchpad.net/bugs/1493887>18:00
cmarsum, i mean for LP:#149385018:01
mupBug #1493850: 1.22 cannot upgrade to 1.26-alpha1: run.socket: no such file or directory <1.22> <blocker> <ci> <regression> <run> <upgrade-juju> <juju-core:In Progress by cmars> <https://launchpad.net/bugs/1493850>18:01
cmarswrong bug..18:01
perrito666cmars: you can fix 1493887 if you want to, not going to complain18:01
cmars:)18:02
xwwtjog: kk.  I just got done.  Thought it would run longer.  Heading to hangout now.18:02
=== natefinch-afk is now known as natefinch
mgzcmars: hmm, I don't see how the updatestatus stuff affects that, which is the only resolver change in the regerssion window18:08
mgzcmars: however, worker/uniter/upgrade126.go does to complex things with the Installed flag18:14
cmarsmgz, so the updatestatus stuff is weird too. the "unit not found" is actually a not found on the status for that unit, http://pastebin.ubuntu.com/12322016/18:15
mgzthat function really does read...18:18
mgzreturn statefile.Write(state)18:18
mgzreturn nil18:18
mgzhuh.18:18
cmarsmgz, definitely going to continue investigating, but this PR should at least alleviate the CI failures until we can get to the bottom of it. the install hook shouldn't fire after an upgrade.18:21
perrito666mm, set status should definitely not blow because of not finding the unit18:21
mgzcmars: so, I guess I don't see the point of unblocking trunk when we have problems with the uniter we don't understand yet18:24
mgznot to mention new test failures.18:25
mgzit might be interesting to rerun the test with your branch18:25
mgzbut why do we want to add more code on top of a state we already know is broken?18:25
mgzcmars: my best theory at present is the AddInstalledToUniterState upgrade step is just wrong for the long hop, and the os-deployer failure is some other cause18:40
mgzso I probably should have filed that as a seperate bug18:41
perrito666can I get some love in this? http://reviews.vapour.ws/r/2618/18:50
mgzperrito666: test?18:51
natefinchfwereade: you around?19:44
fwereadenatefinch, I am now20:00
fwereadenatefinch, what can I do for you?20:01
natefinchfwereade: you talked to Wayne about AddService and making the AddUnit part of it into a worker, I'd like to get clarification on how you see that working20:01
* fwereade scratches head furiously -- spot more context?20:02
fwereadeah!20:02
fwereadenatefinch, mitigating non-transactionality problems around deploy?20:02
natefinchfwereade: exactly20:03
natefinchfwereade: merging the setting of configuration on the service was trivial once I realized how to do it.  But making the worker to add the unit(s).... just want to make sure I do it the right way.20:03
fwereadenatefinch, ok, it needs a bit of investigation because I can't remember exactly what the difficult properties of assign-machine were20:03
fwereadenatefinch, ah cool you've already done stuff20:03
natefinchfwereade: stuff has been done, yes :)20:04
fwereadenatefinch, ok, let me think a sec to find the intersection of too-much-to-do and not-enough-to-accept20:04
natefinchfwereade: trying to figure out how I get the number of units etc from the Deploy function into the worker that presumably calls the API to add units (assuming the worker is not going to just use state directly, since we've been over that once or twice now ;)20:05
fwereadenatefinch, so, there's sometimes deployment-related info that needs to be stored with the unit and carried through20:05
fwereadenatefinch, :D20:05
fwereadenatefinch, any placement directives, basically, which I *think* only apply when N=120:06
natefinchfmt.Errorf("cannot use --num-units with --to")20:07
natefinchseems that way :)20:07
fwereadenatefinch, ok, cool20:07
natefinchfwereade: for reference: https://github.com/juju/juju/blob/master/juju/deploy.go#L4420:07
fwereadenatefinch, so, I *think* that what we should do is, for each unit we add, also add a document referencing the unit and any placement directives that apply20:10
fwereadenatefinch, and write a watcher for that collection20:11
fwereadenatefinch, that I *think* might want very similar characteristics to the queued-action watcher20:12
fwereadenatefinch, although I need to come back to that20:12
natefinchfwereade: that seems sensible.  So, in the same transaction that creates the service, we create docs for adding units...  how do we ensure we don't have two workers creating the same unit?20:14
fwereadenatefinch, ah, sorry20:14
fwereadenatefinch, I didn't read properly20:14
fwereadenatefinch, I *think* that adding the units is relatively doable in a single transaction20:15
fwereadenatefinch, the bit that I really want to farm out to another worker is the machine assignment20:15
fwereadenatefinch, so, iirc20:15
natefinchahh ok20:15
fwereadenatefinch, internally a deploy becomes add-service, add-unit, assign-unit, add-unit-assign-unit, ...20:16
fwereadeand each of those is transactional20:16
fwereadenatefinch, so we can fail between any one of those steps, and potentially get too few units and/or one unassigned unit20:16
natefinchfwereade: that was going to be my concern. That's part of the bug that we wanted to fix20:17
fwereadenatefinch, so, I forget exactly why, but I have a firm conviction that it's the assignment that really messes with the transactionality20:17
natefinchthe bug, for reference: https://bugs.launchpad.net/juju-core/+bug/148655320:17
mupBug #1486553: i/o timeout errors can cause non-atomic service deploys <cisco> <landscape> <juju-core:Triaged> <juju-core 1.25:In Progress by natefinch> <https://launchpad.net/bugs/1486553>20:17
fwereadenatefinch, often it creates new machines, often it causes the state server to chat to the provider about the plausibility of certain requests, it consumes machine sequence ids20:18
fwereadenatefinch, but I think we can make add-service-and-N-units a transaction with *relative* ease20:19
fwereadenatefinch, it's not quite just a matter of appending all the ops together -- the addUnitOps shouldn't assert anything about the service, and the service doc should get its unit refcount set to N immediately20:19
fwereadenatefinch, but nor should it involve understanding and refactoring every part of state20:20
natefinchfwereade: glad to hear it :)20:20
fwereadenatefinch, but for that to be useful, we also need the worker to handle the now-deferred assignments20:20
fwereadenatefinch, I would prefer not to overload the unit doc any more, hence my preference for a fresh collection to store the assignment queue20:21
fwereadenatefinch, each element of which I think is just unit-id + placement-directive20:21
fwereadenatefinch, so that'd be the other change to the add-service transaction: add those docs20:22
natefinchsounds right20:22
fwereadenatefinch, for each unit, I think the assignment-queue doc should be added *after* it in the []txn.Op (so that when the assignment watch triggers, we can be sure there's a document to go look at)20:24
natefinchnoted.  Good idea.20:24
fwereadenatefinch, so, if we have a watcher for assignments, we can expose that over the api, via a new facade, to a new worker20:25
fwereadenatefinch, that basically just does batch calls back up to "run all the assignments you just told me about"20:26
fwereadenatefinch, and if the consequent *assignment* txn(s) were to just unconditionally delete the appropriate assignment docs20:26
fwereadenatefinch, I think we'd cover most of the cases?20:27
fwereadenatefinch, removeUnitOps should also unconditionally remove associated assignments, I think20:28
fwereadenatefinch, we should be guaranteed to hit one or the other code path20:28
natefinchok20:28
fwereadenatefinch, and hitting both won't hurt20:28
natefinchyep20:28
natefinchfwereade: I gotta run in a minute, but I think I have enough to get started. Will you be on tomorrow?20:29
fwereadenatefinch, yeah, absolutely20:29
natefinchfwereade: great, thanks for the clarification.20:29
fwereadenatefinch, ping me when you come on and make me talk about the queued-action watcher and why it's good/bad and should be copied/not20:29
natefinchfwereade: heh, will do20:29
fwereadenatefinch, hopefully I will have made up my mind by then :)20:29
natefinchfwereade: cool20:30
natefinchfwereade: see ya.20:30
fwereadenatefinch, o/20:30
=== natefinch is now known as natefinch-afk
lazyPowerfwereade: have a moment?20:46
fwereadelazyPower, sure20:46
lazyPowerawesome, see: pm20:48
mupBug #1494002 opened: azure deployment failure with mem constraints <juju-core:New> <https://launchpad.net/bugs/1494002>21:05
wallyworldthumper: i've made another change to that pr, but sadly test -race is broken in go 1.5 so i can't check that; bug 148701021:07
mupBug #1487010: go1.5rc1: go test -race failing when building test exec on wily <golang (Ubuntu):In Progress by mwhudson> <https://launchpad.net/bugs/1487010>21:07
mupBug #1494002 changed: azure deployment failure with mem constraints <juju-core:New> <https://launchpad.net/bugs/1494002>21:08
mgzwallyworld: does that also fix bug 149387721:10
mupBug #1493877: TestImplicitRelationNoHooks fails intermittently <blocker> <ci> <intermittent-failure> <regression> <test-failure> <juju-core:Triaged> <https://launchpad.net/bugs/1493877>21:10
wallyworldmgz: should do, i think that bug would be a dup21:11
wallyworldof bug 149362321:11
mupBug #1493623: worker/uniter/relation: relationsSuite.TestCommitHook tests fail <juju-core:In Progress by wallyworld> <https://launchpad.net/bugs/1493623>21:11
mgzyup.21:12
mupBug #1494002 opened: azure deployment failure with mem constraints <juju-core:New> <https://launchpad.net/bugs/1494002>21:14
mupBug #1494002 changed: azure deployment failure with mem constraints <juju-core:New> <https://launchpad.net/bugs/1494002>21:17
perrito666mgz: tests added21:23
mgzperrito666: I see some Debugf in the change?21:24
thumperdavechen1y: now?21:28
thumperdavechen1y: I'm back in the standup hangout21:29
davechen1ythumper: ok21:29
mupBug #1494002 opened: azure deployment failure with mem constraints <juju-core:New> <https://launchpad.net/bugs/1494002>21:29
perrito666do you??21:31
perrito666in the test21:31
* perrito666 eyes RB suspiciously21:33
mgzperrito666: in the actual code21:35
mgz"This is wrong IIIIIIIII"21:35
mupBug #1493877 changed: TestImplicitRelationNoHooks fails intermittently <blocker> <ci> <intermittent-failure> <regression> <test-failure> <juju-core:Triaged> <https://launchpad.net/bugs/1493877>21:35
perrito666it is, my editor playing dumb21:35
perrito666mgz: fixed21:38
thumperalexisb: got a few minutes?21:56
alexisbthumper, I will in an hour or so21:57
thumperalexisb: can you pencil me in and ping when you're free?21:57
alexisbthumper, yep21:57
thumperta21:57
thumperwallyworld: mwhudson is aware of the race issue with the packaged go 1.5 and is looking to fix it today21:57
thumperwaigani: can chat when ready21:58
wallyworldthumper: ty. that that mean there will be a go 1.5.1 or something packaged?21:58
waiganithumper: cool, standup?21:58
mwhudsonwallyworld: it's a packaging thing, not related to upstream version21:58
wallyworldah ok21:58
thumperwaigani: ok21:58
mwhudsonand it won't get fixed today i expect, at least not in the distro21:59
mwhudsonwallyworld, thumper: https://bugs.launchpad.net/ubuntu/+source/golang/+bug/148701021:59
mupBug #1487010: go1.5rc1: go test -race failing when building test exec on wily <golang (Ubuntu):In Progress by mwhudson> <https://launchpad.net/bugs/1487010>21:59
wallyworldmwhudson: yeah, i found that bug when i googled the error :-)22:00
ericsnowwallyworld: katco mentioned that you have some thoughts on #149350322:05
mupBug #1493503: wily 1.24 cannot bootstrap local-provider: 127.0.0.1:37017: getsockopt: connection refused <blocker> <ci> <local-provider> <regression> <wily> <juju-core:Invalid> <juju-core 1.24:In Progress by ericsnowcurrently> <https://launchpad.net/bugs/1493503>22:05
katcoericsnow: menno :)22:05
wallyworldericsnow: in a meeting, will look in a bit22:05
ericsnowkatco: right, menno not wallyworld :)22:05
alexisbericsnow, that is menn022:05
perrito666ericsnow: hey, did you propose the fix for the agent version issue for master?22:12
ericsnowperrito666: you mean https://github.com/juju/juju/pull/3234?22:12
ericsnowperrito666: master has been blocked so I've had to wait (missed it by 30 minutes)22:12
perrito666ericsnow: nop, not that one22:13
perrito666the one I reviewed yesterday22:13
perrito666but for master :)22:13
ericsnowperrito666: I landed that one in both22:13
perrito666ericsnow: neat (I just noticed that thre breaking change for that landed today or lastnight)22:14
* perrito666 is running a juju with mongo 2.622:39
alexisbthumper, ping22:46
alexisbI am free, I will join our 1x1 hangout22:46
thumperalexisb: hey22:46
thumperk22:46
cmarswallyworld, workaround for LP:#1493850 ready for a review, http://reviews.vapour.ws/r/2620/23:00
mupBug #1493850: 1.22 cannot upgrade to 1.26-alpha1: run.socket: no such file or directory <1.22> <blocker> <ci> <regression> <run> <upgrade-juju> <juju-core:In Progress by cmars> <https://launchpad.net/bugs/1493850>23:00
wallyworldlooking23:00
wallyworldcmars: let me know if the export_test comment is unclear23:09
=== sinzui_ is now known as sinzui
alexisbwaigani, ping23:40
alexisbwaigani, it looks like you have committed a fix for this bug : https://bugs.launchpad.net/juju-core/+bug/146467923:41
mupBug #1464679: juju status oneline format missing info <landscape> <status> <ui> <juju-core:In Progress by waigani> <https://launchpad.net/bugs/1464679>23:41
alexisbcan you please confirm and update the bug23:41
waiganialexisb: looking23:42
wallyworldthumper: we have discovered 2 upgrade steps that were written to be run by a unit agent but only machine agents run upgrade steps. so these so called unit upgrade steps are never run. huzar23:45
waiganialexisb: sorry, lp wasn't loading. yep, fix merged. Updated bug.23:45
alexisbwaigani, you rock thank you!23:45
moqqif i have an agent stuck with agent-status: executing (“running action update”), even though the update hook it was running has been killed/died, how can i “reset” it?23:57
moqqi tried to remove-unit and it added “life: dying” but it’s still stuck on executing23:58

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