16:00:00 #startmeeting cinder 16:00:00 Meeting started Wed Feb 25 16:00:00 2015 UTC and is due to finish in 60 minutes. The chair is thingee. Information about MeetBot at http://wiki.debian.org/MeetBot. 16:00:02 Useful Commands: #action #agreed #help #info #idea #link #topic #startvote. 16:00:04 The meeting name has been set to 'cinder' 16:00:08 hello everyone! 16:00:09 morning 16:00:10 o/ 16:00:13 hi! 16:00:14 o/ 16:00:15 hi 16:00:15 hi 16:00:20 o/ 16:00:23 'ello 16:00:25 lo 16:00:27 some announcements before we get started... 16:00:29 hi 16:00:30 hi 16:00:46 hi everyone 16:00:47 Third party CI http://lists.openstack.org/pipermail/openstack-dev/2015-January/054614.html 16:00:50 hi 16:00:51 hi 16:00:54 it's required for Kilo for all volume drivers 16:00:55 hi 16:01:12 o/ 16:01:19 Hi 16:01:22 if your volume driver, and all protocols it supports are not covered by a CI by the end of Kilo, you risk the driver being removed. 16:01:48 please don't wait and get help in the third party ci meetings 16:01:56 https://wiki.openstack.org/wiki/Meetings/ThirdParty 16:02:11 thingee: End of K3, right? Not end of Kilo. 16:02:18 smcginnis: sure 16:02:37 speaking of deadlines, Cinder has deadlines for code. 16:02:39 http://lists.openstack.org/pipermail/openstack-dev/2015-February/056964.html 16:02:52 March 1st, code must be in for all BPs. Passing jenkins. Not WIP 16:03:15 I will untarget BPs otherwise. The reviewers need time to, well, review! 16:03:46 March 10th, code must be merged for BPs. We will do a freeze. Bug patches are OK though! 16:04:05 Kilo priorities...anyone doing reviews should be following https://etherpad.openstack.org/p/cinder-k3-priorities 16:04:12 These are things targeted. 16:04:17 for k-3 16:04:25 Ok lets gets started! 16:04:33 Agenda for today 16:04:38 #link https://wiki.openstack.org/wiki/CinderMeetings#Next_meeting 16:04:51 #topic Display dates with tz info with API change 16:04:53 yuriy_n17: hi 16:05:01 #link https://review.openstack.org/#/c/156552/ 16:05:07 hi everyone 16:05:23 yuriy_n17: have you spoke to the API WG? https://wiki.openstack.org/wiki/API_Working_Group 16:05:49 no 16:06:06 Ok, general project consensus would be great. 16:06:15 members of each project, including myself, are part of this 16:06:36 also to discuss the specifics of changing this in current API versions 16:06:50 which I think is what the current convtroversy is 16:08:14 * thingee taps the microphone 16:08:29 * flip214 turns up the volume to 11 16:08:52 * jungleboyj breaks off the nob. 16:08:54 thingee: To have dates displayed in Cinder with tz info I offered that 16:09:14 yuriy_n17: understood. I would appreciate project consensus on this though. Not just Cinder doing this 16:09:23 I don't have a project with it though. 16:09:26 problem* 16:10:04 thingee: I do. It breaks client code 16:10:22 thingee: That needs to be managed somehow 16:10:25 DuncanT: agreed. Let me be more clear...I don't have a problem with the idea. 16:10:38 DuncanT: I want the API WG to decide on when this should be introduced to a project. 16:10:46 thingee: Ah, me neither, in fact it is an important thing to fix 16:11:00 thingee: as a member, I agree with the idea 16:11:07 DuncanT: it works for me but i'll recheck it once more after meeting 16:11:15 however, I'm more of the opinion that every timestamp should be stored in UTC+0 for simplicity 16:11:29 DuncanT: agree, everytime I look at the log, I need to convert the timezone, twice. 16:11:37 alright no disagreements... yuriy_n17 can I count on you to bring this to the API WG? 16:11:43 sigmavirus24: +1 That solves the current issue without any change to the API 16:12:34 thingee: sure 16:12:38 DuncanT: at worst cinder could alter itself to accept any timestamp with tz info and convert it to UTC+0 before storing or just assume it's already UTC+0 16:12:44 yuriy_n17, https://wiki.openstack.org/wiki/Meetings/API-WG 16:12:45 yuriy_n17: I believe our next meeting is in a few hours 16:13:03 #action yuriy_n17 to talk to API WG about TZ time in APIs and when they should be introduced. 16:13:11 sigmavirus24, yuriy_n17: thanks! 16:13:28 sigmavirus24: Tomorrow, according to that link 16:13:42 #topic Notice only: 3rd Party CI - Important Action required 16:13:45 asselin: hi! 16:13:48 hi 16:13:52 DuncanT: correct. The alternating schedule messes me up =P 16:13:52 #link http://lists.openstack.org/pipermail/openstack-dev/2015-February/056508.html 16:14:10 so last week I mentioned that -infra is changing the ip address of the gerrit server 16:14:19 this impacts 3rd party ci. please read the e-mail 16:14:28 #link http://lists.openstack.org/pipermail/openstack-dev/2015-February/056508.html 16:14:49 yesterday, in the infra meeting they agreed to setup a netcat hello world service to help test firewall rules 16:15:05 that completes my action item from last week. :) 16:15:29 asselin: when will the hello world service be ready? 16:15:47 when pleia2 sets it up, we didn't set a time for it 16:15:53 xyang2, not sure. hopefully this week. pleia2 has the action to do it. 16:16:13 asselin, anteaya: ok, thanks 16:16:38 if not other questions, that's it from me 16:16:48 #link http://eavesdrop.openstack.org/meetings/infra/2015/infra.2015-02-24-19.01.txt 16:17:06 asselin: thank you! anything else? 16:17:13 nope 16:17:26 #topic Approach to bug 1409012 16:17:28 bug 1409012 in Cinder "Volume becomes in 'error' state after scheduler starts" [High,In progress] https://launchpad.net/bugs/1409012 - Assigned to Michal Dulko (michal-dulko-f) 16:17:32 DuncanT, dulek: hi! 16:17:36 hi, let me explain background quickly 16:17:39 #link https://bugs.launchpad.net/cinder/+bug/1409012 16:17:57 Problem is scheduler doesn't have metrics at the start so it fails requests in 60-seconds-wide time window. 16:18:10 winston-d proposed a patch to shrink this window to a few seconds, but this doesn't solve the bug because still requests sent before metrics update will be received first and scheduler will fail 16:18:19 (but change is of course great) 16:18:29 now I can take two approaches in the patch that's delaying requests: 16:18:40 1. delay requests for 60 seconds or less (manager will count down the delay passed to further request flows) 16:18:53 this makes delays longer but scheduler will know whole situation when making a decision 16:19:05 2. ask scheduler_driver every second till we have valid response or delay passes 16:19:17 this will make delays shorter but scheduler may not have all the metrics when making a decision which may lead to a poor choice 16:19:27 So the question is - which one is better? 16:19:48 shouldn't the scheduler wait to d scheduling until it's collected stats from every c-vol instance ? 16:20:09 The second approach IMO, otherwise you get unnecessary stalls 16:20:19 hemna: That's option 1 I guess. 16:20:20 hemna: we can't do it with currunt oslo.messaging 16:20:21 hemna: scheduler doesn't know how many vol servies are up 16:20:47 winston-d, the db table lists the c-vol services 16:20:57 and their state 16:21:22 hemna: does that get propagated by the scheduler though? :) 16:21:27 hemna: there's no guarantee active c-vol in DB will continute to be active 16:21:36 winston-d: +1 16:21:51 thingee: The scheduler can connect to the db just fine 16:21:58 winston-d: but we should make it possible to send metrics for every volume to be fair 16:22:26 winston-d: not use the one we're getting first - that's my opinion 16:22:36 DuncanT: right, I'm saying if the scheduler uses the db to tell what c-vols are active, but it's setting that itself...not really useful :) 16:22:46 dulek: i agree, that's why I think waiting for one periodic_interval is acceptable. 16:23:00 dulek: Does total 'fairness' make sense for a small time window though? They're already unfair enough on a busy system due to update lag anyway 16:23:03 thingee, shouldn't the c-vol services be updating their status in the services table? 16:23:05 not the scheduler 16:23:20 hemna: well that's why it was a question. I don't know what is. 16:23:25 oh ok :) 16:23:29 there is a report_count field as well 16:23:40 hemna: this isn't done because of db performance issues 16:24:10 DuncanT has more info on that i think 16:24:34 dulek: I forget, sorry, It vaguely rings bells, but I can't remember the details 16:24:37 hemna: query DB for once, is fine, but the worst case of current fix is to wait one periodic interval. 16:25:00 hemna: which doesn't need to query DB. 16:25:20 dulek: can you explain #2 again? 16:25:38 It's DuncanT's idea, maybe he'll explain it better? 16:25:46 Ok 16:25:53 DuncanT: thanks :) 16:26:22 dulek: my opinion for your change is, we can move the sleep waiting out of taskflow, into scheduler manager, then we have great change to make sure *every* request doesn't have to be block for 60 secs. 16:26:25 So basically we just keep looping the scheduler call every second until we find a host that can take it, then send it. We don't care if there is a better host coming along later 16:27:04 It means the normal case scheduling resumes as soon as at least one host has reported in 16:27:16 DuncanT: so we're just leaving things in the queue? 16:27:46 DuncanT: but it may still fail even scheduler already have one set of stats. 16:27:56 thingee: no, looping the scheduler means looping FilterScheduler calls 16:28:03 thingee: not RPC calls 16:28:13 DuncanT: if the request unfortunately needs more than that backend can offer. 16:28:16 winston-d: Keep trying it until you hit 60 seconds or it passes 16:28:38 DuncanT: That seems to make sense. 16:28:39 winston-d: The worst case is the same as just waiting 60 seconds, but the average case is better 16:28:43 winston-d: +1 yea that's what I was thinking 16:29:12 I agree with winston-d here 16:29:29 DuncanT: when this change lands: https://review.openstack.org/#/c/158623/, I am pretty confident 95% cases, the scheduler will have all stats from c-vol(s) in a few seconds. 16:29:30 DuncanT: So, worst case scenario is you have to wait 60 seconds to find out there isn't a backend that satisfies your needs? 16:29:38 so the c-vol service updates a report_count field every report interval 16:29:38 jungleboyj: Correct 16:29:48 I think I'm fine with this, but I need to know what looping means in the filter call. It seems to me if the scheduler has not valid hosts available, it shouldn't be taking anything from the MQ 16:30:04 can't the scheduler keep track of those at startup waiting for each of them to report 16:30:14 and have some timeout for misbehaving/down c-vol services 16:30:17 winston-d: the scheduler can look in the db and if it has received all the reports then it can terminate early, no problem 16:30:26 like wait 2 reporting intervals 16:30:35 DuncanT: is what I said earlier possible? 16:30:36 and ignore the c-vol services that haven't updated in 2 intervals 16:30:38 hemna: The timeout should be twice the interval, yup 16:31:00 hemna: There's no way to stop the scheduler consuming incoming request at the moment though 16:31:10 hemna: So you have a create stalled for a full minute 16:31:19 hemna: That doesn't need to be 16:31:19 thingee: we are limited in messaging impl to take or not to take something accroding to our needs 16:31:29 hemna: +2 16:31:34 well I think it should be stalled until the scheduler recognizes that c-vol services have reported. 16:31:50 if they don't report, then it's hosed anyway 16:31:55 seems like messaging impl should be updated to stall taking? 16:31:55 thingee: We can't make it not consume though, the olso messaging library won't let up 16:32:11 were there push backs on that from the oslo team? 16:32:16 or was it even proposed? 16:32:36 thingee: yep, if we or somebody fix it, cinder patch will be very small and clean 16:32:40 thingee: If we can get that into oslo, then sure, but I can't see how to do that given the way the rabbit connections are handled at the moment 16:32:43 delay the start of listening to the API message queues 16:32:54 until the scheduler sees c-vol services reporting 16:32:59 then register the listeners 16:33:15 hemna: Nope, then scheduler won't get metrics 16:33:22 hemna: +1. that is what we need 16:33:31 dulek, metrics? 16:33:36 it has the connection to the DB 16:33:38 hemna: scheduler need to listen for metrics, but not listen to requests 16:33:39 hemna: You need to get metrics on a different queue to the create RPC 16:33:42 hemna: scheduler needs to broadcast a call to all c-vol when it starts 'hey, guys, send me your latest stats'. 16:33:57 hemna: but scheduler gets volume metrics/stats from RPC instead of DB 16:33:59 Ok, so if I'm understanding things correctly, this only allows for X amount of time that things come in to resume them if the scheduler wasn't ready 16:34:03 winston-d, isn't that on different message queues? 16:34:05 and right not we're saying 60 seconds 16:34:06 than API requests ? 16:34:19 thingee: Correct 16:34:32 hemna: no, it's the same 16:34:32 hemna: current RPC handling code takes care of all xchange/queues in one call, IIRC. 16:34:53 winston-d: true 16:35:01 dang :( 16:35:13 hemna: so to be able to broadcast, you open the door for 'create', 'resize', all requests. 16:35:36 we explored all these ideas you mention 16:35:43 DuncanT, dulek: seems fine to me to wait X amount of time, when the first available host reports, start accepting 16:35:58 that's why I presented just 2 alternatives - rest won't work 16:36:16 everyone in agreemnt? 16:36:18 thingee: hm, you're getting it wrong I think 16:36:23 thingee: You can't just wait for the first host, since it might not be able to take that volume 16:36:40 thingee: so we're unable to stop accepting requests for X seconds 16:36:44 thingee: +1. and we need to raise this topic to oslo.messaging team 16:36:50 thingee: And waiting X time every time means a stalled create (or many) every time a scheduler comes up 16:36:54 thingee: to be more accurate, we accepting once scheduler starts, dulek's change is to block those requests until schedule have, hopefully, all c-vol stats 16:37:08 winston-d: that's true 16:37:27 winston-d: that's what I was trying to convey. 16:37:29 dulek: ^ 16:37:48 but how do you know when *all* have reported? 16:38:15 thingee: We can hope that all of them should report in periodic_interval 16:38:29 Or even faster with winston-d's patch 16:38:38 thingee: sadly, we don't. scheuler has no idea what periodic_interval are set for each up&running c-vol. 16:38:57 dulek: periodic interval to me seems like solution #1. which we were against because of unnecessary wait time 16:39:22 thingee: scheduler crosses its fingers and hope c-vol shares the same value for 'periodic_interval' as itself and wait for one or two interval. 16:39:30 winston-d: I think it is fair to require the periodic_interval in the cinder.conf on the scheduler to be right 16:39:31 :) 16:39:43 how about a new c-vol column called ready 16:39:54 that signals to the scheduler that the c-vol service is ready to reprot 16:39:55 report 16:40:15 hemna: no value, it can just send its stats RPC 16:40:26 hemna: Remember you might have N shedulers 16:40:28 hemna: that column would have to mean - stats sent after scheduler startup 16:40:28 well, meaning if the stop the scheduler from listening 16:40:36 the scheduler can look for that column 16:40:41 prior to listening 16:40:53 How big a deal is this really? This is just at start time? How often is the delay going to be an issue? 16:41:05 the c-vol services can push the messages into the queue even if the scheduler isn't listening 16:41:29 hemna: yes, but there's no guarantee that it did before the request 16:41:32 dunno, I'm just trying to come up with ideas. 16:41:38 DuncanT: unless we have ways to force cfg sync between c-sch and c-vol, the best case is to hope for the best. 16:41:41 jungleboyj: +1 mostly I'm a little confused and we gain a little time to resume 16:41:43 hemna: request can still come before stats 16:42:01 winston-d: We can start looking at putting config in the db... we've talked about that a few times 16:42:09 dulek, yah that's fine, the scheduler should be able to reject requests before it's ready 16:42:13 thingee: I don't want to see a complicated solution for a small window. Glad I am not the only one thinking it. 16:42:16 it sounds to me like the scheduler is just useless until 60 seconds after it comes up 16:42:18 but the volume shouldn't be put in error state 16:42:34 hemna: But it will fetch it from the MQ and fail the volume creation 16:42:34 jungleboyj: exactly, this is not really a big deal, at least to me. 16:42:51 but even in a HA config you should have multiple schedulers running, so if one needs to go down and come back up, it's just useless until 60 seconds later 16:43:06 bswartz: ++ 16:43:11 bswartz: +1 16:43:15 winston-d, jungleboyj well except in a busy deployment, you might get a bunch of volume create requests queued up as you bounce c-vol 16:43:34 I would really like to see things fixed up in oslo message. 16:43:37 dulek: Can you answer why the delay is such a big concern? 16:43:39 hemna: true 16:43:49 hemna: If you bounce the scheduler right now then you get a bunch of volumes created in error 16:43:50 hemna: I suppose. 16:43:56 dulek: I'm all for the delay - my current implementation in the patch 16:44:05 jungleboyj: ^ 16:44:27 jungleboyj: The delay always being 60 seconds is my complaint... it should only be as long as it takes for the first suitable backend to report in 16:44:42 jungleboyj: i.e. approach (2) in the initial problem statement 16:44:45 DuncanT, which should be 2 reporting cycles 16:44:47 DuncanT: Ok, I can see that argument. 16:44:58 dulek: +1, all my suggestions were about how to make the window smaller without too much trouble, if possible 16:45:14 jungleboyj: That can break fairness in the scheduler though, which some people don't like 16:45:26 jungleboyj: I'll take the unfairness over the stall, personally 16:45:41 DuncanT: Again, it seems like a small window we are talking about. 16:46:08 DuncanT: problem is, that's a bit too ideal to me, 'first suitable backend' means scheduler will have to try many times. 16:46:09 so the messaging approach is to leave the API requests on the queue until the scheduler is ready? 16:46:13 jungleboyj: A minute stall on volume creates will show up in our SLA for sure 16:46:16 So can I just ask a question - fairness (scheduler making good decisions in that small time window) or stall 16:46:19 ? 16:46:29 hemna: Yes, but that requires bit messaging changes 16:46:36 Cory may be pissed given they have so many backends? 16:46:43 DuncanT, seems like a good feature to have 16:46:53 DuncanT: what if you have redundant schedulers though -- can't one that's working take the message while the other is waiting for stats? 16:46:55 DuncanT: if a minute stall is too long, you'll need active/active services. 16:47:00 like a listening mask 16:47:02 hemna: Definitely, but we need to fix this bug now. 16:47:07 yah :( 16:47:13 flip214: Active/active makes this worse 16:47:18 bswartz: It cannot, scheduler need to connect to get the stats 16:47:32 bswartz: once it connects - it gets everything, even requests 16:47:37 flip214: Active/active means when the second one comes up, it takes half the live requests but stalls them all for a minutes 16:47:43 dulek: Sounds like having less stall is preferred. 16:47:52 jungleboyj: ++ 16:48:01 so the scheduler needs a way to start accepting stats updates without accepting create requests 16:48:04 jungleboyj: thank you, I was getting more and more confused 16:48:05 dulek: correctness and eventually/overall fairnes 16:48:13 I think this needs to be more thought out honestly. I agree with jungleboyj that I don't really see what this is fixing. And it's as other people raised making other scheduler cases of active/active worse. 16:48:33 thingee: which solution? 16:48:36 Wheee! 16:49:00 this delay thing. dulek, jungleboyj asked you what are we actually noticing being reported up as a problem here. 16:49:03 dulek: i'm not too concerned about a few requests not being placing to the 'best' backend it can be. 16:49:04 I didn't see an answer to that. 16:49:11 winston-d: ++ 16:49:27 winston-d: ++ 16:49:45 winston-d: +1 Perfect is the enemy of good. 16:49:56 That is the feeling I am getting here. I wouldn't want to wait 60 seconds every time we are restarted if it can be avoided. 16:49:58 thingee: Start a new scheduler (active/active for example). For 30 seconds, right now, half your volumes go into error 16:50:10 thingee: So the problem is - if there are requests in the queue and scheduler starts - it will fail all of them 16:50:14 thingee: That is the current bug 16:50:19 winston-d, except it might fail via capabilities masking before the right backend reports 16:51:22 dulek: can you check if something is in the queue, if so, do we have a backend reported? no, ok delay 16:51:26 but don't delay by default 16:51:42 hemna: that's why DuncanT proposed scheudler only starts processing request when the first 'acceptable' backend is available. 16:51:43 thingee: No, oslo.messaging won't allow that now 16:51:53 the bug again seems in oslo.messaging. 16:52:09 thingee: yes, we're talking about solution for kilo 16:52:14 thingee, or, we separate the queues for API -> scheduler and c-vol -> scheduler 16:52:28 thingee: as we agreed on the bug discussion that it's too late to request changes in oslo 16:52:29 dulek: you mean L right? think a release already went out 16:52:32 and we don't listen to the API topic until the scheduler is ready. 16:52:39 hemna: we have separate queues. 16:52:51 dulek: I wouldn't want this in K for cinder though. it's too late without seeing potential issues. 16:52:54 winston-d, there is only 1 scheduler_topic 16:53:09 I'm suggestion 2 scheduler topics 16:53:11 hemna: the problem is we can't listen only on queue 16:53:15 thingee: This is a real bug in K right now 16:53:16 Okay, did we agreed that the patch should follow DuncanT's idea? 16:53:27 7 minutes left 16:53:46 thingee: We hit it in release testing, it is trivial to trigger 16:53:47 can we continue to hack out ideas in cinder channel and move on ? 16:53:59 hemna: there is nothing else 16:54:02 ok 16:54:08 So that would be - if we're in the 60-seconds-time-windows then we should ask scheduler_driver every second if it fails? 16:54:09 * anteaya is hoping for open discussion 16:54:37 ok we'll continue to #openstack-cinder after the meeting 16:54:41 #topic open discussion 16:54:50 thanks 16:55:03 so these are the jobs jenkins is running on cinder: http://git.openstack.org/cgit/openstack-infra/project-config/tree/zuul/layout.yaml#n1066 16:55:18 does everyone know what these mean or how to find out? 16:55:40 because if not, I would like to help you so you can know 16:55:54 anteaya: I promise you not everyone knows 16:56:08 since when I asked about jobs running on cinder, or about to last week noone seemed to know about sheepdog 16:56:17 bswartz: I dont' take your word for it 16:56:24 they are here and can speak for themselves 16:56:29 bswartz: are you saying you know? 16:56:42 bswartz: because if so, that's great 16:56:49 anteaya: I'll be honest and say I don't know. :) 16:56:52 I know where to find this stuff when I need to 16:56:56 cebruns: thanks 16:57:00 bswartz: great 16:57:15 * jungleboyj doesn't 16:57:18 I'm not pointing fingers, if anyting this is a failing from my end 16:57:21 which I want to fix 16:57:25 jungleboyj: great thank you 16:57:56 okay so I'd like to fix this so all folks in cinder who want to know know how to figure out what is running on jenkins against cinder repos 16:58:08 I was thinking maybe a q and a tutorial? 16:58:15 what do folks think of that? 16:58:49 nothing? 16:58:55 am I invading your space? 16:59:02 * flip214 turns up the volume to 11 16:59:02 if this isn't helpful I can find the door 16:59:09 anteaya: Sounds good, but think we are out of time here. 16:59:14 oh, it would be very interesting! 16:59:14 some of guys are already on openstack-cinder 16:59:15 fair enough 16:59:17 anteaya: tutorial would be nice 16:59:19 anteaya: I think it's good. 16:59:26 anteaya: tutorial would be great 16:59:36 okay thanks let me work on that 16:59:39 I'm done 16:59:40 anteaya: I am fine with that. 16:59:42 Thanks. 17:00:06 thanks everyone 17:00:07 anteaya: thx 17:00:11 thanks anteaya 17:00:14 #endmeeting