[00:49] * thumper tries an experiment [00:51] 519 files changed, 9517 insertions(+), 9259 deletions(-) [00:51] $ git diff master | wc -l [00:51] 65880 [00:51] just a small experiment === fuzzy_ is now known as Ponyo [01:04] wallyworld_: you're on-call reviewer right? [01:04] yeah [01:06] but not if wc -l gives 65000+ lines [01:13] * thumper is struggling with something... [01:21] wallyworld_: it was entirely mechanical [01:25] thumper: np, i have to run out to the bank for a bit, can look when i get back [02:09] thumper: https://bugs.launchpad.net/juju-core/+bug/1395564 [02:09] Bug #1395564: jujud constantly spews `juju.worker runner.go:219 exited "identity-file-writer": StateServingInfo not available and we need it` [02:09] thumper: is that worker meant to be on all machine agents, or just state servers? [02:10] axw: ah... well... that's interesting [02:10] hmm... [02:10] I think it should just be on state servers [02:11] bugger [02:11] at least I think that refactoring is only on master [02:11] and the 1.21 fix didn't have that [02:16] ke;;p [02:16] Hello* ... [02:22] o/ [02:31] Hi :) [04:20] thumper: where's this mega branch? [04:35] axw, wallyworld_: why does State.AddCharm() not use transactions? [04:35] not sure off hand, i'll look at code [04:36] axw, wallyworld_: it's the one of the few (only?) place that uses Insert in state [04:36] axw, wallyworld_: and it seems like using a transaction would make it simpler and avoids a tiny race [04:37] menn0: at first look i have to agree. i suspect that code dates way back to the early days of the Go port [04:37] i think roger could shed more light on the reasoning there [04:38] wallyworld_: np. I'll check with him. it just stuck out with some of the work i'm doing. [04:38] for sure, i can see why [04:38] i suspect hysterical reasons but would be curious to know [04:39] I also don't know why [05:11] fwereade_: FYI, http://reviews.vapour.ws/r/522/ [07:30] fwereade_: ping [07:30] wallyworld_, morning [07:30] hey, morning to you [07:30] question [07:31] we currently store status in a separate status doc, with _id set to the global machine or unit key [07:31] if we now store status for unit agent as well [07:31] we'll need a global key of sorts for that [07:32] so do you think a prefex of "ua#" would work? [07:32] also service will get status in there too [07:32] jam, morning [07:32] jam, 1:1? [07:32] wallyworld_, thinking [07:32] but there's already a global key for service [07:33] yeah, dimitern, brt [07:33] we also currently have a big hidge podge of status "enums" shared across entities [07:34] wallyworld_, yeah, we should separate those enums out [07:34] what's there could remain as machine status [07:34] wallyworld_, not everything there applies to machines iirc [07:34] and new ones (sharing some of the same string values) used for units [07:35] right, will have to break them up [07:35] wallyworld_, so globalKey-style is fine by me [07:35] wallyworld_, ua# feels ratherwrong though [07:35] wallyworld_, (1) the existing one is really the agent state already, remember [07:36] wallyworld_, (2) "a" implying agent is going to be misleading as soon as we manage to consolidate the agents [07:36] yeah true [07:36] for (2) we need a migration anyway [07:36] wallyworld_, suffix of #charm, or #runtime, or something? [07:36] wallyworld_, well [07:36] could retain u# for agent status for now [07:37] so you mean u#3#charm [07:37] wallyworld_, u#foo/3#charm, yeah [07:37] right [07:37] can do that [07:37] wallyworld_, don't forget that even if they're all in one process the "agent state" is still going to be meaningful [07:38] wallyworld_, just increasingly inaccurately named, because it's more like worker state [07:38] and will be shared for that machine across units [07:38] wallyworld_, surely not [07:38] wallyworld_, it is and pretty much always has been uniter state [07:38] for some things it will, like allocating etc [07:40] i've just starting digging so i'll keep going, thank for clarification on using global key concept [07:40] wallyworld_, still don't think so? I'm quite inclined to have the uniter stay the only thing responsible for setting its own "agent" state [07:40] a lot of the code i'm reading is quite new to me; uniter is something i've managed to avoid in detail till now [07:41] wallyworld_, lucky you [07:41] \o/ [07:41] ;p [07:41] i did like the wip branch i looked at last week [07:41] to separate out operations i think from memory [07:41] cool [07:42] i just want it all to be done NOW [07:42] :-) [07:42] wallyworld_, I didn't get the time to hack on that I hoped for this w/e [07:42] wallyworld_, *but* well honestly I *could* land it now and we'd still be better off than we were -- however I feel obliged to test the damn thing properly, and I kept getting distracted late last week and never built up the momentum [07:43] if what you have is incrementally better, and works, and is tested, i'd be inclided to land [07:43] so it doesn't bit rot etc [07:43] we've branched 1.21 now [07:43] so 1.22 is aways off [07:43] deliver early and often and all that [07:46] wallyworld_, so the trouble is that it's tested as well as it was before [07:47] wallyworld_, the new structure makes it clear just how shitty that was [07:47] wallyworld_, and I've been adding tests in the wrong order so I don't have many useful incremental pieces :/ [07:47] fwereade_: if it compiles, it works right :-D [07:47] wallyworld_, it passes the uniter_test tests too [07:48] i'd be inclined to get what you have landable before doing any more [07:48] wallyworld_, with just one non-error-message-string change, which I think is a good one anyway, because we're now properly triggering an observer we always should have [07:48] wallyworld_, yeah, I am actively avoiding *changes* [07:48] good :-) [07:49] * fwereade_ is very tempted to make today an "I'm not here, I'm working" day [07:49] use what you have, that sounds like it's at least got equivalent tests to what's there, as a great basis for launching the next phase [07:49] go dark and make it happen :-) [07:53] wallyworld_, yeah, sounds good [07:53] \o/ [08:03] fuuuuuuuuu [08:04] wallyworld_: I just realised that my intention to use UUID on top-level devices as an identifier will break horribly if a charm requests a raw device and creates a new filesystem on it... [08:04] * axw sighs heavily [08:04] * wallyworld_ sighs too [08:04] I think that means we have to partition devices and only dish out the partitions [08:05] maybe only if it doesn't have a serial number [08:07] needs a little thought for sure [08:09] axw: what devices wouldn't have a serial number? [08:10] wallyworld_: non-physical ones [08:10] that i did not know [08:11] wallyworld_: for example, on EC2 none of the disks have a serial number because Xen [08:11] there the block device name is persistent though [08:12] maybe that's as good as and we just abstract a device unique identifier [08:14] wallyworld_: problem is MAAS, where there's not necessarily a guarantee that the disk has a serial. i.e. if/when there's support for non-physically attached disks [08:14] hence why I asked for UUID and not serial [08:14] *if* there's a serial we'll populate it when we see it in the machine agent [08:16] hmmm. hopefully for even non physically attached disks there's some concept a uuid/serial/something_else_unique [08:38] morning [09:55] jam: dimitern: TheMue: grabbing coffee will be 2mins late to standup - sorry! [09:56] voidspace, no worries [09:59] back, just in time [10:00] morning all [10:00] dimitern, do you have a link to the design document about how the new juju commands will look? [10:00] dimitern, (also, morning) [10:01] voidspace: you inspired me to do the same [10:01] TheMue: standup ? [10:01] omw [10:01] mattyw, morning :) [10:02] mattyw, not off hand, but I'll try to find it [10:15] mattyw, I can't find it unfortunately [10:15] dimitern, I'll keep looking, do you know who was supposed to be working on it? [10:16] mattyw, either onyx or tanzanite IIRC [10:48] dimitern: finished 1-to-1, going for moar coffeez and then I'd love to chat [10:51] voidspace, ok [12:12] dimitern: does subnetDoc need an annotator? [12:20] voidspace, I don't think so - we can add it later I think, if we need to manage subnets via the gui [12:23] dimitern: cool, thanks [13:46] dimitern, jam do you have a moment to review https://github.com/juju/juju/pull/1214 [13:54] sinzui, looking [14:27] dimitern, sorry, I set master as the merge target in that PR. I closed it [14:29] dimitern, https://github.com/juju/juju/pull/1215 is to change the version of the 1.21 branch [14:33] sinzui, ah, ok -that looks better :) [14:33] sinzui, 1 typo, otherwise lgtm === wwitzel3_ is now known as wwitzel3 [14:34] dimitern, oops. making a change before my first cup of coffee seems impossible [14:34] :) [14:35] fix is push dimitern === ChanServ changed the topic of #juju-dev to: https://juju.ubuntu.com | On-call reviewer: see calendar | Open critical bugs: 1395331 === kadams54 is now known as kadams54-away === kadams54-away is now known as kadams54 [14:59] sinzui, thanks - good to merge [15:09] fwereade_: ping :) [15:13] perrito666, wwitzel3: man you guys are late to standup ;) [16:03] fwereade_, I am going to log on the hangout with FF one sec [17:10] man, utopic has been hell on my browser. Fine in every other way... but you know, the browser is pretty important [17:19] could someone have a look at http://reviews.vapour.ws/r/526 [17:19] it's a one-liner that clears the current CI blocker [17:21] ericsnow: looking [17:21] natefinch: thanks [17:22] the joy of having CI-only tests! [17:23] ericsnow: ship it! [17:23] natefinch: thanks [17:24] Hello all. [17:26] good afternoon [17:27] fwereade_: ping === kadams54 is now known as kadams54-away [17:59] sorry for the pain of 1395331, folks [17:59] the fix is in but the CI tests have to cycle through now [17:59] ericsnow: :) no worries tx [18:00] do we need to wait for something before the CI gets opened again? The query on launchpad for critical bugs is returning 0 again, but CI is still rejecting [18:00] * jw4 feels so rejected [18:01] I don't recall if CI automatically unblocks once certain tests pass or if it requires manual intervention [18:02] my vague recollection is of the former being the case, but mgz & co. would know [18:03] wallyworld, sinzui who should I ask about when/how CI would be unblocked? [18:05] natefinch: was "Add juju-provider-zone to relation data" the task you recommended to me the other day? [18:06] natefinch, ericsnow, jw4 We need to steal juju-ci to do reliability testing. I don't know when I can enable testing, or at least say the regression is fix released [18:06] sinzui: this seems problematic if it means we can't land any code [18:07] sinzui: the failure is limited to the backup-restore tests (which exercise the plugins) [18:07] jw4: I believe the answer in general is "once the CI tests that failed pass again, then the bug that was blocking CI is marked fix released, and *then* CI is officially unblocked" [18:08] natefinch: I see - I was just querying launchpad for when there were 0 critical issues [18:08] sinzui, natefinch: if it makes it so we can simply unblock, I'd be glad to revert PR 1003 [18:09] natefinch: ah, right, "fix released" is the trigger for unblocking CI [18:09] yep [18:09] ericsnow, no don't [18:09] sinzui: k [18:11] ericsnow, jw4, natefinch : I marked the bug as fix released, but it is untested. you are free to merge. Revision testing will resume when reliability testing comp;lete [18:11] thanks sinzui [18:13] natefinch, sinzui: if restore supported local provider (which is currently *not* adviseable) then the CI backup-restore tests could be replaced with functional tests in the core suite, and this sort of situation (an undetected breakage of the backup CLI plugin) would be avoidable in the future [18:14] natefinch, sinzui: however that would require the "proper" local provider that we never seem to allocate time for writing [18:14] sinzui: thanks for unblocking that! [18:17] ericsnow, The restore tests often fail because of juju timing issues and substrate api/network issues. I think we will always need a restore test in clouds to verify real world situations. Though it would be nice to not need to run the test with every revision [18:17] sinzui: good point [18:18] sinzui: both are needed then [18:20] natefinch: about "Add juju-provider-zone to relation data", was that the one? [18:28] ericsnow: that one and adding zone to the unit-get hook [18:28] natefinch: k [18:28] natefinch: I'm adding task cards to leankit for some of the tasks [18:29] ericsnow: cool [18:31] ericsnow: feel free to adjust the estimates if you think they need adjusting. They're listed in ideal developer days, so like, if you got to code for 8 hours straight with no interruptions... I usually then double that for real-world workdays [18:31] natefinch: :) [18:31] ericsnow: I suggest not reducing the estimates even if you think it'll be faster, though. We can always use the padding to make up for bad estimates elsewhere [18:32] natefinch: definitely [18:39] g'night all [18:56] hey does anyone have an ssh server you recommend for windows? a friend wants to run one on (i think) win7 [18:58] katco: I always ending up simply using cygwin [18:59] ("simply") [18:59] ericsnow: yeah same here, but that may be too complicated for him [19:00] it's so sad that this is actually a question that has to be asked [19:00] i know... no clue why windows doesn't support ssh these days [19:01] of course windows admins used to look at me funny when i asked how to get a command prompt remotely [19:01] FWIW I think Cygwin is the work of the devil and would not recommend it to anyone I want to still like me in 6 months. [19:01] lol it was a god-send when i was trapped on windows @ work [19:01] i would get a bash prompt and sign in relief :) [19:02] grep, less, find! all my friends are here! [19:02] I used it for 7 years at my last job... at least once every 6 months I would have to totally reinstall it because it would randomly f-up if I tried to update something [19:02] wow really? [19:02] i never had a problem [19:02] used it probably for... 5 years? [19:03] I don't know how often I had to do the POS rebaseall thing, which would work like 1/3rd of the time [19:03] lol [19:04] and it doesn't help that it defaults to updating EVERYTHING when you run it to update just one thing, which ends up being this massive download that only has a small chance of succeeding. [19:04] ....I'm not bitter [19:05] haha [19:05] oh yeah, the kicker is that we were using cygwin to support our build infrastructure..... which built a .Net application and a Java application. (Yes, both would have built just fine on Windows without cygwin). [19:05] i really never had any problems with it [19:06] natefinch: was msys a viable alternative to cygwin in your situation? [19:06] The only thing we actually needed cygwin for was to build RPMs for the java server part (sorry to say we deployed the server to CentOS) [19:07] jw4: I have no idea. I tried to have as little to do with cygwin as possible. [19:07] natefinch: yeah - I never really enjoyed cygwin, but msys usually seemed to meet my needs when on windows [19:08] my stress level has gone down so much now that i get to work in ubuntu all day :) [19:08] it's just cozy. [19:09] katco: lol [19:10] I cut my programming teeth in cross-platform unix [19:10] but have been mostly doing .NET for the last decade [19:10] i have much the same story [19:10] i always used some form of *nix, and then got a job at a .NET shop [19:10] when powershell came out it was like the hallelujah chorus [19:10] liked the language, disliked the platform. [19:10] (C#) [19:11] yeah, I'd like to play more with F# too [19:11] more-so because anything that _wasn't_ microsoft was some odd duck that we couldn't risk using (e.g. sqlite3, angular, jquery... etc.) [19:16] heh. My company was a startup with a Java server on CentOS and big .Net desktop client. Can't tell you how often we had customers ask if Postgres was a reliable DB, and why we weren't using SQL Server. [19:17] nice [19:17] We got acquired by a big company that was 100% microsoft services, so when we started The Big Rewrite (because isn't there always one?) we were basically forced into a .Net webserver w/ SQLServer [19:18] We at least were able to convince them that the server could use a REST API and not SOAP [19:18] *whew* [19:18] SOAP just needs to die [19:18] "But you can just generate client code from the WSDL...." [19:19] AAHHHHH [19:19] haha [19:20] At the time I was trying to push for it to be a single page web app using Angular or something similar, but that was too... modern... for them, so it ended up being all server-side rendering & jquery (oh except for the data for some graphs that would then get downloaded asynchronously for some reason). [19:21] lol - did you get to use ASP.NET MVC at least? [19:22] yes? IIRC... and Entity Framework, which was a huge pain in the butt and cemented my "ORMs are evil" beliefs [19:22] EF has come a long way, but still can't overcome the fundamental impedance mismatch between relational data and object data [19:25] and this was the optimal case where we're rebuilding from scratch, but have 100% perfect knowledge of the data domain and how we're going to store it... it's just that if you don't structure your data & tables perfectly, then things just don't work with very little feedback about why. And forget trying to do anything fancy, like storing data blobs... [20:26] natefinch, I am going to be a little late [20:27] alexisb: ok [20:27] alexisb: np [20:39] natefinch, ok on and ready when you are [20:40] ick... [20:40] alexisb: coming === kadams54 is now known as kadams54-away [20:54] anyone has an idea why separating runnings tests with check.f=foo doesn't work if the bar_test.go file doesn't have a bar.go counterpart? [20:55] or what other reasons there might be for it not working [20:56] bogdanteleaga: I think we need a little more context [20:56] bogdanteleaga: got your test file handy to pastebin? [20:57] for example bench_test in core/state [20:57] if I do check.f=BenchmarkSuite it says OK:0 passed === kadams54-away is now known as kadams54 [20:59] bogdanteleaga: probably because the BenchmarkSuite is for benchmarking not testing? [21:00] thumper: conn_test does the same thing [21:00] thumper: and they were the only ones I've tried so far and they didn't have normal.go counterparts [21:00] gocheck.f ? [21:00] thumper: but assign seems to work [21:00] yes [21:00] you said `check.f` [21:00] I think both work now... remember gocheck is now "check" [21:01] the filename has no impact [21:01] natefinch: really? [21:01] oh [21:01] yeah, I've tried both [21:01] gocheck seemed to work until I hit that problem [21:01] then I tried check and that didn't work either [21:04] mramm2: call time [21:04] ? === kadams54 is now known as kadams54-away [22:34] https://github.com/juju/testing/pull/40 anyone? [22:46] thumper, LGTM [22:46] thumper, feeling brave? I think you'll hate me but you'll like it in the end: reviews.vapour.ws/r/527/diff/ [22:47] thumper, there are two files of tests that are just repeated `c.Fatalf("XXX")`, I wanted to finish those today but I'm too tired [22:48] thumper, still I don't expect non-trivial non-test changes and I want to get some less-casual eyes on it [22:52] wallyworld: guess what is defined in a main package and is not exportable at the moment =| === fuzzy_ is now known as Ponyo [23:05] katco: ummm, not sure? [23:05] wallyworld: MachineAgent [23:06] \o/ [23:06] :) [23:06] the stuff in main should be thin anyway [23:07] so maybe a chance to refactor to fix it [23:07] yeah i'll have to [23:07] luck you [23:07] it's a good change anyhow... glad you suggested landing this separately [23:08] and by suggested, i mean "commanded atop your iron throne of management" [23:33] katco: just saw this last comment as i was helping someone elsewhere [23:33] :-( [23:33] it's ok, i understand you have a manager's schedule. [23:33] * katco pokes the open wound [23:33] :-( :-( :-( [23:33] * katco now feels bad [23:33] good [23:33] haha === kadams54 is now known as kadams54-away