08:04:02 #startmeeting Mistral 08:04:03 Meeting started Wed Sep 18 08:04:02 2019 UTC and is due to finish in 60 minutes. The chair is rakhmerov. Information about MeetBot at http://wiki.debian.org/MeetBot. 08:04:04 Useful Commands: #action #agreed #help #info #idea #link #topic #startvote. 08:04:07 The meeting name has been set to 'mistral' 08:04:10 so hi :) 08:04:13 vgvoleg: go ahead 08:04:14 hellllllo 08:04:29 I'm again with non-terminal error... :D 08:04:54 We want to have an ability to cancel executions in error state 08:04:59 🤟 08:05:13 vgvoleg: why do you want it? ) 08:05:46 akovi: Andras, btw, can you take a look please at https://review.opendev.org/#/c/682785/ ? 08:05:48 so it is probably a good compromise to make execution in error state in something terminal 08:06:02 rakhmerov: done 08:06:11 akovi: the tests now are OK but I have doubts if initialization of the client is right 08:06:27 I'm not too good at all these keystone related stuff 08:06:58 as long as it accepts session, it should be ok 08:07:50 yes, that was my thinking too 08:08:03 🤦‍♀️ 08:08:07 vgvoleg: ^ 08:08:09 :)) 08:08:34 '=( 08:08:43 vgvoleg: why do you keep talking so desperately about terminal states? :) 08:09:11 Because we need to make executions in error state read-only 08:09:46 only read them when they are in ERROR state :) 08:09:47 I really can't understand why do you think it is not a gap 08:10:17 I'm failing to understand that this is a gap 08:10:37 so the alternative is to let us transfer ERROR to CANCELLED 08:10:42 Oleg 08:10:50 I'll raise my point again 08:11:16 we have some functionality that automatically moves a workflow execution to ERROR 08:11:21 (in some cases) 08:11:58 then a client makes a conscious decision (this is important!) to rerun the workflow 08:12:17 in the state machine there would be an arrow from ERROR to RUNNING, so the output state could be changed after some time 08:12:20 and the client knows what workflow it decided to rerun 08:12:23 wait a sec.. 08:12:59 and what is the problem for this client to keep track of what workflows can and can't be rerun anymore? 08:13:07 it's completely the responsibility of the client 08:13:26 because there could be many clients 08:14:13 ok, what is the formal criteria on how we decide if a workflow can be rerun or not? 08:14:16 it's really a headache 08:14:33 this criteria is error state 08:14:37 no 08:14:43 I mean something different 08:14:59 for example, we added this truly terminal ERROR state 08:15:09 ok 08:15:27 what will be the semantical difference between it and the rerunable ERROR state? 08:16:07 how do you reply a question: how do we decide what can be rerun or not? 08:16:18 based on what? 08:16:21 if we understand that this execution is failed and we agree with this and are not going to do anything about it 08:16:45 so we can take it manually to read-only 08:16:46 who agrees? 08:16:48 a human? 08:16:51 yes 08:17:01 aah... 08:17:13 just do it on the client side, that's it 08:17:23 my feeling is that you are kind of trying to integrate a higher level abstract state into the current state model 08:17:27 if you have many clients they can exchange this info 08:17:34 via DB, MQ, no matter what.. 08:17:50 akovi: yes, exactly 08:18:38 the "granite ERROR" will be set only from clients or will we need to extend the language too? 08:18:47 it's not consistent with the set (you can treat in a mathematical sense) of states that currently exist 08:19:17 In my point of view, mistral is positioned as fully controlled state machine 08:19:25 akovi: if we decide to add it, it will be echoing everywhere 08:19:41 and in our state machine only success state is terminal 08:20:34 vgvoleg: how is this important? I don't understand. 08:20:41 so we can't really "forget" about failed executions - they could be rerunned, skipped or something more that we create in the future 08:20:55 and we should keep them in mind 08:20:55 keep track of them on the client side 08:21:55 may be we you can just add some info into the execution description 08:21:58 as an option 08:22:03 just to mark it somehow 08:22:06 every mistral user should create an additional logic to handle this "nearly terminal" error 08:22:12 "NOTE: it can't be rerun!" 08:22:25 please don't bind it to rerun only Renat 08:22:34 vgvoleg: you're the first one who's raising it ) 08:22:42 There could be a lot of different functionality 08:23:22 vgvoleg: would it be an option just to change a description? 08:23:27 there's such field 08:23:37 it's an arbitrary text field 08:23:45 you can put there anything you need 08:23:59 any kind of interpretation of the state 08:24:12 And I see our inability to "forget" error execution the same way as we "forget" success 08:24:17 is a gap 08:24:28 I guess now we can't change the description at any time but we can allow this easily in the REST controller 08:24:30 description? what to you mean? 08:24:47 when you fetch an execution via REST 08:25:00 you get "description" among other execution fields 08:25:11 it's an arbitrary text 08:25:46 we can allow to change it via PUT /v2/executions/ 08:26:28 another strong argument against this new state is the following... 08:26:50 Imagine a human (say some operator) makes a decision to put a workflow in this ERROR_TERMINAL 08:26:59 so he/she does that.. 08:27:31 the next day a different person (say his/her boss) looks at this workflow and says "Oohh, you made a mistake! We can actually rerun it" 08:27:40 what are you going to do? ) 08:27:54 you mix our responsibility and client responsibility 08:27:59 allow to change it back to ERROR? Then it's not terminal in any way 08:28:14 what do you call "our" and "client" 08:28:14 ? 08:28:29 provide an ability to make failed execution read-only is our responsibility 08:28:52 I'm operating here with Mistral and some client 08:28:54 and your strong argument is client responsibility 08:28:58 and a human 08:29:11 vgvoleg: no 08:29:28 I'm talking about the "fakeness" of this approach 08:29:42 because since a human makes this decision he may want to change it 08:29:52 just like to make a decision to rerun anything 08:29:55 something 08:30:27 I'm saying that semantically it doesn't have any differences from the regular ERROR state 08:30:38 you may want to change both 08:30:42 is there anyone else? 08:31:00 we are stucked with this 08:31:43 vgvoleg: we need to distinguish clearly between automaticly processed executions and operations initiated by the client 08:32:07 from the 1st thing's perspective ERROR is 100% terminal 08:32:17 it's a finite state machine, no doubts 08:32:53 but then there's a reality: users sometimes want to do some additional processing on some workflows despite they are in terminal state 08:33:30 my idea - the only "truly terminal" state is SUCCESS, and our clients should always keep in mind that ERROR is not so terminal, so I suggest to make an extension with some additional state/attribute to make ERROR terminal by human 08:33:33 btw, we're not considering SUCCESS here just because it is trivial: there's nothing more to want from it, it's supposed to do what's needed 08:33:33 that's all 08:33:49 but we could have let users change even SUCCESS state in some cases 08:33:58 Oleg, no 08:34:03 I just explain about SUCCESS 08:34:08 it's a coincidence 08:34:30 vgvoleg: just use the "description" field 08:34:42 it's more than enough to keep any information that you need 08:34:58 rakhmerov: what if we see that success execution didn't make it's work, so we decide to move is to ERROR? \O/ \O/ \O/ 08:35:16 vgvoleg: we could allow that, yes 08:35:26 probably 08:35:49 OMG we don't have any attribute that marks execution's state as terminal or not 08:35:54 although it's probably pointless because it would mean that the workflow is not designed properly 08:36:16 even success now is terminal only because there is no operations we can do 08:36:19 vgvoleg: put the mark "Truly terminal" into the description :) 08:37:01 vgvoleg: nobody cares if something is terminal or not (and again, in what sense? I just explained about terminality) 08:37:28 it's more important that the user understand what states the workflow can be at when it's given to the automatic processing 08:37:34 so all the transitions 08:37:39 do you sure that nobody cares if something is read-only or not? 08:37:58 once it reaches either SUCCESS or ERROR, it's now turn of the user to do something about it 08:38:15 vgvoleg: yes, quite sure 08:38:28 it's easy to implement on the client side 08:38:45 why do programming languages have immutable types? 08:38:52 we can't push absolutely anything into the project, for every specific use case 08:38:52 what's the problem? 08:39:04 human can keep in mind what is changed 08:39:09 and handle it 08:39:30 why there are these limitations? 08:39:35 I explained what the problem is 08:39:52 we can't push it 08:40:11 it's easy to do w/o changing anything 08:40:14 on the client side 08:40:38 it's what I would call "a client-specific interpretation of the state" 08:40:40 not more 08:40:54 or you can use an execution description if that doesn't work for you 08:41:22 Oleg, we are spending too much time on it. I heard all the arguments and my answer is "no", I won't let it it 08:41:30 in 08:41:39 okay 08:41:43 sorry 08:41:54 np 08:42:18 it would be great to listen to someone else 08:42:53 that's why I emphasize it today 08:43:12 ok 08:43:28 no problem, we can discuss it again with a larger group of people, if needed 08:43:48 I'll write a mail 08:44:02 ok 08:44:08 sorry for spent time 08:44:13 that's ok 08:44:20 I know you want it very much ) 08:44:32 but try to put yourself in my shoes 08:44:50 it's not like I want something 08:44:57 there's been A LOT of people who proposed all kind of stuff to lang in Mistral 08:45:10 I feel that there is a gap in our state machine and would like to fix it 08:45:28 and in many-many cases it's hard to explain that it's not aligned with the project vision 08:45:43 the main difference between mistral and python script is state machine 08:45:52 that's why I think it is important 08:45:52 If I let all that stuff in we'll get a pain of thrash very soon 08:47:09 Oleg, I explained it, we need to distinguish between different phases: automatic processing (it's a 100% finite state machine) and human interaction 08:47:13 that's all 08:47:17 ok, let's finish it for now 08:47:20 I understand you 08:47:24 thank you 08:47:28 np 08:47:42 #endmeeting