Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

In short, we do not necessarily support persistence for message delivery with at-most-once semantic and circuit breaking process in OpenWhisk.


2.7 Transactional support

There is a limitation in current throttling method as the limit is divided by the number of controllers. Invocations can be throttled in one controller though there are still enough capacity in other controllers. This is because throttler does not consider the invocations in the other controllers.

For better throttling, throttlers should consider the cluster-wise resources. According to 2.4, the resource is now the number of containers. Throttler will throttle the namespace when the number of containers being used by the namespace reaches the throttling limit.  As throttling works based on cluster-wise resources, it is important to make sure the number of containers does not exceed the throttling limit. Since multiple controllers receives invocation requests and triggers container creation, we need transactional support when creating containers. So whenever they tries to create containers, only one of them should be able to create them. The others will fail to perform the transaction and retry it. At anytime, once the number of containers exceed the limit, all subsequent transaction will fail and no more retry will happen.

Since invocation path is separated with the container creation path, though there is transaction in container creation path, there would be no huge performance disadvantage in invocation path.