markusthoemmes commented on a change in pull request #2795: enable concurrent
activation processing
URL:
https://github.com/apache/incubator-openwhisk/pull/2795#discussion_r184601872
##########
File path:
core/invoker/src/main/scala/whisk/core/containerpool/ContainerPool.scala
##########
@@ -266,11 +273,14 @@ object ContainerPool {
* since this would be picked up earlier in the scheduler and the container
reused.
*
* @param pool a map of all free containers in the pool
+ * @param checkConcurrent if true only consider containers not processing
other concurrent activations (otherwise disregard concurrent activation counts)
* @return a container to be removed iff found
*/
- protected[containerpool] def remove[A](pool: Map[A, ContainerData]):
Option[A] = {
+ protected[containerpool] def remove[A](pool: Map[A, ContainerData],
checkConcurrent: Boolean): Option[A] = {
+ // Try to find a Free container that does NOT have any active activations
AND is initialized with any OTHER action
val freeContainers = pool.collect {
- case (ref, w: WarmedData) => ref -> w
+ case (ref, w: WarmedData) if !checkConcurrent ||
ActivationCounter.getOrElse(ref, 0) == 0 =>
Review comment:
This becomes
```scala
case (ref, w: WarmedData) if w.activationCount == 0 =>
```
And you can remove the boolean flag if we can add the counter to
`WarmedData`.
----------------------------------------------------------------
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