16:01:45 #startmeeting Mistral 16:01:49 Meeting started Mon Aug 22 16:01:45 2016 UTC and is due to finish in 60 minutes. The chair is rakhmerov. Information about MeetBot at http://wiki.debian.org/MeetBot. 16:01:50 Useful Commands: #action #agreed #help #info #idea #link #topic #startvote. 16:01:52 The meeting name has been set to 'mistral' 16:02:04 hi 16:02:06 Hello! o/ 16:02:08 hello 16:02:26 hey 16:03:37 I was actually thinking to cancel the meeting because a number of folks said that the wouldn't be here 16:03:57 but let's quickly discuss any hot topics, if any 16:04:03 Sounds good :) 16:04:05 * jpeeler just wants reviews 16:04:15 :) 16:04:20 #topic Current status 16:04:37 let's quickly provide status updates 16:05:28 I spent a bit of time looking at https://bugs.launchpad.net/mistral/+bug/1411868 and I think it can be closed as it is becoming a non-issue. (mysql now supports precise datetimes) 16:05:28 Launchpad bug 1411868 in Mistral "list of tasks for an execution from API is out of order" [Medium,In progress] 16:05:34 my status: still working on performance/deadlocks issues. Basically, as far as performance, all major issues were fixed, now I'm struggling with one DB deadlock that occurs in case of using 'join' tasks 16:05:44 hoping to finish it this week 16:06:03 d0ugal: ok, I see 16:06:17 and now I am spending some time looking at database migrations (https://bugs.launchpad.net/mistral/+bug/1611036) but mostly kept bust by TripleO Mistral work. 16:06:17 jpeeler: as far as reviews, you mean caching, right? 16:06:18 Launchpad bug 1611036 in Mistral "Automatically test database migrations" [Undecided,Confirmed] - Assigned to Dougal Matthews (d0ugal) 16:06:30 custom actions api: I started implementing feedback. it seems odd to move the context and utils into an api namespace. The current patch has the api namespace removed. I'm porting over tests today 16:06:56 rakhmerov: client caching, and the external access to cached clients one (could be way off target - that's why i need reviews!) 16:07:19 I've been busy with some TripleO Mistral work, but focusing today and tomorrow on getting the custom actions completed 16:07:21 #action rakhmero: review client caching patches 16:07:34 #action rakhmerov: review client caching patches 16:07:58 thanks renat 16:08:13 jpeeler: last time I looked at your patches they were mostly fine as far as I remember, I just didn't have a chance to finish my review 16:08:17 np 16:08:41 rbrady: can you please quickly explain what concerns you on moving stuff under 'api'? 16:09:17 What value does "api" provide? 16:09:27 * d0ugal questioned why we had it in the review 16:09:48 rakhmerov: while the exceptions and base action seem to fit there, the utils/keystone.py and context.py files would seem out of place to me to be placed in api 16:10:15 rbrady: I totally agree 16:10:53 d0ugal: I think the original intent was to have the api namespace to be the public contract with custom action developers 16:11:06 rbrady: yes, 100% 16:11:31 I think it would be better to have everything public unless it starts with a "_" 16:11:36 rbrady: I just want to clarify. Is there a still a reason to put them under api? 16:11:37 Like the oslo libs do 16:11:48 is somebody proposing it or something? 16:12:08 d0ugal: but the more I've been adding things and then testing them out by changing tripleo-common, the more it seems like maybe the entire mistral-lib would be a good candidate for public contract 16:12:28 d0ugal: I kind of disagree on it, because even libraries can have their implementation part and API 16:12:35 rbrady: Yup, with the exception of a few things we can underscore like they do here: https://github.com/openstack/oslo.cache/tree/master/oslo_cache 16:12:49 rakhmerov: hmm, it seems weird. No other library I know of does this. 16:13:37 o/ 16:13:37 #action rakhmerov: find an example of library where 'api' and 'implementation' part are explicitly separated 16:13:38 :) 16:13:41 haha 16:14:07 I am not going to argue the point further - but I think the norm for Python libraries is to default to public and mark private with underscores. 16:14:19 I mean.. I've seen this all around in other languages 16:14:23 java, cpp 16:14:26 d0ugal: does the underscore denote "private to mistral_lib" or "private to mistral_lib and mistral" ? 16:14:55 maybe it's another funny 'we simply don't need this' kind of thing in python :) 16:15:13 d0ugal: some of the things we want to keep private from custom action devs, we would need to use in mistral 16:15:20 rbrady: That's a fair point, normally it probably does mean private to mistral_lib - but given it's the same devs on both I think expanding that to mistral is fine. 16:15:32 d0ugal: yeah, as far as using underscore it's ok to me 16:15:41 I'm just elaborating on the principle itself 16:15:44 Sure 16:15:54 Anyway, I don't mind what colour the bikeshed is really :) 16:16:09 it totally makes sense to me to have some very internal module implementing a certain function exposed outside 16:16:21 ok, that's clear 16:16:39 d0ugal, rakhmerov: the other idea I had was to keep only public things in mistral_lib, e.g. exceptions 16:17:29 rbrady: ok, I think I see your concern now 16:17:43 only the base exceptions and action exception would need to be in mistral_lib, the other exceptions could stay in mistral proper 16:17:54 d0ugal, rbrady: I think we just should clearly separate two things in this whole story 16:18:15 +1 16:18:25 mistral_lib is a library (and python project) with two types of clients (users) 16:18:46 #1. Other mistral subprojects 16:19:08 #2. Mistral users, action developers 16:19:40 so, for #1 I don't see any problems to just being able to use everything from mistral-lib 16:19:49 even what's not under actions.api 16:20:21 that's fine to me because it's all internal inter-mistral relationship 16:20:22 Sounds good. 16:20:46 we can change this part easily w/o having to notify anyone else outside 16:21:20 as far as #2, we have the responsibility to keep it stable enough so it can be treated as some sort of API 16:21:26 because it's related to our users 16:21:43 that's at least how I understand it 16:21:49 what do you think? 16:22:39 rbrady, d0ugal? 16:22:50 * rbrady typing 16:22:57 ok 16:23:08 I would still prefer we put only public code in mistral-lib 16:24:11 I just don't understand why we want to move private code to another repo 16:24:31 If nothing else, it would make working on Mistral harder as you need to use depends-on and do updates in two places etc. 16:24:48 rakhmerov: I understand the points laid out. If we intend a for mistral_lib to be heavily relied on from other mistral sub-projects I think mistral-lib might be larger. Only having public code in mistral-lib will keep it smaller 16:25:29 yeah, I understand all this 16:25:30 but 16:25:46 this purely public code will have to rely on some implementation part 16:25:57 where is it going be? 16:26:16 it obviously can't be in mistral, for example 16:26:34 mistral can (and will) depend on mistral-lib but not the way around 16:26:38 yes...the context and its dependency - the threading, ends up living in the public space 16:26:57 Why are we having mistral depend on mistral-lib and not the other way around? 16:27:28 I guess we have discussed this, but I have forgotten. 16:27:47 d0ugal: smaller dependency for custom action devs. 16:27:58 rbrady: Oh yeah, obvious. Sorry. 16:28:03 d0ugal: regarding your point about updating things in two places, I agree. However, I think it's a trade-off we can accept. We should try to keep mistral-lib as stable as possible 16:28:07 even not api part 16:28:41 if it stays relatively stable then it won't give us too much pain with having to make updates in different repos 16:29:24 Right 16:29:28 d0ugal: yes, it 16:29:34 it's like the following: 16:29:44 rakhmerov: looking at the execution.py file in the initial code import - aren't these methods that will somehow have to query the db for information? 16:29:56 mistral -> mistral-lib <- mistral-extra (OpenStack actions) 16:30:08 where arrows means 'depends on' 16:30:16 rakhmerov: oh, I didn't know mistral-lib would depend on mistral-extra. 16:30:30 d0ugal: no, no 16:30:35 oh 16:30:39 Other way around 16:30:39 the way around ) 16:30:43 yes 16:30:45 * d0ugal is tired 16:30:54 * rakhmerov renat too 16:31:26 rbrady: ha! that's a good point... 16:31:27 Okay, so I don't really mind. We can just go ahead with the ".api." thing, but I still think it is going to be a strange choice for a python lib 16:32:23 f...k 16:32:33 rbrady: Where is that? 16:33:08 d0ugal: https://github.com/openstack/mistral-lib/blob/master/mistral_lib/actions/api/execution.py 16:33:09 * rakhmerov last rbrady's point made renat very unhappy 16:33:23 lol, rbrady look what you did! ;) 16:33:39 * rbrady ducks 16:34:27 yeah... this is really weird 16:35:04 rakhmerov: is there a use case for an action needing to know what execution_id is? 16:35:21 yes, indeed 16:35:24 rakhmerov: I've used execution info in a workflow, but not an action yet 16:35:33 any asynchronous action 16:35:59 rbrady: ok, here's what I think 16:36:14 those methods may not actually need DB 16:36:51 this data like execution id etc. maybe just a contextual information always available in the current execution thread 16:37:02 and those methods can be just extracting it 16:37:23 for this particular case it maybe enough 16:37:38 but you raised a good concern actually 16:37:43 in general 16:37:47 rakhmerov: so would the execution info be added to the context? 16:38:20 yes, it's pretty much what we do now passing this info under special parameter 'context' that actions can optionally have 16:38:34 but in a slightly different form 16:39:02 I was just thinking, for example, about other things like custom YAQL functions 16:39:10 I know we're not there yet but anyway 16:39:25 for custom YAQL functions we need kind of API as well 16:39:48 but in that case I would expect that YAQL functions devs may want to query something in DB 16:39:54 through some interface 16:40:47 I dunno, I need to think about it 16:41:24 but I would suggest we keep moving forward with this anyway and see what we're getting 16:41:45 rakhmerov: okay. I will continue adding tests for the code that there and discuss the other bits later. 16:41:58 yeah, ok 16:42:00 thanks 16:42:32 rbrady: btw, do you have to use a stable mistral release or you can use just latest master version? 16:42:40 I might have asked you, I don't remember.. 16:42:56 tripleo has been using master 16:43:00 ok 16:43:41 Keeps things intersting :) 16:43:46 rbrady: I'm asking because it seems like we won't finish this BP in N-3. Partially because I had to switch to performance issues which are also important 16:43:58 and because it's our internal priority 16:44:15 TripleO will have to use a released version for N 16:44:20 rakhmerov: ack. if this doesn't make N3, can we roll it over to the next cycle and continue it? 16:44:27 and in any case, I would prefer that don't hurry with it 16:44:43 rbrady: yes, that's what I'm proposing 16:44:45 +1, it is turning out to be quite complex :) 16:44:50 rakhmerov: ack 16:44:51 yep 16:44:53 +1 16:45:18 it will remove pressure from us (which I already have more than enough) 16:45:32 my only concern was if you need it in N-3 or not 16:45:32 I think that would be fine for TripleO - it isn't actually blocking anything is it rbrady? 16:45:55 d0ugal: nope. it is not blocking TripleO 16:46:02 okay 16:46:23 ok, then let's keep discussing and working on it w/o a rush 16:46:53 I'll pay more attention to this once I'll unblock my colleagues with performance 16:47:17 it should happen soon I believe 16:47:29 ack 16:48:04 ok 16:49:08 anything else? 16:49:47 btw, are there any mysql experts on the meeting? :) 16:50:25 * d0ugal is thankfully not a mysql expert 16:50:30 :)) 16:51:09 rakhmerov: Do we define which database versions we support? 16:51:38 I'm now deep in all transactional/locking/timeouting/whateverelse stuff and pretty often I lack mysql expertise actually, so I thought if somebody could help with this it'd be great 16:52:36 d0ugal: not officially yet, but practically it's mysql (>=5.6) and postgres (~ > 9.2) 16:53:30 rakhmerov: right, I ask because 5.7 solves https://bugs.launchpad.net/mistral/+bug/1411868 16:53:30 Launchpad bug 1411868 in Mistral "list of tasks for an execution from API is out of order" [Medium,In progress] 16:53:42 I've been learning about differences between these two for the last month and a half every day and there's such huge gap between them actually 16:53:44 as far as I can tell, I have not had a chance to test. 16:54:12 rakhmerov: haha, yeah. I have been a heavy postgres user and mysql confuses me :) 16:54:21 I can 100% say that making Mistral compatible with something else would require enormous efforts 16:54:57 d0ugal: I think we can pin it to 5.7 and greater 16:55:33 d0ugal: well, if you ask me, I don't really understand why mysql is a choice of OpenStack 16:55:47 although sometimes ago I had a different opinion 16:56:05 I found a crazy amount of things that are completely not supported by mysql 16:56:30 hah :) 16:56:33 maybe I'm misinterpreting though for what use cases mysql has been design 16:56:36 designed 16:56:41 specifically innodb engine 16:56:52 It's an interesting beast :) 16:57:13 dunno, but yeah... I don't know. I can tell in details what findings I made once we have a chance 16:57:46 for example, a simple example: repeatable read transactions in mysql are not true repeatable read :) 16:57:48 That would be really interesting to hear 16:57:52 yeah 16:57:59 tons of things, no kidding 16:58:24 in some case mysql even doesn't release locks acquired by some TXs after TXs are rolled back 16:58:29 it's in their docs 16:58:30 :) 16:58:57 only 200 TXs maximum waiting for a lock 16:58:58 :/ 16:58:59 etc etc 16:59:27 ok, again, I'm not a DB expert and may not understand something yet 16:59:42 but for some reason, postgres doesn't have all those limitations 17:00:00 we have to end the meeting 17:00:05 thanks for joining 17:00:05 rakhmerov: do you have a list of the bugs? 17:00:14 rbrady: which bugs? 17:00:27 mysql perf 17:00:53 rakhmerov: will ask in #openstack-mistral 17:00:54 ooh, no actually, maybe just some of them but I'm not sure 17:01:00 yes 17:01:02 #endmeeting