[08:20:09] [travis-ci] master/6aac3bc (#97 by dsc): The build has errored. http://travis-ci.org/wikimedia/kraken/builds/5619391 [12:27:56] no prob YuviPanda, let me know when you're around and maybe I can help with the script. Sorry I couldn't stay later yesterday, I hung out with Lawrence Lessig!! [14:41:24] mornin [14:41:27] ottomata about? [14:41:30] morning [14:41:31] yuppers [14:42:13] howdy [14:42:22] so, i was trying to create a new oozie job yesterday [14:42:38] to test my version of the zero script without disrupting the current one [14:42:48] i have workflow and coordinator xml files [14:43:04] but i totally could not figure out what to do with them (even once they were in hdfs) [14:43:19] the oozie gui did not really help me beyond trying to trick me into duplicating my work [14:43:45] ottomata: so like, does it require trickery? [14:43:48] perhaps cli trickery? [14:43:50] it requires cli [14:43:50] yeah [14:43:52] or database trickery? [14:43:54] okay. [14:44:08] so, i would start with testing the workflow [14:44:08] i will read docs, unless you have a snippet handy [14:44:20] since those are one off jobs [14:44:30] check out my tests on an02 [14:44:37] /home/otto/scr/oozie [14:44:43] i've got some workflows defined there [14:44:52] with job.properties files manually setting the variables that the workflow.xml script gets [14:45:07] once you've got that [14:45:10] to submit a workflow: [14:45:11] https://www.mediawiki.org/wiki/Analytics/Kraken/Oozie#Workflow [14:45:20] # upload the workflow.xml file to your oozie.wf.application.path [14:45:20] hadoop fs -put workflow.xml /user/dummy/oozie/webrequest_loss_by_hour/ [14:45:20] # submit the job.properties file to oozie and start it (-run == -submit && -start) [14:45:20] oozie job -oozie http://analytics1027.eqiad.wmnet:11000/oozie -run -config ./job.properties [14:45:44] okay. [14:45:52] that way you can check your job in oozie against a single manually defined dataset [14:46:06] rather than submitting a coordinator and waiting for it to run against abuncha datasets to test [14:46:22] make OUTPUT go to your hdfs user dir somewhere [14:46:31] oh, also, someitmes it is helpful to run these as the stats user [14:46:33] sudo -u stats [14:46:42] (make sure your hdfs output dir is writeable by stats if you do this) [14:47:03] that way you can be more sure that it will run properly as the stats user, and that you don't have some personal config or file that stats doesn't have [14:47:09] right [14:47:21] aiight. i'll let you know how it goes. [14:47:25] cool [14:48:29] ah, see, i tried to do this with only pig [14:48:36] and it couldn't find my jars no matter where i put them [14:48:47] i forgot you outlined workflow-only testing in this doc [14:48:51] it's great, ty! [14:49:21] yup! [14:55:32] brb a moment [14:59:37] analytics! [14:59:37] http://www.grantland.com/story/_/id/9068903/the-toronto-raptors-sportvu-cameras-nba-analytical-revolution [15:00:03] relevant re: data driven _____ [15:14:36] hokay, office soon. [15:24:39] yo ottomata [15:24:40] yoyo [15:25:50] is the metrics api stuff ready? [15:27:01] yup, afaik, i signed off while rfaulkner was checking it out [15:27:02] but [15:27:16] flask-login has a .deb, is puppetized and installed [15:27:42] if it is good then ryan will probably want me to remove the. htaccess [15:27:51] but i'm waiting for his go ahead on that [15:28:10] cool, yeah i saw the chats about the deb stuff [15:29:14] yeah faidon was super available and helpful yesterday [15:29:24] and now he wants me to do some reviews and help build more python module .debs :p :) [15:29:31] a good deal I think [15:29:36] that's how it goes :) [15:29:44] i'm going to see if I can get locke at least mostly replaced today [15:29:53] some of the filters moved to gadolinium [15:30:07] and then i'm going to step it up on my RT duty for this week, including that stuff [15:30:17] drdee, ottoman: metrics.wikimedia.org looks good [15:30:45] yeehaw [15:30:52] is flask-login working? [15:30:56] at most I may ask andrew to update the code base for some small fixes but it's sufficient for any potential demoing [15:31:08] i haven't checked that yet [15:31:13] aye ok [15:31:21] yeah so, puppet is configured to automatically pull master [15:31:31] that should happen every ~30 mins [15:32:46] ok, that's perfect ottoman. looks like one of the views is missing login but that's something for me to fix in the view module i think [15:32:54] i can hit the login page and login though [15:34:21] cool, well you test around, lemm eknow how it goes and if I can help [15:34:25] when you are ready I can remove the .htaccess [15:34:48] hopefully we should need minimal maintenance for this going forward. Cool, that's great thanks andrew [15:36:24] Dario and I should probably sit down and think about some usage profile so we can get a better idea of what support it actually will need down the road so we can better predict what to optimize for [15:37:14] I'm testing locally or on stat and some of the behavior doesn't always seem to replicate the prod instance … but the diffs are usually pretty minor [15:37:28] anyway, looking good now. will keep you posted of anything [15:40:52] yeah [15:41:08] we should actually probably modularize the puppet stuff a bit more, and get you a labs instance that is almost identical [15:50:31] true. I had this instance created some time back https://wikitech.wikimedia.org/wiki/Nova_Resource:I-0000054b [15:50:50] i think i had an old version of the code base deployed there [15:51:01] can check in a bit. for the moment gtg [16:19:28] ottomata: i'm rather puzzled [16:19:45] here, http://localhost:8888/jobbrowser/jobs/job_1363221635790_3169 -- my job claims to have succeeded [16:20:55] yeah, you can't trust that i think [16:21:15] here, it clearly did not: http://localhost:8888/oozie/list_oozie_workflow/0000588-130314023321019-oozie-oozi-W/ [16:21:24] got a sec to help? [16:21:30] i see almost no debugging output [16:21:36] this is more relevant [16:21:36] http://localhost:8888/oozie/list_oozie_workflow/0000588-130314023321019-oozie-oozi-W/ [16:21:42] logs, i think http://localhost:19888/jobhistory/logs/analytics1012:8041/container_1363221635790_3169_01_000001/job_1363221635790_3169/stats/syslog/?start=0 [16:21:53] yeah, but look at the logs.. [16:22:31] 2013-03-19 16:09:20,944 INFO PigActionExecutor:539 - USER[stats] GROUP[-] TOKEN[] APP[dsc_zero_workflow] JOB[0000588-130314023321019-oozie-oozi-W] ACTION[0000588-130314023321019-oozie-oozi-W@dsc_zero_new] action completed, external ID [job_1363221635790_3169] [16:22:31] 2013-03-19 16:09:20,973 WARN PigActionExecutor:542 - USER[stats] GROUP[-] TOKEN[] APP[dsc_zero_workflow] JOB[0000588-130314023321019-oozie-oozi-W] ACTION[0000588-130314023321019-oozie-oozi-W@dsc_zero_new] Launcher ERROR, reason: Main class [org.apache.oozie.action.hadoop.PigMain], exit code [2] [16:23:10] http://localhost:19888/jobhistory/logs/analytics1018:8041/container_1363221635790_3169_01_000002/attempt_1363221635790_3169_m_000000_0/stats [16:23:12] maybe take a look at the job conf and see if it makes sense? [16:23:13] that's confusing but you need to dive into the mapper logs [16:23:26] the oozie logs don't tell anything [16:23:30] ahh [16:23:36] 1. how did you get to that? [16:23:36] so, to get that [16:23:40] 2. okay, that's helpful. [16:23:43] yeah! [16:23:44] start here, right? [16:23:44] http://localhost:19888/jobhistory/job/job_1363221635790_3169 [16:23:50] click on the 'Map' link [16:24:02] then click on the task id link [16:24:09] then click on 'logs' link for the attempt [16:24:14] ahh [16:24:15] okay. [16:24:17] gotcha. [16:24:21] i know, obvious, right?! :p [16:25:04] also, you can probably find these in hdfs in /var/log/hadoop-yarn/apps/stats// [16:25:37] ty, ottomata [16:25:47] yup! [16:39:32] ah, drdee! we didn't build a precise version of the new udp-filter! [16:39:45] :( [16:39:55] maybe stefan can help you out [16:40:02] he has a build env for that [16:42:19] average_drifter, you around? [16:42:23] ottomata: yes [16:42:39] can you build a udp-filter 0.3.21 package for precise? [16:42:44] yes [16:43:04] or hm, maybe 0.3.22? se have 0.3.22 in apt, but lcoke has 0.3.21 installed [16:43:09] ottomata: x86 ? amd64 ? [16:43:47] I'll build both [16:44:02] just do amd64 [16:44:10] and ottomata why 0.3.21 and not 0.3.22 ? [16:44:16] looks like x86_64? [16:44:21] root@gadolinium:~# uname -m [16:44:21] x86_64 [16:44:35] locke has 0.3.21 installed [16:44:36] dunno [16:44:38] only 0.3.22 in apt [16:45:20] also, average_drifter, i thikn you want to build from the field_delim_param branch [16:45:34] yes! :) [16:45:43] and probably best to merge that back into master [16:46:20] ottomata: ok, I'll build field_delim_param [16:46:36] i think master is farther ahead than that, with other stuff [16:46:41] we might want to rename master or something [16:47:13] average_drifter: ask ^demon to help you with that [16:47:20] we did the same trick for webstatscollector [16:47:27] basically current master becomes old master [16:47:34] and field_delim_param becomes new master [16:48:36] ok [17:01:20] dschoon, kraigparkinson: scrum [17:01:32] we're on our way [17:02:31] average_drifter ^^ [17:04:05] I'm on in 20s [17:31:15] grooming hangout: https://plus.google.com/hangouts/_/e920454707b309ebf66331e55e9d557eb5ed1caa [17:32:53] I'm out to get something quick and I'll be back [18:41:25] okay figured out how to fix my mingle issues [18:41:30] sudo killall -HUP mDNSResponder [18:41:34] that resets the local dns cache [18:47:25] drdee: have you seen anything like this before? http://localhost:19888/jobhistory/logs/analytics1015:8041/container_1363221635790_3210_01_000002/attempt_1363221635790_3210_m_000000_0/stats/stdout/?start=0 [18:47:37] 1 sec [18:49:29] that hadoop finished job successful but oozie failed? [18:50:03] yes many times, it's retarded, errors are not properly propagated [18:50:05] you've got to look into the logs of the mappers [18:50:12] easiest is to do that through hue [18:50:32] go to /var/log/hadoop-yarn/dsc/logs/ or something like that [18:50:36] and look for the jobid [18:50:45] yeah [18:50:50] that *is* the mapper output. [18:50:59] all it tells me is "pig exited 2" [18:51:04] no it's not [18:51:21] 1 sec [18:51:55] hm! [18:52:20] check here http://localhost:8888/filebrowser/#/var/log/hadoop-yarn/apps/dsc/logs [18:52:22] i thought that's what the _m_ was saying [18:52:31] but jobid 3210 is missing [18:53:55] interesting. [18:54:03] the syslog is the one that contains weird shit [18:54:07] http://localhost:19888/jobhistory/logs/analytics1012:8041/container_1363221635790_3213_01_000002/attempt_1363221635790_3213_m_000000_0/stats/syslog/?start=0 [18:54:20] 2013-03-19 18:51:29,269 ERROR [main] org.apache.pig.Main: ERROR 2999: Unexpected internal error. unable to read pigs manifest file [18:54:28] oh, buh [18:54:31] i bet i know why. [18:54:31] okay. [18:54:33] hihi [18:54:37] still jar problems. [19:08:46] it appears the right answer is to build our jars to exclude the hadoop framework deps, as they're provided [19:18:01] never seen this error before [19:23:32] yeah, i'm almost certain it's a a conflict in the framework versions [19:24:00] are you sure? [19:24:02] this is weird: [19:24:03] 2013-03-19 18:51:28,305 ERROR [main] org.apache.hadoop.io.nativeio.NativeIO: Unable to initialize NativeIO libraries [19:24:04] java.lang.NoSuchMethodError: [19:24:17] the thing is that oozie has copies of the hadoop & pig jars as well [19:24:37] ok then those need to be replaced on hdfs with the new ones [19:24:48] probably related to the upgrade to 4.2 [19:25:13] our custom jars don't include hadoop framework shizzle [19:25:35] pretty sure the problem is this http://mail-archives.apache.org/mod_mbox/incubator-oozie-users/201205.mbox/%3CCAJs-t7MLUvcFyjBBDKY-9HOQ7%2BswvD4FqcA9WdNZtENwbgLzLw%40mail.gmail.com%3E [19:25:41] yeah, the 4.2 upgrade [19:25:45] they do, actually. [19:25:58] kraken-generic does an assembly with deps [19:26:09] and the transitive deps definitely depend on hadoop, i believe. [19:26:26] but either way, i'll shade the jar so we don't have this problem again [19:26:31] i agree it's the change to 4.2 [19:26:55] i wouldn't be suprised also our cloudera deps are out of date in the pom [19:27:12] that would mean the new jars are built against the wrong version, which would also cause problems [19:27:15] jar hell! [19:28:17] yes the pom's should be updated as well [19:29:13] brb, gonna get some food, etc [19:29:47] yep. [19:30:17] /usr/lib/pig/pig.jar -> pig-0.10.0-cdh4.2.0.jar [19:31:01] the dependency in kraken-pig is org.apache.pigpig0.10.0-cdh4.1.2 [19:31:05] so! [19:31:20] easy enough. will fix after lunch. [19:31:28] well remember the upgrade was unplanned :D [19:34:43] yeah, i've been thinking about that [19:34:47] i have suspicions. [19:34:54] when ottomata1 is around, we should bounce them about [19:35:09] k [19:35:10] because that was a pretty big deal, that CDH magically upgraded beneath us [19:35:17] that's, like, a Major Outage [19:35:20] yup [19:36:02] i'm around, one sec, i'm deploying gadolinium stuff [19:45:41] !log frontend caches now sending webrequest udp2log stream to gadolinium [19:46:15] !log frontend caches now sending webrequest udp2log stream to gadolinium [19:46:31] average_drifter, how goes the precise udp-filter package? [19:47:16] dschoon, i'm around [19:47:17] what's up? [19:47:23] ottomata: I'm wrapping it up, I'll ping you in a few [19:47:26] danke [19:47:46] wanted to chat with you & drdee about CDH magically updating at some point [19:47:51] not urgent [19:48:29] k [19:48:39] i mean, i'm waiting for udp-filter for gadolinium right now [19:48:47] so i got some time [19:51:42] aiight [19:51:45] drdee: are you about? [19:51:49] yes [19:51:51] coolio [19:52:18] so, i was thinking about how we got into a state where some machines were CDH 4.2 and others were still 4.1 [19:52:44] ottomata, did you figure that out? otherwise i have a theory. [19:53:25] no [19:53:51] are our machines covered by the CDH puppet module? [19:54:00] does it specify a version, or does it use "latest"? [19:54:23] [travis-ci] master/9eabd37 (#98 by Diederik van Liere): The build has errored. http://travis-ci.org/wikimedia/kraken/builds/5636266 [19:56:18] ^^ ottomata [19:56:31] * YuviPanda waves at milimetric [19:56:34] i wrote the cdh4 puppet module, i doubt i'd use latest, but let me check [19:56:52] also, they weren't running the cdh4 puppet module at the time of 4.2.0 release, i'm pretty sure [19:57:40] just checked, puppet was not ensuring latest on those packages, even if it was using the cdh4 module at the time of 4.2.0 release [19:59:47] ah [19:59:49] hm. [19:59:51] okay, welp. [20:00:27] my thought was that a mistaken submodule update resulted in some updates on our cluster [20:00:31] no idea otherwise. [20:01:14] i'm looking at https://github.com/wikimedia/puppet-cdh4/blob/master/examples/ and i'm not seeing how to tell it which version of the package to use [20:01:21] dschoon: massive simplification of https://mingle.corp.wikimedia.org/projects/analytics/cards/61 [20:01:42] (obv unrelated to our troubles if we're not using it on the cluster) [20:01:42] old 61 has now become https://mingle.corp.wikimedia.org/projects/analytics/cards/380 [20:02:24] drdee: update frequency is hourly? does the new file replace the old one? [20:03:00] it doesn't tell it, it would install the latest available [20:03:05] but [20:03:09] it won't upgrade it if the package is installed [20:03:26] so, a reinstall would cause a diff version to be installed if a new one is avail [20:04:12] hey Yuvi [20:04:21] didn't see you there YuviPanda with your waving [20:04:35] heh, I tend to get lost :) [20:04:39] okay, so I've a script [20:04:42] awesome [20:04:44] milimetric: should the script do the copying? [20:04:51] to /a/? [20:04:57] or should the copying be done separately? [20:05:02] um, will the copying ever need to be separate? [20:05:08] not that I can think of [20:05:12] so I'll add the copying oto [20:05:21] milimetric: so we'll want to serve just the datafiles or everything? [20:05:24] k, then yeah, just copy the rsync line from the puppetized cron [20:05:34] well, will the datasources change? [20:05:41] well, they currently do change [20:05:45] for the date ranges [20:06:22] so do the datasources select a SUBset of the data available in the datafiles? [20:06:57] milimetric: well, no [20:07:04] milimetric: this is limnpy's doing :P [20:07:11] I know [20:07:13] just wondering how the datafiles were created [20:07:15] ok, good [20:07:36] so in that case we can just manually edit the datasources, take out the date ranges and host them with the limn instance [20:07:47] then we can host just the datafiles remotely and everything should take care of itself [20:08:01] ottomata: hm. was there a reinstall? [20:08:04] so yeah, your rsync can just copy the datafiles, and the target path doesn't matter [20:08:20] don't thikn so [20:08:35] def not since analytics puppetmaster was turned off [20:08:48] i'm pretty sure that was before 4.2.0 came out [20:08:52] milimetric: okay [20:09:12] * YuviPanda goes to find the gerrit changeset [20:10:29] YuviPanda: https://gerrit.wikimedia.org/r/#/c/54116/4/manifests/misc/statistics.pp [20:11:21] dschoon: good question, i am waiting for reply from tomasz [20:11:36] ottomata: yeah, i think you're right [20:11:37] hm [20:11:50] ottomata: you remember which machines it was? [20:11:59] no but, hmm, one sec [20:15:27] ack, no [20:15:32] i don't konw, was hoping to find it in chat logs [20:15:40] i think we were talking in hangout when we noticed and when I fixed [20:15:42] it was 6 of them [20:15:46] an11 and an13 were some [20:22:25] ottomata: [20:22:27] milimetric: well, so executing '/home/yuvipanda/mobile-uploads/limn-mobile-data/update-mobile.bash /home/yuvipanda/mobile-uploads/limn-mobile-data/mobile/' on stat1 should generate files and copy them to /a/limn-public-data/mobile [20:22:27] ottomata: http://garage-coding.com/releases/udp-filters/ [20:22:30] ottomata: 0.3.22 [20:22:32] for precise [20:22:36] milimetric: however, rsync has to run from stat1001 [20:22:59] oh it does? [20:23:08] YuviPanda: why? [20:23:39] milimetric: hmm, https://gerrit.wikimedia.org/r/#/c/54116/4/manifests/misc/statistics.pp is for stat1001 no? [20:23:40] or is it for stat1? [20:24:03] well where it goes is up to a different file [20:24:11] that's just defining "what" the cron looks like [20:24:15] * YuviPanda is a little confused. [20:24:25] sites.pp defines "where" the different definitions are applied [20:24:35] ah, okay [20:24:36] * milimetric knows VERY little puppet :) [20:24:41] but basically, here's sites.pp: [20:24:45] hehe, i know even less little puppet :) [20:26:35] YuviPanda: https://gerrit.wikimedia.org/r/gitweb?p=operations/puppet.git;a=blob;f=manifests/site.pp;h=436f6c7ca6c661b7d3d25eb02645b009c81a1d9a;hb=69eca0ac218019688f3cc98b282453b36d9a0759 [20:26:41] (sorry, gerrit's hard to navigate) [20:27:06] misc/statistics.pp isn't organized that well, but the classes are approximately node independent [20:27:11] it depends on what gets included on what nodes [20:27:18] check out roles/statistics.pp [20:27:35] milimetric: heh :) [20:27:58] role::statistics::www is included on stat1001, and role::statistics::cruncher is included on stat1 [20:28:13] milimetric: thanks for that link with the VM [20:28:22] no prob average_drifter [20:28:22] average_drifter, danke, on it [20:28:23] I will definitely have to go through all their lessons with puppet [20:28:43] i went through just the first page of a tutorial and it was very helpful [20:28:47] the VM is very well done [20:28:50] guys, i'd be happy to give a little puppet tutorial to you sometime [20:29:09] it be cool if you both had a small distinct task to get done too [20:29:09] I think you're too high level :) [20:29:09] and we could all work thorugh it together [20:29:10] haha [20:29:14] maybe [20:29:27] have you checked out that VM? [20:29:36] it's pretty cool, and has awesome VIM extensions for puppet [20:30:20] but ottomata I'm about to have to submit a change to that changeset by Ori [20:30:36] bwerrrr, which one? [20:30:37] so YuviPanda, the script you made can run anywhere right? [20:30:39] oh the limn-public-data one? [20:30:42] yes [20:30:51] instead of an rsync it's just going to be a script [20:31:02] milimetric: it runs only on stat1, because virtualenv. [20:31:08] so i gotta make an erb template and ensure it exists, then change the cron to call it right? [20:31:32] ok, cool YuviPanda, will you send me the file so I can start puppetizing it? [20:32:02] commiting to repo [20:32:03] one moment [20:32:08] and now, i wait while maven downloads the internet. [20:32:08] (commiting is convoluted) [20:32:56] YuviPanda: is virtualenv installed on stat1? [20:33:02] and if so, where's it puppetized? [20:33:41] milimetric: it's not puppetized on stat1 [20:33:52] virtualenv is not puppetized anywhere, and I doubt it will ever be [20:34:00] IIRC stat1 is sortof exceptionist [20:34:01] virtualenv is on stat1001 [20:34:03] ? [20:34:05] no [20:34:11] y u need virtualenv? [20:34:13] limnpy? [20:34:17] well don't you need it for what you're doing? [20:34:20] limnpy + deps [20:34:24] aye [20:34:38] i might build a limpy .deb package soon [20:34:38] milimetric: err, didn't we agree to run our stuff ons tat1 and rsync it to sta1001? [20:34:39] practicing on one for Ori right now [20:34:50] ottomata: hmm, pandas as a dep is gonna be fun :) [20:34:54] OH pandas [20:34:55] Grrr [20:34:59] oh but there is a .deb already for it [20:35:04] sorry YuviPanda, I think we haven't hooked up since Friday [20:35:06] in apt somewhere [20:35:07] sure, but it is old and limnpy doesn't work [20:35:12] and Ops changed the playing field [20:35:13] either in debian/ubuntu or wmf [20:35:21] we need 100% puppetization, everywhere [20:35:30] oh so we're in trouble with this requirement then [20:35:46] really? I thought this is what we were talking about when you accidentally ignored ori-l [20:35:54] and that's why it was changed to rsync [20:35:55] that wasn't me :) [20:35:56] rather than whatever else [20:35:57] that was erosen [20:35:59] ow [20:36:00] dammit [20:36:03] sorry [20:36:03] :) [20:36:11] hmm, average_drifter, I thikn I need x86_64 [20:36:12] and it was at like 5am and I only know 'cause i read the logs [20:36:22] sorry about that. [20:36:22] root@gadolinium:~# uname -a [20:36:22] Linux gadolinium 3.2.0-38-generic #61-Ubuntu SMP Tue Feb 19 12:18:21 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux [20:36:23] ok, let's do this. where's that script of yours? [20:36:29] no no no, not your fault [20:36:32] things are just shifting under us [20:36:34] hey YuviPanda , milimetric can i help? [20:36:38] what's going on exactly? [20:36:43] * erosen reading backlog [20:36:45] sorry, no, just a misunderstanding [20:36:51] Yuvi thought I was you [20:37:02] fact which I take substantial pride in btw [20:37:04] erosen: we were talking about running the cron on stat1 to generate files, and then rsync to stat1001 [20:37:06] haha :) [20:37:14] milimetric: well, the script is going to be useless on stat1001 [20:37:21] hehe [20:37:22] virtualenv isn't available, and pandas isn't either [20:37:29] it's ok, I just want to see it to try to think of the easiest way forward [20:37:31] and the .deb version of pandas is old enough that limnpy doesn't work with it [20:37:40] rsync *is* the easiest way forward [20:37:40] maybe we can just get a basic CSV straight out of SQL [20:37:48] no to generate the datafiles I mean [20:37:53] since we don't need datasources [20:37:53] YuviPanda: i htought the solution was to have the scripts run on stat1 and then rsynced to stat1001 [20:38:00] erosen: I thought so too [20:38:07] yeah, but 100% puppetization is required everywhere now erosen [20:38:11] that's the curveball [20:38:13] even stat1? [20:38:16] woooooahh [20:38:20] **everywhere** [20:38:21] no user crons? [20:38:28] or you shall face the wrath and blood bathing rage [20:38:28] yeah, in that case stat1 should be nuked from orbit now, no? [20:38:39] no nothing not in puppet [20:38:44] wow, guess I'll take my ball and try to play on labs... [20:38:49] which has no dbs.... [20:38:56] if you want to cd /home/dandreescu, you have to puppetize it [20:39:00] :) [20:39:03] milimetric: in that case I doubt we can get anything productive done with stat1001 for a while. [20:39:03] hehe [20:39:14] well, failure is unacceptable YuviPanda [20:39:29] at least my script is useless :( [20:39:31] I'd like to introduce you to the duct tape hacker known as me. Me, Yuvi, Yuvi, me [20:39:40] :D [20:39:44] ok, we can make this work [20:39:51] so guys, there was a bit of discussion about this in the ops meeting yesterday [20:39:52] but I need to see the script [20:40:10] i tried to think of use cases where you guys would need your own crons writing data to your own homedirs [20:40:15] i only had them in theory [20:40:31] if you have some, write them up and i'll use them as arguments for not needing to puppetize all crons [20:40:35] puppetizing crons isn't the problem [20:40:41] it's the fact that we need limnpy [20:40:52] and that if there's a simpler way to generate the datafiles directly, I'd rather do that [20:40:53] milimetric: https://github.com/wikimedia/limn-mobile-data/blob/master/update-mobile.bash [20:40:56] even if it's a one-off [20:40:58] it is completely utterly useless, I think :P [20:41:00] thx Yuvi [20:41:04] also no docs [20:41:13] if limnpy doesn't work with .deb pandas, then that is a problem fo sho [20:41:27] erosen, you thought about removing the pandas deb, right? [20:41:29] you should invoke it as [20:41:29] dep* [20:41:32] so what's generate.py? [20:41:32] yeah [20:41:33] err [20:41:34] /home/yuvipanda/mobile-uploads/limn-mobile-data/update-mobile.bash /home/yuvipanda/mobile-uploads/limn-mobile-data/mobile/ [20:41:39] milimetric: generate.py is in the git repo [20:41:47] milimetric: mobile/ is also in the git repo [20:41:51] yep, got it [20:42:03] ottomata: i think for the dashboard jobs, we can definitely do without pandas [20:42:31] milimetric: also there is going to be problems with doing straight up raw SQL, since we'll *definitely* want to use MongoDB in the *near* future [20:42:33] ottomata: I'm more alarmed by the idea of slowing down analytics development to the speed of production development [20:43:38] so erosen, this line generates the datasources and datafiles, right: https://github.com/wikimedia/limn-mobile-data/blob/master/generate.py#L50 ? [20:43:49] yup [20:44:17] as we've talked about, limnpy is probably overkill for the datafiles [20:44:36] ok, well I agree with your larger point above [20:44:43] hmm, we probably don't even need unicodecsv [20:44:47] can just use normal csv module for now [20:44:49] but I've had this one card to babysit for a week and there's no way I'm failing to deliver by tomorrow [20:45:37] yeah, erosen, if you would, document that stuff as well as you can [20:45:39] looking at an example sql file now, SlightlySadPanda are these all pretty much the same? [20:45:42] maybe on https://www.mediawiki.org/wiki/Analytics somewhere [20:45:43] ottomata: which stuff exaclty? [20:45:59] quick notes about these kind of ops requirements that slow you down [20:46:06] especially relevant to things that are quick development stuff [20:46:17] like, if you had to run a cron using virtualenv packages for like a week or something [20:46:21] just to dig into an issue to answer a question [20:46:23] things like that [20:46:29] milimetric: yeah, pretty much. [20:46:48] ottomata: just having virtualenv installed would fix a lot of things, IMO [20:46:55] ottomata: sure, one question: does the proposed change mean that virtualenvs / local user installs are no longer allowed? [20:46:55] but virtualenv sortof 'bypasses' puppet, I guess [20:46:57] (in a way) [20:47:27] i'm not sure, kind of? [20:47:35] k [20:48:00] ottomata: have you looked into a packaged python scientific computing set up? [20:48:05] ottomata: like enthought or anaconda? [20:48:28] apt-cache search enthought: … python-enthoughtbase … [20:48:38] https://wikitech.wikimedia.org/wiki/Server_access_responsibilities [20:48:43] no [20:48:57] Anything that changes the state of a server outside of your home directory should be done by puppet.[https://en.wikipedia.org/wiki/Wikipedia:Please_clarify] This allows it to be peer reviewed. [20:48:59] so [20:49:03] i guess if you are doing stuff in your homedir, you are fine [20:49:36] Home directories are good places for storing your personalized configuration files (like .bashrc ) or temporary reasonably small nonsensitive files that you are working on, for commands such as grep NAME temp1 | sort | tee temp2 . Any files or data needed for the functioning of a program or the site should be in puppet. [20:49:47] where does cron come in? [20:49:54] also, in that case, we *should* have python-virtualenv added [20:50:04] average_drifter, still around? [20:50:42] to get python-virtualenv added, can you guys write up something for the reasons why? like, pandas + limnpy to run random stuff, or whatever [20:50:52] and send it to the ops list, or maybe make a wiki page and link to it [20:50:53] ? [20:51:07] ottomata: do you think we could get it done tonight? [20:51:12] approved, puppetized, deployed? [20:51:16] ottomata: I'm here [20:51:42] ottomata: i can definitely help with writing use cases. what is the time frame [20:51:48] because if not, I'd rather just take these sql queries and run them directly to generate csvs [20:51:58] i'm still not entirely sure what you are doing, but sure [20:52:01] i'm working for at least another hour today [20:52:03] it is possible that ops will have other objections? I'm unsure if pip/easy_install do ssl by default or even signature verification [20:52:24] erosen, time frame on that writeup is up to you, within a week or two would be good so you can catch the ops discussion while it is happening [20:52:38] ok, here's what we're doing, erosen, ottomata, SlightlySadPanda, we should all be on the same page here [20:52:41] k [20:52:43] ottomata: when you 'import foo' in python, python looks for 'foo' in several system-wide paths by default. virtualenv allows you to create a python environment that is more or less self-contained in a single directory, usually mounted under ~/. [20:52:44] ottomata: cool, i was just wnated to make sure it wasn't something for tonight [20:53:09] 1. execute SQL statements [20:53:10] 2. create CSV datafiles [20:53:10] 3. host publicly [20:53:19] :D [20:53:22] right now, we have a solution that uses Limnpy to do 1 and 2 [20:53:26] ottomata ottomata [20:53:32] finite ottomata [20:53:34] humbert humbert! [20:53:36] milimetric: i'm moving it back to csv. give me 10 mins [20:53:39] yes, maybe 0.5. do aggregation / custom logic [20:53:55] SlightlySadPanda: it's ok, I can it too [20:54:06] milimetric: I think it is more accurate to say that limnpy does 2 + creates datasources / graphs [20:54:34] right, I agree, but in this case we don't need that [20:54:41] hmm, there's also jinja2 [20:54:58] oh, right, that's how you're templating your sql [20:55:04] milimetric: okay, I'll leave you to it :) [20:55:12] milimetric: yes, but that's removable if you want. [20:55:16] * milimetric likes jinja2 [20:55:17] I used jinja2 a bit, it was cool [20:55:18] or we could just add python-jinja2 [20:55:23] milimetric: true, we are only writing datafiles, [20:55:24] to the puppet thingy [20:55:30] hehe, average_drifter, i think I need x86_64 build of udp-filter [20:55:39] root@gadolinium:~# uname -a [20:55:40] Linux gadolinium 3.2.0-38-generic #61-Ubuntu SMP Tue Feb 19 12:18:21 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux [20:55:42] well, right now jinja2 is puppetized so I'm ok with it [20:55:49] milimetric: but we are not doing the sql (step 1) with limnpy [20:55:55] oh, hm, maybe not? [20:56:09] i'm not seeing where the sql runs then [20:56:13] does amd64 report as x86_64? [20:56:13] milimetric, do we still need to bump the RT related to #68? https://rt.wikimedia.org/Ticket/Display.html?id=4730 [20:56:18] ottomata: yes [20:56:22] ottomata: AFAIk [20:56:36] milimetric: https://github.com/wikimedia/limn-mobile-data/blob/master/generate.py#L43 [20:56:41] no kraigparkinson, things changed a lot on that issue [20:56:44] ok sorry about that, thanks [20:56:44] milimetric: it uses MySQLdb [20:56:55] ok, milimetric, SlightlySadPanda [20:57:05] mysql can generate .csv files like you want pretty easily methinks [20:57:18] milimetric, does that mean we can close it and strike out the reference to it in the card? [20:57:24] gotcha erosen, so then dumping the rows into a csv is easy after that line? [20:57:31] yup [20:57:38] http://dev.mysql.com/doc/refman/5.1/en/select-into.html [20:57:38] kraigparkinson I'll update you in a sec, we're still figuring out what's going on [20:57:46] thanks. :) [20:57:51] Here is an example that produces a file in the comma-separated values (CSV) format used by many programs: [20:57:51] SELECT a,b,a+b INTO OUTFILE '/tmp/result.txt' [20:57:51] FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' [20:57:51] LINES TERMINATED BY '\n' [20:57:51] FROM test_table; [20:58:13] right, ok, so that's an option too [20:58:16] ottomata: i don't htink you can do that with the cluster [20:58:22] ottomata: because they are remote machines [20:58:30] why not? its just a select, ohhh right, outfile is local to that machine [20:58:35] most users don't have write access on the s* [20:58:38] pssh, ok you gotta script it then [20:58:43] yeah [20:58:43] gotcha [20:58:46] it's ok, we have the script [20:58:56] milimetric: i think you're on the right track [20:59:01] we just need to output the rows ourselves instead of having limnpy do it [20:59:07] milimetric: if you have the graphs/sources generated then there is no reason to use limnpy [20:59:10] just use teh csv module [20:59:13] basically delete starting with line 44 and replace [20:59:22] mysqldump -u root -p --fields-terminated-by="," --fields-enclosed-by="" --fields-escaped-by="" --no-create-db --no-create-info --tab="." information_schema CHARACTER_SETS [20:59:39] mysqldump can generate CSV [20:59:40] oo, nice [20:59:43] :D [20:59:45] does mysqldump work across servers? [20:59:53] milimetric: with ssh it does [21:00:10] as in, will it dump the file to my local machine if i execute against a remote cluster? [21:00:11] ssh user@host /usr/bin/mysqldump ... [21:00:25] milimetric: where you want [21:00:41] erm wait [21:00:41] hmm, i talked to asher about this, and he seemed skeptical of an SQL dump approach, but that doesn't mean it isn't possible [21:00:52] ok, too many cooks [21:00:55] hehe [21:00:58] :) [21:01:04] thanks guys, but I think I got this under control [21:01:08] I'll take the fail on it if not [21:01:54] SlightlySadPanda: where can generate.py be tested? Any computer? Labs? [21:01:57] milimetric, it will dumpp toy our local [21:02:05] your local [21:02:10] milimetric: it needs access to s1-analytics-slave [21:02:16] milimetric: and an appropriate virtualenv [21:02:35] ok, but i'm trying to get rid of the virtualenv requirement so I'm ok without that [21:02:42] ok [21:02:45] so the s1-analytics-slave, ottomata, how do I get access to that? [21:02:56] you need to be 'in cluster', so no labs [21:02:59] there is a research user and pw, do you have it? [21:03:02] both stat1001 and stat1 have it [21:03:04] right [21:03:06] can't do it from labs [21:03:15] yeah, and put your researach user and pw in ~/.my.cnf.research [21:03:28] gotcha, I can borrow Diederik's [21:04:08] ok, gotta run for a bit, but I'll be back. Ultimately I'll make this work and push a git review with the puppet changes needed to run it via cron [21:07:01] * SlightlySadPanda sighs [21:08:50] ottomata: do you have a recommended VM tool? [21:08:57] ? [21:09:04] for your mac? [21:09:07] yeah [21:09:16] not really, I use VMware but don't really like it [21:09:22] sorry, if that is't the right name [21:09:24] and it isnt' free [21:09:35] yeah, i used to have parallels [21:09:36] vagrant is supposed to be super cool, right? [21:09:41] there is also virtualbox [21:10:19] yeah those are the two I was hoping you would advise between [21:11:33] vbox is awesome imho [21:11:43] average_drifter: cool [21:11:51] if I were to start from scratch right now [21:11:54] i would try vagrant [21:11:58] cause I want to do it all via the cli anyway [21:12:10] yeah that is my goal [21:12:17] k, I'll let you know how it goes [21:17:47] actually vagrant is awesome, but I got tangled up in multiple machine configs [21:17:53] I mean that was ok also [21:18:06] but when it came to file transfer to-fro vm on vagrant/host [21:18:10] that was a bit of a hassle [21:18:19] * SlightlySadPanda doesn't think he can run vagrant easily, being on a macbook air and all [21:18:19] I had to do vagrant ssh_config [21:18:47] SlightlySadPanda: erm, vagrant is just ruby, bundled with some puppet and some other juice [21:19:01] SlightlySadPanda: and vbox ofc [21:19:16] yeah, vms on my machine are supers low [21:19:20] plus I've like 4G of free space [21:19:28] android emulators take up a *lot* of space [21:42:09] looks like milimetric disappeared. ottomata, I'll ask you the same q I asked milimetric: do we still need to bump the RT related to #68? https://rt.wikimedia.org/Ticket/Display.html?id=4730 [21:42:22] hi kraigparkinson [21:42:22] I'm here [21:42:32] ooh, ktp! new shorter and improved [21:42:40] sorry, had to run out, just got back [21:42:40] :) trying to make it easier on you. [21:42:50] IRC nick golf! [21:42:52] we have tab completion, so it's ok either way [21:42:59] yay for tab completion :) [21:43:07] so, the RT on that is no longer valid [21:43:20] do we need to close it? it's still open. [21:43:23] TAB COMPLETION!!! [21:43:23] we are using a work-around. otherwise it won't get done by tomorrow [21:43:24] I DID NOT KNOW [21:43:26] :) [21:43:32] yuvi taught me [21:43:47] we can close it, it's no longer valid [21:44:24] it'd be nice to track this fumbling around though [21:44:47] which status should I give it: stalled, resolved, deleted? [21:45:05] i'm not sure how it happened but I counted six people who got involved with this issue [21:45:12] :) [21:45:14] I would say stalled [21:45:30] ottomata? does that make sense? [21:45:57] uhhh, i don't entirely understand, you're still rsyncing to stat1001, right? [21:46:06] as in would we still do this if we could? [21:46:07] that to me says "we basically tried to do this thing, but it wasn't done for a while so we had to do something else". It might be that it was an invalid request to begin with [21:46:21] but we didn't get that communicated directly to us [21:46:27] what? I didn't teach anything! I'm utterly useless! I swear! :) [21:46:30] no more rsyncing [21:46:43] we will run sql from stat1001 to the clusters [21:46:52] and generate the files locally on stat1001 [21:47:16] does this workaround represent technical debt? [21:47:31] mmm... gray rea [21:47:32] *area [21:48:05] SlightlySadPanda: speaking of teaching me, what's the format of this .my.cnf file? Never worked with mysql [21:48:16] ottomata, does that make sense to mark it as stalled? [21:48:19] milimetric: INI [21:48:20] milimetric: http://blog.bigsmoke.us/2010/08/11/setting-password-for-mysql-user-in.my.cnf [21:48:32] cool, makes sense, thx [21:48:42] y u no rsync? [21:48:46] I'd assume that stalled implies that its still expecting to be implemented at some point. [21:49:26] running on stat1 and rsyncing *might* make ops happier [21:49:32] i don't have a big preference though [21:50:55] ottomata, does that make sense to mark it as stalled? [21:51:39] running on stat1 and rsync will also make our lives simpler :P [21:52:05] ktp, sorry, trying to understand [21:52:21] np. [21:52:30] now you got me confused ottomata [21:52:42] i think it is not stalled, since they will need puppetization to do the rsync, if they are doing it, actually, any of it needs to be puppetized, and this RT is tracking a particular gerrit changeset (or maybe more than one…?) [21:52:48] woo, jar hell is resolved [21:52:50] so, it is not closed or stalled, but being worked on, I believe [21:52:52] yay! [21:52:56] milimetric, what's up? [21:53:05] why would i need to rsync? [21:53:10] i think if you want to run the script from stat1001, that is ok, but it would be better to put that on stat1 [21:53:18] the initial reason was because we thought we could set up limnpy on stat1 [21:53:19] congrats dschoon, full speed ahead for #244 & #68? :) [21:53:20] since stat1 is for general numbah crunching and general use packages [21:53:22] and you have an account there [21:53:26] but now we can't set up limnpy anywhere without a ton of work [21:53:30] whereas stat1001 is more of a production webserver [21:53:37] nice nick, ktp [21:53:39] that's fine [21:53:51] danke, dschoon. [21:53:52] but kicking off the sql on a remote server is not number crunching [21:53:59] yep [21:54:12] it actually limits the amount of work being done overall and keeps it the same on stat1001 [21:54:16] yeah, i know, but it is a process on the produciton webserver that will run, one which it might be easier for you (and others?) if you had access to to check up on [21:54:19] dschoon, what was your solution? [21:55:27] updated the deps in the poms, moved the jars to a new directory, and then specified the GeoIP databases via the distributed cache rather than the libpath [21:55:39] (we should generally be doing that with resource files) [21:56:49] that's cool ottomata, I'll set it up on stat1 and rsync to stat1001 [21:56:59] but btw, i have an account on stat1001 too, so if you want to kill that, that's fine by me [21:57:21] nono, i personally don't care, and if you have one, keep it [21:57:32] but maybe yuvipanda will want to check on this? or erosen? [21:57:39] someone mention me? [21:58:03] if you really want to put it on stat1001, i think its fine, it just seems more proper to put it in stat1 [21:58:29] i have no preference at all, so what you say goes then [21:58:40] yuvik: i'm not understanding how to use this .my.cnf file... [21:58:47] what goes in the [this thing]? [21:58:54] milimetric: step 1: create ~/.my.cnf.researcher [21:58:55] [log]? [server url]? [21:59:07] it can go anywhere, but convention puts it in your home folder [21:59:21] nono, the square brackets defining the section where you put user and password [21:59:26] what goes in there? [21:59:30] ah [21:59:31] wait [21:59:37] so i've got this: [21:59:43] dschoon, could you update this card and mark it as resolved? :) https://mingle.corp.wikimedia.org/projects/analytics/cards/377/edit?coming_from_version=6 [21:59:44] [something] [21:59:45] user=research [21:59:47] password=blah [21:59:52] what's the something [21:59:52] https://mingle.corp.wikimedia.org/projects/analytics/cards/377 [21:59:54] something = 'client' [22:00:02] ktp: yep. i'll do a pass a the end of the day [22:00:04] lol, what?! [22:00:06] gracias [22:00:07] [travis-ci] master/90c3957 (#99 by dsc): The build has errored. http://travis-ci.org/wikimedia/kraken/builds/5640279 [22:00:09] [client] [22:00:09] what in the world is client? [22:00:12] user=research [22:00:15] password=blah [22:00:22] mysql client? [22:01:08] haha, that makes no sense [22:01:14] * milimetric thinks mysql is strange [22:01:18] :P [22:01:27] well, it is common shared format for all database clients [22:01:46] milimetric: we should move to the python script soon. We (app team?) want to use mongodb. [22:02:19] naw, it makes sense milimetric [22:02:29] mysql can have defaults for all its binaries [22:02:36] and they can be in the same config file [22:02:53] /etc/my.cnf, or wahtever [22:03:10] often my.cnf will have a buncha config sectiosn like that, with specific configs that apply to certain binaries [22:03:14] i think it has global settings too [22:03:46] oh i'm sure it makes sense, it's just not intuitive to me. I'd expect maybe like my.client.cnf or something [22:04:13] and then the [sections] to mean something else [22:04:31] yuvik: what do you mean by mongodb? [22:04:32] milimetric, sorry I dropped out for a sec and I'm not sure if I missed it, do we have any tech debt associated with our solution for #68? [22:04:49] milimetric: not in the near future, but within the next 4 weeks [22:04:51] no kraigparkinson, we're not generating any new technical debt [22:04:53] milimetric: use https://www.mediawiki.org/wiki/Extension:EventLogging/MongoDB [22:05:11] * yuvik sets up a technical cliff, seeds stories about it  [22:05:18] thanks [22:05:45] i'm not sure what you mean by that yuvik, why is that related to the python script? [22:05:48] sorry if i'm being slow [22:05:57] milimetric: so the python script currently connects to mysql [22:06:05] *at some point in the future*, it will connect to mongodb instead [22:06:08] no mysql [22:06:26] but let's forget about it for now [22:06:32] gotcha [22:06:48] (another reason I would prefer this to be in stat1, much low overhead for changes) [22:06:49] no i follow, but what do you mean "move to the python script"? [22:07:07] milimetric: are you *sure* that we can not just rsync from stat1 without risking loss of life / limb / cluster-access? [22:07:08] no, everything has to be puppetized, whether it's in stat1 or stat1001 [22:07:33] ottomata was saying that stat1 is 'number crunching server', etc... [22:07:47] right, that doesn't mean stuff can be on there without puppet manifests [22:08:01] right [22:08:15] if this is something that is going to be there regulary, its gotta be in puppet, especially if it is going to rsync something to a prod web server [22:08:17] or, I should say things this way: I am deathly afraid of ever doing anything on any production cluster without puppetizing it [22:08:32] if you are just doing random things that only modify files in your homedir, you can probably get away with out puppetizing [22:08:48] right, which is what i'm doing now to test out the approach [22:08:53] but when i got it solid, it's going into gerrit [22:09:02] :) ok [22:09:07] is that ok btw ottomata? [22:09:11] testing on stat1? [22:09:32] because i don't know what environment i'll have there so i want to make sure i get everything i need for puppet [22:09:56] also, can I have puppet clone a repository if a directory does not exist? [22:10:17] or is that insecure? [22:11:43] milimetric: we should perhaps also move limn-mobile-data to gerrit [22:12:46] it's your repo yuvik, you can do as you like [22:12:58] milimetric: no, IIRC anything 'deployed' on cluster should be on gerrit [22:12:59] drdee: yo [22:13:01] rather than github [22:13:07] I'm unsure where I read that, however [22:13:15] but gerrit and I don't get along because gerrit chokes when you use git-flow or any decent branching methodology for that matter [22:13:58] if puppet is going to have git urls in it, you probably wont' get it approved unless they are to gerrit [22:14:12] yeah, I think so [22:14:19] milimetric: yup. gerrit sucks. [22:14:31] it doesn't suck. It's just not as awesome as git [22:14:35] drdee: i redid https://mingle.corp.wikimedia.org/projects/analytics/cards/92 and make it even simpler. i'll write a separate geo card. [22:15:01] and I'm fanatic about my lovely git: https://github.com/JusticeParty/founding-documents [22:15:14] (I'm the acting chair of that political party, we host all our stuff on github) [22:15:23] milimetric: wow! :) [22:15:36] milimetric: there's no reverse mirroring, though (no GH -> Gerrit) [22:16:28] yeah, i mean, i think these repositories should be outside of the review process imo. It would slow things down for no reason. Contributions are more important than review in colaborative analytics [22:16:51] mistakes aren't really a concept we need to worry about, because it'd just generate wrong data and we'd fix it [22:17:18] yup, but as ottomata says I am pretty sure anything in puppet that clones a github url will be redfalgged [22:22:43] but! [22:22:52] hm [22:22:58] milimetric, you can commit to analytics gerrit repos without review [22:23:04] just not ops ones [22:23:08] but yeah, it sucks [22:23:29] you can do a 'deploy' without puppet though [22:23:34] not sure what that means [22:23:42] At this point I'd say Gerrit tries to take git and pretend to be svn, but meh. too late [22:23:42] i guess, use puppet to create an /a/whatever directory [22:23:46] and then deploy your repo to it? [22:34:38] heh, ottomata [22:34:46] is scowl a renewable resource? [22:34:56] is it easily stored for later use? [22:36:51] would be nice [22:36:56] perpetual scowl machine [22:37:00] * YuviPanda hoards some scowl [22:37:14] that's cool ottomata, i'll make the scripts templates in puppet and we'll have to manage it that way instead of from the repo [22:37:18] is that ok YuviPanda? [22:37:38] which scripts? [22:37:39] the SQL? [22:37:40] that's cool [22:37:44] to make the csvs, yea [22:37:54] generate.py, the config.yaml, and the sqls [22:38:11] i'll make a new folder under templates/misc in the puppet repo [22:38:44] * YuviPanda is a little sad [22:42:05] !log deployed udp-filter 0.3.22 on gadolinium (thanks average_drifter) [22:42:25] oh no, why'd I make you sad YuviPanda? [22:42:50] ha! i love it! [22:42:56] unrelated scripts in repos make me sad [22:42:58] about 5% packet loss on gadolinium since it was deployed [22:43:00] interesting! [22:43:04] ok, i'm signing off [22:43:05] also kittens :P [22:43:07] (just kidding) [22:43:09] ottomata: what was the packet loss before ? [22:43:22] its that on locke and oxygen too, this probalby means that my diagnosis was wrong [22:43:33] but at least I have a machine I can play with now (locke is still running) [22:43:50] ok, i'm out [22:43:51] laters all! [22:46:52] i agree with you YuviPanda, that's kind of crazy we have to do this [22:47:01] kraigparkinson: I changed my mind - there is now technical debt [22:47:05] i'd rather just make a repo in gerrit [22:47:13] but, 'for now' this will do, I guess [22:47:16] * YuviPanda sighs again [22:47:21] no it's ok, we can do that [22:47:31] we'd have to poke ^demon, I guess? [22:47:35] he might not be still around [22:47:36] i'll push my change when it's sort of working and you can move it to gerrit? [22:47:43] oh really? we can't just create a repo? [22:47:48] :/ [22:48:40] don't think so, no [22:48:53] that was the case when I last checked, and I don't think that has changed [22:49:21] milimetric: i'm asking him on -dev [22:49:30] cool, thx [22:50:30] milimetric: asking for it to be analytics/limn-mobile-data [22:50:39] cool, works for me [22:54:14] milimetric: done [22:54:29] thanks YuviPanda, pushing now [22:54:40] ssh is insanely slow when you :w from vim [22:54:49] like it takes 30 seconds to refresh the screen [22:55:04] milimetric: heh [23:00:11] uh, YuviPanda, I pushed and wanted to migrate this to gerrit [23:00:15] you in the middle of anything? [23:00:24] just testing some stuff on the android app [23:00:26] https://github.com/wikimedia/limn-mobile-data/blob/master/generate.py [23:00:27] anything I can do to help? [23:01:05] no it's all good, i'll just migrate, update the deployment stage to pull from gerrit, and delete the github repo [23:01:12] ok [23:01:34] hmm [23:01:34] https://gerrit.wikimedia.org/r/gitweb?p=analytics/limn-mobile-data tells me nothing [23:02:00] yea, hopefully i can find the right url to push to [23:04:47] https://gerrit.wikimedia.org/r/gitweb?p=analytics/limn-mobile-data.git [23:04:54] YuviPanda: there you go [23:08:45] milimetric: sorry, shitty internet [23:08:48] milimetric: did I miss anything? [23:08:53] https://gerrit.wikimedia.org/r/gitweb?p=analytics/limn-mobile-data.git [23:09:51] ok, so YuviPanda, is there a folder on stat1 where we can put the .my.cnf.research thing? [23:10:11] milimetric: good quesiton. I'm unsure where to put that for puppet, since it has password info [23:10:31] our puppet can fetch that password from a private repo, so don't worry about that [23:10:48] but i'm not familiar with linux file structure or where the file should end up, location wise [23:10:57] usually it is on the home folder [23:11:40] I'd prefer an absolute path so I don't screw up which user owns the file / runs the file / has it in their home [23:11:52] and so it can be used by the other cron job i'm running [23:12:25] oh could it be in /a [23:12:26] ? [23:16:53] shitty connections suck [23:16:55] milimetric: sorry again [23:17:03] milimetric: genereate.py looks at ~/.my.cnf.research. can be anywahere [23:17:08] no prob, just wondering if it can be in /a/.my.cnf.research [23:17:23] that'd be cool 'cause i could reuse it in the other cron I made [23:18:48] milimetric: no reason it shouldn't be, but if it is world readable, be careful [23:18:56] i'm unsure what security implications of putting a password there are [23:19:20] yeah, i'm bad at user permissions, but i will ask for that explicitly when I do the gerrit review [23:19:31] ok [23:22:57] milimetric: i'll be going to sleep in a little bit [23:23:07] cool, no prob Yuvi [23:23:13] I can finish up the puppet stuff on my own [23:23:21] the scripts run great, nice job on that btw [23:23:30] ttyl [23:24:01] milimetric: thanks [23:31:49] milimetric, you were saying we do have some tech debt to handle? [23:31:52] do tell. [23:32:47] average_drifter: I have a feeling you would like this: https://github.com/holman/spark [23:32:54] looking [23:32:58] this is the craziest environment ever, sorry kraigparkinson [23:33:05] no more tech debt once again [23:33:15] because the hack I was going to do to create the debt is not allowed [23:33:24] hehe [23:33:32] i'm not sure how this should be tracked though [23:33:51] it's technically a bunch of work that we had to do because the ops policy was not well understood / defined when we estimated the task [23:34:01] and to some extent, still is not well understood [23:34:25] hehe, yeah that's pretty good, graphs in the shell [23:34:38] no worries, milimetric [23:35:10] k, gtg, dinner, be back in a bit to finish this puppetization up [23:35:39] How about I capture it as a problem card? Title is "ops policy with respect to [insert policy here] was not well understood / defined when we estimated the task". [23:36:02] just tell me what to fill in as the blank, and I'll get it captured. [23:56:48] I guess [insert policy here] could be "deployment to production cluster" [23:56:53] kraigparkinson: ^^ [23:57:44] deployment of anything in particular? [23:58:12] any kind of artifact? a certain type of artifact?