/srv/irclogs.ubuntu.com/2014/08/28/#juju-dev.txt

katcowallyworld_: https://github.com/juju/juju/pull/62100:05
katcoready for review00:05
wallyworld_looking00:05
katcowallyworld_: grabbing some supper, brb00:09
wallyworld_ok00:09
katcowallyworld_: back00:13
wallyworld_katco: i left a couple of droppings in your PR00:14
wallyworld_i think maybe the test coverage needs to be expanded a bit00:14
katcowallyworld_: gah i'm flipping back and forth b/t branches too much. the reason i didn't use the val in that map is b/c with the harvesting stuff, what's in the map will be a string and we want an int. here it's totally fine though. thanks :p00:16
wallyworld_:-)00:16
katcowallyworld_: ready again. running tests on my machine00:44
wallyworld_ok00:44
katcowallyworld_: http://golang.org/doc/effective_go.html#redeclaration00:54
wallyworld_katco: rightio. i thought that only applied to the first variable00:56
wallyworld_i HATE := vs = soooo much. worst design decision EVER00:56
katcowallyworld_: afaik, go doesn't do anything anywhere with regards to parameter ordering00:56
katcowallyworld_: haha00:56
katcowallyworld_: i don't mind it, but i do wish they would have standardized on new(...) vs :=00:57
wallyworld_:= vs = is the cause of so many bugs00:57
wallyworld_and anyway, it's the fucking compiler's problem to sort out, not the programmer00:57
katcowallyworld_: really? i haven't experienced that directly yet00:57
wallyworld_we have in juju00:57
katcowallyworld_: any more feedback? i think i got everything/pushed00:58
wallyworld_katco: yeah, just about to LGTM but you interrupted me :-P00:58
katcowallyworld_: sorry oh supreme leader of wallyworld! ;)00:59
wallyworld_have i told you today?00:59
katcotold me what?00:59
wallyworld_fark off!00:59
katcoLOL00:59
katcothat'll be 2x i think today00:59
wallyworld_there, now you've been told00:59
katcohaha00:59
katcook back to the harvesting stuff01:00
wallyworld_thanks for fixing01:00
katcothanks for the review01:00
katcothumper: should be landing momentarily. sorry for the regression.01:00
wallyworld_don't apoligise to him, he will expect it everytime now01:00
katcoi already told him i trusted him. i think i'm just off on the wrong foot with that guy01:01
hazmataxw, ping01:01
hazmataxw, was doing some research on azure earlier today and found some interesting info, wanted to run by you..01:01
wallyworld_he's just a pussy cat really, roll him over and rub his belly and he's all good01:01
hazmataxw, nutshell we don't need to associate the env to an affinity group anymore for the sole purpose of getting a vnet.. vnets can be associated to regions now01:02
wallyworld_hazmat: i have a theory why provisioning is failing, but the log files don't contain the error message i would expect to see, so it's a guess. apt contention installing container dependencies01:03
wallyworld_that explains the issue you raised, but doesn't explain the one where only one container out of several fails to start01:03
hazmatwallyworld_, do we normally have errors we don't log?01:04
hazmatwallyworld_, possibly.. i thought that was addressed already via retry?01:04
wallyworld_hazmat: yes we do, and i'm not seeing them which is confusing me01:04
hazmatwallyworld_, the issue is nothing else on that machine is installing anything01:04
hazmatwallyworld_, the one other unit on the machine.. is the ubuntu charm.. aka do nothing01:04
hazmatwallyworld_, its log is also in the tarball01:04
hazmatwallyworld_, so apt contention with what..01:04
wallyworld_hazmat: retry is only in 1.20.601:05
hazmatwallyworld_, ah.. fair enough.. this is .501:05
hazmatwallyworld_, but still curious as to what it would contend with01:05
wallyworld_hazmat: ok, i didn't see what the unit was. but apt contention is the only thing that i can see right now that explains why the logging cuts off at the point it does01:05
wallyworld_there may be another cause01:06
hazmatwallyworld_, why are all the container watchers being killed on all the machines at the same time01:06
wallyworld_but what's happening is that the code is calling the container setup,which calls apt, but then gets no further01:06
wallyworld_hazmat: they are killed because they are no longer needed - they exist to set up container support for the machine and then they die01:07
wallyworld_ie the apt stuff and set up to run lxc is done lazily01:07
wallyworld_once the first lxc is asked for01:07
hazmatwallyworld_, so it would be a container provisioner logic issue then01:07
wallyworld_maybe, i can't explain why things just stop01:08
wallyworld_there was an issue in 1.20.5 where the watcher was stopped twice01:08
wallyworld_but i don't think that will cause this issue01:08
wallyworld_i need to keep digging a bit01:08
hazmatwallyworld_, ack01:08
wallyworld_thanks for getting the logs01:09
hazmatnp01:09
wallyworld_i'm keen to get 1.20.6 out there01:09
wallyworld_so we can see how it behaves01:09
wallyworld_lots of fixes in there01:09
wallyworld_a CI issue with azure is holding things up01:09
hazmatthe --upload-tools issue on azure?01:10
wallyworld_azure was broken for CI, might be fixed now01:10
wallyworld_not sure, i just heard 2nd hand that the CI tests failed01:10
wallyworld_they passed yesterday or the day before01:10
wallyworld_but i haven't heard directly01:10
wallyworld_we'll be pushing for a release tomorrow regardless01:11
wallyworld_we have to get this 1.20.6 out and into the hands of landscape and other folks01:11
hazmatwallyworld_, so does that mean there's some coordination between container watcher and container provisioner?01:12
=== Ursinha is now known as Ursinha-afk
axwhazmat: I changede our vnet creation to use a "location" (region) a while back, but reverted it. not sure if it was a coincidence, but after that change there were a lot of problems with the vnet not being available01:24
axwit would take >5 mins for the vnet to be accessible after creation01:25
hazmataxw, interesting01:25
axwIIRC the warning message that popped up in the azure console said it was only a problem with vnets created without an affinity group01:25
thumperkatco: awesome, ta01:26
katcothumper: np01:26
axwhazmat: did you see my PR for the docs on zones?01:27
hazmataxw, i did looked good01:27
axwreading your doc now01:27
wallyworld_hazmat: yes, the container watcher starts the provisioner when a new container is requested01:27
hazmatah ic now01:30
hazmatwallyworld_, by why would container watcher killed be seen before apt-get install lxc if the watcher is responsible for installing the pre-reqs01:32
wallyworld_hazmat: not sure. i think it asks the worker to die, but it won't do so until the current operation has finished ie the provisioner is started and then it exists01:35
wallyworld_i'm not 100% across the worker infrastructure01:35
hazmatwallyworld_, that's not apparent01:35
hazmatwallyworld_, ie the logs where its successful show it die and then the provisioner come up01:35
wallyworld_hazmat: my understanding is that kill() marks the worker as dying, and it still needs the current loop invocation to finish, but i'm not sure01:37
wallyworld_i'll look at reworking it, adding more logging also01:40
hazmatah ic.. it signals to stops itself before doing its actual work01:49
davecheneythumper: https://github.com/juju/juju/pull/61401:51
davecheneyif you have a sec01:51
* thumper looks01:51
davecheneythis is th eone from standup01:52
axwwaigani: you can stop reviewing https://github.com/juju/juju/pull/547, it's redundant02:02
axwI already fixed the problem02:02
waiganiaxw: ah so I see, thanks I missed that02:04
axwhazmat: I don't have much to say on your doc, SGTM.02:10
axwit would be nice if we could use thise to enable colocation of services in azure02:10
axwatm that's disallowed because we can't control which units communicate to which based on zone allocation02:11
hazmataxw, hmm02:11
axw(I still have no idea how it would work though)02:12
hazmataxw, zone/fault domain in azure is a logical concept that's specific to azure service and its role instances.02:12
hazmataxw, theoretically we could map to those when doing co-location, and pick the appropriate next instance (ie distribution group from co-located service's instances02:13
axwyou'd also have to make sure you don't spread the two units across fault domains though02:13
axwit's not enough to stick them in the same availability set02:14
axwand then there's upgrade domains02:14
hazmataxw, you do want to spread across fault domains.02:14
hazmataxw, we don't actually use upgrade domains afaics02:14
axwthey are implicitly used02:15
hazmataxw, does azure use upgrade domains under the hood?02:15
axwwhen the machine is upgraded02:15
axwi.e. regular maintenance02:15
hazmatic02:15
axwthat's my understanding anyway02:15
hazmatmy understanding was that it was tied to the app roll out of updates02:15
hazmatbut yeah.. underlying upgrades also makes sense02:16
axwit is definitely tied to the app updates02:16
axwI thought both tho02:16
axwhazmat: re spreading across fault domains, I mean if you have a co-dependent app server & db, you surely don't want to spread htem across fault domains02:17
axwbut multiple units of each, eys02:17
axwyes*02:17
hazmataxw, every ref ic to upgrade domain references app /deployment updates.. not iaas updates02:18
hazmataxw, multiple units of each.. and you'd want spread.. single unit of each.. does it matter ;-)02:18
axwhazmat: all I'm saying is the pairs need to be located in the same fault domain, otherwise you have a broken service if one goes down02:19
hazmataxw, single unit of each and we don't really have any real notion of trying to keep it up.. fault domains are not global02:19
hazmattheir service local logical02:19
hazmataxw, ie. if their co-located their on the same vm.. so doesn't matter.. if their separate services in azure02:20
hazmatthere is no guarantee that 0 == 0 between two services fault domains02:20
axwright, they have to be in the same cloud service02:20
axwit's a bit messy, forget I said anything :)02:21
axwwhen thye're in the same CS there's also issues of port collision02:21
hazmataxw, so we'd use them as separate roles ?02:21
hazmatwithin a service02:22
hazmataxw, yeah02:22
hazmatazure.. is special02:22
axwyes, separate roles. I was thinking we could deploy a service and specify the cloud service name02:23
axw(to be the same as an existing one)02:24
hazmatwoah.. now your talking crazy.. semantic service names in an iaas console ? ;-)02:24
hazmati walk away for a few months to come back and remember how special it is.. i wrote up some code to verify the fault/upgrade domain thingy and its interaction with affinity groups. https://gist.github.com/kapilt/d326b853e4606f9203e9 i kinda of wish we had a list-machines to do iaas provider specific details02:24
hazmataxw, oh.. nevermind not semantic02:24
hazmataxw, we currently do separate roles per instance as well.. there's some messiness trying to treat azure as general compute02:25
axwa (Virtual Machine) role is an instance02:26
axwthere's some other roles that aren't applicable to IaaS02:26
axwweb worker roles.. don't know much about them02:26
hazmataxw, so why do we/they have roles and role_instance_list separately02:26
axwnfi02:26
axwI think it's to do with deployments02:27
axwyou can have prod/testing deployments02:27
axwand switch them at runtime02:27
hazmatyeah.. the slots and upgrades02:27
hazmatand rollbacks02:27
axwso you define a role and ther's an instance for it in each deployment02:27
hazmatah.. ic.. that makes a certain sense.. logical from instantation across prod vs staging02:28
axwanyway, so what I was saying is we could do, say "juju deploy app --to cloudservice=mythingy" and "juju deploy db --to cloudservice=mythingy", then if you ensure each service has at least the same number of units as there are fault domains, then the units can self organise to talk to units in the same fault domain02:29
axwthere's still the issue of port collisions, but there's not much we can do about that. only matters for exposed services anyway02:30
davecheneywaigani: https://github.com/juju/juju/pull/62202:31
hazmataxw, there on the same  machine w/ co-location.. so the port collision thing is immaterial to the provider.02:32
hazmataxw, also matters for unexposed.. cause failure to bind02:32
axwhazmat: not same machine, just same cloud service02:32
hazmataxw, we don't control fault domain02:32
waiganidavecheney: looking :D02:33
axwhazmat: no... but there are 2 fault domains and we allocate 2 units, I think Azure will spread them equally?02:33
axwbut if*02:33
hazmatit will02:33
hazmataxw, this is where the spec comes into play.. the charms can choose to self-organize that way if they choose.. via relation-get query to remote unit matching zone02:34
axwhazmat: right, that was my point :)02:34
axwI'm saying with your proposal, this is feasible02:35
hazmataxw, aha.. finally i understand.. i should go to bed.. that took a while ;-)02:35
waiganidavecheney: that's awesome.02:35
waiganidavecheney: what's the -type d flag?02:42
waiganihelp just says: -type [bcdpflsD]02:43
waiganinot very helpful...02:43
davecheneywaigani: man find02:44
davecheneywaigani: please review my comments to https://github.com/juju/juju/pull/61702:45
davecheneywaigani: please review my comments to https://github.com/juju/juju/pull/61302:51
thumperwaigani: did you want to update the envuser stuff now with the st.environTag, or as a followup?02:52
waiganithumper: followup? I've got the todos in there so should be easy/quick02:53
thumperkk02:53
* thumper keeps reviewing02:53
waiganidavecheney: I've got to do the school run,  I'll be back online in a bit02:58
davecheneykk03:14
thumperheh...03:46
* thumper squeezed (╯°□°)╯︵ ┻━┻ into a unit test03:46
* hazmat steps back from the unicode wizardry03:54
bodie_davecheney, thinking about your concern with the empty ActionTag as a signal of non-action hook03:59
bodie_davecheney, since I'm initializing the ActionTag with an empty value and only inserting a value (via api) if the hook was an Action, it seems to me like there would never be a case when it would not suffice as the switch04:00
davecheneybodie_: then you never need to check ?04:01
bodie_davecheney, well, the check is to consider whether it is an action (i.e. always has a tag value), or not in which case the value will always be empty04:02
davecheneyif it's empty then use somethign that can be nil04:02
davecheneyotherwise you'll get fucked by the subtle difference between var a names.ActionTag, and a = names.NewActionTag("")04:03
bodie_I think the latter would only happen if the action didn't have an id, in which case we're fucked anyway04:03
wallyworld_axw: a small one https://github.com/juju/juju/pull/623 if you have a moment04:04
bodie_but, that error case should get caught by runHook04:04
axwlooking04:04
bodie_i.e., the value is *always* going to either be empty = non-action, or non-empty = action, or already errored out when the id was mysteriously missing04:04
davecheneybodie_: i don't like using the zero value like that04:05
bodie_that is my feeling too04:05
davecheneyplease make it a pointer or use the names.Tag interface04:05
bodie_sounds like a plan04:05
bodie_:)04:06
bodie_thanks04:06
davecheneycool04:06
davecheneythanks04:06
axwwallyworld_: that AddInt32 test looks like crack anyway04:08
axwwon't it always stop the last worker it added?04:09
wallyworld_it doesn't add workers04:09
wallyworld_it stops the container watcher once all supported container types have been intialised04:09
wallyworld_lazy init of containers04:10
axwah, I see04:10
wallyworld_i'm not sure it was bad how it was, but it's more logical to have it in a defer i think04:10
wallyworld_axw: thanks. the defer is a hail mary. it *shouldn't* matter but the runner stuff is a bit mysterious. certainly early termination of the worker is one explanation for the logs i saw04:19
thumperwaigani: if you can't use the factory, just use the state methods to create users04:20
waiganithumper: ok04:20
waiganithumper: https://github.com/juju/juju/pull/55304:38
thumperwaigani: I'll look shortly, need to go make dinner04:40
waiganithumper: np, I'll have to do the same soon - at ice skating right now04:40
axwwallyworld_: can you please close https://github.com/juju/juju/pull/547?04:45
wallyworld_sure04:45
axwthanks04:45
bodie_davecheney, addressed your points.  any response to https://github.com/juju/juju/pull/617#discussion_r16817826 when you have a sec?04:56
bodie_davecheney, this code is the dep for a bunch of other stuff, so if I can get even a brief comment on that reply it would be really helpful to moving us forward05:42
bodie_otherwise I believe others may hesitate to jump in on that topic05:42
bodie_and since this is my 1:30 am, I don't have a lot of confidence I will get a chance to pester you again soon :)05:43
wallyworld_axw: something to ponder with the tools work, not 100% relevant now but good to keep in mind https://bugs.launchpad.net/juju-core/+bug/134798405:55
mupBug #1347984: container provisioner may choose bad tools <juju-core:Triaged> <https://launchpad.net/bugs/1347984>05:55
axwwallyworld_: thanks05:56
axwwallyworld_: you make a good point about "pending forever", but it's the same either way06:17
axwperhaps when we fix that we can put a sensible timeout in place?06:17
wallyworld_yeah, we do need to do something06:18
wallyworld_we have work scheduled to improve this area06:18
=== uru_ is now known as urulama
TheMuemorning06:45
dimiternmorning07:06
TheMuehmm, two tests running the whole story fail *checking*07:15
TheMuedimitern: btw, your latest change led to a minor but nice redesign by my side07:16
dimiternTheMue, oh yeah?07:31
TheMuedimitern: yeah, using an interface answering the questions RequiresSafeNetworker() has, instead of adding more and more arguments07:34
dimiternTheMue, cool!07:34
TheMuedimitern: and, you may believe it or not, machiner.Machine implements this interface too :D like my mock type for the tests07:35
dimiternTheMue, the IsManual thing?07:35
TheMuedimitern: and the Id of the machine, all now fetched in one versioned doc, and the params separated from the in-memory storage07:36
TheMuedimitern: John and I discussed about it these days07:36
dimiternTheMue, yep, it is better like this, isn't it?07:36
TheMuedimitern: yeah, I think so. params should simply be for transport. this also will make the implementation of versioning more simple07:37
dimiternTheMue, that's the intent, yeah07:37
TheMuedimitern: +107:38
mattywdavecheney, morning - thanks for the review08:17
TheMueso, looks like I catched all failing tests due to the redesign. one final complete test and then PR :)08:35
davecheneymattyw: no worries09:25
gsamfiramorning all10:11
natefinchwwitzel3, ericsnow, team meeting?10:17
hazmatdo we have a stack trace dump signal handler on agents?10:43
hazmatwallyworld_, was thinking that might have helped container debug10:44
wallyworld_hazmat: no, would be nice though10:45
natefinchhazmat: the stack trace should get output to stderr on a panic and thus go into the log10:45
natefinchhazmat: or maybe you mean like give it a signal and it'll log the current stack trace?  We can do that easily10:46
hazmatnatefinch, the later10:46
natefinchbut yeah, no, doesn't currently exist10:47
hazmatgiven a hung/spun .. with no log output. nothing happening on syscalls (per strace).. it would be nice to see what's brokens10:47
* hazmat files a bug10:49
natefinchhazmat: what's your preferred signal?10:51
hazmatnatefinch, QUIT10:53
hazmatnatefinch, https://bugs.launchpad.net/juju-core/+bug/136254610:54
mupBug #1362546: Need a way/signal handler to dump stack trace on agents <juju-core:New> <https://launchpad.net/bugs/1362546>10:54
=== urulama-afk is now known as urulama
hazmatjam, i think i totally misunderstood the context of your email yesterday10:56
hazmatre container density10:56
jamhazmat: well, some of it was just testing that we can genuinely get container addressibility, and some of it was trying to see what we could do with it for scale testing.10:57
jamnatefinch: SIGQUIT is built into Go10:57
jamto trigger a panic()10:57
jamI've used it repeatedly10:57
jamhazmat: I'm pretty sure you alredy can10:58
natefinchjam: triggering a panic is different than just printing a stack trace though10:58
natefinchjam: but that's a good point10:58
hazmatjam, thanks x211:02
wallyworld_axw: katco: finish meeting, be therereal soon12:02
wallyworld_finishing12:02
jamwallyworld_: is aggregateSuite.TestMultipleResponseHandling one of your intermittant tests?12:09
jambecause I just came across it12:09
jamand it assumes that "go foo(); go bar()" will call foo before bar12:09
jamwhich is *not* guaranteed.12:09
wallyworld_jam: no. i will add it. what's the jenkins link?12:09
jamwallyworld_: I just discovered it locally12:10
jamwallyworld_: I'll try to just fix it, since i'm doing some tests there12:10
wallyworld_jam: ok, thanks12:10
jamI happened to have the system change ordering, or I wouldn't have noticed.12:10
jamfortunately it is just a bug in the test, and not a more serious underlying issue12:13
=== Ursinha-afk is now known as Ursinha
perrito666good morning everybody12:48
perrito666natefinch: hey, did you get my email?12:48
=== Ursinha is now known as Ursinha-afk
=== Ursinha-afk is now known as Ursinha
natefinchperrito666: yep, got it.13:29
perrito666the cold medicine I took must be either made of unicorn powder or some illegal drug, these things work waaay too well13:30
natefinchperrito666: heh.... psuedoephedrine is good stuff13:31
perrito666heh, well that explains13:31
=== jheroux_away is now known as jheroux
=== hatch__ is now known as hatch
wwitzel3ericsnow, natefinch: standup time :)14:03
* perrito666 notices that the only person actually standing up in those is wwitzel3 14:03
mattywapparently landing is blocked - is anyone currently working on https://bugs.launchpad.net/juju-core/+bug/1362636 ?14:39
mupBug #1362636: ppc64el compilation error <ci> <ppc64el> <regression> <juju-core:Triaged> <https://launchpad.net/bugs/1362636>14:39
mgz_mattyw: not that I know of14:41
natefinchmgz_, rogpeppe1, thumper, wallyworld_: do any of you know if we verify the SSL certificate of the state servers when agents connect to them?  I presume we do, but I don't actually know.14:46
natefinchdimitern, TheMue ^^14:46
rogpeppe1natefinch: we did originally, but at some point someone added InsecureSkipVerify i think.14:46
rogpeppe1natefinch: i hope that's been removed now.14:46
mattywmgz_, curtis doesn't seem to be around - any idea how I can get started on looking into that?14:48
rogpeppe1natefinch: actually it does look as if we correctly verify the SSL cert of the state servers now14:49
rogpeppe1natefinch: look in state/api/apiclient.go14:49
=== urulama is now known as urulama-afk
natefinchrogpeppe1: blech14:53
rogpeppe1natefinch: what's the blech for?14:54
natefinchrogpeppe1: oh, sorry, misread what you said14:55
natefinchrogpeppe1: I can't really tell from the apiclient code if it's actually verifying the certs.  I see them being passed around, but I can't figure out where they're actually being checked.14:56
mgz_'s just done in the go stdlib, no?14:56
rogpeppe1natefinch: they're being checked by the websocket code14:56
rogpeppe1natefinch: and by the fact that we use a wss: address14:56
rogpeppe1natefinch: and we add a known root CA to the config14:56
natefinchahh, ok14:57
natefinchanyone know of a way to get gtalk inside gmail to make the desktop notification mail icon thingy turn blue?  Also, what is that thing called and how do I change its settings?  It doesn't seem to have any kind of menu on it.15:05
perrito666I dont think you can do that15:10
perrito666that is a part of unity iirc15:10
=== ericsnow is now known as ericsnow_switchi
=== ericsnow_switchi is now known as ericsnow__
mattywdoes anyone know how I could try to run a ppc build of core? I'm trying to take a look at https://bugs.launchpad.net/juju-core/+bug/136263616:29
mupBug #1362636: ppc64el compilation error <ci> <ppc64el> <regression> <juju-core:Triaged> <https://launchpad.net/bugs/1362636>16:29
bodie_my full test always times out on my pc16:35
bodie_is there some way to accelerate the tests, or increase the timeout?16:35
mattywarosales, ping?16:40
arosalesmattyw: hello16:40
=== psivaa is now known as psivaa-off
=== urulama-afk is now known as urulama
rogpeppe1natefinch: just had a brief glance through lumberjack.go18:42
rogpeppe1natefinch: looks great in general18:42
rogpeppe1natefinch: a few minor suggestions:18:43
rogpeppe1natefinch: if you specified MaxAge as a time.Duration you wouldn't need the comment and your code would be simpler, and (i think) the API a little more obvious18:43
rogpeppe1natefinch: similarly, if you specified the max size in int64 bytes, you wouldn't need to mock megabytes.18:44
rogpeppe1natefinch: i think that rather than returning an error if a write is too big, you'd be best off just writing it anyway18:45
natefinchrogpeppe1: v1 used bytes, but then in config files you have like size = 100000000 which is illegible and error prone... and no one cares about anything smaller than a megabyte anyway.18:45
rogpeppe1natefinch: i don't see any particular reason why you sort the result of oldLogFiles18:45
natefinchrogpeppe1: I really appreciate the feedback btw.18:45
natefinchrogpeppe1: sorting the old logfiles may be a leftover from the v1 code.  I'll look at it again18:45
natefinchrogpeppe1: I thought it was so I could determine which were the N newest and keep those18:46
rogpeppe1natefinch: you just scan directly through the list. you *could* break, i suppose, but that would seem like severe premature optimisation...18:46
natefinchrogpeppe1: they're likely returned in last modified order, which if someone modifies an old log file might mean its last modified date is newer than the contents.18:47
rogpeppe1natefinch: i can't see how the order affects anything18:48
rogpeppe1natefinch: oh, i see18:48
natefinchrogpeppe1: maxbackups .... right18:48
rogpeppe1natefinch: yeah18:48
rogpeppe1natefinch: perhaps it would be better to put the sort just before the code that relies on it18:49
rogpeppe1natefinch: rather than sorting in oldLogFiles18:49
natefinchrogpeppe1: yeah that's probably more clear18:49
rogpeppe1natefinch: then it's more obvious why the slicing logic works18:50
rogpeppe1natefinch: trivial thing: i'd put the [:l.MaxBackups] before the [l.MaxBackups], just because it's slightly nicer to slice the start before the end18:50
rogpeppe1natefinch: i'm not entirely sure about the conflation of actual Logger and the serialisability of the logger config18:53
rogpeppe1natefinch: i *think* i'd be happier leaving all the serialisation stuff out, and leaving it for higher layers18:53
natefinchrogpeppe1: I could see splitting out the config from the logger object itself, so people won't try to do wacky stuff like change values on the fly...18:56
rogpeppe1natefinch: the thing that seems a little hooky to me is the "well we'll preguess yaml and json because we know about those formats" thing18:57
natefinchrogpeppe1: yeah, that's true18:58
rogpeppe1natefinch: i'd just leave the config as vanilla, i think, and if people outside the package want to massage it, they're free to18:59
rogpeppe1natefinch: and specify age as time.Duration and size as bytes.18:59
rogpeppe1natefinch: leaving it up to higher layers to decide about sensible formatting if need be (i'd like to see 4g, 32m, for example to specify sizes, but that's really out of the domain of lumberjack)19:00
rogpeppe1natefinch: great package name, BTW19:00
rogpeppe1natefinch: but i do see the other side of the coin19:01
rogpeppe1too19:01
rogpeppe1natefinch: it forces higher layers to know about all the lumberjack config details19:01
natefinchyeah... I struggled with that19:02
rogpeppe1natefinch: but then again, they probably will anyway - we'd probably use juju config attributes to specify some of this stuff19:02
rogpeppe1natefinch: i *think* i tend towards the "not this package's concern" p.o.v.19:03
natefinchrogpeppe1: yeah, easy deserialization definitely affected the API, that's why it's megabytes and days, not bytes and time.Duration19:03
natefinchrogpeppe1: I think you're right, that it shouldn't be this package's concern19:04
natefinchrogpeppe1: Thanks again for the review.  It's a big help having fresh eyes on it.19:06
rogpeppe1natefinch: np. it's a nice package, thanks.19:08
katcohey need a quick opinion: i'm looking to document the new harvest mode behavior, and also the update/upgrade settings. are those better in their own individual documents, or embedded in another file (architectural-overview.txt)?19:09
katcooops nevermind, just reviewed my notes. looks like juju/docs is the place to be19:23
marcoceppiwhat's the URL to download the zip from charmstore?19:37
marcoceppihaving a hell of a time tracking it down int he code19:38
arosalesmattyw around?20:06
arosalesI think alexisb got the power machine worked out20:19
arosalesre mattyw20:20
alexisbcmars, you have what you need with the power box?20:21
alexisbarosales, mattyw is probably gone for the day20:21
arosalesalexisb: ack20:25
abentleynatefinch: it says On-call reviewer: see calendar.  What calendar?20:47
natefinchabentley: that's the joke, which calendar keeps changing.... ask thumper, he's redoing it as of this morning.  I think it'll be on the juju core team calendar... which I doubt most people can see.20:56
abentleynatefinch: Could I  ask you do do a review?  It's verra short.20:57
natefinchabentley: I have 3 minutes, so we'll see how short20:57
abentleyhttps://github.com/juju/juju/pull/62920:58
natefinch:)20:58
natefinchabentley: LGTM'd20:58
abentleynatefinch: TY.20:58
thumperwaigani: https://github.com/juju/juju/pull/63121:36
waiganithumper: https://github.com/juju/juju/pull/63221:36
waigani;)21:36
waiganithumper: good catch, I didn't write that test21:38
thumperI had it fail on me this morning21:38
waiganiI also didn't know you could use the || in an assert like that - makes sense21:40
waiganithumper: CI blocker21:40
cmarsthumper, mattyw and I were unable to land anything today, there's a ppc64el build error blocking21:40
cmarsi got access to a ppc64 and about to try to reproduce21:40
cmarsis davecheney around today?21:41
thumpercmars: he will be later21:41
thumpercmars: he normally starts in just over an hour21:41
cmarsok cool21:41
thumpercmars: you can do it locally21:43
thumpercmars: I have reproduced the compiler error on amd6421:43
thumperstate/apiserver/deployer$ go test -compiler gccgo21:44
cmarsthumper, ah, so its a general gccgo issue21:44
thumperyep21:44
thumperunlikely to be power specific21:44
thumpershould find out when it last passed, and what the change was21:45
cmarsgit bisect might be helpful there21:45
thumperdamn, how to I get git log to show me the diff21:49
thumperfor revisions21:49
cmarsgitk might be best to browse that21:49
cmarsugly but useful21:49
perrito666yup or gitg, which is slightly less ugly but also less useful21:50
thumperso git log won't show me a diff for the revision?21:52
perrito666i dont think so, it should just tell you the commit message and some other metadata21:52
perrito666thumper: what exactly are you trying to do?21:53
ericsnowI've found qgit to be a lot nicer21:53
thumperI want to look at the files changed for every commit21:53
thumperI know what I'm looking for (ish), I just want to see the commits21:54
perrito666thumper: apparently -p does that21:54
thumpernope21:54
thumperah...21:54
thumperhang on21:54
perrito666--stat21:55
perrito666that seems to produce a very useful output21:55
perrito666I use that kind of ouput for pull and it is actually very informative21:56
cmarslooks like it is passing now. something must have landed to fix?21:57
thumpercmars: that is the 1.20 branch21:57
cmarsoh21:57
perrito666cmars: yes, that is certainly very confusing21:58
cmarsgood grief, is there a way to see more build history for http://juju-ci.vapour.ws:8080/job/run-unit-tests-trusty-ppc64el/21:59
cmarsi know where it is on the filesystem... grr22:00
perrito666cmars: jenkins is not actually finding it22:00
perrito666I tried going to a previous job by hand and I get 40422:00
cmarshmm22:01
thumperhmm...22:01
thumperok, I have a commit I want to test22:01
thumperhow do I revert the tree to a particular commit?22:01
perrito666thumper: you can use co or revert22:02
perrito666sorry s/co/checkout22:02
cmarsnot revert22:03
* thumper nods22:03
perrito666aghh effing git commands22:04
perrito666thumper: apologies I meant to say reset22:04
perrito666which is like svn revert22:04
=== jheroux is now known as jheroux_away
perrito666and those always get mixed in my head22:04
thumperwhy is git show <rev> for a commit not showing me the diff?22:06
thumper--stat shows lots of files22:08
thumperbut no diff22:08
thumperok, definitely have the error22:08
perrito666thumper: is a merge22:08
thumperyes22:08
perrito666thumper: you dont get diff on merges22:09
thumperI want to see the diff as a result of the merge22:09
thumperyes you do...22:09
thumpergrr22:09
thumperdumb git22:09
perrito666thumper: one of the lines from show say merge blah and bleh22:09
perrito666git diff those two22:10
perrito666thumper: let me correct myself, you should, git sucks22:10
cmarsthumper, i'm running an automatic bisect, will let you know how it goes22:10
thumperdoing that now22:10
thumpercmars: I have the revision22:10
thumperlooking at the change22:10
cmarsoh cool22:10
thumper3ebb3a1edbccd8e6c4211b2f5b9e1fd6d518d82a22:10
perrito666thumper: I presume that merge in internal terms for git adds actual git nodes doesnt do an actual merge of diffs22:10
* perrito666 never bothered to actually check how git internally works22:11
thumperthe problem is that the code is perfectly fine, just triggering a bug in gccgo22:13
* thumper sighs22:13
thumperhmm, ok not that bit22:17
thumperI have a bad feeling about this22:18
thumperhahaha22:20
thumperomg22:20
* thumper grunts22:20
waiganiwell don't leave us hanging...22:21
alexisbwaigani, I was thinking the same thing22:21
* perrito666 eats popcorn and reads22:22
thumperhere is the code that was removed:22:22
thumper-                               // TODO(dfc) comparing the two interfaces caused a compiler crash with22:22
thumper-                               // gcc version 4.9.0 (Ubuntu 4.9.0-7ubuntu1). Work around the issue22:22
thumper-                               // by comparing by string value.22:22
thumper-                               if names.NewMachineTag(parentId).String() == authEntityTag {22:22
thumperit was replaced by a line that compared two interfaces22:22
thumperwell22:22
thumperone interface and one type22:22
* thumper pokes22:22
waiganilol22:22
perrito666I remember that one22:23
cmarsthumper, bisect tells me the breaking change is 41e8f0a7bf33d3b22a7ccf0949e988c834c4eeac22:23
cmarsand i confirm this with gccgo on 41e8f0a7bf33d3b22a7ccf0949e988c834c4eeac vs 41e8f0a7bf33d3b22a7ccf0949e988c834c4eeac~122:24
thumpercmars: didn't you trust me?22:24
cmarsi did, but i wanted to see my bisect work :)22:24
cmarstrust but verify? :)22:24
* perrito666 never saw "no" said so elegantly22:25
thumpercmars: ok, I'll give you that22:25
cmarsfunny thing is, it has a conditional *very* similar to the one you pasted up there22:26
thumperoh this is so fucked22:26
cmarsfor some value of 'this'22:26
thumperok I have a fix22:28
* thumper runs all apiserver tests with gccgo22:29
thumpergccgo needs work22:30
alexisbthumper, that is why we are investing in golang22:30
* thumper nods22:31
thumperI was just about to say something about that22:31
thumperbeautiful day here today, want to take the dog for a walk around ross creek at lunch time22:31
* cmars misses beautiful dunedin now. 100F outside and all the grass is dead22:32
thumperit is about ...22:32
* thumper calculates22:32
thumper50°F22:32
perrito666 now that is something useful we can teach mup22:32
thumperso quite cool22:32
cmarsi'd take it :)22:32
perrito666cmars: interesting we had a couple of days like that a few days ago22:33
perrito666the only issue is that we are in winter22:34
cmarsperrito666, aw man, that's not fair at all. sounds like our winters22:34
perrito666but was an interesting change, it is quite hard to actually store summer clotes in winter22:34
thumpercmars, perrito666: https://github.com/juju/juju/pull/63322:35
cmarsfixing the compiler would be best, but i wonder, if we could walk the AST to look for this bug ahead of time, to prevent this from breaking the build22:35
thumperconfirmed passes tests locally with gc and gccgo22:35
thumperfor apiserver at least22:35
cmarsit's comparing two interfaces that triggers the compiler bug?22:35
thumperhang on22:36
thumperI think I can simplify22:36
thumpercmars: no, it appears to be one interface, and one concrete type22:36
* thumper pushing22:40
thumpercmars: https://github.com/juju/juju/pull/633/files22:41
perrito666thumper: isnt tag == authEntityTag  blowing?22:42
thumperperrito666: no, because they are both interfaces22:42
thumperit appears to be when one is a concrete type, and one is an interface22:43
thumperwhere the concrete type implements the interface22:43
thumpernot the pointer to the concrete type22:43
perrito666that is a good thing to mail to the list for people to keep an eye on it22:43
thumperagreed22:43
perrito666btw, isnt there a bug filed for that in gccgo? perhaps a reference to it in the comments would be useful so future maintainers can know when to remove the workaround22:44
cmarsok, let me pull and restart the tests22:44
* thumper shrugs22:49
thumperperrito666: I'll ask dave in the standup22:49
thumpercmars: sorry this blocked you and matty so much today22:50
cmarsthumper, no problem. it's a good reminder to check gccgo locally. although, it's nice to have access to power8 now, in case we need it in the future22:52
alexisbthumper, I pointed wallyworld to a spreadsheet today that says you have access to multiple power vms22:52
alexisbbut there was not access info22:52
alexisbit would be nice to share the info with the whole team22:53
alexisbhttps://docs.google.com/a/canonical.com/spreadsheets/d/1_y3BM1Fcxmc_niIMrNvqtrzOl23vrX1DdeoQQqTejbg/edit?usp=sharing22:53
thumperI've forgotten mostly how to get there ... :)22:53
thumpersure...22:53
thumperhowever mostly gccgo problems can be caught locally22:53
alexisbthat way we can have power access in US timezones when there is an issue22:54
thumperpeople just don't know how22:54
alexisbwell education would help to :)22:54
thumperI included that in my email to the list22:54
alexisbcool, thanks22:54
alexisbcmars, thank you for driving help with that bug today!22:55
mwhudsonthumper: is there a gccgo bug report for that?  want me to file one?22:57
thumpercmars: I'll check with dave if there is a bug fix22:57
thumpermwhudson: oh hai22:57
thumpermwhudson: I'll see if dave has done one already first22:57
mwhudsonok22:57
thumperwould be good to get a minimal test case22:57
thumperwhich I think I have a good grip on now22:58
mwhudsonyeah, that was going to be my next question :)22:58
thumperwaigani: with you in a sec23:00
thumperwaigani: just testing this bug23:00
waiganithumper: okay, I'll just keep the hangout open in bg23:00
waiganithumper: nice work on getting the bug!23:01
waiganithumper: dave is here23:03
mwhudsonthumper: i don't see a fix flicking through gofrontend commits23:10
thumperrogpeppe1: your suggestion works, and is less intrusive, ta23:23
rogpeppe1thumper: cool, np23:24
thumperrogpeppe1: we are looking at creating a simple reproduction of the error23:24
thumperseems to be only with nested funcs and closure issues23:24
thumperso... not simple23:24
rogpeppe1thumper: ah23:24
waiganiwhat are the system-y tests - mentioned in the team lead minutes?23:25
* thumper takes the dog for a walk23:59
thumperbbl23:59

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