You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
We have a BindStepOrder enum that bindings have traditionally used to enforce an ordering beyond parameter order. E.g. Queue/ServiceBus bindings declare BindStepOrder.Enqueue to ensure that those operations happen AFTER any other output bindings. This ensures that for example a blob that you output from your function happens BEFORE a queue message pointing to that blob is enqueued.
Recent work to replat core bindings (e.g. Queue/Table) have changed the way that this behaves. We need to move the bindings back to the way they behaved before at a minimum (i.e. retain the BindStepOrder capabilities allowing certain bindings to declare an order that overrides parameter order).
We should also verify that our parameter ordering uses a stable sort.
The text was updated successfully, but these errors were encountered:
We want determinism / predictability (safety is a feature)
There’s no transactions, so if we have N outputs, we must determine what order to flush them in. Ideally, enforce an order that guarantees determinism.
We could let the customer specify an ordering (ie, order of parameters), but can we protect them if they get it wrong?
The rule then is: Given 2 parameters A and B, if (A is triggerable) and (A can depend on B), flushing A should happen after flushing B.
“A depends on B” means “processing A’s trigger may depend on B’s contents”
Nothing depends on Queue (put another way, only the queue trigger can read the queue message contents); so Q is always safe to be “last”.
We have a BindStepOrder enum that bindings have traditionally used to enforce an ordering beyond parameter order. E.g. Queue/ServiceBus bindings declare BindStepOrder.Enqueue to ensure that those operations happen AFTER any other output bindings. This ensures that for example a blob that you output from your function happens BEFORE a queue message pointing to that blob is enqueued.
Recent work to replat core bindings (e.g. Queue/Table) have changed the way that this behaves. We need to move the bindings back to the way they behaved before at a minimum (i.e. retain the BindStepOrder capabilities allowing certain bindings to declare an order that overrides parameter order).
We should also verify that our parameter ordering uses a stable sort.
The text was updated successfully, but these errors were encountered: