You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openwhisk.apache.org by ra...@apache.org on 2017/07/14 18:03:21 UTC
[incubator-openwhisk] branch master updated: Remove unneeded
WeakReference. (#2489)
This is an automated email from the ASF dual-hosted git repository.
rabbah pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-openwhisk.git
The following commit(s) were added to refs/heads/master by this push:
new e45288e Remove unneeded WeakReference. (#2489)
e45288e is described below
commit e45288e53ae1164f782248410ab4b50f7022f1ad
Author: Markus Thömmes <ma...@me.com>
AuthorDate: Fri Jul 14 20:03:19 2017 +0200
Remove unneeded WeakReference. (#2489)
The closure doesn't keep a reference to the entire result anymore and is decoupled by the timeout handler through the underlying state-map. The WeakReference is not needed anymore and can actually cause failures if a garbage collection happens in between creating and getting the reference in this case.
---
.../main/scala/whisk/core/loadBalancer/LoadBalancerService.scala | 6 +-----
1 file changed, 1 insertion(+), 5 deletions(-)
diff --git a/core/controller/src/main/scala/whisk/core/loadBalancer/LoadBalancerService.scala b/core/controller/src/main/scala/whisk/core/loadBalancer/LoadBalancerService.scala
index 63655c9..b5d8207 100644
--- a/core/controller/src/main/scala/whisk/core/loadBalancer/LoadBalancerService.scala
+++ b/core/controller/src/main/scala/whisk/core/loadBalancer/LoadBalancerService.scala
@@ -155,19 +155,15 @@ class LoadBalancerService(
// either create a new promise or reuse a previous one for this activation if it exists
val timeout = action.limits.timeout.duration + activeAckTimeoutGrace
val entry = activationById.getOrElseUpdate(activationId, {
- val promiseRef = new java.lang.ref.WeakReference(Promise[Either[ActivationId, WhiskActivation]])
-
// Install a timeout handler for the catastrophic case where an active ack is not received at all
// (because say an invoker is down completely, or the connection to the message bus is disrupted) or when
// the active ack is significantly delayed (possibly dues to long queues but the subject should not be penalized);
// in this case, if the activation handler is still registered, remove it and update the books.
- // Note the use of WeakReferences; this is to avoid the handler's closure holding on to the
- // WhiskActivation, which in turn holds on to the full JsObject of the response.
actorSystem.scheduler.scheduleOnce(timeout) {
processCompletion(Left(activationId), transid, forced = true)
}
- ActivationEntry(activationId, namespaceId, invokerName, Instant.now(Clock.systemUTC()), promiseRef.get)
+ ActivationEntry(activationId, namespaceId, invokerName, Instant.now(Clock.systemUTC()), Promise[Either[ActivationId, WhiskActivation]]())
})
// add the entry to our maps, for bookkeeping
--
To stop receiving notification emails like this one, please contact
['"commits@openwhisk.apache.org" <co...@openwhisk.apache.org>'].