16:04:27 #startmeeting marconi 16:04:28 Meeting started Mon Sep 30 16:04:27 2013 UTC and is due to finish in 60 minutes. The chair is kgriffs. Information about MeetBot at http://wiki.debian.org/MeetBot. 16:04:29 Useful Commands: #action #agreed #help #info #idea #link #topic #startvote. 16:04:32 The meeting name has been set to 'marconi' 16:04:44 #link https://wiki.openstack.org/wiki/Meetings/Marconi#Agenda 16:04:53 #topic Review actions from last time 16:05:05 #link http://eavesdrop.openstack.org/meetings/marconi/2013/marconi.2013-09-23-16.19.html 16:05:17 Looks like the only action noted was to get the proxy patches reviewed 16:05:31 I think we made good progress there, nicht? 16:05:50 I haven't had a chance yet to weigh in on the latest round 16:05:58 but am planning on doing that ASAP today 16:06:10 sounds good 16:06:16 questions, comments, rude remarks? 16:06:18 kgriffs: yup - most of the proxy patches were reviewed. In fact, WRT to the state of the proxy last week, I think you reviewed all patches that existed as of last meeting 16:06:19 cool! I am waiting on those reviews to start testing :) 16:06:29 tht was not a rude remark * 16:06:35 :p 16:06:49 ok, moving on 16:06:53 #topic bugz 16:07:03 #link http://goo.gl/uKe5gp 16:07:10 starting at the top 16:07:21 I have a patch pending for that one 16:08:08 kgriffs: it needs a little bit of consensus before moving forward. 16:08:15 i'm not sure how this can happen 16:08:17 just got a couple minor comments to address and then it should go in and be ready for testing 16:08:35 alcabrera: re ASCII or whatever, you can't have unicode in URLs 16:08:40 per RFC 16:08:41 iirc 16:08:50 anyone have evidence to the contrary? 16:09:05 kgriffs: i think you can 16:09:31 it is supposed to be %-encoded. I will check it out again. 16:09:36 #link http://stackoverflow.com/questions/2742852/unicode-characters-in-urls 16:09:50 That SO exchange has some good pointers. 16:10:13 yeah, looks familiar 16:10:21 kgriffs: %-encoding seems right, based on what I just read. 16:10:31 what is the charset of URI? 16:11:00 unreserved = ALPHA / DIGIT / "-" / "." / "_" / "~" 16:11:19 zyuan: "...UTF-8-encode them then percent-encode the non-ASCII bytes..." 16:11:51 zyuan: Though that's not standards text, just a comment on the internet. :P 16:12:00 don't use the term ASCII 16:12:27 there is EBCDIC 16:12:51 "Percent-encoded 16:12:51 octets (Section 2.1) may be used within a URI to represent characters 16:12:51 outside the range of the US-ASCII coded character set if this 16:12:54 Berners-Lee, et al. Standards Track [Page 8] 16:12:54 URI does not define encoding, it defines charset (reserved + unreserved); encoding is platform-defined. 16:12:57 RFC 3986 URI Generic Syntax January 2005 16:13:00 representation is allowed by the scheme or by the protocol element in 16:13:01 which the URI is referenced. 16:13:02 " 16:13:03 https://www.ietf.org/rfc/rfc3986.txt 16:13:20 kgriffs: thanks. I posit that we move the rest of this discussion for breakout. 16:13:33 TL;DR I will need to see what WSGI servers do with percent-encoded chars. We may indeed want to support them if WSGI servers translate them to unicode 16:14:04 #info Discuss unicode queue names in a breakout 16:14:14 moving down the list of bugs... 16:14:35 "https://bugs.launchpad.net/marconi/+bug/1214973" 16:14:49 o/ 16:14:56 flaper87: hi! 16:15:01 flaper87: wooooo, you made it! 16:15:02 glad you made it! 16:15:05 * alcabrera cheers 16:15:14 Fuck YEAHHH!!! 16:15:23 stupid vpn 16:15:25 aaanyway 16:15:26 #info kgriffs started working on "Autoreconnect not handled in all cases" 16:15:36 kgriffs: awesome 16:16:02 I will have a patch ready for that soon. It is tricksy, so we will need to closely vet this one 16:16:08 kgriffs: +1 16:16:12 glad to hear that 16:16:21 moving down the list 16:16:37 Any other bugs people would like to comment on? 16:16:49 yeah 16:16:53 the config one 16:16:56 or is that a bp ? 16:16:59 mmhh 16:17:04 don't remember exaclty 16:17:09 bug list: http://goo.gl/uKe5gp 16:17:10 This one? 16:17:13 #link https://bugs.launchpad.net/marconi/+bug/1229848 16:17:24 Global configs 16:17:38 flaper87: ^ 16:17:59 alcabrera: yeah 16:18:06 that and deprecate common.config 16:18:14 but the deprecation one is a bp 16:18:16 IIRC 16:18:54 anyway, I think both are important 16:19:18 flaper87: I don't see a bug report or a BP addressing common.config 16:19:20 meaning, they may not have the highest priority right now but, if we don't takle them now we won't be able to do it later 16:19:46 because things will keep getting bigger and bigger 16:19:59 and more code will use that "method" and "module" for doing things 16:20:07 alcabrera: mmh, I thought I opened oen 16:20:14 I might have done that in my brain 16:20:45 flaper87: Could you double check later and document that somehow? 16:20:58 kgriffs: Thoughts about moving away from common.config? 16:21:08 yeah, just did, no bug 16:21:12 I'll file a new one 16:21:36 i think it's fine, but I would like us to identify any nice features it provides and commit to contributing them upstream 16:21:56 That sounds good to me. 16:22:04 the reason I'm bringing both is because if we move away form common.config we should take that chance to remove the global instance 16:22:15 flaper87: +1 16:22:15 kgriffs: +1 16:22:22 kk, I'll those 2 issues 16:22:34 I mean, that issue and the one I'll open in 3, 2, 1.... 16:22:41 cool, cool 16:23:02 that's all from me 16:23:16 Regarding bugs, I'm tackling proxy-related bugs atm. 16:23:33 alcabrera: that sounds great, you've been doing an amazing job there 16:23:54 IMHO, you should make sure to tackle them all before moving to soemthing else 16:23:58 The hottest item on my list is the notion of updating partition data, and I'd love comments on that in the related patch. :) 16:24:01 #link https://review.openstack.org/#/c/48737/ 16:24:09 current bugs are important and related to the proxy design 16:24:19 flaper87: no worries, there. The proxy is my main concern for awhile yet. :D 16:24:32 awesome 16:24:35 thanks, d0000d 16:24:42 ok, anything else on the topic of bugs? 16:24:48 kgriffs: none from me 16:24:52 none from me 16:24:59 #topic incubation bps/bugs 16:25:26 flaper87: seems like you created bps for all the things we need to do in order to graduate? 16:25:45 https://wiki.openstack.org/wiki/Marconi/Incubation/Graduation 16:25:54 #link https://wiki.openstack.org/wiki/Marconi/Incubation/Graduation 16:26:11 kgriffs: that's correct 16:26:13 flaper87: would you mind linking from that tracking wiki to all those? 16:26:26 kgriffs: that's a good idea, will do that! 16:26:39 cool 16:26:42 are any of these in progress? 16:26:46 megan_w: yup 16:26:51 client library, for sure 16:26:57 I would like to spend a few minutes each week discussing our progress on those 16:27:05 +1 16:27:08 kgriffs: +1 16:27:28 #action kgriffs to add graduation progress to weekly agenda 16:27:33 ok cool 16:27:34 kgriffs: +1 16:27:51 If we come up with any other ToDos pls add them to the wiki and link the appropriate launchpad item 16:28:22 #topic Review the rough draft of the proxy's admin API 16:28:34 #link https://wiki.openstack.org/wiki/Marconi/specs/proxy/v1 16:29:07 alcabrera: can you walk us through the spec? 16:29:12 Sure, thing, kgriffs 16:29:25 * flaper87 sits, open his eyes and reads carefully 16:29:41 The proxy itself is responsible for forwarding requests to registered marconi partitions. 16:29:57 There's two components to it: 1) partition management, 2) implicit catalogue handling 16:30:06 I'll speak on partitions first, then the catalogue. 16:30:12 #link https://wiki.openstack.org/wiki/Marconi/specs/api/v1 16:30:23 let us know which doc to reference. :p 16:30:36 kgriffs: Thanks for linking! 16:30:51 To register a partition, an admin must send a PUT command to a marconi proxy admin instance. 16:31:09 That PUT needs to give the partition a name, a list of hosts, and a weight 16:31:31 Those are all used by the marconi-proxy when making decisions about where to allocate queues and where to forward requests 16:31:53 An admin can also list all partitions and GET a particular one to review details. 16:32:17 There's planned support for updating a partitions hosts/weight, and that's in the works. 16:32:29 The other side is... 16:32:32 The Catalogue 16:32:35 ==== 16:32:51 That's where the mapping from a project + queue to a partition lives. 16:33:09 It's handled implicity by the proxy when a client creates/deletes queues. 16:33:23 So, from an API perspective, the catalogue is immutable (GET only). 16:33:44 An admin can review what lives in the catalogue to understand the flow of the system. 16:33:59 That's the proxy API in a nutshell 16:34:01 Comments? 16:34:21 so, I am assuming the API will be augmented at some point to support migration? 16:34:40 the admin API, i guess 16:34:54 kgriffs: yes - there needs to be some way to move data from one partition to another. 16:35:08 as well as mark certain project + queues as "frozen" 16:35:12 ok 16:35:46 what happens if I PUT a queue that is already there? 16:35:49 alcabrera: can the same queue span across multiple partitions? 16:35:57 sorry, not queue 16:35:59 malini: HEEEELLLOOOOOOO!!!!!! 16:36:01 i meant partition 16:36:01 :) 16:36:17 kgriffs: you stole my next question :) 16:36:21 it'd better not 16:36:23 kgriffs: it short-circuits and returns 204 16:36:28 flaper87: hello!!! 16:36:35 kgriffs: the contents are not replaced 16:36:38 seems like you should return an error status 16:36:42 and use PATCH for updating 16:36:43 malini: no 16:36:49 kgriffs: +1 16:36:55 kgriffs: +1 16:37:07 kgriffs: I'd received many comments in that direction when I proposed an updating API for the admin interface. 16:37:10 alcabrera: did you see my comments in the hosts weight patch ? 16:37:13 kgriffs: PATCH, that is 16:37:16 kk 16:37:27 cool 16:37:31 flaper87: I'm pretty sure I did, as well as malini's. :) 16:38:02 awesome (I commented using my ipad so, not sure what I actually did) 16:38:05 alcabrera: you don't have to support JSON-patch but using a different verb would be more explicit. We had a similar discussion for the queues resource 16:38:16 s/queues/queue 16:38:28 kgriffs: I'll reference the PATCH claims implementation when building this out. 16:38:33 kk 16:39:24 so, how about ditching HTTP and only supporting zmq for the admin interface? 16:39:27 * kgriffs runs away 16:39:31 lol 16:39:34 ... 16:39:38 jk 16:39:45 LOOOOOOOL 16:39:57 actually, I was hoping for nanomsg. srlsy 16:40:06 :p 16:40:17 hahaha 16:40:18 alcabrera: Is the catalogue stored in memory ? 16:40:19 kgriffs: let's figure out marconi-queues:zmq/nanomsg first. :P 16:40:20 so, I imagine this interface being accessed mostly via a CLI tool? 16:40:41 I think so 16:40:44 does curl count as a CLI tool? 16:40:51 maybe also config management 16:40:55 I think this should be part of marconiclient as well 16:40:57 malini: no - it is stored in a combination of primary storage (mongodb atm) + cached in a local cache layer (memcached atm) 16:41:00 zyuan: heh 16:41:02 I guess 16:41:06 no, it can't be in marconiclient 16:41:19 malini: it's a hierarchical caching scheme 16:41:20 admin only 16:41:34 yup, it depends on who's using it 16:41:43 alcabrera: thanks !! 16:41:52 alcabrera: delete a partition 16:42:07 when would someone want to do that? 16:42:29 Hmmm... 16:42:35 bursting for scale? 16:42:40 and then trimming back down 16:43:04 megan_w: I like that line of thought. 16:43:09 ok 16:43:28 then, seems like queues need to be migrated off as part of the delete 16:43:35 ? 16:43:44 not very sure 16:44:02 if a partition has no queue left 16:44:05 kgriffs: yup, given that the deployer wants to support strict persistence requirements 16:44:07 you can just delete it... 16:44:07 seems like more of a "stand down" partition than "nuke it and everything on there" 16:44:39 so migration sounds a lot like a next major feature for the -proxy layer. 16:44:40 ok, can you make a note about this - we should revisit when we start working on migration 16:45:00 +1 for revisiting this later 16:45:10 #info Deleting a partition should migrate queues associated with it to another partition (needs exploration) 16:45:19 deleting a partition is tricksy 16:45:32 you also have to handle the fact now that weights have changed 16:45:46 kgriffs: that's already handled - the weights. :D 16:45:56 The choice of weighting algorithm made that part pretty easy, I think. 16:46:05 i guess since we have static catalog mapping, existing queues will continue to go the right place 16:46:10 ok 16:46:32 one last comment, then we will move on. I imagine we will keep reviewing the API over the next few mtgs 16:46:40 list partitions 16:46:41 agreed 16:46:45 * flaper87 nods 16:47:14 any particular reason you chose an object as the outermost type in lieu of an array? 16:47:38 (using JSON terminology) 16:47:50 kgriffs: no rational reason. My fingers prefer objects to arrays ({} vs []) 16:48:03 TBH, I would go for an array 16:48:14 seems more natural when presenting a "list" of things 16:48:18 kgriffs: agreed 16:48:31 moving at the speed of POC leads to strange things. 16:48:44 unless the client is trying to lookup a specific partition 16:48:56 I'll file a bug for that. 16:48:58 in which case, it would just GET the partition directly, no? 16:49:04 * flaper87 agrees with the above 16:49:09 yup 16:49:10 kk 16:49:17 Another note - pagination 16:49:20 you might change that at the same time you implement paging 16:49:34 exactly! 16:49:50 cool, we're in consensus on this. :) 16:50:42 10mins left 16:50:49 next topic - API audit? 16:51:14 tht was a quick discussion (with our history) !! 16:51:34 alcabrera: +1 16:51:38 #link https://bugs.launchpad.net/marconi/+bug/1233277 16:51:41 Bug filed. 16:52:23 anything else on that topic? 16:52:24 malini: we're learning to work better together. :D 16:52:55 kgriffs: nothing from me 16:53:06 ok, moving on 16:53:48 question - progress on mysql? 16:53:54 #topic finalize marconi-queues API 16:54:09 zyuan: one moment, we will can addess during open discussion 16:54:30 So, I'd like to dedicate the entire next mtg to finalizing and freezing the API 16:54:36 kgriffs: +1 16:54:41 it hasn't changed for a while, so think now is a good time 16:54:41 kgriffs: +1 16:54:47 makes sense 16:54:48 ok. 16:55:02 so if there are any changes y'all have one more week to sneak those in. :D 16:55:27 * flaper87 prepares a 10000 LOC patch 16:55:29 :D 16:55:36 * kgriffs passes out on the floor 16:55:50 * kgriffs recovers 16:55:57 lol 16:56:03 #topic Summit sessions 16:56:12 kgriffs: you just read my mind 16:56:14 FYI, I spoke with ametts about that last week 16:56:19 what is the last change? 16:56:23 to marconi API? 16:56:48 I think we are looking at 4 sessions 16:57:03 1. alternate transports 16:57:06 2. alternate backends 16:57:21 3. notifications 16:57:48 4. proposed new features 16:57:52 something like that 16:57:56 +1 16:58:06 What's the link to summit sessions? 16:58:07 so, existing proposals will slot into one of those 4 16:58:15 #link http://summit.openstack.org/cfp/topic/19 16:58:20 Also, I love the list of proposed sesssions - awesome stuff. 16:58:27 kgriffs: thanks! 16:58:36 re the talk, it got scheduled at the same time as the design sessions 16:58:37 so.... 16:59:32 ametts is working to try and get the talk rescheduled to avoid a "conflict of interest" 16:59:35 ;) 16:59:42 fine. i'll go to hong kong. ugh. 16:59:48 lol 17:00:06 megan_w: yeah, that would really be unfortunate if you had to do that 17:00:13 ;) 17:00:13 haha 17:00:16 :D 17:00:22 megan_w: I am sorry, megan_w 17:00:23 ok, 17:00:28 #topic open discussion 17:00:35 zyuan had a q? 17:00:50 1st, API finallize 17:00:51 "progress on mysql?" 17:00:52 decided? 17:00:59 and progress on mysql 17:01:15 API finalized, the only pending thing I recall was a status code 17:01:25 ?? 17:01:35 HTTP 200 vs. HTTP 204 on /v1/health, I think? 17:01:46 queues use 204 17:01:53 i'm fine with 200 17:01:59 no, 17:02:02 it was something else 17:02:05 can't remember 17:02:13 oz_akan was in on it 17:02:23 class HealthResource(object): 17:02:24 def on_get(self, req, resp, project_id): 17:02:24 resp.status = falcon.HTTP_204 17:02:24 def on_head(self, req, resp, project_id): 17:02:25 resp.status = falcon.HTTP_204 17:02:30 he tortured me until i agreed to consider it 17:02:48 it's no wonder i can't remember 17:02:52 kgriffs: lol 17:03:04 THERE ARE THREE LIGHTS! 17:03:18 re progress on mysql: ykaplan is working on that, this whole month was holiday in Israel (Starting here: Rosh Hashana) 17:03:19 i... don't know. let's make it 200... 17:03:30 so, she wasn't able to do much on it 17:03:41 She's also getting familiar with sqlalchemy 17:03:47 ................................ 17:03:53 #info ykaplan is working on mysql backend 17:03:58 #link https://bugs.launchpad.net/marconi/+bug/1220768 17:04:00 found it 17:04:08 zyuan: ? 17:04:14 ah 17:04:25 "getting familiar" 17:04:35 zyuan: what's wrong with that? 17:05:04 i suppose people should be familiar with it within 10 mins... 17:05:27 we're 5 minutes over time - we should end the meeting, maybe? 17:05:32 zyuan: you suppose more things than you should, TBH! Plus, read my previous message, she was on holidays 17:05:52 alcabrera: +1 17:06:04 * flaper87 has nothing more to say 17:07:08 we can go over a few minutes. nobody waiting on us. 17:07:23 hehe, this time slot is awesome 17:07:24 :D 17:07:26 lol 17:07:30 we can have longer meetings 17:07:42 * kgriffs wonders if that is a good thing, heh 17:07:43 sooo 17:07:47 we have two breakouts 17:07:51 I was worried about conflicting with others, but that concern is abated. 17:08:00 1. that bug just mentioned above 17:08:19 2. unicode queue names 17:08:31 * kgriffs just realized both of these impact API finalization 17:08:37 kgriffs: yup 17:08:37 so, starting with 1. 17:09:11 NAD 17:09:15 i believe were we ended up last time discussing the issue was we didn't want client's to raise an exception or anything if the queue didn't exist 17:09:22 Not a Defect 17:09:51 Hmm... 17:09:53 well, that's the first question, isn't it? 17:10:07 seems to me an app may be logging requests 17:10:25 and something odd may happen that the user is trying to diagnose 17:10:37 i don't think there is a place to have question, both from interface and implementation. 17:10:38 and they want to check their logs for anomalies 17:10:48 any other use cases people can think of? 17:12:05 if user want to tell whether a message exists, how about GET? 17:12:11 personally, don't think it is a big deal to leave as-is, but I also am not opposed to returning 200 or 205 or something. 17:12:11 kgriffs: could you tie the example in with the case of deleted queues? I think you're trying to say that the user would want to detect erroneously deleted queues. 17:12:35 I'd prefer to leave it as-is 17:12:40 mmm, possibly. Do we fail silently there as well? 17:13:06 kgriffs: GET message on non-existing queue => 404 17:13:15 so... 17:13:48 if we can assume that a client would be able to detect the problem elsewhere, then I too vote to leaving as-is 17:13:57 any opposed? 17:14:21 i want to say i don't see the problem the user want to detect... 17:14:24 anyway. 17:14:34 going once 17:14:44 going twice 17:14:45 sold 17:14:48 woot 17:14:48 muahahah 17:14:51 bug update? 17:14:53 .... 17:15:04 set to "won't fix" 17:15:09 sweet 17:16:09 next 17:16:15 2. unicode queue names 17:16:29 I'm fine with either 17:16:32 http://asg.web.cmu.edu/rfc/rfc3986.html#sec-2.1 17:16:34 i want to add some background about URI 17:16:36 I wanted us to discuss it a bit more 17:17:03 rfc 3986 refered ASCII 17:17:09 as "charset" 17:17:16 however, it also says 17:17:48 everything which is neither "reserved" nor "unreserved" should be percent-encoded 17:18:13 which means, the actually charset is "reserved" and "unreserved"; it has nothing to do with ASCII 17:18:40 yes 17:19:03 and, considering URI encodings are different on different platforms 17:19:05 the tricky thing is that, to my knowledge, there is non header that hints at the decoded charset for the uri 17:19:12 s/non/no 17:19:22 i think it's dangours for us to define an encoding 17:19:45 i would tend to agree 17:19:55 in that case, lets restrict it to ASCII as kgriffs' patch proposed 17:20:03 so my preference is to limit queue name to "unreserved"; thus, a-z0-9 stuff 17:20:17 I agree, given the above 17:20:31 can anyone think of a reason that a user would want more latitude in choosing a queue's name? 17:20:32 re the patch, i'm not sure whether the patch is applied to the right place 17:20:48 there are multiple places this problem can happen 17:21:22 kgriffs: nah - I'm satisfied as a user being able to choose queue names from 128**64 combinations (~128 characters - 64 of them) 17:21:24 you mean, wrt queue names, or other params? 17:21:43 alcabrera: lol 17:21:51 first, what is the type of the uri returned from falcon? 17:22:18 depends on the type and content, it might be falcon's problem instead of regex's 17:23:08 alcabrera: huauhauhau 17:23:18 zyuan: falcon just passes through 17:23:30 it would be the WSGI server doing any transforms, if any 17:23:39 python3? 17:24:26 yes it "pass though", but why regex \w does not work here? i don't think regex has "problem" 17:24:36 bytes vs. text URI, zyuan? 17:24:42 yes 17:24:42 zyuan 17:24:48 no, it is nothing like that 17:24:50 the problem is... 17:25:03 \w can actually match unicode chars 17:25:10 i know 17:25:12 depending on some python build flags 17:25:17 guys, gtg 17:25:20 kk 17:25:24 but we should not give it unicode 17:25:25 flaper87: thanks for joining us! 17:25:28 will read backlog later! 17:25:32 alcabrera: my pleasure! 17:25:32 flaper87: :) 17:25:40 i said in comments, the input must be bytes 17:25:44 dinner awaits 17:26:49 zyuan: in python2 even if the input is bytes it can still contain multi-byte encoding such as UTF-8 17:27:31 kgriffs: it doesn't matter; regex can not work directly on UTF-8 it the bytes are not decoded. 17:28:01 i mean, it does not recognize multibyte encoded string "automatically" 17:28:15 but if WSGI decoded it into unicode, hehe 17:29:21 seems like if \w ended up allowing non-ascii chars, but the bytestring was something other than ascii (may not even be unicode; there are many possiblities) we wouldn't want the regex to match inadvertantly 17:29:26 anyway, I gotta run too 17:29:45 i'' recheck WSGI 17:29:46 we can continue discussing later in #openstack-marconi if you like 17:29:59 #endmeeting