You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@pekko.apache.org by md...@apache.org on 2023/05/22 12:58:31 UTC
[incubator-pekko-management] branch main updated: Replace future flatMap + recoverWith combo with transform
This is an automated email from the ASF dual-hosted git repository.
mdedetrich pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-pekko-management.git
The following commit(s) were added to refs/heads/main by this push:
new b99abe9 Replace future flatMap + recoverWith combo with transform
b99abe9 is described below
commit b99abe96c4f7b50713f757dca291b2dab47ee767
Author: Matthew de Detrich <ma...@aiven.io>
AuthorDate: Mon May 22 13:19:02 2023 +0200
Replace future flatMap + recoverWith combo with transform
---
.../lease/kubernetes/KubernetesLease.scala | 37 ++++++++++------------
1 file changed, 16 insertions(+), 21 deletions(-)
diff --git a/lease-kubernetes/src/main/scala/org/apache/pekko/coordination/lease/kubernetes/KubernetesLease.scala b/lease-kubernetes/src/main/scala/org/apache/pekko/coordination/lease/kubernetes/KubernetesLease.scala
index ee50cbf..689f6b2 100644
--- a/lease-kubernetes/src/main/scala/org/apache/pekko/coordination/lease/kubernetes/KubernetesLease.scala
+++ b/lease-kubernetes/src/main/scala/org/apache/pekko/coordination/lease/kubernetes/KubernetesLease.scala
@@ -18,6 +18,8 @@ import java.util.concurrent.atomic.AtomicBoolean
import java.util.concurrent.atomic.AtomicInteger
import scala.concurrent.Future
+import scala.util.{ Failure, Success }
+import scala.annotation.nowarn
import org.apache.pekko
import pekko.actor.ExtendedActorSystem
@@ -66,7 +68,6 @@ class KubernetesLease private[pekko] (system: ExtendedActorSystem, leaseTaken: A
extends Lease(settings) {
import pekko.pattern.ask
- import system.dispatcher
private val logger = LoggerFactory.getLogger(classOf[KubernetesLease])
@@ -94,37 +95,31 @@ class KubernetesLease private[pekko] (system: ExtendedActorSystem, leaseTaken: A
override def checkLease(): Boolean = leaseTaken.get()
+ @nowarn("msg=match may not be exhaustive")
override def release(): Future[Boolean] = {
- // replace with transform once 2.11 dropped
(leaseActor ? Release())
- .flatMap {
- case LeaseReleased => Future.successful(true)
- case InvalidRequest(msg) => Future.failed(new LeaseException(msg))
- }(ExecutionContexts.parasitic)
- .recoverWith {
- case _: AskTimeoutException =>
- Future.failed(
+ .transform {
+ case Success(LeaseReleased) => Success(true)
+ case Success(InvalidRequest(msg)) => Failure(new LeaseException(msg))
+ case Failure(_: AskTimeoutException) => Failure(
new LeaseTimeoutException(
- s"Timed out trying to release lease [${leaseName}, ${settings.ownerName}]. It may still be taken."))
- }
+ s"Timed out trying to release lease [$leaseName, ${settings.ownerName}]. It may still be taken."))
+ }(ExecutionContexts.parasitic)
}
override def acquire(): Future[Boolean] = {
acquire(ConstantFun.scalaAnyToUnit)
}
+ @nowarn("msg=match may not be exhaustive")
override def acquire(leaseLostCallback: Option[Throwable] => Unit): Future[Boolean] = {
- // replace with transform once 2.11 dropped
(leaseActor ? Acquire(leaseLostCallback))
- .flatMap {
- case LeaseAcquired => Future.successful(true)
- case LeaseTaken => Future.successful(false)
- case InvalidRequest(msg) => Future.failed(new LeaseException(msg))
- }
- .recoverWith {
- case _: AskTimeoutException =>
- Future.failed[Boolean](new LeaseTimeoutException(
- s"Timed out trying to acquire lease [${leaseName}, ${settings.ownerName}]. It may still be taken."))
+ .transform {
+ case Success(LeaseAcquired) => Success(true)
+ case Success(LeaseTaken) => Success(false)
+ case Success(InvalidRequest(msg)) => Failure(new LeaseException(msg))
+ case Failure(_: AskTimeoutException) => Failure(new LeaseTimeoutException(
+ s"Timed out trying to acquire lease [$leaseName, ${settings.ownerName}]. It may still be taken."))
}(ExecutionContexts.parasitic)
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@pekko.apache.org
For additional commands, e-mail: commits-help@pekko.apache.org