/srv/irclogs.ubuntu.com/2014/05/30/#juju-dev.txt

waiganithumper: ping01:25
waiganithumper: emailed you my question01:29
thumperok01:33
thumperwaigani: you need to cast it to what you know it is01:34
waiganioh, so simple01:34
wallyworldmramm: can i get editing perms for that doco?01:43
axwwallyworld: what is the card "mass provider picks maas name using placement" ?02:18
axwwallyworld: I already implemented maas-name placement02:18
axwis there something missing?02:19
wallyworldaxw: i got that from the next steps on a previous mp02:19
wallyworldmaybe it's been done02:19
wallyworldall those 4 cards are from the same source02:19
axwprobably talking about supporting it in "juju deploy --to" and "juju add-unit --to"02:20
wallyworldyeah02:20
axwI spoke with William at Vegas about placement, and he reckoned we should just stick with machine-id in those commands for now02:20
wallyworldok02:21
wallyworldfeel free to update the cards as necessary02:21
axwsupporting placement in those is a little trickier02:21
axwok02:21
wallyworldi just wanted to capture out of the mp the next steps02:21
axwwallyworld: going o delete the maas-name one, since that's done. anything remaining is provider-independent02:23
wallyworldsounds good02:23
axwI'm going to prod my AZ changes along at the same time as this address stuff02:24
wallyworldok02:26
* thumper has hit friday afternoon itis03:12
* thumper makes a sad face03:57
thumperugh...03:57
bodie_on that note, if anyone feels like having a look at this to see why $schema values are causing nil exceptions in gojsonschema, input would be welcome04:04
bodie_https://codereview.appspot.com/9454004404:04
bodie_I'll be looking at it tomorrow04:04
bodie_going to bed in a minute here04:04
=== vladk|offline is now known as vladk
jcw4Anyone wanna chat about logging / mongo and the state package?05:22
bodie_https://codereview.appspot.com/94540044 fwereade mgz05:22
jcw4I'm working on adding a 'results' collection for Actions, and if I'm reading it right the 'log' collection on watchers is in a separate mongo db from the state db?05:23
jcw4okay.. I see now there are 3 db's: juju, presence, and admin05:31
jcw4and I now see that the watcher logs are on the juju db05:48
=== Ursinha-afk is now known as Ursinha
=== vladk is now known as vladk|offline
wallyworldaxw: i have to go to soccer so won't get to look at your branch before i got, i'll look when i get back later if it's still unreviewed06:51
axwwallyworld: thanks06:52
axwno particular rush06:52
axwI'm going to work on manual AZ support now06:52
wallyworldok06:56
wallyworldyou might be EOD before I get back so have a good long weekend :-)06:56
axwthanks wallyworld . enjoy soccer07:03
=== Ursinha is now known as Ursinha-afk
fwereadejcw4, if you're still around, I can talk about it: I suspect if you're needing to look at the log collection you're doing it wrong somehow07:11
fwereadeaxw, just responding to your review07:11
axwfwereade: thanks07:12
fwereadebodie_, I might not get to that in time for this evening, hopefully mgz will though07:13
=== Ursinha-afk is now known as Ursinha
fwereadeaxw, so, I wrote you an essay: https://codereview.appspot.com/102860043/07:36
fwereademgz, are you around? in dimitern's absence I'd like what clarity you can provider on container addresses -- see my comment in that review ^07:37
axwfwereade: thanks. when I said "relation unit in state", I really meant the scope doc (but that doesn't invalidate anything)07:38
fwereadeaxw, I don't think the unit wants to watch its own scope/settings docs though07:39
fwereadeaxw, it wants to watch something else, and the settings only get updated according to the unit's having responded to those changes, detected elsewhere07:39
fwereadeaxw, anyway, I'm going to make some coffee and have a ciggie; ping me when you're ready to talk and I'll be there soon07:40
axwfwereade: thanks, I'll just digest this first07:41
axwfwereade: cool, it all makes sense. I kinda came to the same conclusion, after assuming that we could allow the RU to enter scope first. you mentioned the addresses-watching worker the other day, but it didn't click at the time07:44
=== lazyPower is now known as lazypower-travel
fwereadeaxw, also I suspect we already have the seed of that worker underway, because the networker is going to be responsible for setting up the machine's networks in the first place; having it update the machine with its addresses seems entirely natural to me07:55
* axw nods07:55
fwereadeaxw, btw, is there anything new for review in that or can I wip it?07:58
axwfwereade: nope, it can go to WIP07:58
fwereadeaxw, (btw, if you want to propose that driveby cleanup on its own I would look favourably on such an endeavour :))07:58
axwcertainly07:59
axwfwereade: not sure what else there is to discuss, but I am free now if you want to chat still08:00
fwereadeaxw, the main thing that's on my mind is whether we can and/or should combine the relation model with the exposure model, and if so what it'd take to do so08:01
fwereadeaxw, but that's not directly relevant to what you're doing08:01
axwfwereade: frankly I don't think I know enough to have any useful input on that right now08:01
axwmaybe once I've gotten through the initial bits I will08:02
fwereadeaxw, yeah, nobody does really tbh, I should probably find a cuddly toy and explain my thoughts to them and see if I still think they're a good idea afterwards08:03
axw;)08:03
voidspaceMorning all08:13
=== vladk|offline is now known as vladk
axwmorning void08:20
axwvoidspace rather08:20
* axw looks into the void08:20
mgzfwereade: I'll take a look08:24
voidspaceaxw: you know what they say - the void looks back08:28
axwheh :)08:31
fwereadeaxw, https://codereview.appspot.com/99660047/ LGTM but might benefit from a gentle massage to move some of the functionality to slightly more natural-feeling places08:51
fwereadeaxw, let me know if the review doesn't give enough direction08:51
fwereadewallyworld, hey, are you around? I wanted to talk about md5 vs sha25608:52
axwfwereade: thanks, sounds fine08:53
axwfwereade: my predilection for methods is to avoid polluting the namespace, but I understand the desire to keep methods near their types too08:54
fwereadeaxw, one thing that floats around my mind is the idea that the functionality that depends entirely on the exposed interfaces of exposed types should probably be kept separate from the stuff that needs access to the internals09:09
axwfwereade: yeah, that makes sense09:09
fwereadeaxw, it's tricky especially in go, though, because if you want to use them in-package (which you very often do) you can't move them out (lest import cycles) and therefore you can't actually enforce those boundaries09:09
fwereadeaxw, but free funcs in their own files are probably the closest we have09:10
fwereadeaxw, (or ofc you can explode the package into a *load* of smaller packages but that's often a dauntingly big job even for a small package, and with something like state it's devastatingly hard09:11
fwereade)09:11
axwyeah, I'll just go with free funcs ;)09:12
niemeyer_<mikespook> `Added charm "cs:precise/ntpmaster-3" to the environment.10:01
niemeyer_<mikespook> ERROR cannot assign unit "ntpmaster/0" to machine: cannot assign unit "ntpmaster/0" to new machine or container: cannot assign unit "ntpmaster/0" to new machine: use "juju add-machine ssh:[user@]<host>" to provision machines`10:01
niemeyer_That's a pretty bad error message10:01
=== niemeyer_ is now known as niemeyer
fwereadeniemeyer, it is, isn't it :/ do we have a bug fior it?10:09
fwereadeniemeyer, we definitely ought to catch that case earlier, regardless -- axw, are you still around?10:10
niemeyerfwereade: That seems rooted on how these new error helper libraries work.. I bet this is not the only one10:10
fwereadeniemeyer, it's rooted in the old way of doing things, actually, it's a balance it's been difficult to maintain across the board10:11
fwereadeniemeyer, I have pretty high hopes that they'll help us present clearer error messages to users but record the context usefully as well10:12
fwereadeniemeyer, nobody ever said that too much annotation is not a problem when it leaks up to the user10:12
fwereadedimitern, would you take a look at https://codereview.appspot.com/102860043/ and contribute your understanding of how we'll be handling the container-address/machine-address issues?10:13
niemeyerfwereade: The problem is not just leaking to the user.. this is adding the same annotation repeatedly, which isn't helpful to developers either10:13
fwereadeniemeyer, quite -- it's a failure to annotate helpfully, which is orthogonal to the mechanism we use for annotation10:14
niemeyerfwereade: It might be orthogonal, or it might not10:14
niemeyerfwereade: If you stipulate that every level should annotate, this encourages developers to add boilerplate to fill up the form10:15
fwereadeniemeyer, and fwiw it's not *quite* the same annotation each time -- it does give you a trail of breadcrumbs that helps me as a developer see how we came to be in that situation10:15
fwereadeniemeyer, this is not a defence of the UX, or of the particular sequence of messages10:16
fwereadeniemeyer, on a separate note, I was thinking I would grab a lift from cath when she comes into town this pm, so I could come and see you -- do you have any time this pm?10:21
fwereadeniemeyer, and this evening I was thinking of going into floriana (easy frequent bus ride from sliema) for http://www.whatson.com.mt/en/home/events/9093/ghanafest-2014.htm?fb_action_ids=10152073938286851&fb_action_types=og.likes&fb_ref=.U4gRG8XT_7Q.like (if you or anyone else might be interested)10:22
fwereadeniemeyer, I have no idea if it's any good10:22
niemeyerfwereade: Oh, that looks nice10:23
niemeyerfwereade: Yeah, pm is mostly free, besides a few events10:23
fwereadeniemeyer, ok, I'll probably get to the meridien a bit after 310:27
niemeyerfwereade: Cool10:29
wwitzel3fwereade: I was wondering if you would pair with me on a review at some point today.  I find it beneficial to do a review, thinking out loud, and then watch someone else do the same review.10:35
dimiternfwereade, looking10:36
fwereadewwitzel3, it would be a pleasure, we should do it in the next 2 hours or so, but not right now I think, I need a bit of a lunch break10:37
wwitzel3fwereade: at your convenience, just ping me10:38
voidspacewwitzel3: morning10:38
fwereadewwitzel3, it would be great if you would take a pre-look at https://codereview.appspot.com/92610043/ https://codereview.appspot.com/100810045/ https://codereview.appspot.com/94540044/ in the meantime -- and if you can come up with comments please go ahead and post them10:39
wwitzel3voidspace: morning :) and any break on that precise regression?10:39
voidspacewwitzel3: nope, although I have one indication it may just be a timing issue - I wonder if sleeping and retrying would help :-)10:39
fwereadewwitzel3, regardless it will be good if you have a bit of context loaded for them before we begin10:39
voidspacewwitzel3: http://efreedom.net/Question/1-9992535/Azure-MongoDB-Replica-Sets-Initialization-Error-Localoplogrs-Empty10:39
voidspaceThere was no problem at all. This exception is normal behavior. Just need to wait couple of seconds and replica set will be initialized.10:40
voidspace- See more at: http://efreedom.net/Question/1-9992535/Azure-MongoDB-Replica-Sets-Initialization-Error-Localoplogrs-Empty#sthash.sbXHTaFd.dpuf10:40
voidspaceHah, original reference for that: http://stackoverflow.com/questions/9992535/azure-mongodb-replica-sets-initialization-error-local-oplog-rs-is-not-empty10:40
wwitzel3fwereade: indeed10:40
voidspaceor maybe even that the replica set is already initialized10:41
voidspacewe see many logging lines of the same failure - maybe we're trying to initiate multiple times10:41
dimiternTheMue, vladk, fwereade, standup?10:45
voidspaceI have to nip out for an early lunch10:48
voidspacebiab10:48
=== Ursinha is now known as Ursinha-afk
=== vladk is now known as vladk|offline
wallyworldfwereade: i am now11:19
wallyworldi used md5 cause it was native in gridfs, but can change it11:20
=== Ursinha-afk is now known as Ursinha
wallyworldfwereade: just ping me if you want to chat11:33
perrito666 hi ppl11:41
=== vladk|offline is now known as vladk
natefinchmorning11:42
hazmatg'morning11:47
fwereadewallyworld, bugger, my schedule is becoming problematic11:52
fwereadewallyworld, did that review make any sense to you?11:52
fwereadewallyworld, I fear it was a bit light on direction11:52
fwereadewallyworld, mainly I really want us to get the existing storage api in place against gridfs before we try to build in the content-addressability stuff11:53
fwereadewallyworld, or at least deduplication, sorry, my brain is firing on relatively few cylinders today11:54
wallyworldfwereade: the gridfs storage is already impelemnted11:56
wallyworldthis is the next step11:56
wallyworldi also considered pulling out a separate txn type base class but wanted to wait till see how it evolved11:57
wallyworldthere's a few more brnaches to go11:57
wallyworldthe next step will be a ManagedResource service which uses ResourceCatalog and ResourceStorage to provide an exported, authenticated storage manager which handles dups etc11:59
wallyworldwe probably need to talk face-face. if you get a break in your schedule, ping me or we can do it later, whatever suits12:00
sinzuivoidspace, I am rebooting juju-ci-vapour.ws; my last desperate effort to address the lxc deploy issue12:56
* sinzui waits for jenkins to return12:58
perrito666sinzui: still not able to reproduce that somewhere else?12:59
sinzuiperrito666, I have tried else where, but I played over revisions of juju and the test passes.13:00
* sinzui rebuilds after upgrade and restart13:01
rogpeppeso... import aliases: import (coretesting "launchpad.net/juju-core/testing"; jujutesting "launchpad.net/juju-core/juju/testing"; ???? "github.com/juju/testing")13:33
rogpeppeoh yeah, i missed: stdtesting "testing"13:34
dimiternand apiservertesting as well :P13:34
rogpeppeany suggestions for github.com/juju/testing. i'm currently using gitjujutesting.13:34
wwitzel3is the github package specific to juju or just living in that org namespace?13:35
rogpeppewwitzel3: it's under juju control, but it's not specific to -core13:35
rogpeppewwitzel3: i believe that juju-core/testing will continue to exist13:36
rogpeppeha, envtesting, toolstesting13:38
wwitzel3rogpeppe: I haven't explored, but I've always wondered the difference between juju-core/testing and juju-core/juju/testing13:38
rogpeppewwitzel3: the former can be used by lower level packages - it doesn't import state13:38
wwitzel3rogpeppe: ahh, ok13:38
wwitzel3ugh yuck13:39
wwitzel3rogpeppe: no matter what you do, you won't like it13:40
wwitzel3rogpeppe: does that help? lol13:40
rogpeppewwitzel3: lol13:41
wwitzel3I guess my initial reaction was to name the gh/juju/testing package something else13:41
wwitzel3rogpeppe: also I really hate that we alias the go stdlib testing package as stdtesting .. if anything should just be testing, it should be the stdlib package, but I digress.13:43
wwitzel3rogpeppe: I guess gitjujutesting .. it will only make your eyes bleed occasionally13:43
wwitzel3if we just stopped writing tests this wouldn't be a problem ;D13:44
wwitzel3rogpeppe: you could name it something like .. yatp13:47
wwitzel3moartesting13:47
jcw4fwereade: wrt. the log collection, I was just trying to understand where actionResults would go.  It seems clear now that it would be a collection in the juju db in mongo13:52
perrito666hey, perhaps some of you might find this useful, patches are welcome, it is a pretty quick hack https://github.com/perrito666/golazytools/blob/master/gogrep13:53
jcw4and probably held in the state struct like actions too13:53
natefinchwwitzel3, voidspace: standup?14:02
wwitzel3natefinch: yep, thanks14:02
fwereadejcw4, yeah, I think it's just another collection, like actions14:08
bodie_morning all14:08
fwereadebodie_, heyhey14:08
jcw4fwereade: yeah.  I started looking for logs 'cause it was the closest analog I could think of, and noticed that the watchers had their own mgo.Collection on them, and that's what led me astray14:09
jcw4hi bodie14:09
fwereadejcw4, yeah, the logs are really at a level below state14:09
jcw4fwereade: I think I'm clear on where the collection should be now, but I'm not sure how much detail to put in the results... timestamp, unit?, output, error?, running time? etc. etc.14:11
mgzjcw4: good questions14:12
mgzall of htat sounds good, I'm not sure on the form of the unit link though14:14
jcw4mgz: I suppose we can start light just action name, unit id?, and output, and then add more detail later as needed?14:14
jcw4mgz: yeah, globalKey? u.doc.Name? etc.14:14
jcw4mgz: encoded in _id like the actions collection14:14
bodie_okay, I'm going to see about getting the next steps plugged in, I guess an Actions() method on the Charm interface14:19
jcw4bodie_: sounds good to me14:20
bodie_anyone have a few spare cycles to give me a quick LGTM on https://codereview.appspot.com/94540044 ?14:21
bodie_I think we've just about beaten out every possible flaw there, heh14:21
bodie_unless fwereade has input about whether to move the yaml back to global scope14:21
bodie_or to a file?14:21
mgzbodie_: I wouldn't go *that* far :)14:21
bodie_lol14:22
jcw4"that far" being "beaten out every possible flaw"?14:22
jcw4lol14:22
mgz:D14:22
bodie_I'm more than willing to go back over it with an industrial-strength iron, but I'd personally really like to be out of that file14:23
fwereadewwitzel3, did you get a chance to look at that one? ^^14:23
wwitzel3fwereade: that is the one I was just pulling up now, I just did them in the order you linked them and that one happened to be last :)14:24
mgzbodie_: lgtm, land it. go to the launchpad page, set the commit message, and mark approved14:24
bodie_aye-aye :)14:24
fwereademgz, you might need to land it for him?14:24
mgzfwereade: I may need to toggle the approved14:24
mgzhe can set the commit message14:24
fwereadewwitzel3, it's worth casting an eye over it anyway (but this is not a blocker on landing it)14:25
fwereademgz, +114:25
mgz...I guess making him do it isn't that useful as we're changing all this, but hey14:25
wwitzel3fwereade: sure, doing that now14:25
vladkdimitern: machine-1-lxc-0 can't authorize machine-1/lxc/0, is it a bug?14:26
jcw4mgz: it got pushed back at least once... maybe again...14:27
wwitzel3fwereade: the first one I reviewed, add user info to juju switch, was fairly heavily reviewed, so I didn't have any comments on it. But I did read through the progression of the code and all the comments.14:27
fwereadewwitzel3, I'm afraid I'm disappearing for half an hour to regather my sanity, because today has somehow been stupidly relentless, and you have been very nice about my inattention so I propose to trespass upon it further :/14:27
mgzjcw4: I'll get yelled at if it does14:27
jcw4mgz: lol14:28
fwereadevladk, machine-1/lxc/0 is not a thing, is it?14:28
fwereadevladk, it's a mix of tag and id syntax14:28
fwereadevladk, machine-1-lxc-0 is the tag, 1/lxc/0 is the id14:28
wwitzel3fwereade: haha, no worries, I'm here for hours yet :) enjoy your siesta14:28
vladkfwereade: thanks14:29
fwereadevladk, (or possibly my brain has turned to cheese, double-check in the juju-core/names package)14:29
wwitzel3head cheese14:29
perrito666uhh, cheese14:30
* perrito666 is near lunchtime14:30
perrito666I see there is no much consistency on the tests about jc.IsTrue vs gc.Equals, true) sounds to me like jc.IsTrue is the best way to express the assertion, is there any reason not to use it?14:32
rogpeppeperrito666: nope14:33
rogpeppeperrito666: the latter is what we had to use before jc.IsTrue14:33
perrito666ah, I see14:33
rogpeppeperrito666: (personally, i think gc.Equals expresses the logic perfectly, but i think some people begrudged the extra characters)14:34
rogpeppefrankban, anyone else: review appreciated: https://github.com/juju/testing/pull/714:34
bodie_btw mgz, I think the nil exception was coming from a logical error in my tests14:34
bodie_I caught that thanks to your suggestion to test the one edge bit14:34
bodie_so, thanks :)14:35
mgz:D14:35
bodie_how detailed / verbose do we like our commit messages to be?14:35
rogpeppefrankban: it's trivial BTW14:35
rogpeppebodie_: i generally prefix the commit message with the package name(s) where reasonable, and a single line that describes the change to some degree14:36
rogpeppebodie_: the important one is the MP message, which turns into the eventual trunk commit msg14:36
bodie_I see, thanks14:37
frankbanrogpeppe: done14:37
rogpeppefrankban: thanks14:37
wwitzel3rogpeppe: why do you have to skip C (cgo)? for it to work.14:38
rogpeppewwitzel3: because build.Default.Import fails for cgo's import "C"14:38
rogpeppewwitzel3: and the net package uses cgo14:38
rogpeppewwitzel3: "C" is a fake package - it doesn't actually exist anywhere14:39
wwitzel3rogpeppe: reading about that now, it is essentially a marker for C preamble.14:39
rogpeppewwitzel3: yeah14:40
rogpeppewwitzel3: and C names are inside its name space14:40
wwitzel3rogpeppe: yep, makes sense14:40
bodie_rogpeppe, fwereade, mgz do you think I need to amend the code with a comment for the spec the Actions YAML is expected to take, or is that more of a docs/ addition?14:59
bodie_I'm just combing the last kinks out of the MP message14:59
rogpeppebodie_: i think that a doc comment is always good14:59
rogpeppebodie_: for anyone trying to parse charms from go and using the package, that's all they'll see15:00
rogpeppebodie_: although you could add a link to the spec instead15:00
bodie_hmm15:00
bodie_okay15:00
bodie_give me a few minutes to land something appropriate, I'm just putting my kid down for a nap15:00
bodie_then hopefully we can finally get this thing in15:00
mgzbodie_: sorry, can we land your branch yet?15:04
rogpeppereview appreciated of this: https://codereview.appspot.com/99670045/15:07
rogpeppepretty trivial stuff - mostly just code movement15:07
voidspacenatefinch: wwitzel3: perrito666: hey guys, sorry I missed standup15:12
voidspacenatefinch: wwitzel3: perrito666: got stuck in traffic and have been out a stupidly long time15:12
voidspacenatefinch: I assume you didn't make any progress on the precise CI problem yesterday?15:13
bodie_mgz, I'd like to basically copy the MR message into a comment for the Actions type, just give me a minute here15:13
bodie_sorry for the delay15:13
voidspacenatefinch: from "further research" this morning I have a theory - going looking in the code to see if it could be correct15:13
bodie_mgz, do I need to re-propose?15:15
bodie_(I know I'd want this change as a user of the type)15:16
natefinchvoidspace: yeah, no, sorry, no progress15:16
mgzbodie_: nope15:16
bodie_mkay15:17
bodie_okay, it says I need review since I pushed a change, even though it's a simple one...15:19
bodie_just a richer comment on the type15:20
bodie_so I guess that means I need to lbox propose15:20
bodie_I promise the next iteration won't have such a low signal to noise ratio :/15:21
fwereadebodie_, you just need to refresh the launchpad page and approve on the frsh page, I think15:22
bodie_alrighty15:22
bodie_fwereade, I'm not seeing the approved button any longer15:26
bodie_can I just get a quick approval here... https://codereview.appspot.com/9454004415:26
bodie_someone/anyone?  All I added was a couple of comments to types that needed to be more informative15:37
bodie_https://codereview.appspot.com/94540044/15:37
bodie_fwereade, mgz, natefinch, rogpeppe, just want to land this thing already, sorry to pester but apparently the comments I added to the code mean it needs a fresh review15:38
bodie_just so it's on your radar15:38
mgzbodie_: landing15:38
bodie_thank ye sir15:39
bodie_was that for merge 219926?15:46
mgzwhy does their url for v4 have /latest/ rather than /v4/ or something >_<15:46
mgzbodie_: I poked the commit mesage a little and flagged for the bot15:47
bodie_oy...   I thought I linked the v4 draft.  bleh15:47
bodie_yeah, that fact was driving me nuts15:47
mgzoh, poo, I need to go pull in the deps15:47
bodie_I think I made up for it by linking the v4 _schema_ rather than the draft since I couldn't find a copy of the v4 draft15:48
bodie_technically, JSON-Schema lets you include a $schema key to define the schema to use -- however, I noticed the "latest", i.e. v4 draft, is from last august15:48
bodie_I don't even know if they landed a final version, or if it fell out of date, or what's up with all that15:48
mgzheh `fail`... I should totally make that tyop an alais for `tail -f`15:50
mgzbodie_: bot is chewing on it15:50
jcw4mgz lol15:50
mgzbodie_: landed16:04
jcw4woot16:05
mgzeveryone: you'll want to pull trunk and get the new gojsonschema related dependencies16:05
bodie_pilgrim's progress16:05
=== Ursinha is now known as Ursinha-afk
=== vladk is now known as vladk|offline
=== vladk|offline is now known as vladk
=== vladk is now known as vladk|offline
bodie_fwereade, anyone else, where do you think the Actions params validator should go?  since Actions is a map belonging to Charm, which needs to be loaded by gojsonschema in order to validate a Params map, it seems really sensible to me to implement that as a member of the Charm interface17:07
bodie_something like func (c *Charm) Validate(map[string]interface{}) error { ... }17:08
bodie_however, I could also see that being the responsibility of a method in State17:08
jcw4bodie_: I don't think Charms or State should know about Action parameter validation (directly), I would expect the Validate to be on an ActionDefinition type (not sure what we'll call that type)17:10
jcw4bodie_: in the example you give... How does Charm know *which* action you're validating?17:10
bodie_sorry, one moment, helping the girls up17:12
* jcw4 wil brb17:13
bodie_maybe we could use an Action interface to tie it all together?17:18
bodie_like Charm17:18
bodie_that probably isn't what we need since Charm has a different meaning for Actions then State will have17:19
bodie_than*17:19
voidspacenatefinch: I'm approaching EOD, and it still looks like we're no nearer a solution17:22
voidspacenatefinch: although interestingly it looks like the specific failure has changed - we're now seeing "Closed explicitly" as the error message17:22
voidspacenatefinch: we need to time bound how long we're going to continue looking at this I think17:23
sinzuinatefinch, voidspace : do you have a minute to review https://codereview.appspot.com/10088004617:23
voidspacesinzui: looking17:24
voidspacethat was tricky :-)17:24
voidspacenatefinch: although this reference implies that the call to replSetInitiate can error, but be successful17:29
voidspacehttp://stackoverflow.com/questions/9992535/azure-mongodb-replica-sets-initialization-error-local-oplog-rs-is-not-empty17:29
voidspaceThere was no problem at all. This exception is normal behavior. Just need to wait couple of seconds and replica set will be initialized.17:29
voidspaceInside Initiate we wait 1 second (well, ten sleeps of 100ms)17:29
voidspacewe could wait a bit longer (up to a few seconds) whilst polling for the replica set status17:31
voidspaceit could be a timing issue (slow machine) which is why it only happens on the build machine17:31
natefinchvoidspace: back17:32
natefinchvoidspace: hmm slow machine sounds possible17:33
voidspacenatefinch: hey, hi - only a few lines of scrollback17:33
voidspacenatefinch: the question is whether or not that specific error is genuinely recoverable17:33
voidspacenatefinch: we have replicaset.CurrrentStatus()17:34
voidspacenatefinch: I could add polling for that - if we get an alive status (or equivalent) then continue17:35
natefinchupping the timeout seems harmless.  bootstrap is already relatively slow, making it a few seconds slower in the edge case where there's a non-recoverable error seems like not a big deal17:35
voidspacenatefinch: MaybeInititiateMongoServer only returns an error17:35
voidspacenatefinch: ok I'll create an mp adding that and we can see if it fixes the problem17:36
natefinchI hate this blindly swinging at invisible errors stuff.17:36
voidspaceme too :-/17:36
voidspacenatefinch: this log with debug (the CI console output logs are INFO only) shows us attempting to call replSetInitiate multiple times17:37
voidspacehttp://pastebin.ubuntu.com/7544771/17:37
natefinchgustavo might have a better idea of what's going on, but he's playing squash or something in Malta, I believe17:37
voidspaceand if it's "in progress" it makes sense that subsequent calls fail with this error17:37
voidspaceeffectively meaning "I'm already initiating a replSet for you"...17:37
voidspaceyou are only supposed to call it once17:37
natefinchahh right, good point17:38
voidspacethe odd thing is that the loop for multiple calls is explicitly checking for unreachable servers17:38
perrito666voidspace: well the first call declares it fails, those can be retries17:38
voidspaceperrito666: we actually have two loops17:39
voidspaceone inside initiate.go and one inside replicaset.go17:39
voidspacethe initiate.go one logs "replica set initiation failed, will retry" and we're *not* seeing that17:39
voidspaceso it must be the replicaset.go one17:39
voidspacehmmm... ah wait17:40
voidspacethe other loop is: if err != nil && err.Error() == rsMembersUnreachableError17:40
voidspacelooks like a debug log has been removed17:41
voidspaceperrito666: http://pastebin.ubuntu.com/7544771/17:41
perrito666voidspace: migration step?17:42
voidspacethat log is showing repeated retries inside Initiate - but not repeated calls to the initial logging line17:42
voidspaceperrito666: what do you mean?17:42
perrito666voidspace: sounds like something intended to introduce peergrouper in a harmless way17:43
perrito66631 // MaybeInitiateMongoServer checks for an existing mongo configuration.17:43
perrito666 32 // If no existing configuration is found one is created using Initiate.17:43
perrito666also there is a comment by rogpeppe17:44
perrito66643         // TODO(rog) remove this code when we no longer need to upgrade17:44
perrito666 44         // from pre-HA-capable environments.17:44
voidspaceperrito666: right, but the logging shows we go into Initiate and then retry multiple times inside there17:44
voidspaceperrito666: and this reference implies that this error can be non fatal (i.e. initiation is still happening)17:45
voidspacehttp://stackoverflow.com/questions/9992535/azure-mongodb-replica-sets-initialization-error-local-oplog-rs-is-not-empty17:45
voidspaceok, I need to EOD17:47
voidspaceg'night all17:47
perrito666voidspace: well in restore, after running init of rs I do run a loop trying to connect as the client until it actually works17:47
perrito666voidspace: bye17:47
natefinchnight voidspace, thanks for the help.  Sorry it's been such a hassle17:47
voidspacenatefinch: heh, such is life17:48
rogpeppevoidspace: the reason to remove that code is that in post HA-version environments, MaybeInitiateMongoServer should only be called once, at bootstrap time. at that time, there are no users, so there's no need to connect as a specific user17:48
voidspacerogpeppe: right, but it's currently harmless and definitely *not* the source of the current problem17:49
rogpeppevoidspace: ok, that's fine17:50
voidspacewhich is a problem of initiating failing at bootstrap time17:50
voidspaceon one machine17:50
voidspaceand that machine only so far...17:50
rogpeppevoidspace: ok, that's what i was about to ask17:50
voidspaceso, latest theory is that initiating is just slow on that machine17:50
voidspaceso I'll poll replicaset status and if we see a healthy replica set within a few seconds we'll ignore that error17:51
voidspaceas I've found one reference saying that this can be the case17:51
voidspaceif that fixes the problem then great17:51
voidspacebut for now...17:52
voidspacegood night :-)17:52
natefinchrogpeppe: yeah, it's just the precise CI machine that can't run local provider with --replset for whatever reason.17:53
natefinchrogpeppe: works on other peoples' precise VMs17:53
rogpeppenatefinch: have we tried doing it manually on the CI machine?17:53
natefinchI think Michael had said he tried it manually, but I'm not 100% sure17:55
natefinchcertainly worth testing out17:55
natefinchsinzui: is there a way I can get on the precise CI machine to noodle with mongo?17:56
=== alexisb is now known as alexisb_lunch
perrito666natefinch: I think Michael mentioned not having access to the machine to try it manually18:04
natefinchperrito666: ahh yeah, right, well, we should get on there.18:07
bodie_okay, so I've gone and forgotten to switch branches before writing code, and committed to master18:40
bodie_is there a quick and dirty way to just yank that commit into a new branch somehow without taking the fact that it came from master?18:40
bodie_I'm not entirely clear on how much bzr cares about branch history vs file contents18:41
bodie_like a cherry-pick18:42
bodie_I guess that's a merge -c18:43
natefinchsorry, no idea18:44
jcw4bodie_: If that doesn't work, I would personally just generate a patch of the changes and then remove your local repo and start again18:44
jcw4bodie_: otherwise, you'll be fighting the changes in master when you pull from lp:juju-core, and when you try to create new branches18:45
bodie_right18:45
bodie_I think I can merge -r 1 and then cherry-pick the incorrect changes from master, which should bring them in free of branch history info18:45
bodie_then go back to master and merge -r 118:45
mgzbodie_: you just committted on master?18:46
jcw4bodie_: unless you can actually remove those revisions from master I think you'll have issues18:46
mgzoh, god, but you're using cobzr so I'm not sure how you address trunkk >_<18:47
jcw4mgz: :)18:47
bodie_I think I can just refer to it as master18:47
bodie_I was thinking if I could just cherry-pick the changes into a feature branch without branch history, then I could revert master to its rightful state18:48
bodie_so, like john was saying, a patch would accomplish that18:48
bodie_then just nuke my repo and start over, then apply the branch18:48
mgzbzr branch -r-2 co:trunk co:prevtrunk18:48
mgzis what's I'd do18:48
mgzgive youself a new branch of clean trunk18:48
mgzthen you can pull of the changes from trunk to a new branch of that18:49
mgzand finally push --overwrite prevtrunk over trunk18:49
sinzuiHi Does juju not think that 1.19.3 is the last dev version? My branch that changes juju to 1.19.4 has the same failure in repeated tests. https://code.launchpad.net/~sinzui/juju-core/inc-1.19.4/+merge/22157018:54
bodie_jcw4, do you know if bzr has a built in patching mechanism?19:21
jcw4you mean like git apply?19:21
bodie_this19:22
bodie_http://doc.bazaar.canonical.com/plugins/en/bzrtools-plugin.html#patch19:22
bodie_but my bzr is telling me it doesn't know what "patch" means19:22
bodie_bzr patch --usage19:23
bodie_cobzr: /usr/bin/bzr patch --help: exit status 319:23
bodie_bzr: ERROR: unknown command "patch"19:23
jcw4seems like you don't have the bzrtools plugin?19:23
bodie_ah19:24
bodie_I wonder if that would mess with cobzr...19:24
bodie_meh.19:24
jcw4I don't think so19:24
bodie_I think cobzr only filters out commands that it knows19:24
jcw4http://doc.bazaar.canonical.com/plugins/en/plugin-installation.html19:24
jcw4I bet you could cd to $HOME/.bazaar/plugins/ and then just do bzr branch lp:bzrtools19:25
bodie_oh, good find19:29
sinzuinatefinch and his esteemed minions. We have two critical bugs :(19:44
sinzuihttps://bugs.launchpad.net/bugs/132507419:44
_mup_Bug #1325074: Juju version cannot be set to 1.19.4 <packaging> <juju-core:Triaged> <https://launchpad.net/bugs/1325074>19:44
sinzuihttps://bugs.launchpad.net/bugs/132507219:44
_mup_Bug #1325072: unit tests fail on utopic <ci> <test-failure> <utopic> <juju-core:Triaged> <juju-core 1.18:Triaged> <https://launchpad.net/bugs/1325072>19:44
natefinchsinzui: looking19:44
sinzuioh, but I see arm64 unit tests run for the first time ever. Even if they fail, this is a big improvement over the compilation errors I have gotten over the last 3 months19:46
* sinzui finds children19:48
bodie_hmm19:55
bodie_jcw4, did we decide it made more sense to permit Actions to come back nil?19:56
bodie_or to return an empty struct19:56
jcw4from a Charm?19:56
natefinchsinzui: unfortunately, I don't know what the log is supposed to look like when this kind of thing succeeds.  I can't imagine just bumping the revision just broke something.... is there no simplestreams data for 1.19.4, is that the problem?19:56
bodie_yeah19:56
jcw4I *think* empty struct... but I could convinced either way19:57
bodie_hmm19:57
* jcw4 goes to pick up his kids from school19:57
bodie_if we model it on Config, it'll come back empty19:58
bodie_ah20:00
bodie_fwereade, mgz, natefinch -- I noticed Config comes back with an empty Options member if there's no config.yaml20:04
bodie_why not just return an empty Config?20:04
bodie_I guess because then you can iterate on := range c.Config().Options without checking for nil20:05
sinzuinatefinch, that you for looking. I could consider this issue a offer from fate to let me take the weekend off.20:08
=== vladk|offline is now known as vladk
natefinchsinzui: sounds like it to me20:11
natefinchbodie_: empty is probably nicer20:15
bodie_natefinch, I realized it's coming back empty now, but its members aren't instantialized20:17
bodie_I think I'm going to return empty members20:17
bodie_or uh, a struct with empty but instantiated* members20:17
bodie_does that sound reasonable?20:18
natefinchbodie_: but I don't think we have a convention20:21
natefinchbodie_: depends on the struct.  Not sure exactly what you're making.  The fields all default to the zero value, which, if designed well, is an ok default20:23
=== vladk is now known as vladk|offline
=== vladk|offline is now known as vladk
=== vladk is now known as vladk|offline
bodie_natefinch, perhaps I was getting a nil value for a different reason20:46
=== vladk|offline is now known as vladk
bodie_thanks for helping me understand :)20:46
=== vladk is now known as vladk|offline
bodie_jcw4, if you have spare time tonight, if you'd like you can check out the state side of the Charm Actions() interface method21:04
bodie_I got the dir and bundle stuff put together and tested21:04
bodie_I think it's good21:04
jcw4cool.  pushed up to lp?21:04
bodie_yeah, http://launchpad.net/~binary132/juju-core/charm-interface-actions21:04
bodie_testing whole thing now21:05
bodie_I think the only places the implementation needs to be locked down are state/store and state/charm21:07
jcw4k21:07
bodie_pushed another minor fix21:14
jcw4k21:16
bodie_jcw4, with that change I believe it's in the clear21:32
jcw4in the clear meaning ready for me to refer to when looking at the state side implementation?21:33
bodie_I'm going to propose -wip21:33
bodie_just need to add a few tests, methinks21:33
bodie_heading out for the night, laters21:33
jcw4ttyl21:34
bodie_lbox proposed -wip :) https://codereview.appspot.com/99640044 (fwereade, mgz?)21:37
bodie_Still needs a few tests implemented21:37
jcw4cool21:37
=== Ursinha-afk is now known as Ursinha
=== alexisb_lunch is now known as alexisb
jcw4long lunch alexisb21:56
alexisbjcw4, yes it was21:57
jcw4:)21:57
alexisbI met a colleague in town, but town for me is a long ways away21:57
alexisbso I took the opportunity to run some in town errands21:57
jcw4... I was thinking you were east coast like most of the folks, but I forgot you were in my old stomping grounds21:58
alexisbo yeah? where are your old stomping grounds?21:58
jcw4I lived in Vancouver (WA) and worked in Portland from 2004 until January21:59
jcw4Now I'm down in Sacramento21:59
alexisbheh that is funny, I was born in Sacramento21:59
jcw4haha22:00
alexisbjcw4, where in Sacramento do you live?22:00
jcw4Natomas, basically two blocks from the fields to the north22:00
alexisbnice22:00
jcw4alexisb: reprieve from the rain for sure22:00
alexisbyes, Sacramento is not a bad town, when I graduated we looked at living there and me working in folsom at Intel22:01
jcw4that would have been nice.  Folsom is quite pretty22:01
alexisbbut ultimately the commute was more then I wanted to deal with22:01
jcw4I dunno, PDX traffic was way worse than any I've encountered here22:02
jcw4although I AM working from home22:02
jcw4:)22:02
alexisb:)22:02
alexisbif you have to be in portland yes, traffic sucks, especially vancouver to pdx22:03
jcw4yeah... that was the main problem.  Two bridges22:03
alexisbbut I actually live in yamhill and also wfh :)22:03
jcw4Oh, very nice... LOVE yamhill county and IIRC the little town of yamhill is very very nice22:03
alexisbyes we really like it here22:04
jcw4thats on the back road between dundee and forest grove right?22:05
alexisbyep22:05
jcw4I'm suprised you get decent internet there?22:05
alexisba very good local company called coho22:05
alexisbthey do a nice job and give very reliable service22:05
jcw4very nice22:06
=== hatch__ is now known as hatch

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