tardieu commented on a change in pull request #3202: Support action
continuations in the controller
URL:
https://github.com/apache/incubator-openwhisk/pull/3202#discussion_r166395783
##########
File path:
core/controller/src/main/scala/whisk/core/controller/actions/PrimitiveActions.scala
##########
@@ -140,6 +200,387 @@ protected[actions] trait PrimitiveActions {
}
}
+ /**
+ * Mutable cumulative accounting of what happened during the execution of a
composition.
+ *
+ * Compositions are aborted if the number of action invocations exceeds a
limit.
+ * The permitted max is n component invocations plus 2n+1 conductor
invocations (where n is the actionSequenceLimit).
+ * The max is chosen to permit a sequence with up to n primitive actions.
+ *
+ * NOTE:
+ * A sequence invocation counts as one invocation irrespective of the number
of action invocations in the sequence.
+ * If one component of a composition is also a composition, the caller and
callee share the same accounting object.
+ * The counts are shared between callers and callees so the limit applies
globally.
+ *
+ * @param components the current count of component actions already invoked
+ * @param conductors the current count of conductor actions already invoked
+ */
+ private case class CompositionAccounting(var components: Int = 0, var
conductors: Int = 0)
Review comment:
Thanks to mutability, it is clear that there is only one
CompositionAccounting object ever allocated in the course of the execution of a
composition. Therefore there is only one set of counters. With object copies on
the other hand, it is hard to keep track of the copies. Why are copies being
made, where, when? Are the multiple sets of counters concurrently valid and
useful? Moreover, immutability does not prevent forking the object, hence
concurrency issues.
Give me ownership types and strong updates... and then I buy your argument.
But without aliasing control, I am afraid we are discussing style more than
safety.
----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
For queries about this service, please contact Infrastructure at:
[email protected]
With regards,
Apache Git Services