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