early-needle-54791
08/08/2019, 4:15 AMScheduler.execute
with an execution request that was returned from an ffi call.
* That in turn ends up calling the rust ffi scheduler_execute
method which materializes the scheduler and then calls its internal execute
method.
* rust scheduler.execute materializes the roots into the type of request it contains.
* This is where it gets a bit fuzzy for me. The node is added to the graph and somewhere along the line the it is cast into a NodeKey. That NodeKey has run called on it at some point by the graph and the rest is history.
Rubber ducking this has helped but I still have some questions about how the rust side Scheduler.execute
knows how to materialize a given root in the roots list to the correct NodeKey enum variant. I see the NodeKey using the From trait to describe the casting, but I still don’t understand how the root contains the information that it is a specific type of request, i.e which into is called. Any help would be appreciated!witty-crayon-22786
08/08/2019, 4:09 PMwitty-crayon-22786
08/08/2019, 4:10 PMValues
(which are not)witty-crayon-22786
08/08/2019, 4:11 PMwitty-crayon-22786
08/08/2019, 4:14 PMrun
directly (which effectively "inlines" the Node, without storing it)witty-crayon-22786
08/08/2019, 4:15 PMschedule.product_request(ExecuteProcessRequest, [ExecuteProcessResult(...)])
, the effect is that there is a root Node of that shape, and the actual type of the root will be Select
witty-crayon-22786
08/08/2019, 4:15 PMSelect
will be inlined, so it just looks like Rule depends on ExecuteProcess
witty-crayon-22786
08/08/2019, 4:16 PMearly-needle-54791
08/08/2019, 4:31 PMearly-needle-54791
08/08/2019, 4:34 PM