Scala 2.13.0 rc2 (#26967)
This commit is contained in:
parent
24a3bba135
commit
814cfa286c
168 changed files with 396 additions and 315 deletions
|
|
@ -4,7 +4,7 @@ sudo: false
|
||||||
|
|
||||||
scala:
|
scala:
|
||||||
- "2.12.8"
|
- "2.12.8"
|
||||||
- "2.13.0-M5"
|
- "2.13.0-RC2"
|
||||||
|
|
||||||
before_install:
|
before_install:
|
||||||
# using jabba for custom jdk management
|
# using jabba for custom jdk management
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ import akka.annotation.InternalApi
|
||||||
import akka.event.Logging.LogLevel
|
import akka.event.Logging.LogLevel
|
||||||
import akka.util.OptionVal
|
import akka.util.OptionVal
|
||||||
|
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
import scala.compat.java8.OptionConverters._
|
import scala.compat.java8.OptionConverters._
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ import akka.actor.testkit.typed.{ CapturedLogEvent, Effect }
|
||||||
import akka.actor.testkit.typed.Effect._
|
import akka.actor.testkit.typed.Effect._
|
||||||
|
|
||||||
import scala.annotation.tailrec
|
import scala.annotation.tailrec
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
import scala.collection.immutable
|
import scala.collection.immutable
|
||||||
import scala.reflect.ClassTag
|
import scala.reflect.ClassTag
|
||||||
import scala.util.control.Exception.Catcher
|
import scala.util.control.Exception.Catcher
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ import java.util.function.Supplier
|
||||||
import java.util.{ List => JList }
|
import java.util.{ List => JList }
|
||||||
|
|
||||||
import scala.annotation.tailrec
|
import scala.annotation.tailrec
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
import scala.collection.immutable
|
import scala.collection.immutable
|
||||||
import scala.concurrent.Await
|
import scala.concurrent.Await
|
||||||
import scala.concurrent.duration._
|
import scala.concurrent.duration._
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ import akka.actor.testkit.typed.internal.TestInboxImpl
|
||||||
|
|
||||||
import java.util.concurrent.ThreadLocalRandom
|
import java.util.concurrent.ThreadLocalRandom
|
||||||
|
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
import scala.collection.immutable
|
import scala.collection.immutable
|
||||||
|
|
||||||
object TestInbox {
|
object TestInbox {
|
||||||
|
|
|
||||||
|
|
@ -14,14 +14,11 @@ public class ThrowablesTest {
|
||||||
Assert.assertTrue(Throwables.isNonFatal(new IllegalArgumentException("isNonFatal")));
|
Assert.assertTrue(Throwables.isNonFatal(new IllegalArgumentException("isNonFatal")));
|
||||||
}
|
}
|
||||||
|
|
||||||
private static class ControlThrowableImpl extends Throwable implements ControlThrowable {}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testIsFatal() {
|
public void testIsFatal() {
|
||||||
Assert.assertTrue(Throwables.isFatal(new StackOverflowError("fatal")));
|
Assert.assertTrue(Throwables.isFatal(new StackOverflowError("fatal")));
|
||||||
Assert.assertTrue(Throwables.isFatal(new ThreadDeath()));
|
Assert.assertTrue(Throwables.isFatal(new ThreadDeath()));
|
||||||
Assert.assertTrue(Throwables.isFatal(new InterruptedException("fatal")));
|
Assert.assertTrue(Throwables.isFatal(new InterruptedException("fatal")));
|
||||||
Assert.assertTrue(Throwables.isFatal(new LinkageError("fatal")));
|
Assert.assertTrue(Throwables.isFatal(new LinkageError("fatal")));
|
||||||
Assert.assertTrue(Throwables.isFatal(new ControlThrowableImpl()));
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -95,7 +95,7 @@ class ActorSelectionSpec extends AkkaSpec with DefaultTimeout {
|
||||||
identify(system.child("c2").child("c21")) should ===(Some(c21)) // test Java API
|
identify(system.child("c2").child("c21")) should ===(Some(c21)) // test Java API
|
||||||
identify(system / Seq("c2", "c21")) should ===(Some(c21))
|
identify(system / Seq("c2", "c21")) should ===(Some(c21))
|
||||||
|
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
identify(system.descendant(Seq("c2", "c21").asJava)) // test Java API
|
identify(system.descendant(Seq("c2", "c21").asJava)) // test Java API
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -244,7 +244,7 @@ class ActorSelectionSpec extends AkkaSpec with DefaultTimeout {
|
||||||
}
|
}
|
||||||
|
|
||||||
"return deadLetters or ActorIdentity(None), respectively, for non-existing paths" in {
|
"return deadLetters or ActorIdentity(None), respectively, for non-existing paths" in {
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
|
|
||||||
def checkOne(looker: ActorRef, query: Query, result: Option[ActorRef]): Unit = {
|
def checkOne(looker: ActorRef, query: Query, result: Option[ActorRef]): Unit = {
|
||||||
val lookup = askNode(looker, query)
|
val lookup = askNode(looker, query)
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ import com.github.ghik.silencer.silent
|
||||||
|
|
||||||
import scala.concurrent.duration._
|
import scala.concurrent.duration._
|
||||||
import org.scalatest.BeforeAndAfterEach
|
import org.scalatest.BeforeAndAfterEach
|
||||||
import org.scalatestplus.junit.JUnitSuiteLike
|
import org.scalatest.junit.JUnitSuiteLike
|
||||||
|
|
||||||
object ActorWithStashSpec {
|
object ActorWithStashSpec {
|
||||||
|
|
||||||
|
|
@ -102,6 +102,7 @@ object ActorWithStashSpec {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@silent
|
||||||
class JavaActorWithStashSpec extends StashJavaAPI with JUnitSuiteLike
|
class JavaActorWithStashSpec extends StashJavaAPI with JUnitSuiteLike
|
||||||
|
|
||||||
@silent
|
@silent
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,8 @@ import akka.testkit.{ AkkaSpec, EventFilter, TestKit }
|
||||||
import com.typesafe.config.{ Config, ConfigFactory }
|
import com.typesafe.config.{ Config, ConfigFactory }
|
||||||
import akka.actor.CoordinatedShutdown.Phase
|
import akka.actor.CoordinatedShutdown.Phase
|
||||||
import akka.actor.CoordinatedShutdown.UnknownReason
|
import akka.actor.CoordinatedShutdown.UnknownReason
|
||||||
import scala.collection.JavaConverters._
|
|
||||||
|
import akka.util.ccompat.JavaConverters._
|
||||||
import scala.concurrent.Promise
|
import scala.concurrent.Promise
|
||||||
import java.util.concurrent.TimeoutException
|
import java.util.concurrent.TimeoutException
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,10 +10,12 @@ import akka.testkit.EventFilter
|
||||||
import akka.testkit.TestKit._
|
import akka.testkit.TestKit._
|
||||||
import com.typesafe.config.ConfigFactory
|
import com.typesafe.config.ConfigFactory
|
||||||
import org.scalatest.{ Matchers, WordSpec }
|
import org.scalatest.{ Matchers, WordSpec }
|
||||||
import org.scalatestplus.junit.JUnitSuiteLike
|
import org.scalatest.junit.JUnitSuiteLike
|
||||||
|
|
||||||
import scala.util.control.NoStackTrace
|
import scala.util.control.NoStackTrace
|
||||||
|
|
||||||
|
import com.github.ghik.silencer.silent
|
||||||
|
@silent
|
||||||
class JavaExtensionSpec extends JavaExtension with JUnitSuiteLike
|
class JavaExtensionSpec extends JavaExtension with JUnitSuiteLike
|
||||||
|
|
||||||
object TestExtension extends ExtensionId[TestExtension] with ExtensionIdProvider {
|
object TestExtension extends ExtensionId[TestExtension] with ExtensionIdProvider {
|
||||||
|
|
|
||||||
|
|
@ -251,7 +251,7 @@ class FSMActorSpec extends AkkaSpec(Map("akka.actor.debug.fsm" -> true)) with Im
|
||||||
}
|
}
|
||||||
|
|
||||||
"log events and transitions if asked to do so" in {
|
"log events and transitions if asked to do so" in {
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
val config = ConfigFactory
|
val config = ConfigFactory
|
||||||
.parseMap(Map(
|
.parseMap(Map(
|
||||||
"akka.loglevel" -> "DEBUG",
|
"akka.loglevel" -> "DEBUG",
|
||||||
|
|
|
||||||
|
|
@ -27,7 +27,7 @@ object FSMTransitionSpec {
|
||||||
}
|
}
|
||||||
|
|
||||||
class MyFSM(target: ActorRef) extends Actor with FSM[Int, Unit] {
|
class MyFSM(target: ActorRef) extends Actor with FSM[Int, Unit] {
|
||||||
startWith(0, Unit)
|
startWith(0, ())
|
||||||
when(0) {
|
when(0) {
|
||||||
case Event("tick", _) => goto(1)
|
case Event("tick", _) => goto(1)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,8 @@
|
||||||
|
|
||||||
package akka.actor
|
package akka.actor
|
||||||
|
|
||||||
import org.scalatestplus.junit.JUnitSuiteLike
|
import org.scalatest.junit.JUnitSuiteLike
|
||||||
|
|
||||||
|
import com.github.ghik.silencer.silent
|
||||||
|
@silent
|
||||||
class JavaAPISpec extends JavaAPI with JUnitSuiteLike
|
class JavaAPISpec extends JavaAPI with JUnitSuiteLike
|
||||||
|
|
|
||||||
|
|
@ -409,7 +409,7 @@ abstract class ActorModelSpec(config: String) extends AkkaSpec(config) with Defa
|
||||||
System.err.println(
|
System.err.println(
|
||||||
"Teammates left: " + team.size + " stopLatch: " + stopLatch.getCount + " inhab:" + dispatcher.inhabitants)
|
"Teammates left: " + team.size + " stopLatch: " + stopLatch.getCount + " inhab:" + dispatcher.inhabitants)
|
||||||
|
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
team.asScala.toList.sortBy(_.self.path).foreach { cell: ActorCell =>
|
team.asScala.toList.sortBy(_.self.path).foreach { cell: ActorCell =>
|
||||||
System.err.println(
|
System.err.println(
|
||||||
" - " + cell.self.path + " " + cell.isTerminated + " " + cell.mailbox.currentStatus + " "
|
" - " + cell.self.path + " " + cell.isTerminated + " " + cell.mailbox.currentStatus + " "
|
||||||
|
|
@ -452,7 +452,7 @@ abstract class ActorModelSpec(config: String) extends AkkaSpec(config) with Defa
|
||||||
val f6 = a ? Reply("bar2")
|
val f6 = a ? Reply("bar2")
|
||||||
|
|
||||||
val c = system.scheduler.scheduleOnce(2.seconds) {
|
val c = system.scheduler.scheduleOnce(2.seconds) {
|
||||||
import collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
Thread.getAllStackTraces().asScala.foreach {
|
Thread.getAllStackTraces().asScala.foreach {
|
||||||
case (thread, stack) =>
|
case (thread, stack) =>
|
||||||
println(s"$thread:")
|
println(s"$thread:")
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,6 @@
|
||||||
|
|
||||||
package akka.actor.dispatch
|
package akka.actor.dispatch
|
||||||
|
|
||||||
import scala.collection.JavaConverters.mapAsJavaMapConverter
|
|
||||||
import scala.reflect.ClassTag
|
import scala.reflect.ClassTag
|
||||||
import com.typesafe.config.Config
|
import com.typesafe.config.Config
|
||||||
import com.typesafe.config.ConfigFactory
|
import com.typesafe.config.ConfigFactory
|
||||||
|
|
@ -122,6 +121,8 @@ class DispatchersSpec extends AkkaSpec(DispatchersSpec.config) with ImplicitSend
|
||||||
val defaultDispatcherConfig = settings.config.getConfig("akka.actor.default-dispatcher")
|
val defaultDispatcherConfig = settings.config.getConfig("akka.actor.default-dispatcher")
|
||||||
|
|
||||||
lazy val allDispatchers: Map[String, MessageDispatcher] = {
|
lazy val allDispatchers: Map[String, MessageDispatcher] = {
|
||||||
|
import akka.util.ccompat.JavaConverters._
|
||||||
|
|
||||||
validTypes
|
validTypes
|
||||||
.map(t => (t, from(ConfigFactory.parseMap(Map(tipe -> t, id -> t).asJava).withFallback(defaultDispatcherConfig))))
|
.map(t => (t, from(ConfigFactory.parseMap(Map(tipe -> t, id -> t).asJava).withFallback(defaultDispatcherConfig))))
|
||||||
.toMap
|
.toMap
|
||||||
|
|
@ -160,6 +161,7 @@ class DispatchersSpec extends AkkaSpec(DispatchersSpec.config) with ImplicitSend
|
||||||
}
|
}
|
||||||
|
|
||||||
"throw ConfigurationException if type does not exist" in {
|
"throw ConfigurationException if type does not exist" in {
|
||||||
|
import akka.util.ccompat.JavaConverters._
|
||||||
intercept[ConfigurationException] {
|
intercept[ConfigurationException] {
|
||||||
from(
|
from(
|
||||||
ConfigFactory
|
ConfigFactory
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,9 @@ import akka.util.unused
|
||||||
import scala.concurrent.duration._
|
import scala.concurrent.duration._
|
||||||
|
|
||||||
object PriorityDispatcherSpec {
|
object PriorityDispatcherSpec {
|
||||||
|
|
||||||
|
case object Result
|
||||||
|
|
||||||
val config = """
|
val config = """
|
||||||
unbounded-prio-dispatcher {
|
unbounded-prio-dispatcher {
|
||||||
mailbox-type = "akka.dispatch.PriorityDispatcherSpec$Unbounded"
|
mailbox-type = "akka.dispatch.PriorityDispatcherSpec$Unbounded"
|
||||||
|
|
@ -24,19 +27,20 @@ object PriorityDispatcherSpec {
|
||||||
|
|
||||||
class Unbounded(@unused settings: ActorSystem.Settings, @unused config: Config)
|
class Unbounded(@unused settings: ActorSystem.Settings, @unused config: Config)
|
||||||
extends UnboundedPriorityMailbox(PriorityGenerator({
|
extends UnboundedPriorityMailbox(PriorityGenerator({
|
||||||
case i: Int => i //Reverse order
|
case i: Int => i //Reverse order
|
||||||
case "Result" => Int.MaxValue
|
case Result => Int.MaxValue
|
||||||
}: Any => Int))
|
}: Any => Int))
|
||||||
|
|
||||||
class Bounded(@unused settings: ActorSystem.Settings, @unused config: Config)
|
class Bounded(@unused settings: ActorSystem.Settings, @unused config: Config)
|
||||||
extends BoundedPriorityMailbox(PriorityGenerator({
|
extends BoundedPriorityMailbox(PriorityGenerator({
|
||||||
case i: Int => i //Reverse order
|
case i: Int => i //Reverse order
|
||||||
case "Result" => Int.MaxValue
|
case Result => Int.MaxValue
|
||||||
}: Any => Int), 1000, 10 seconds)
|
}: Any => Int), 1000, 10 seconds)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class PriorityDispatcherSpec extends AkkaSpec(PriorityDispatcherSpec.config) with DefaultTimeout {
|
class PriorityDispatcherSpec extends AkkaSpec(PriorityDispatcherSpec.config) with DefaultTimeout {
|
||||||
|
import PriorityDispatcherSpec._
|
||||||
|
|
||||||
"A PriorityDispatcher" must {
|
"A PriorityDispatcher" must {
|
||||||
"Order it's messages according to the specified comparator using an unbounded mailbox" in {
|
"Order it's messages according to the specified comparator using an unbounded mailbox" in {
|
||||||
|
|
@ -66,11 +70,11 @@ class PriorityDispatcherSpec extends AkkaSpec(PriorityDispatcherSpec.config) wit
|
||||||
self ! m
|
self ! m
|
||||||
}
|
}
|
||||||
|
|
||||||
self.tell("Result", testActor)
|
self.tell(Result, testActor)
|
||||||
|
|
||||||
def receive = {
|
def receive = {
|
||||||
case i: Int => acc += i
|
case i: Int => acc += i
|
||||||
case "Result" => sender() ! acc.toList
|
case Result => sender() ! acc.toList
|
||||||
}
|
}
|
||||||
}).withDispatcher(dispatcherKey))
|
}).withDispatcher(dispatcherKey))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,8 @@ import akka.util.unused
|
||||||
import scala.concurrent.duration._
|
import scala.concurrent.duration._
|
||||||
|
|
||||||
object StablePriorityDispatcherSpec {
|
object StablePriorityDispatcherSpec {
|
||||||
|
case object Result
|
||||||
|
|
||||||
val config = """
|
val config = """
|
||||||
unbounded-stable-prio-dispatcher {
|
unbounded-stable-prio-dispatcher {
|
||||||
mailbox-type = "akka.dispatch.StablePriorityDispatcherSpec$Unbounded"
|
mailbox-type = "akka.dispatch.StablePriorityDispatcherSpec$Unbounded"
|
||||||
|
|
@ -26,19 +28,20 @@ object StablePriorityDispatcherSpec {
|
||||||
extends UnboundedStablePriorityMailbox(PriorityGenerator({
|
extends UnboundedStablePriorityMailbox(PriorityGenerator({
|
||||||
case i: Int if i <= 100 => i // Small integers have high priority
|
case i: Int if i <= 100 => i // Small integers have high priority
|
||||||
case _: Int => 101 // Don't care for other integers
|
case _: Int => 101 // Don't care for other integers
|
||||||
case "Result" => Int.MaxValue
|
case Result => Int.MaxValue
|
||||||
}: Any => Int))
|
}: Any => Int))
|
||||||
|
|
||||||
class Bounded(@unused settings: ActorSystem.Settings, @unused config: Config)
|
class Bounded(@unused settings: ActorSystem.Settings, @unused config: Config)
|
||||||
extends BoundedStablePriorityMailbox(PriorityGenerator({
|
extends BoundedStablePriorityMailbox(PriorityGenerator({
|
||||||
case i: Int if i <= 100 => i // Small integers have high priority
|
case i: Int if i <= 100 => i // Small integers have high priority
|
||||||
case _: Int => 101 // Don't care for other integers
|
case _: Int => 101 // Don't care for other integers
|
||||||
case "Result" => Int.MaxValue
|
case Result => Int.MaxValue
|
||||||
}: Any => Int), 1000, 10 seconds)
|
}: Any => Int), 1000, 10 seconds)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
class StablePriorityDispatcherSpec extends AkkaSpec(StablePriorityDispatcherSpec.config) with DefaultTimeout {
|
class StablePriorityDispatcherSpec extends AkkaSpec(StablePriorityDispatcherSpec.config) with DefaultTimeout {
|
||||||
|
import StablePriorityDispatcherSpec._
|
||||||
|
|
||||||
"A StablePriorityDispatcher" must {
|
"A StablePriorityDispatcher" must {
|
||||||
"Order its messages according to the specified comparator while preserving FIFO for equal priority messages, " +
|
"Order its messages according to the specified comparator while preserving FIFO for equal priority messages, " +
|
||||||
|
|
@ -70,11 +73,11 @@ class StablePriorityDispatcherSpec extends AkkaSpec(StablePriorityDispatcherSpec
|
||||||
self ! m
|
self ! m
|
||||||
}
|
}
|
||||||
|
|
||||||
self.tell("Result", testActor)
|
self.tell(Result, testActor)
|
||||||
|
|
||||||
def receive = {
|
def receive = {
|
||||||
case i: Int => acc += i
|
case i: Int => acc += i
|
||||||
case "Result" => sender() ! acc.toList
|
case Result => sender() ! acc.toList
|
||||||
}
|
}
|
||||||
}).withDispatcher(dispatcherKey))
|
}).withDispatcher(dispatcherKey))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ import scala.concurrent.duration._
|
||||||
import akka.testkit._
|
import akka.testkit._
|
||||||
import org.scalatest.WordSpec
|
import org.scalatest.WordSpec
|
||||||
import com.typesafe.config.ConfigFactory
|
import com.typesafe.config.ConfigFactory
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
import akka.actor._
|
import akka.actor._
|
||||||
import scala.annotation.tailrec
|
import scala.annotation.tailrec
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -40,11 +40,17 @@ trait TcpIntegrationSpecSupport { _: AkkaSpec =>
|
||||||
def establishNewClientConnection(): (TestProbe, ActorRef, TestProbe, ActorRef) = {
|
def establishNewClientConnection(): (TestProbe, ActorRef, TestProbe, ActorRef) = {
|
||||||
val connectCommander = TestProbe()(clientSystem)
|
val connectCommander = TestProbe()(clientSystem)
|
||||||
connectCommander.send(IO(Tcp)(clientSystem), Connect(endpoint, options = connectOptions))
|
connectCommander.send(IO(Tcp)(clientSystem), Connect(endpoint, options = connectOptions))
|
||||||
val Connected(`endpoint`, localAddress) = connectCommander.expectMsgType[Connected]
|
val localAddress = connectCommander.expectMsgType[Connected] match {
|
||||||
|
case Connected(`endpoint`, localAddress) => localAddress
|
||||||
|
case Connected(other, _) => fail(s"No match: $other")
|
||||||
|
}
|
||||||
val clientHandler = TestProbe()(clientSystem)
|
val clientHandler = TestProbe()(clientSystem)
|
||||||
connectCommander.sender() ! Register(clientHandler.ref)
|
connectCommander.sender() ! Register(clientHandler.ref)
|
||||||
|
|
||||||
val Connected(`localAddress`, `endpoint`) = bindHandler.expectMsgType[Connected]
|
bindHandler.expectMsgType[Connected] match {
|
||||||
|
case Connected(`localAddress`, `endpoint`) => //ok
|
||||||
|
case other => fail(s"No match: ${other}")
|
||||||
|
}
|
||||||
val serverHandler = TestProbe()
|
val serverHandler = TestProbe()
|
||||||
bindHandler.sender() ! Register(serverHandler.ref)
|
bindHandler.sender() ! Register(serverHandler.ref)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
package akka.io.dns
|
package akka.io.dns
|
||||||
|
|
||||||
import collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
import akka.testkit.AkkaSpec
|
import akka.testkit.AkkaSpec
|
||||||
import com.spotify.docker.client.DefaultDockerClient
|
import com.spotify.docker.client.DefaultDockerClient
|
||||||
import com.spotify.docker.client.DockerClient.{ ListContainersParam, LogsParam }
|
import com.spotify.docker.client.DockerClient.{ ListContainersParam, LogsParam }
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ import org.scalatest.{ Matchers, WordSpec }
|
||||||
class ResolvConfParserSpec extends WordSpec with Matchers {
|
class ResolvConfParserSpec extends WordSpec with Matchers {
|
||||||
|
|
||||||
private def parse(str: String): ResolvConf = {
|
private def parse(str: String): ResolvConf = {
|
||||||
ResolvConfParser.parseLines(str.lines)
|
ResolvConfParser.parseLines(str.linesIterator)
|
||||||
}
|
}
|
||||||
|
|
||||||
"The ResolvConfParser" should {
|
"The ResolvConfParser" should {
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,8 @@
|
||||||
|
|
||||||
package akka.japi
|
package akka.japi
|
||||||
|
|
||||||
import org.scalatestplus.junit.JUnitSuiteLike
|
import org.scalatest.junit.JUnitSuiteLike
|
||||||
|
import com.github.ghik.silencer.silent
|
||||||
|
|
||||||
|
@silent
|
||||||
class JavaAPITest extends JavaAPITestBase with JUnitSuiteLike
|
class JavaAPITest extends JavaAPITestBase with JUnitSuiteLike
|
||||||
|
|
|
||||||
|
|
@ -167,7 +167,7 @@ class BackoffOnRestartSupervisorSpec extends AkkaSpec with ImplicitSender {
|
||||||
|
|
||||||
supervisor ! BackoffSupervisor.GetCurrentChild
|
supervisor ! BackoffSupervisor.GetCurrentChild
|
||||||
// new instance
|
// new instance
|
||||||
val Some(child) = expectMsgType[BackoffSupervisor.CurrentChild].ref
|
val child = expectMsgType[BackoffSupervisor.CurrentChild].ref.get
|
||||||
|
|
||||||
child ! "PING"
|
child ! "PING"
|
||||||
expectMsg("PONG")
|
expectMsg("PONG")
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ import org.scalatest.time.Span
|
||||||
import org.scalatest.time.SpanSugar._
|
import org.scalatest.time.SpanSugar._
|
||||||
import org.scalatest.{ Matchers, WordSpec }
|
import org.scalatest.{ Matchers, WordSpec }
|
||||||
|
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
import scala.collection.mutable
|
import scala.collection.mutable
|
||||||
import scala.concurrent.{ Await, ExecutionContext, ExecutionContextExecutor, Future }
|
import scala.concurrent.{ Await, ExecutionContext, ExecutionContextExecutor, Future }
|
||||||
import scala.util.control.Exception
|
import scala.util.control.Exception
|
||||||
|
|
|
||||||
|
|
@ -742,7 +742,7 @@ class ByteStringSpec extends WordSpec with Matchers with Checkers {
|
||||||
a.asByteBuffers.forall(_.isReadOnly)
|
a.asByteBuffers.forall(_.isReadOnly)
|
||||||
}
|
}
|
||||||
check { (a: ByteString) =>
|
check { (a: ByteString) =>
|
||||||
import scala.collection.JavaConverters.iterableAsScalaIterableConverter
|
import akka.util.ccompat.JavaConverters._
|
||||||
a.asByteBuffers.zip(a.getByteBuffers().asScala).forall(x => x._1 == x._2)
|
a.asByteBuffers.zip(a.getByteBuffers().asScala).forall(x => x._1 == x._2)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,8 @@
|
||||||
|
|
||||||
package akka.util
|
package akka.util
|
||||||
|
|
||||||
import org.scalatestplus.junit.JUnitSuiteLike
|
import org.scalatest.junit.JUnitSuiteLike
|
||||||
|
import com.github.ghik.silencer.silent
|
||||||
|
|
||||||
|
@silent
|
||||||
class JavaDurationSpec extends JavaDuration with JUnitSuiteLike
|
class JavaDurationSpec extends JavaDuration with JUnitSuiteLike
|
||||||
|
|
|
||||||
|
|
@ -5,6 +5,7 @@
|
||||||
package akka.actor.typed.eventstream
|
package akka.actor.typed.eventstream
|
||||||
|
|
||||||
import scala.concurrent.duration._
|
import scala.concurrent.duration._
|
||||||
|
import scala.language.postfixOps
|
||||||
|
|
||||||
import akka.actor.testkit.typed.scaladsl.{ ScalaTestWithActorTestKit, TestProbe }
|
import akka.actor.testkit.typed.scaladsl.{ ScalaTestWithActorTestKit, TestProbe }
|
||||||
import org.scalatest.WordSpecLike
|
import org.scalatest.WordSpecLike
|
||||||
|
|
@ -13,7 +14,7 @@ class EventStreamSpec extends ScalaTestWithActorTestKit with WordSpecLike {
|
||||||
|
|
||||||
import EventStreamSpec._
|
import EventStreamSpec._
|
||||||
|
|
||||||
private final val ShortWait = 100 milli
|
private final val ShortWait = 100.millis
|
||||||
|
|
||||||
"system event stream".can {
|
"system event stream".can {
|
||||||
val eventObjListener: TestProbe[EventObj.type] = testKit.createTestProbe()
|
val eventObjListener: TestProbe[EventObj.type] = testKit.createTestProbe()
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ import akka.annotation.InternalApi
|
||||||
import akka.actor.typed.{ ActorSystem, Extension, ExtensionId, Extensions }
|
import akka.actor.typed.{ ActorSystem, Extension, ExtensionId, Extensions }
|
||||||
import scala.annotation.tailrec
|
import scala.annotation.tailrec
|
||||||
import scala.util.{ Failure, Success, Try }
|
import scala.util.{ Failure, Success, Try }
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
|
|
||||||
import akka.actor.typed.ExtensionSetup
|
import akka.actor.typed.ExtensionSetup
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ import akka.event.Logging._
|
||||||
import akka.event.{ LoggingBus, LoggingFilterWithMarker, LogMarker => UntypedLM }
|
import akka.event.{ LoggingBus, LoggingFilterWithMarker, LogMarker => UntypedLM }
|
||||||
import akka.util.OptionVal
|
import akka.util.OptionVal
|
||||||
|
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* INTERNAL API
|
* INTERNAL API
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ import akka.actor.typed.receptionist.Receptionist.Command
|
||||||
import akka.actor.typed.receptionist.{ Receptionist, ServiceKey }
|
import akka.actor.typed.receptionist.{ Receptionist, ServiceKey }
|
||||||
import akka.annotation.InternalApi
|
import akka.annotation.InternalApi
|
||||||
|
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Internal API
|
* Internal API
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ import akka.japi.function.{ Effect, Function2 => JapiFunction2 }
|
||||||
import akka.japi.pf.PFBuilder
|
import akka.japi.pf.PFBuilder
|
||||||
import akka.util.unused
|
import akka.util.unused
|
||||||
|
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
import scala.reflect.ClassTag
|
import scala.reflect.ClassTag
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ import akka.actor.typed.{ ActorRef, ActorSystem, Dispatchers, Extension, Extensi
|
||||||
import akka.actor.typed.internal.receptionist._
|
import akka.actor.typed.internal.receptionist._
|
||||||
import akka.annotation.DoNotInherit
|
import akka.annotation.DoNotInherit
|
||||||
|
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
import scala.reflect.ClassTag
|
import scala.reflect.ClassTag
|
||||||
import akka.annotation.InternalApi
|
import akka.annotation.InternalApi
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,9 @@
|
||||||
|
# These were added for bincompat with 2.4 but no longer part of the public API,
|
||||||
|
# so can be safely excluded now. Required to avoid naming clashes with extension
|
||||||
|
# methods generated on Scala 2.13 (https://github.com/scala/scala/commit/f9879b63a87b1e3062c58abd9ce30e68d9fee8ca)
|
||||||
|
# These should go into the .backwards.excludes for the last 2.5 version in
|
||||||
|
# which Scala 2.13 support is merged
|
||||||
|
ProblemFilters.exclude[DirectMissingMethodProblem]("akka.pattern.AskableActorRef.ask$extension")
|
||||||
|
ProblemFilters.exclude[DirectMissingMethodProblem]("akka.pattern.AskableActorRef.?$extension")
|
||||||
|
ProblemFilters.exclude[DirectMissingMethodProblem]("akka.pattern.AskableActorSelection.ask$extension")
|
||||||
|
ProblemFilters.exclude[DirectMissingMethodProblem]("akka.pattern.AskableActorSelection.?$extension")
|
||||||
|
|
@ -7,13 +7,15 @@ package akka.util
|
||||||
import java.io.{ ObjectInputStream, ObjectOutputStream }
|
import java.io.{ ObjectInputStream, ObjectOutputStream }
|
||||||
import java.nio.{ ByteBuffer, ByteOrder }
|
import java.nio.{ ByteBuffer, ByteOrder }
|
||||||
import java.lang.{ Iterable => JIterable }
|
import java.lang.{ Iterable => JIterable }
|
||||||
|
import java.nio.charset.{ Charset, StandardCharsets }
|
||||||
|
|
||||||
import scala.annotation.{ tailrec, varargs }
|
import scala.annotation.{ tailrec, varargs }
|
||||||
import scala.collection.mutable.{ Builder, WrappedArray }
|
import scala.collection.mutable.{ Builder, WrappedArray }
|
||||||
import scala.collection.{ immutable, mutable }
|
import scala.collection.{ immutable, mutable }
|
||||||
import scala.collection.immutable.{ IndexedSeq, IndexedSeqOps, StrictOptimizedSeqOps, VectorBuilder }
|
import scala.collection.immutable.{ IndexedSeq, IndexedSeqOps, StrictOptimizedSeqOps, VectorBuilder }
|
||||||
import scala.reflect.ClassTag
|
import scala.reflect.ClassTag
|
||||||
import java.nio.charset.{ Charset, StandardCharsets }
|
|
||||||
|
import com.github.ghik.silencer.silent
|
||||||
|
|
||||||
object ByteString {
|
object ByteString {
|
||||||
|
|
||||||
|
|
@ -384,7 +386,7 @@ object ByteString {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override protected def writeReplace(): AnyRef = new SerializationProxy(this)
|
protected def writeReplace(): AnyRef = new SerializationProxy(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
private[akka] object ByteStrings extends Companion {
|
private[akka] object ByteStrings extends Companion {
|
||||||
|
|
@ -626,7 +628,7 @@ object ByteString {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
override protected def writeReplace(): AnyRef = new SerializationProxy(this)
|
protected def writeReplace(): AnyRef = new SerializationProxy(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
@SerialVersionUID(1L)
|
@SerialVersionUID(1L)
|
||||||
|
|
@ -675,10 +677,7 @@ sealed abstract class ByteString
|
||||||
|
|
||||||
override protected def fromSpecific(coll: IterableOnce[Byte]): ByteString = ByteString(coll)
|
override protected def fromSpecific(coll: IterableOnce[Byte]): ByteString = ByteString(coll)
|
||||||
override protected def newSpecificBuilder: mutable.Builder[Byte, ByteString] = ByteString.newBuilder
|
override protected def newSpecificBuilder: mutable.Builder[Byte, ByteString] = ByteString.newBuilder
|
||||||
|
override val empty: ByteString = ByteString.empty
|
||||||
// FIXME this is a workaround for
|
|
||||||
// https://github.com/scala/bug/issues/11192#issuecomment-436926231
|
|
||||||
protected[this] override def writeReplace(): AnyRef = this
|
|
||||||
|
|
||||||
def apply(idx: Int): Byte
|
def apply(idx: Int): Byte
|
||||||
private[akka] def byteStringCompanion: ByteString.Companion
|
private[akka] def byteStringCompanion: ByteString.Companion
|
||||||
|
|
@ -814,6 +813,7 @@ sealed abstract class ByteString
|
||||||
* Java API: Returns an Iterable of read-only ByteBuffers that directly wraps this ByteStrings
|
* Java API: Returns an Iterable of read-only ByteBuffers that directly wraps this ByteStrings
|
||||||
* all fragments. Will always have at least one entry.
|
* all fragments. Will always have at least one entry.
|
||||||
*/
|
*/
|
||||||
|
@silent
|
||||||
def getByteBuffers(): JIterable[ByteBuffer] = {
|
def getByteBuffers(): JIterable[ByteBuffer] = {
|
||||||
import scala.collection.JavaConverters.asJavaIterableConverter
|
import scala.collection.JavaConverters.asJavaIterableConverter
|
||||||
asByteBuffers.asJava
|
asByteBuffers.asJava
|
||||||
|
|
|
||||||
|
|
@ -14,4 +14,10 @@ package akka.util
|
||||||
package object ccompat {
|
package object ccompat {
|
||||||
private[akka] type Factory[-A, +C] = scala.collection.Factory[A, C]
|
private[akka] type Factory[-A, +C] = scala.collection.Factory[A, C]
|
||||||
private[akka] val Factory = scala.collection.Factory
|
private[akka] val Factory = scala.collection.Factory
|
||||||
|
|
||||||
|
// When we drop support for 2.12 we can delete this concept
|
||||||
|
// and import scala.jdk.CollectionConverters.Ops._ instead
|
||||||
|
object JavaConverters
|
||||||
|
extends scala.collection.convert.AsJavaExtensions
|
||||||
|
with scala.collection.convert.AsScalaExtensions
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -82,4 +82,6 @@ package object ccompat {
|
||||||
implicit class ImmutableSortedSetOps[A](val real: i.SortedSet[A]) extends AnyVal {
|
implicit class ImmutableSortedSetOps[A](val real: i.SortedSet[A]) extends AnyVal {
|
||||||
def unsorted: i.Set[A] = real
|
def unsorted: i.Set[A] = real
|
||||||
}
|
}
|
||||||
|
|
||||||
|
object JavaConverters extends scala.collection.convert.DecorateAsJava with scala.collection.convert.DecorateAsScala
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -294,7 +294,7 @@ object CoordinatedShutdown extends ExtensionId[CoordinatedShutdown] with Extensi
|
||||||
* INTERNAL API
|
* INTERNAL API
|
||||||
*/
|
*/
|
||||||
private[akka] def phasesFromConfig(conf: Config): Map[String, Phase] = {
|
private[akka] def phasesFromConfig(conf: Config): Map[String, Phase] = {
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
val defaultPhaseTimeout = conf.getString("default-phase-timeout")
|
val defaultPhaseTimeout = conf.getString("default-phase-timeout")
|
||||||
val phasesConf = conf.getConfig("phases")
|
val phasesConf = conf.getConfig("phases")
|
||||||
val defaultPhaseConfig = ConfigFactory.parseString(s"""
|
val defaultPhaseConfig = ConfigFactory.parseString(s"""
|
||||||
|
|
@ -588,7 +588,7 @@ final class CoordinatedShutdown private[akka] (
|
||||||
* Sum of timeouts of all phases that have some task.
|
* Sum of timeouts of all phases that have some task.
|
||||||
*/
|
*/
|
||||||
def totalTimeout(): FiniteDuration = {
|
def totalTimeout(): FiniteDuration = {
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
tasks.keySet.asScala.foldLeft(Duration.Zero) {
|
tasks.keySet.asScala.foldLeft(Duration.Zero) {
|
||||||
case (acc, phase) => acc + timeout(phase)
|
case (acc, phase) => acc + timeout(phase)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -135,7 +135,7 @@ case object NoScopeGiven extends NoScopeGiven {
|
||||||
*/
|
*/
|
||||||
private[akka] class Deployer(val settings: ActorSystem.Settings, val dynamicAccess: DynamicAccess) {
|
private[akka] class Deployer(val settings: ActorSystem.Settings, val dynamicAccess: DynamicAccess) {
|
||||||
|
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
|
|
||||||
private val resizerEnabled: Config = ConfigFactory.parseString("resizer.enabled=on")
|
private val resizerEnabled: Config = ConfigFactory.parseString("resizer.enabled=on")
|
||||||
private val deployments = new AtomicReference(WildcardIndex[Deploy]())
|
private val deployments = new AtomicReference(WildcardIndex[Deploy]())
|
||||||
|
|
|
||||||
|
|
@ -75,6 +75,7 @@ trait UnrestrictedStash extends Actor with StashSupport {
|
||||||
* Overridden callback. Prepends all messages in the stash to the mailbox,
|
* Overridden callback. Prepends all messages in the stash to the mailbox,
|
||||||
* clears the stash, stops all children and invokes the postStop() callback.
|
* clears the stash, stops all children and invokes the postStop() callback.
|
||||||
*/
|
*/
|
||||||
|
@throws(classOf[Exception])
|
||||||
override def preRestart(reason: Throwable, message: Option[Any]): Unit = {
|
override def preRestart(reason: Throwable, message: Option[Any]): Unit = {
|
||||||
try unstashAll()
|
try unstashAll()
|
||||||
finally super.preRestart(reason, message)
|
finally super.preRestart(reason, message)
|
||||||
|
|
@ -85,6 +86,7 @@ trait UnrestrictedStash extends Actor with StashSupport {
|
||||||
* Must be called when overriding this method, otherwise stashed messages won't be propagated to DeadLetters
|
* Must be called when overriding this method, otherwise stashed messages won't be propagated to DeadLetters
|
||||||
* when actor stops.
|
* when actor stops.
|
||||||
*/
|
*/
|
||||||
|
@throws(classOf[Exception])
|
||||||
override def postStop(): Unit =
|
override def postStop(): Unit =
|
||||||
try unstashAll()
|
try unstashAll()
|
||||||
finally super.postStop()
|
finally super.postStop()
|
||||||
|
|
|
||||||
|
|
@ -30,6 +30,7 @@ private[akka] trait Children { this: ActorCell =>
|
||||||
Unsafe.instance.getObjectVolatile(this, AbstractActorCell.childrenOffset).asInstanceOf[ChildrenContainer]
|
Unsafe.instance.getObjectVolatile(this, AbstractActorCell.childrenOffset).asInstanceOf[ChildrenContainer]
|
||||||
|
|
||||||
final def children: immutable.Iterable[ActorRef] = childrenRefs.children
|
final def children: immutable.Iterable[ActorRef] = childrenRefs.children
|
||||||
|
@silent
|
||||||
final def getChildren(): java.lang.Iterable[ActorRef] =
|
final def getChildren(): java.lang.Iterable[ActorRef] =
|
||||||
scala.collection.JavaConverters.asJavaIterableConverter(children).asJava
|
scala.collection.JavaConverters.asJavaIterableConverter(children).asJava
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -194,7 +194,7 @@ class Dispatchers @InternalApi private[akka] (
|
||||||
* INTERNAL API
|
* INTERNAL API
|
||||||
*/
|
*/
|
||||||
private[akka] def config(id: String, appConfig: Config): Config = {
|
private[akka] def config(id: String, appConfig: Config): Config = {
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
def simpleName = id.substring(id.lastIndexOf('.') + 1)
|
def simpleName = id.substring(id.lastIndexOf('.') + 1)
|
||||||
idConfig(id)
|
idConfig(id)
|
||||||
.withFallback(appConfig)
|
.withFallback(appConfig)
|
||||||
|
|
@ -203,7 +203,7 @@ class Dispatchers @InternalApi private[akka] (
|
||||||
}
|
}
|
||||||
|
|
||||||
private def idConfig(id: String): Config = {
|
private def idConfig(id: String): Config = {
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
ConfigFactory.parseMap(Map("id" -> id).asJava)
|
ConfigFactory.parseMap(Map("id" -> id).asJava)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -93,7 +93,7 @@ object ExecutionContexts {
|
||||||
* Futures is the Java API for Futures and Promises
|
* Futures is the Java API for Futures and Promises
|
||||||
*/
|
*/
|
||||||
object Futures {
|
object Futures {
|
||||||
import scala.collection.JavaConverters.iterableAsScalaIterableConverter
|
import akka.util.ccompat.JavaConverters._
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Starts an asynchronous computation and returns a `Future` object with the result of that computation.
|
* Starts an asynchronous computation and returns a `Future` object with the result of that computation.
|
||||||
|
|
|
||||||
|
|
@ -55,7 +55,7 @@ private[akka] class Mailboxes(
|
||||||
private val mailboxTypeConfigurators = new ConcurrentHashMap[String, MailboxType]
|
private val mailboxTypeConfigurators = new ConcurrentHashMap[String, MailboxType]
|
||||||
|
|
||||||
private val mailboxBindings: Map[Class[_ <: Any], String] = {
|
private val mailboxBindings: Map[Class[_ <: Any], String] = {
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
settings.config
|
settings.config
|
||||||
.getConfig("akka.actor.mailbox.requirements")
|
.getConfig("akka.actor.mailbox.requirements")
|
||||||
.root
|
.root
|
||||||
|
|
@ -255,7 +255,7 @@ private[akka] class Mailboxes(
|
||||||
|
|
||||||
//INTERNAL API
|
//INTERNAL API
|
||||||
private def config(id: String): Config = {
|
private def config(id: String): Config = {
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
ConfigFactory
|
ConfigFactory
|
||||||
.parseMap(Map("id" -> id).asJava)
|
.parseMap(Map("id" -> id).asJava)
|
||||||
.withFallback(settings.config.getConfig(id))
|
.withFallback(settings.config.getConfig(id))
|
||||||
|
|
|
||||||
|
|
@ -745,7 +745,7 @@ object Logging {
|
||||||
* Java API: Retrieve the contents of the MDC.
|
* Java API: Retrieve the contents of the MDC.
|
||||||
*/
|
*/
|
||||||
def getMDC: java.util.Map[String, Any] = {
|
def getMDC: java.util.Map[String, Any] = {
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
mdc.asJava
|
mdc.asJava
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1564,7 +1564,7 @@ trait DiagnosticLoggingAdapter extends LoggingAdapter {
|
||||||
|
|
||||||
import Logging._
|
import Logging._
|
||||||
|
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
|
|
||||||
private var _mdc = emptyMDC
|
private var _mdc = emptyMDC
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ import com.typesafe.config.Config
|
||||||
|
|
||||||
import scala.concurrent.duration._
|
import scala.concurrent.duration._
|
||||||
import scala.collection.immutable
|
import scala.collection.immutable
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
import akka.util.{ ByteString, Helpers }
|
import akka.util.{ ByteString, Helpers }
|
||||||
import akka.util.Helpers.Requiring
|
import akka.util.Helpers.Requiring
|
||||||
import akka.util.JavaDurationConverters._
|
import akka.util.JavaDurationConverters._
|
||||||
|
|
|
||||||
|
|
@ -387,7 +387,7 @@ private[io] abstract class TcpConnection(val tcp: TcpExt, val channel: SocketCha
|
||||||
|
|
||||||
val interestedInClose: Set[ActorRef] =
|
val interestedInClose: Set[ActorRef] =
|
||||||
(if (writePending) Set(pendingWrite.commander) else Set.empty) ++
|
(if (writePending) Set(pendingWrite.commander) else Set.empty) ++
|
||||||
closedMessage.toSet[CloseInformation].flatMap(_.notificationsTo)
|
closedMessage.toList.flatMap(_.notificationsTo).toSet
|
||||||
|
|
||||||
if (channel.isOpen) // if channel is still open here, we didn't go through stopWith => unexpected actor termination
|
if (channel.isOpen) // if channel is still open here, we didn't go through stopWith => unexpected actor termination
|
||||||
prepareAbort()
|
prepareAbort()
|
||||||
|
|
|
||||||
|
|
@ -245,7 +245,7 @@ class UdpExt(system: ExtendedActorSystem) extends IO.Extension {
|
||||||
object UdpMessage {
|
object UdpMessage {
|
||||||
import Udp._
|
import Udp._
|
||||||
import java.lang.{ Iterable => JIterable }
|
import java.lang.{ Iterable => JIterable }
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Each [[Udp.Send]] can optionally request a positive acknowledgment to be sent
|
* Each [[Udp.Send]] can optionally request a positive acknowledgment to be sent
|
||||||
|
|
|
||||||
|
|
@ -256,7 +256,7 @@ object UdpConnectedMessage {
|
||||||
def resumeReading: Command = ResumeReading
|
def resumeReading: Command = ResumeReading
|
||||||
|
|
||||||
implicit private def fromJava[T](coll: JIterable[T]): immutable.Iterable[T] = {
|
implicit private def fromJava[T](coll: JIterable[T]): immutable.Iterable[T] = {
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
coll.asScala.to(immutable.Iterable)
|
coll.asScala.to(immutable.Iterable)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ import java.util
|
||||||
import akka.actor.NoSerializationVerificationNeeded
|
import akka.actor.NoSerializationVerificationNeeded
|
||||||
|
|
||||||
import scala.collection.{ immutable => im }
|
import scala.collection.{ immutable => im }
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Supersedes [[akka.io.Dns]] protocol.
|
* Supersedes [[akka.io.Dns]] protocol.
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ import akka.util.Helpers
|
||||||
import akka.util.JavaDurationConverters._
|
import akka.util.JavaDurationConverters._
|
||||||
import com.typesafe.config.{ Config, ConfigValueType }
|
import com.typesafe.config.{ Config, ConfigValueType }
|
||||||
|
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
import scala.collection.immutable
|
import scala.collection.immutable
|
||||||
import scala.concurrent.duration.FiniteDuration
|
import scala.concurrent.duration.FiniteDuration
|
||||||
import scala.util.{ Failure, Success, Try }
|
import scala.util.{ Failure, Success, Try }
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ package akka.io.dns.internal
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import java.nio.file.Files
|
import java.nio.file.Files
|
||||||
|
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
import scala.util.Try
|
import scala.util.Try
|
||||||
|
|
||||||
private[dns] case class ResolvConf(search: List[String], ndots: Int)
|
private[dns] case class ResolvConf(search: List[String], ndots: Int)
|
||||||
|
|
|
||||||
|
|
@ -261,18 +261,6 @@ trait ExplicitAskSupport {
|
||||||
|
|
||||||
object AskableActorRef {
|
object AskableActorRef {
|
||||||
|
|
||||||
/**
|
|
||||||
* INTERNAL API: for binary compatibility
|
|
||||||
*/
|
|
||||||
private[pattern] def ask$extension(actorRef: ActorRef, message: Any, timeout: Timeout): Future[Any] =
|
|
||||||
actorRef.internalAsk(message, timeout, ActorRef.noSender)
|
|
||||||
|
|
||||||
/**
|
|
||||||
* INTERNAL API: for binary compatibility
|
|
||||||
*/
|
|
||||||
private[pattern] def $qmark$extension(actorRef: ActorRef, message: Any, timeout: Timeout): Future[Any] =
|
|
||||||
actorRef.internalAsk(message, timeout, ActorRef.noSender)
|
|
||||||
|
|
||||||
private def messagePartOfException(message: Any, sender: ActorRef): String = {
|
private def messagePartOfException(message: Any, sender: ActorRef): String = {
|
||||||
val msg = if (message == null) "unknown" else message
|
val msg = if (message == null) "unknown" else message
|
||||||
val wasSentBy = if (sender == ActorRef.noSender) "" else s" was sent by [$sender]"
|
val wasSentBy = if (sender == ActorRef.noSender) "" else s" was sent by [$sender]"
|
||||||
|
|
@ -402,21 +390,6 @@ final class ExplicitlyAskableActorRef(val actorRef: ActorRef) extends AnyVal {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
object AskableActorSelection {
|
|
||||||
|
|
||||||
/**
|
|
||||||
* INTERNAL API: for binary compatibility
|
|
||||||
*/
|
|
||||||
private[pattern] def ask$extension(actorSel: ActorSelection, message: Any, timeout: Timeout): Future[Any] =
|
|
||||||
actorSel.internalAsk(message, timeout, ActorRef.noSender)
|
|
||||||
|
|
||||||
/**
|
|
||||||
* INTERNAL API: for binary compatibility
|
|
||||||
*/
|
|
||||||
private[pattern] def $qmark$extension(actorSel: ActorSelection, message: Any, timeout: Timeout): Future[Any] =
|
|
||||||
actorSel.internalAsk(message, timeout, ActorRef.noSender)
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Implementation class of the “ask” pattern enrichment of ActorSelection
|
* Implementation class of the “ask” pattern enrichment of ActorSelection
|
||||||
*/
|
*/
|
||||||
|
|
|
||||||
|
|
@ -126,7 +126,7 @@ object ConsistentHash {
|
||||||
* Java API: Factory method to create a ConsistentHash
|
* Java API: Factory method to create a ConsistentHash
|
||||||
*/
|
*/
|
||||||
def create[T](nodes: java.lang.Iterable[T], virtualNodesFactor: Int): ConsistentHash[T] = {
|
def create[T](nodes: java.lang.Iterable[T], virtualNodesFactor: Int): ConsistentHash[T] = {
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
apply(nodes.asScala, virtualNodesFactor)(ClassTag(classOf[Any].asInstanceOf[Class[T]]))
|
apply(nodes.asScala, virtualNodesFactor)(ClassTag(classOf[Any].asInstanceOf[Class[T]]))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -78,7 +78,7 @@ final case class SeveralRoutees(routees: immutable.IndexedSeq[Routee]) extends R
|
||||||
* Java API
|
* Java API
|
||||||
*/
|
*/
|
||||||
def getRoutees(): java.util.List[Routee] = {
|
def getRoutees(): java.util.List[Routee] = {
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
routees.asJava
|
routees.asJava
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -405,7 +405,7 @@ final case class Routees(routees: immutable.IndexedSeq[Routee]) {
|
||||||
* Java API
|
* Java API
|
||||||
*/
|
*/
|
||||||
def getRoutees: java.util.List[Routee] = {
|
def getRoutees: java.util.List[Routee] = {
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
routees.asJava
|
routees.asJava
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -63,7 +63,7 @@ object Serialization {
|
||||||
}
|
}
|
||||||
|
|
||||||
private final def configToMap(cfg: Config): Map[String, String] = {
|
private final def configToMap(cfg: Config): Map[String, String] = {
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
cfg.root.unwrapped.asScala.toMap.map { case (k, v) => (k -> v.toString) }
|
cfg.root.unwrapped.asScala.toMap.map { case (k, v) => (k -> v.toString) }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ import akka.actor.ExtendedActorSystem
|
||||||
import akka.actor.setup.Setup
|
import akka.actor.setup.Setup
|
||||||
|
|
||||||
import scala.collection.immutable
|
import scala.collection.immutable
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
|
|
||||||
object SerializationSetup {
|
object SerializationSetup {
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,11 @@ import annotation.tailrec
|
||||||
|
|
||||||
import java.util.concurrent.{ ConcurrentHashMap, ConcurrentSkipListSet }
|
import java.util.concurrent.{ ConcurrentHashMap, ConcurrentSkipListSet }
|
||||||
import java.util.Comparator
|
import java.util.Comparator
|
||||||
import scala.collection.JavaConverters.{ asScalaIteratorConverter, collectionAsScalaIterableConverter }
|
|
||||||
|
import scala.collection.JavaConverters.collectionAsScalaIterableConverter
|
||||||
|
import akka.util.ccompat.JavaConverters._
|
||||||
|
|
||||||
|
import com.github.ghik.silencer.silent
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An implementation of a ConcurrentMultiMap
|
* An implementation of a ConcurrentMultiMap
|
||||||
|
|
@ -143,6 +147,7 @@ class Index[K, V](val mapSize: Int, val valueComparator: Comparator[V]) {
|
||||||
if (set ne null) {
|
if (set ne null) {
|
||||||
set.synchronized {
|
set.synchronized {
|
||||||
container.remove(key, set)
|
container.remove(key, set)
|
||||||
|
@silent
|
||||||
val ret = collectionAsScalaIterableConverter(set.clone()).asScala // Make copy since we need to clear the original
|
val ret = collectionAsScalaIterableConverter(set.clone()).asScala // Make copy since we need to clear the original
|
||||||
set.clear() // Clear the original set to signal to any pending writers that there was a conflict
|
set.clear() // Clear the original set to signal to any pending writers that there was a conflict
|
||||||
Some(ret)
|
Some(ret)
|
||||||
|
|
|
||||||
|
|
@ -4,6 +4,8 @@
|
||||||
|
|
||||||
package akka.util
|
package akka.util
|
||||||
|
|
||||||
|
import com.github.ghik.silencer.silent
|
||||||
|
|
||||||
import akka.annotation.InternalApi
|
import akka.annotation.InternalApi
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -12,6 +14,15 @@ import akka.annotation.InternalApi
|
||||||
* or other reason. Useful in combination with
|
* or other reason. Useful in combination with
|
||||||
* `-Ywarn-unused:explicits,implicits` compiler options.
|
* `-Ywarn-unused:explicits,implicits` compiler options.
|
||||||
*
|
*
|
||||||
|
* Extends 'deprecated' to make sure using a parameter marked @unused
|
||||||
|
* produces a warning, and not using a parameter marked @unused does not
|
||||||
|
* produce an 'unused parameter' warning.
|
||||||
|
*
|
||||||
|
* This approach is deprecated in Scala 2.13 and scheduled to be
|
||||||
|
* removed in 2.14. Perhaps we should promote introducing an `@unused`
|
||||||
|
* to Scala? https://contributors.scala-lang.org/t/more-error-reporting-annotations/1681/7
|
||||||
|
*
|
||||||
* INTERNAL API
|
* INTERNAL API
|
||||||
*/
|
*/
|
||||||
|
@silent
|
||||||
@InternalApi private[akka] class unused extends deprecated("unused", "")
|
@InternalApi private[akka] class unused extends deprecated("unused", "")
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ import org.openjdk.jmh.runner.options.CommandLineOptions
|
||||||
|
|
||||||
object BenchRunner {
|
object BenchRunner {
|
||||||
def main(args: Array[String]) = {
|
def main(args: Array[String]) = {
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
|
|
||||||
val args2 = args.toList.flatMap {
|
val args2 = args.toList.flatMap {
|
||||||
case "quick" => "-i 1 -wi 1 -f1 -t1".split(" ").toList
|
case "quick" => "-i 1 -wi 1 -f1 -t1".split(" ").toList
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ import org.openjdk.jmh.runner.options.CommandLineOptions
|
||||||
|
|
||||||
object BenchRunner {
|
object BenchRunner {
|
||||||
def main(args: Array[String]) = {
|
def main(args: Array[String]) = {
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
|
|
||||||
val args2 = args.toList.flatMap {
|
val args2 = args.toList.flatMap {
|
||||||
case "quick" => "-i 1 -wi 1 -f1 -t1".split(" ").toList
|
case "quick" => "-i 1 -wi 1 -f1 -t1".split(" ").toList
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,8 @@ import akka.cluster.MemberStatus
|
||||||
import java.util.concurrent.ThreadLocalRandom
|
import java.util.concurrent.ThreadLocalRandom
|
||||||
import akka.actor.DeadLetterSuppression
|
import akka.actor.DeadLetterSuppression
|
||||||
|
|
||||||
|
import com.github.ghik.silencer.silent
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Runtime collection management commands.
|
* Runtime collection management commands.
|
||||||
*/
|
*/
|
||||||
|
|
@ -92,6 +94,7 @@ trait ClusterMetricsEvent
|
||||||
final case class ClusterMetricsChanged(nodeMetrics: Set[NodeMetrics]) extends ClusterMetricsEvent {
|
final case class ClusterMetricsChanged(nodeMetrics: Set[NodeMetrics]) extends ClusterMetricsEvent {
|
||||||
|
|
||||||
/** Java API */
|
/** Java API */
|
||||||
|
@silent
|
||||||
def getNodeMetrics: java.lang.Iterable[NodeMetrics] =
|
def getNodeMetrics: java.lang.Iterable[NodeMetrics] =
|
||||||
scala.collection.JavaConverters.asJavaIterableConverter(nodeMetrics).asJava
|
scala.collection.JavaConverters.asJavaIterableConverter(nodeMetrics).asJava
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,8 @@ import scala.util.Success
|
||||||
import scala.util.Failure
|
import scala.util.Failure
|
||||||
import scala.util.Try
|
import scala.util.Try
|
||||||
|
|
||||||
|
import com.github.ghik.silencer.silent
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Metrics key/value.
|
* Metrics key/value.
|
||||||
*
|
*
|
||||||
|
|
@ -323,6 +325,7 @@ final case class NodeMetrics(address: Address, timestamp: Long, metrics: Set[Met
|
||||||
/**
|
/**
|
||||||
* Java API
|
* Java API
|
||||||
*/
|
*/
|
||||||
|
@silent
|
||||||
def getMetrics: java.lang.Iterable[Metric] =
|
def getMetrics: java.lang.Iterable[Metric] =
|
||||||
scala.collection.JavaConverters.asJavaIterableConverter(metrics).asJava
|
scala.collection.JavaConverters.asJavaIterableConverter(metrics).asJava
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,7 +18,7 @@ import akka.util.ccompat._
|
||||||
|
|
||||||
import scala.annotation.tailrec
|
import scala.annotation.tailrec
|
||||||
import scala.collection.immutable
|
import scala.collection.immutable
|
||||||
import scala.collection.JavaConverters.{ asJavaIterableConverter, asScalaBufferConverter, setAsJavaSetConverter }
|
import akka.util.ccompat.JavaConverters._
|
||||||
import java.io.NotSerializableException
|
import java.io.NotSerializableException
|
||||||
|
|
||||||
import akka.dispatch.Dispatchers
|
import akka.dispatch.Dispatchers
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ import java.net.URLEncoder
|
||||||
import java.util.Optional
|
import java.util.Optional
|
||||||
import java.util.concurrent.ConcurrentHashMap
|
import java.util.concurrent.ConcurrentHashMap
|
||||||
|
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
import scala.collection.immutable
|
import scala.collection.immutable
|
||||||
import scala.concurrent.Await
|
import scala.concurrent.Await
|
||||||
import scala.util.control.NonFatal
|
import scala.util.control.NonFatal
|
||||||
|
|
|
||||||
|
|
@ -109,14 +109,14 @@ object ShardCoordinator {
|
||||||
shardId: ShardId,
|
shardId: ShardId,
|
||||||
currentShardAllocations: Map[ActorRef, immutable.IndexedSeq[ShardId]]): Future[ActorRef] = {
|
currentShardAllocations: Map[ActorRef, immutable.IndexedSeq[ShardId]]): Future[ActorRef] = {
|
||||||
|
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
allocateShard(requester, shardId, currentShardAllocations.asJava)
|
allocateShard(requester, shardId, currentShardAllocations.asJava)
|
||||||
}
|
}
|
||||||
|
|
||||||
override final def rebalance(
|
override final def rebalance(
|
||||||
currentShardAllocations: Map[ActorRef, immutable.IndexedSeq[ShardId]],
|
currentShardAllocations: Map[ActorRef, immutable.IndexedSeq[ShardId]],
|
||||||
rebalanceInProgress: Set[ShardId]): Future[Set[ShardId]] = {
|
rebalanceInProgress: Set[ShardId]): Future[Set[ShardId]] = {
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
implicit val ec = ExecutionContexts.sameThreadExecutionContext
|
implicit val ec = ExecutionContexts.sameThreadExecutionContext
|
||||||
rebalance(currentShardAllocations.asJava, rebalanceInProgress.asJava).map(_.asScala.toSet)
|
rebalance(currentShardAllocations.asJava, rebalanceInProgress.asJava).map(_.asScala.toSet)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -242,7 +242,7 @@ object ShardRegion {
|
||||||
* Java API
|
* Java API
|
||||||
*/
|
*/
|
||||||
def getRegions: java.util.Set[Address] = {
|
def getRegions: java.util.Set[Address] = {
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
regions.asJava
|
regions.asJava
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -269,7 +269,7 @@ object ShardRegion {
|
||||||
* Java API
|
* Java API
|
||||||
*/
|
*/
|
||||||
def getRegions(): java.util.Map[Address, ShardRegionStats] = {
|
def getRegions(): java.util.Map[Address, ShardRegionStats] = {
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
regions.asJava
|
regions.asJava
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -297,7 +297,7 @@ object ShardRegion {
|
||||||
* Java API
|
* Java API
|
||||||
*/
|
*/
|
||||||
def getStats(): java.util.Map[ShardId, Int] = {
|
def getStats(): java.util.Map[ShardId, Int] = {
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
stats.asJava
|
stats.asJava
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -329,7 +329,7 @@ object ShardRegion {
|
||||||
* If gathering the shard information times out the set of shards will be empty.
|
* If gathering the shard information times out the set of shards will be empty.
|
||||||
*/
|
*/
|
||||||
def getShards(): java.util.Set[ShardState] = {
|
def getShards(): java.util.Set[ShardState] = {
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
shards.asJava
|
shards.asJava
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -340,7 +340,7 @@ object ShardRegion {
|
||||||
* Java API:
|
* Java API:
|
||||||
*/
|
*/
|
||||||
def getEntityIds(): java.util.Set[EntityId] = {
|
def getEntityIds(): java.util.Set[EntityId] = {
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
entityIds.asJava
|
entityIds.asJava
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ import java.util.zip.GZIPInputStream
|
||||||
import java.util.zip.GZIPOutputStream
|
import java.util.zip.GZIPOutputStream
|
||||||
|
|
||||||
import scala.annotation.tailrec
|
import scala.annotation.tailrec
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
import scala.collection.immutable
|
import scala.collection.immutable
|
||||||
import akka.actor.ActorRef
|
import akka.actor.ActorRef
|
||||||
import akka.actor.ExtendedActorSystem
|
import akka.actor.ExtendedActorSystem
|
||||||
|
|
|
||||||
|
|
@ -152,7 +152,7 @@ final class ClusterClientSettings(
|
||||||
* Java API
|
* Java API
|
||||||
*/
|
*/
|
||||||
def withInitialContacts(initialContacts: java.util.Set[ActorPath]): ClusterClientSettings = {
|
def withInitialContacts(initialContacts: java.util.Set[ActorPath]): ClusterClientSettings = {
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
withInitialContacts(initialContacts.asScala.toSet)
|
withInitialContacts(initialContacts.asScala.toSet)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -262,7 +262,7 @@ case object GetContactPoints extends GetContactPoints {
|
||||||
* @param contactPoints The presently known list of contact points.
|
* @param contactPoints The presently known list of contact points.
|
||||||
*/
|
*/
|
||||||
final case class ContactPoints(contactPoints: Set[ActorPath]) {
|
final case class ContactPoints(contactPoints: Set[ActorPath]) {
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Java API
|
* Java API
|
||||||
|
|
@ -811,7 +811,7 @@ case object GetClusterClients extends GetClusterClients {
|
||||||
* @param clusterClients The presently known list of cluster clients.
|
* @param clusterClients The presently known list of cluster clients.
|
||||||
*/
|
*/
|
||||||
final case class ClusterClients(clusterClients: Set[ActorRef]) {
|
final case class ClusterClients(clusterClients: Set[ActorRef]) {
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Java API
|
* Java API
|
||||||
|
|
|
||||||
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
package akka.cluster.client.protobuf
|
package akka.cluster.client.protobuf
|
||||||
|
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
import akka.actor.ExtendedActorSystem
|
import akka.actor.ExtendedActorSystem
|
||||||
import akka.serialization.BaseSerializer
|
import akka.serialization.BaseSerializer
|
||||||
import akka.serialization.SerializerWithStringManifest
|
import akka.serialization.SerializerWithStringManifest
|
||||||
|
|
|
||||||
|
|
@ -236,7 +236,7 @@ object DistributedPubSubMediator {
|
||||||
* Java API
|
* Java API
|
||||||
*/
|
*/
|
||||||
def getTopics(): java.util.Set[String] = {
|
def getTopics(): java.util.Set[String] = {
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
topics.asJava
|
topics.asJava
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -590,14 +590,12 @@ class DistributedPubSubMediator(settings: DistributedPubSubSettings)
|
||||||
case Send(path, msg, localAffinity) =>
|
case Send(path, msg, localAffinity) =>
|
||||||
val routees = registry(selfAddress).content.get(path) match {
|
val routees = registry(selfAddress).content.get(path) match {
|
||||||
case Some(valueHolder) if localAffinity =>
|
case Some(valueHolder) if localAffinity =>
|
||||||
(for {
|
valueHolder.routee.toList.toIndexedSeq
|
||||||
routee <- valueHolder.routee
|
|
||||||
} yield routee).toVector
|
|
||||||
case _ =>
|
case _ =>
|
||||||
(for {
|
(for {
|
||||||
(_, bucket) <- registry
|
(_, bucket) <- registry
|
||||||
valueHolder <- bucket.content.get(path).toSeq
|
valueHolder <- bucket.content.get(path).toList
|
||||||
routee <- valueHolder.routee.toSeq
|
routee <- valueHolder.routee.toList
|
||||||
} yield routee).toVector
|
} yield routee).toVector
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -780,8 +778,8 @@ class DistributedPubSubMediator(settings: DistributedPubSubSettings)
|
||||||
val refs = for {
|
val refs = for {
|
||||||
(address, bucket) <- registry
|
(address, bucket) <- registry
|
||||||
if !(allButSelf && address == selfAddress) // if we should skip sender() node and current address == self address => skip
|
if !(allButSelf && address == selfAddress) // if we should skip sender() node and current address == self address => skip
|
||||||
valueHolder <- bucket.content.get(path).toSeq
|
valueHolder <- bucket.content.get(path).toList
|
||||||
ref <- valueHolder.ref.toSeq
|
ref <- valueHolder.ref.toList
|
||||||
} yield ref
|
} yield ref
|
||||||
if (refs.isEmpty) ignoreOrSendToDeadLetters(msg)
|
if (refs.isEmpty) ignoreOrSendToDeadLetters(msg)
|
||||||
else refs.foreach(_.forward(msg))
|
else refs.foreach(_.forward(msg))
|
||||||
|
|
|
||||||
|
|
@ -12,7 +12,7 @@ import java.util.zip.GZIPOutputStream
|
||||||
import java.util.zip.GZIPInputStream
|
import java.util.zip.GZIPInputStream
|
||||||
import scala.annotation.tailrec
|
import scala.annotation.tailrec
|
||||||
import akka.cluster.pubsub.protobuf.msg.{ DistributedPubSubMessages => dm }
|
import akka.cluster.pubsub.protobuf.msg.{ DistributedPubSubMessages => dm }
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
import akka.cluster.pubsub.DistributedPubSubMediator._
|
import akka.cluster.pubsub.DistributedPubSubMediator._
|
||||||
import akka.cluster.pubsub.DistributedPubSubMediator.Internal._
|
import akka.cluster.pubsub.DistributedPubSubMediator.Internal._
|
||||||
import akka.actor.ActorRef
|
import akka.actor.ActorRef
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,7 @@ import akka.testkit.TestProbe
|
||||||
import com.typesafe.config.ConfigFactory
|
import com.typesafe.config.ConfigFactory
|
||||||
|
|
||||||
import scala.concurrent.{ Future, Promise }
|
import scala.concurrent.{ Future, Promise }
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
|
|
||||||
object TestLeaseExt extends ExtensionId[TestLeaseExt] with ExtensionIdProvider {
|
object TestLeaseExt extends ExtensionId[TestLeaseExt] with ExtensionIdProvider {
|
||||||
override def get(system: ActorSystem): TestLeaseExt = super.get(system)
|
override def get(system: ActorSystem): TestLeaseExt = super.get(system)
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,8 @@ import scala.util.control.NonFatal
|
||||||
|
|
||||||
import akka.event.Logging.LogLevel
|
import akka.event.Logging.LogLevel
|
||||||
|
|
||||||
|
import com.github.ghik.silencer.silent
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cluster Extension Id and factory for creating Cluster extension.
|
* Cluster Extension Id and factory for creating Cluster extension.
|
||||||
*/
|
*/
|
||||||
|
|
@ -94,6 +96,7 @@ class Cluster(val system: ExtendedActorSystem) extends Extension {
|
||||||
/**
|
/**
|
||||||
* Java API: roles that this member has
|
* Java API: roles that this member has
|
||||||
*/
|
*/
|
||||||
|
@silent
|
||||||
def getSelfRoles: java.util.Set[String] =
|
def getSelfRoles: java.util.Set[String] =
|
||||||
scala.collection.JavaConverters.setAsJavaSetConverter(selfRoles).asJava
|
scala.collection.JavaConverters.setAsJavaSetConverter(selfRoles).asJava
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -19,6 +19,8 @@ import akka.util.ccompat._
|
||||||
|
|
||||||
import scala.runtime.AbstractFunction5
|
import scala.runtime.AbstractFunction5
|
||||||
|
|
||||||
|
import com.github.ghik.silencer.silent
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Domain events published to the event bus.
|
* Domain events published to the event bus.
|
||||||
* Subscribe with:
|
* Subscribe with:
|
||||||
|
|
@ -120,25 +122,28 @@ object ClusterEvent {
|
||||||
* Java API: get current member list.
|
* Java API: get current member list.
|
||||||
*/
|
*/
|
||||||
def getMembers: java.lang.Iterable[Member] = {
|
def getMembers: java.lang.Iterable[Member] = {
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
members.asJava
|
members.asJava
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Java API: get current unreachable set.
|
* Java API: get current unreachable set.
|
||||||
*/
|
*/
|
||||||
|
@silent
|
||||||
def getUnreachable: java.util.Set[Member] =
|
def getUnreachable: java.util.Set[Member] =
|
||||||
scala.collection.JavaConverters.setAsJavaSetConverter(unreachable).asJava
|
scala.collection.JavaConverters.setAsJavaSetConverter(unreachable).asJava
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Java API: All data centers in the cluster
|
* Java API: All data centers in the cluster
|
||||||
*/
|
*/
|
||||||
|
@silent
|
||||||
def getUnreachableDataCenters: java.util.Set[String] =
|
def getUnreachableDataCenters: java.util.Set[String] =
|
||||||
scala.collection.JavaConverters.setAsJavaSetConverter(unreachableDataCenters).asJava
|
scala.collection.JavaConverters.setAsJavaSetConverter(unreachableDataCenters).asJava
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Java API: get current “seen-by” set.
|
* Java API: get current “seen-by” set.
|
||||||
*/
|
*/
|
||||||
|
@silent
|
||||||
def getSeenBy: java.util.Set[Address] =
|
def getSeenBy: java.util.Set[Address] =
|
||||||
scala.collection.JavaConverters.setAsJavaSetConverter(seenBy).asJava
|
scala.collection.JavaConverters.setAsJavaSetConverter(seenBy).asJava
|
||||||
|
|
||||||
|
|
@ -166,6 +171,7 @@ object ClusterEvent {
|
||||||
/**
|
/**
|
||||||
* Java API: All node roles in the cluster
|
* Java API: All node roles in the cluster
|
||||||
*/
|
*/
|
||||||
|
@silent
|
||||||
def getAllRoles: java.util.Set[String] =
|
def getAllRoles: java.util.Set[String] =
|
||||||
scala.collection.JavaConverters.setAsJavaSetConverter(allRoles).asJava
|
scala.collection.JavaConverters.setAsJavaSetConverter(allRoles).asJava
|
||||||
|
|
||||||
|
|
@ -177,6 +183,7 @@ object ClusterEvent {
|
||||||
/**
|
/**
|
||||||
* Java API: All data centers in the cluster
|
* Java API: All data centers in the cluster
|
||||||
*/
|
*/
|
||||||
|
@silent
|
||||||
def getAllDataCenters: java.util.Set[String] =
|
def getAllDataCenters: java.util.Set[String] =
|
||||||
scala.collection.JavaConverters.setAsJavaSetConverter(allDataCenters).asJava
|
scala.collection.JavaConverters.setAsJavaSetConverter(allDataCenters).asJava
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -166,7 +166,7 @@ final class ClusterSettings(val config: Config, val systemName: String) {
|
||||||
cc.getInt("min-nr-of-members")
|
cc.getInt("min-nr-of-members")
|
||||||
}.requiring(_ > 0, "min-nr-of-members must be > 0")
|
}.requiring(_ > 0, "min-nr-of-members must be > 0")
|
||||||
val MinNrOfMembersOfRole: Map[String, Int] = {
|
val MinNrOfMembersOfRole: Map[String, Int] = {
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
cc.getConfig("role")
|
cc.getConfig("role")
|
||||||
.root
|
.root
|
||||||
.asScala
|
.asScala
|
||||||
|
|
@ -186,7 +186,7 @@ final class ClusterSettings(val config: Config, val systemName: String) {
|
||||||
|
|
||||||
val ByPassConfigCompatCheck: Boolean = !cc.getBoolean("configuration-compatibility-check.enforce-on-join")
|
val ByPassConfigCompatCheck: Boolean = !cc.getBoolean("configuration-compatibility-check.enforce-on-join")
|
||||||
val ConfigCompatCheckers: Set[String] = {
|
val ConfigCompatCheckers: Set[String] = {
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
cc.getConfig("configuration-compatibility-check.checkers")
|
cc.getConfig("configuration-compatibility-check.checkers")
|
||||||
.root
|
.root
|
||||||
.unwrapped
|
.unwrapped
|
||||||
|
|
@ -200,7 +200,7 @@ final class ClusterSettings(val config: Config, val systemName: String) {
|
||||||
}
|
}
|
||||||
|
|
||||||
val SensitiveConfigPaths = {
|
val SensitiveConfigPaths = {
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
|
|
||||||
val sensitiveKeys =
|
val sensitiveKeys =
|
||||||
cc.getConfig("configuration-compatibility-check.sensitive-config-paths")
|
cc.getConfig("configuration-compatibility-check.sensitive-config-paths")
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ import akka.annotation.{ DoNotInherit, InternalApi }
|
||||||
import akka.util.ccompat._
|
import akka.util.ccompat._
|
||||||
import com.typesafe.config.{ Config, ConfigFactory, ConfigValue }
|
import com.typesafe.config.{ Config, ConfigFactory, ConfigValue }
|
||||||
|
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
import scala.collection.{ immutable => im }
|
import scala.collection.{ immutable => im }
|
||||||
|
|
||||||
abstract class JoinConfigCompatChecker {
|
abstract class JoinConfigCompatChecker {
|
||||||
|
|
|
||||||
|
|
@ -49,6 +49,7 @@ class Member private[cluster] (
|
||||||
/**
|
/**
|
||||||
* Java API
|
* Java API
|
||||||
*/
|
*/
|
||||||
|
@silent
|
||||||
def getRoles: java.util.Set[String] =
|
def getRoles: java.util.Set[String] =
|
||||||
scala.collection.JavaConverters.setAsJavaSetConverter(roles).asJava
|
scala.collection.JavaConverters.setAsJavaSetConverter(roles).asJava
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -15,14 +15,13 @@ import akka.protobuf.{ ByteString, MessageLite }
|
||||||
|
|
||||||
import scala.annotation.tailrec
|
import scala.annotation.tailrec
|
||||||
import scala.collection.immutable
|
import scala.collection.immutable
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
import scala.concurrent.duration.Deadline
|
import scala.concurrent.duration.Deadline
|
||||||
import akka.annotation.InternalApi
|
import akka.annotation.InternalApi
|
||||||
import akka.cluster.InternalClusterAction._
|
import akka.cluster.InternalClusterAction._
|
||||||
import akka.cluster.routing.{ ClusterRouterPool, ClusterRouterPoolSettings }
|
import akka.cluster.routing.{ ClusterRouterPool, ClusterRouterPoolSettings }
|
||||||
import akka.routing.Pool
|
import akka.routing.Pool
|
||||||
import akka.util.ccompat._
|
import akka.util.ccompat._
|
||||||
import akka.util.ccompat._
|
|
||||||
import com.github.ghik.silencer.silent
|
import com.github.ghik.silencer.silent
|
||||||
import com.typesafe.config.{ Config, ConfigFactory, ConfigRenderOptions }
|
import com.typesafe.config.{ Config, ConfigFactory, ConfigRenderOptions }
|
||||||
|
|
||||||
|
|
@ -184,6 +183,7 @@ final class ClusterMessageSerializer(val system: ExtendedActorSystem)
|
||||||
builder.build()
|
builder.build()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@silent
|
||||||
private def clusterRouterPoolSettingsToProto(settings: ClusterRouterPoolSettings): cm.ClusterRouterPoolSettings = {
|
private def clusterRouterPoolSettingsToProto(settings: ClusterRouterPoolSettings): cm.ClusterRouterPoolSettings = {
|
||||||
val builder = cm.ClusterRouterPoolSettings.newBuilder()
|
val builder = cm.ClusterRouterPoolSettings.newBuilder()
|
||||||
builder
|
builder
|
||||||
|
|
@ -193,8 +193,7 @@ final class ClusterMessageSerializer(val system: ExtendedActorSystem)
|
||||||
.addAllUseRoles(settings.useRoles.asJava)
|
.addAllUseRoles(settings.useRoles.asJava)
|
||||||
|
|
||||||
// for backwards compatibility
|
// for backwards compatibility
|
||||||
@silent
|
settings.useRole.foreach(builder.setUseRole)
|
||||||
val _ = settings.useRole.foreach(builder.setUseRole)
|
|
||||||
|
|
||||||
builder.build()
|
builder.build()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ import com.typesafe.config.ConfigFactory
|
||||||
|
|
||||||
import scala.annotation.{ tailrec, varargs }
|
import scala.annotation.{ tailrec, varargs }
|
||||||
import scala.collection.immutable
|
import scala.collection.immutable
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
|
|
||||||
object ClusterRouterGroupSettings {
|
object ClusterRouterGroupSettings {
|
||||||
@deprecated("useRole has been replaced with useRoles", since = "2.5.4")
|
@deprecated("useRole has been replaced with useRoles", since = "2.5.4")
|
||||||
|
|
|
||||||
|
|
@ -770,7 +770,7 @@ abstract class StressSpec
|
||||||
.append(" MB")
|
.append(" MB")
|
||||||
sb.append("\n")
|
sb.append("\n")
|
||||||
|
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
val args = runtime.getInputArguments.asScala.filterNot(_.contains("classpath")).mkString("\n ")
|
val args = runtime.getInputArguments.asScala.filterNot(_.contains("classpath")).mkString("\n ")
|
||||||
sb.append("Args:\n ").append(args)
|
sb.append("Args:\n ").append(args)
|
||||||
sb.append("\n")
|
sb.append("\n")
|
||||||
|
|
|
||||||
|
|
@ -12,8 +12,10 @@ import akka.dispatch.Dispatchers
|
||||||
import akka.remote.PhiAccrualFailureDetector
|
import akka.remote.PhiAccrualFailureDetector
|
||||||
import akka.util.Helpers.ConfigOps
|
import akka.util.Helpers.ConfigOps
|
||||||
import akka.actor.Address
|
import akka.actor.Address
|
||||||
|
|
||||||
import com.github.ghik.silencer.silent
|
import com.github.ghik.silencer.silent
|
||||||
|
|
||||||
|
@silent
|
||||||
class ClusterConfigSpec extends AkkaSpec {
|
class ClusterConfigSpec extends AkkaSpec {
|
||||||
|
|
||||||
"Clustering" must {
|
"Clustering" must {
|
||||||
|
|
@ -41,8 +43,7 @@ class ClusterConfigSpec extends AkkaSpec {
|
||||||
UnreachableNodesReaperInterval should ===(1 second)
|
UnreachableNodesReaperInterval should ===(1 second)
|
||||||
PublishStatsInterval should ===(Duration.Undefined)
|
PublishStatsInterval should ===(Duration.Undefined)
|
||||||
AutoDownUnreachableAfter should ===(Duration.Undefined)
|
AutoDownUnreachableAfter should ===(Duration.Undefined)
|
||||||
@silent
|
DownRemovalMargin should ===(Duration.Zero)
|
||||||
val _ = DownRemovalMargin should ===(Duration.Zero)
|
|
||||||
MinNrOfMembers should ===(1)
|
MinNrOfMembers should ===(1)
|
||||||
MinNrOfMembersOfRole should ===(Map.empty[String, Int])
|
MinNrOfMembersOfRole should ===(Map.empty[String, Int])
|
||||||
SelfDataCenter should ===("default")
|
SelfDataCenter should ===("default")
|
||||||
|
|
|
||||||
|
|
@ -37,18 +37,20 @@ class JoinConfigCompatPreDefinedChecksSpec extends WordSpec with Matchers {
|
||||||
|
|
||||||
"fail when some required keys are NOT provided" in {
|
"fail when some required keys are NOT provided" in {
|
||||||
|
|
||||||
val Invalid(incompatibleKeys) =
|
JoinConfigCompatChecker.exists(
|
||||||
JoinConfigCompatChecker.exists(
|
requiredKeys,
|
||||||
requiredKeys,
|
config("""
|
||||||
config("""
|
|{
|
||||||
|{
|
| akka.cluster.min-nr-of-members = 1
|
||||||
| akka.cluster.min-nr-of-members = 1
|
|}
|
||||||
|}
|
""".stripMargin)) match {
|
||||||
""".stripMargin))
|
case Valid =>
|
||||||
|
fail()
|
||||||
incompatibleKeys should have size 2
|
case Invalid(incompatibleKeys) =>
|
||||||
incompatibleKeys should contain("akka.cluster.retry-unsuccessful-join-after is missing")
|
incompatibleKeys should have size 2
|
||||||
incompatibleKeys should contain("akka.cluster.allow-weakly-up-members is missing")
|
incompatibleKeys should contain("akka.cluster.retry-unsuccessful-join-after is missing")
|
||||||
|
incompatibleKeys should contain("akka.cluster.allow-weakly-up-members is missing")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -87,56 +89,62 @@ class JoinConfigCompatPreDefinedChecksSpec extends WordSpec with Matchers {
|
||||||
|
|
||||||
"fail when some required keys are NOT provided" in {
|
"fail when some required keys are NOT provided" in {
|
||||||
|
|
||||||
val Invalid(incompatibleKeys) =
|
JoinConfigCompatChecker.fullMatch(
|
||||||
JoinConfigCompatChecker.fullMatch(
|
requiredKeys,
|
||||||
requiredKeys,
|
config("""
|
||||||
config("""
|
|{
|
||||||
|{
|
| akka.cluster.min-nr-of-members = 1
|
||||||
| akka.cluster.min-nr-of-members = 1
|
|}
|
||||||
|}
|
""".stripMargin),
|
||||||
""".stripMargin),
|
clusterConfig) match {
|
||||||
clusterConfig)
|
case Valid =>
|
||||||
|
fail()
|
||||||
incompatibleKeys should have size 2
|
case Invalid(incompatibleKeys) =>
|
||||||
incompatibleKeys should contain("akka.cluster.retry-unsuccessful-join-after is missing")
|
incompatibleKeys should have size 2
|
||||||
incompatibleKeys should contain("akka.cluster.allow-weakly-up-members is missing")
|
incompatibleKeys should contain("akka.cluster.retry-unsuccessful-join-after is missing")
|
||||||
|
incompatibleKeys should contain("akka.cluster.allow-weakly-up-members is missing")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
"fail when all required keys are passed, but some values don't match cluster config" in {
|
"fail when all required keys are passed, but some values don't match cluster config" in {
|
||||||
|
|
||||||
val Invalid(incompatibleKeys) =
|
JoinConfigCompatChecker.fullMatch(
|
||||||
JoinConfigCompatChecker.fullMatch(
|
requiredKeys,
|
||||||
requiredKeys,
|
config("""
|
||||||
config("""
|
|{
|
||||||
|{
|
| akka.cluster.min-nr-of-members = 1
|
||||||
| akka.cluster.min-nr-of-members = 1
|
| akka.cluster.retry-unsuccessful-join-after = 15s
|
||||||
| akka.cluster.retry-unsuccessful-join-after = 15s
|
| akka.cluster.allow-weakly-up-members = off
|
||||||
| akka.cluster.allow-weakly-up-members = off
|
|}
|
||||||
|}
|
""".stripMargin),
|
||||||
""".stripMargin),
|
clusterConfig) match {
|
||||||
clusterConfig)
|
case Valid =>
|
||||||
|
fail()
|
||||||
incompatibleKeys should have size 2
|
case Invalid(incompatibleKeys) =>
|
||||||
incompatibleKeys should contain("akka.cluster.retry-unsuccessful-join-after is incompatible")
|
incompatibleKeys should have size 2
|
||||||
incompatibleKeys should contain("akka.cluster.allow-weakly-up-members is incompatible")
|
incompatibleKeys should contain("akka.cluster.retry-unsuccessful-join-after is incompatible")
|
||||||
|
incompatibleKeys should contain("akka.cluster.allow-weakly-up-members is incompatible")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
"fail when all required keys are passed, but some are missing and others don't match cluster config" in {
|
"fail when all required keys are passed, but some are missing and others don't match cluster config" in {
|
||||||
|
|
||||||
val Invalid(incompatibleKeys) =
|
JoinConfigCompatChecker.fullMatch(
|
||||||
JoinConfigCompatChecker.fullMatch(
|
requiredKeys,
|
||||||
requiredKeys,
|
config("""
|
||||||
config("""
|
|{
|
||||||
|{
|
| akka.cluster.min-nr-of-members = 1
|
||||||
| akka.cluster.min-nr-of-members = 1
|
| akka.cluster.allow-weakly-up-members = off
|
||||||
| akka.cluster.allow-weakly-up-members = off
|
|}
|
||||||
|}
|
""".stripMargin),
|
||||||
""".stripMargin),
|
clusterConfig) match {
|
||||||
clusterConfig)
|
case Valid =>
|
||||||
|
fail()
|
||||||
incompatibleKeys should have size 2
|
case Invalid(incompatibleKeys) =>
|
||||||
incompatibleKeys should contain("akka.cluster.retry-unsuccessful-join-after is missing")
|
incompatibleKeys should have size 2
|
||||||
incompatibleKeys should contain("akka.cluster.allow-weakly-up-members is incompatible")
|
incompatibleKeys should contain("akka.cluster.retry-unsuccessful-join-after is missing")
|
||||||
|
incompatibleKeys should contain("akka.cluster.allow-weakly-up-members is incompatible")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14,7 +14,7 @@ import collection.immutable.SortedSet
|
||||||
import akka.testkit.{ AkkaSpec, TestKit }
|
import akka.testkit.{ AkkaSpec, TestKit }
|
||||||
import com.github.ghik.silencer.silent
|
import com.github.ghik.silencer.silent
|
||||||
import com.typesafe.config.ConfigFactory
|
import com.typesafe.config.ConfigFactory
|
||||||
|
@silent
|
||||||
class ClusterMessageSerializerSpec extends AkkaSpec("akka.actor.provider = cluster") {
|
class ClusterMessageSerializerSpec extends AkkaSpec("akka.actor.provider = cluster") {
|
||||||
|
|
||||||
val serializer = new ClusterMessageSerializer(system.asInstanceOf[ExtendedActorSystem])
|
val serializer = new ClusterMessageSerializer(system.asInstanceOf[ExtendedActorSystem])
|
||||||
|
|
@ -148,8 +148,7 @@ class ClusterMessageSerializerSpec extends AkkaSpec("akka.actor.provider = clust
|
||||||
pool.settings.totalInstances should ===(123)
|
pool.settings.totalInstances should ===(123)
|
||||||
pool.settings.maxInstancesPerNode should ===(345)
|
pool.settings.maxInstancesPerNode should ===(345)
|
||||||
pool.settings.allowLocalRoutees should ===(true)
|
pool.settings.allowLocalRoutees should ===(true)
|
||||||
@silent
|
pool.settings.useRole should ===(Some("role ABC"))
|
||||||
val _ = pool.settings.useRole should ===(Some("role ABC"))
|
|
||||||
pool.settings.useRoles should ===(Set("role ABC"))
|
pool.settings.useRoles should ===(Set("role ABC"))
|
||||||
}
|
}
|
||||||
} finally {
|
} finally {
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ object ServiceDiscovery {
|
||||||
* Java API
|
* Java API
|
||||||
*/
|
*/
|
||||||
def getAddresses: java.util.List[ResolvedTarget] = {
|
def getAddresses: java.util.List[ResolvedTarget] = {
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
addresses.asJava
|
addresses.asJava
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -58,6 +58,8 @@ object ServiceDiscovery {
|
||||||
object ResolvedTarget {
|
object ResolvedTarget {
|
||||||
// Simply compare the bytes of the address.
|
// Simply compare the bytes of the address.
|
||||||
// This may not work in exotic cases such as IPv4 addresses encoded as IPv6 addresses.
|
// This may not work in exotic cases such as IPv4 addresses encoded as IPv6 addresses.
|
||||||
|
import com.github.ghik.silencer.silent
|
||||||
|
@silent
|
||||||
private implicit val inetAddressOrdering: Ordering[InetAddress] =
|
private implicit val inetAddressOrdering: Ordering[InetAddress] =
|
||||||
Ordering.by[InetAddress, Iterable[Byte]](_.getAddress)
|
Ordering.by[InetAddress, Iterable[Byte]](_.getAddress)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ import akka.event.Logging
|
||||||
import akka.util.Helpers.Requiring
|
import akka.util.Helpers.Requiring
|
||||||
import com.typesafe.config.Config
|
import com.typesafe.config.Config
|
||||||
|
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
import scala.concurrent.Future
|
import scala.concurrent.Future
|
||||||
import scala.concurrent.duration.FiniteDuration
|
import scala.concurrent.duration.FiniteDuration
|
||||||
import scala.util.control.NonFatal
|
import scala.util.control.NonFatal
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ import akka.discovery.ServiceDiscovery.{ Resolved, ResolvedTarget }
|
||||||
import akka.event.Logging
|
import akka.event.Logging
|
||||||
import com.typesafe.config.Config
|
import com.typesafe.config.Config
|
||||||
|
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
import scala.concurrent.Future
|
import scala.concurrent.Future
|
||||||
import scala.concurrent.duration.FiniteDuration
|
import scala.concurrent.duration.FiniteDuration
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,7 +8,7 @@ import java.io.File
|
||||||
import java.nio.ByteBuffer
|
import java.nio.ByteBuffer
|
||||||
import java.util.concurrent.TimeUnit
|
import java.util.concurrent.TimeUnit
|
||||||
|
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
import scala.concurrent.duration._
|
import scala.concurrent.duration._
|
||||||
import scala.util.Try
|
import scala.util.Try
|
||||||
import scala.util.control.NonFatal
|
import scala.util.control.NonFatal
|
||||||
|
|
@ -301,7 +301,7 @@ final class LmdbDurableStore(config: Config) extends Actor with ActorLogging {
|
||||||
TimeUnit.NANOSECONDS.toMillis(System.nanoTime - t0))
|
TimeUnit.NANOSECONDS.toMillis(System.nanoTime - t0))
|
||||||
} catch {
|
} catch {
|
||||||
case NonFatal(e) =>
|
case NonFatal(e) =>
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
log.error(e, "failed to store [{}]", pending.keySet.asScala.mkString(","))
|
log.error(e, "failed to store [{}]", pending.keySet.asScala.mkString(","))
|
||||||
tx.abort()
|
tx.abort()
|
||||||
} finally {
|
} finally {
|
||||||
|
|
|
||||||
|
|
@ -43,7 +43,7 @@ final case class GSet[A] private (elements: Set[A])(override val delta: Option[G
|
||||||
* Java API
|
* Java API
|
||||||
*/
|
*/
|
||||||
def getElements(): java.util.Set[A] = {
|
def getElements(): java.util.Set[A] = {
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
elements.asJava
|
elements.asJava
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -75,7 +75,7 @@ final class LWWMap[A, B] private[akka] (private[akka] val underlying: ORMap[A, L
|
||||||
* Java API: All entries of the map.
|
* Java API: All entries of the map.
|
||||||
*/
|
*/
|
||||||
def getEntries(): java.util.Map[A, B] = {
|
def getEntries(): java.util.Map[A, B] = {
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
entries.asJava
|
entries.asJava
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -196,7 +196,7 @@ final class ORMap[A, B <: ReplicatedData] private[akka] (
|
||||||
* Java API: All entries of the map.
|
* Java API: All entries of the map.
|
||||||
*/
|
*/
|
||||||
def getEntries(): java.util.Map[A, B] = {
|
def getEntries(): java.util.Map[A, B] = {
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
entries.asJava
|
entries.asJava
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -102,7 +102,7 @@ final class ORMultiMap[A, B] private[akka] (
|
||||||
* Java API: All entries of a multimap where keys are strings and values are sets.
|
* Java API: All entries of a multimap where keys are strings and values are sets.
|
||||||
*/
|
*/
|
||||||
def getEntries(): java.util.Map[A, java.util.Set[B]] = {
|
def getEntries(): java.util.Map[A, java.util.Set[B]] = {
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
val result = new java.util.HashMap[A, java.util.Set[B]]
|
val result = new java.util.HashMap[A, java.util.Set[B]]
|
||||||
if (withValueDeltas)
|
if (withValueDeltas)
|
||||||
underlying.entries.foreach {
|
underlying.entries.foreach {
|
||||||
|
|
@ -165,14 +165,14 @@ final class ORMultiMap[A, B] private[akka] (
|
||||||
* replicated data set.
|
* replicated data set.
|
||||||
*/
|
*/
|
||||||
def put(node: SelfUniqueAddress, key: A, value: java.util.Set[B]): ORMultiMap[A, B] = {
|
def put(node: SelfUniqueAddress, key: A, value: java.util.Set[B]): ORMultiMap[A, B] = {
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
put(node.uniqueAddress, key, value.asScala.toSet)
|
put(node.uniqueAddress, key, value.asScala.toSet)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Deprecated
|
@Deprecated
|
||||||
@deprecated("Use `put` that takes a `SelfUniqueAddress` parameter instead.", since = "2.5.20")
|
@deprecated("Use `put` that takes a `SelfUniqueAddress` parameter instead.", since = "2.5.20")
|
||||||
def put(node: Cluster, key: A, value: java.util.Set[B]): ORMultiMap[A, B] = {
|
def put(node: Cluster, key: A, value: java.util.Set[B]): ORMultiMap[A, B] = {
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
put(node.selfUniqueAddress, key, value.asScala.toSet)
|
put(node.selfUniqueAddress, key, value.asScala.toSet)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -309,7 +309,7 @@ final class ORSet[A] private[akka] (
|
||||||
* Java API
|
* Java API
|
||||||
*/
|
*/
|
||||||
def getElements(): java.util.Set[A] = {
|
def getElements(): java.util.Set[A] = {
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
elements.asJava
|
elements.asJava
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -54,7 +54,7 @@ final class PNCounterMap[A] private[akka] (private[akka] val underlying: ORMap[A
|
||||||
|
|
||||||
/** Java API */
|
/** Java API */
|
||||||
def getEntries: java.util.Map[A, BigInteger] = {
|
def getEntries: java.util.Map[A, BigInteger] = {
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
underlying.entries.map { case (k, c) => k -> c.value.bigInteger }.asJava
|
underlying.entries.map { case (k, c) => k -> c.value.bigInteger }.asJava
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -65,6 +65,8 @@ import akka.event.Logging
|
||||||
import akka.util.JavaDurationConverters._
|
import akka.util.JavaDurationConverters._
|
||||||
import akka.util.ccompat._
|
import akka.util.ccompat._
|
||||||
|
|
||||||
|
import com.github.ghik.silencer.silent
|
||||||
|
|
||||||
@ccompatUsedUntil213
|
@ccompatUsedUntil213
|
||||||
object ReplicatorSettings {
|
object ReplicatorSettings {
|
||||||
|
|
||||||
|
|
@ -87,7 +89,7 @@ object ReplicatorSettings {
|
||||||
case _ => config.getDuration("pruning-interval", MILLISECONDS).millis
|
case _ => config.getDuration("pruning-interval", MILLISECONDS).millis
|
||||||
}
|
}
|
||||||
|
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
new ReplicatorSettings(
|
new ReplicatorSettings(
|
||||||
role = roleOption(config.getString("role")),
|
role = roleOption(config.getString("role")),
|
||||||
gossipInterval = config.getDuration("gossip-interval", MILLISECONDS).millis,
|
gossipInterval = config.getDuration("gossip-interval", MILLISECONDS).millis,
|
||||||
|
|
@ -177,7 +179,7 @@ final class ReplicatorSettings(
|
||||||
deltaCrdtEnabled: Boolean,
|
deltaCrdtEnabled: Boolean,
|
||||||
maxDeltaSize: Int) =
|
maxDeltaSize: Int) =
|
||||||
this(
|
this(
|
||||||
role.toSet,
|
role.iterator.toSet,
|
||||||
gossipInterval,
|
gossipInterval,
|
||||||
notifySubscribersInterval,
|
notifySubscribersInterval,
|
||||||
maxDeltaElements,
|
maxDeltaElements,
|
||||||
|
|
@ -201,7 +203,7 @@ final class ReplicatorSettings(
|
||||||
pruningInterval: FiniteDuration,
|
pruningInterval: FiniteDuration,
|
||||||
maxPruningDissemination: FiniteDuration) =
|
maxPruningDissemination: FiniteDuration) =
|
||||||
this(
|
this(
|
||||||
roles = role.toSet,
|
roles = role.iterator.toSet,
|
||||||
gossipInterval,
|
gossipInterval,
|
||||||
notifySubscribersInterval,
|
notifySubscribersInterval,
|
||||||
maxDeltaElements,
|
maxDeltaElements,
|
||||||
|
|
@ -270,9 +272,9 @@ final class ReplicatorSettings(
|
||||||
deltaCrdtEnabled,
|
deltaCrdtEnabled,
|
||||||
200)
|
200)
|
||||||
|
|
||||||
def withRole(role: String): ReplicatorSettings = copy(roles = ReplicatorSettings.roleOption(role).toSet)
|
def withRole(role: String): ReplicatorSettings = copy(roles = ReplicatorSettings.roleOption(role).iterator.toSet)
|
||||||
|
|
||||||
def withRole(role: Option[String]): ReplicatorSettings = copy(roles = role.toSet)
|
def withRole(role: Option[String]): ReplicatorSettings = copy(roles = role.iterator.toSet)
|
||||||
|
|
||||||
@varargs
|
@varargs
|
||||||
def withRoles(roles: String*): ReplicatorSettings = copy(roles = roles.toSet)
|
def withRoles(roles: String*): ReplicatorSettings = copy(roles = roles.toSet)
|
||||||
|
|
@ -325,7 +327,7 @@ final class ReplicatorSettings(
|
||||||
* Java API
|
* Java API
|
||||||
*/
|
*/
|
||||||
def withDurableKeys(durableKeys: java.util.Set[String]): ReplicatorSettings = {
|
def withDurableKeys(durableKeys: java.util.Set[String]): ReplicatorSettings = {
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
withDurableKeys(durableKeys.asScala.toSet)
|
withDurableKeys(durableKeys.asScala.toSet)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -464,7 +466,7 @@ object Replicator {
|
||||||
* Java API
|
* Java API
|
||||||
*/
|
*/
|
||||||
def getKeyIds: java.util.Set[String] = {
|
def getKeyIds: java.util.Set[String] = {
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
keyIds.asJava
|
keyIds.asJava
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1329,7 +1331,9 @@ final class Replicator(settings: ReplicatorSettings) extends Actor with ActorLog
|
||||||
// possibility to disable Gossip for testing purpose
|
// possibility to disable Gossip for testing purpose
|
||||||
var fullStateGossipEnabled = true
|
var fullStateGossipEnabled = true
|
||||||
|
|
||||||
|
@silent
|
||||||
val subscribers = new mutable.HashMap[KeyId, mutable.Set[ActorRef]] with mutable.MultiMap[KeyId, ActorRef]
|
val subscribers = new mutable.HashMap[KeyId, mutable.Set[ActorRef]] with mutable.MultiMap[KeyId, ActorRef]
|
||||||
|
@silent
|
||||||
val newSubscribers = new mutable.HashMap[KeyId, mutable.Set[ActorRef]] with mutable.MultiMap[KeyId, ActorRef]
|
val newSubscribers = new mutable.HashMap[KeyId, mutable.Set[ActorRef]] with mutable.MultiMap[KeyId, ActorRef]
|
||||||
var subscriptionKeys = Map.empty[KeyId, KeyR]
|
var subscriptionKeys = Map.empty[KeyId, KeyR]
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ import java.util.Comparator
|
||||||
import java.util.TreeSet
|
import java.util.TreeSet
|
||||||
|
|
||||||
import scala.annotation.tailrec
|
import scala.annotation.tailrec
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
import scala.collection.immutable
|
import scala.collection.immutable
|
||||||
|
|
||||||
import akka.actor.ExtendedActorSystem
|
import akka.actor.ExtendedActorSystem
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,7 @@ package akka.cluster.ddata.protobuf
|
||||||
|
|
||||||
import scala.concurrent.duration._
|
import scala.concurrent.duration._
|
||||||
import java.util.concurrent.TimeUnit
|
import java.util.concurrent.TimeUnit
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
import scala.collection.immutable
|
import scala.collection.immutable
|
||||||
import scala.concurrent.duration.Duration
|
import scala.concurrent.duration.Duration
|
||||||
import akka.actor.ExtendedActorSystem
|
import akka.actor.ExtendedActorSystem
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ import java.util.zip.GZIPInputStream
|
||||||
import java.util.zip.GZIPOutputStream
|
import java.util.zip.GZIPOutputStream
|
||||||
import scala.annotation.tailrec
|
import scala.annotation.tailrec
|
||||||
import scala.collection.immutable.TreeMap
|
import scala.collection.immutable.TreeMap
|
||||||
import scala.collection.JavaConverters._
|
import akka.util.ccompat.JavaConverters._
|
||||||
import akka.actor.ActorRef
|
import akka.actor.ActorRef
|
||||||
import akka.actor.Address
|
import akka.actor.Address
|
||||||
import akka.actor.ExtendedActorSystem
|
import akka.actor.ExtendedActorSystem
|
||||||
|
|
|
||||||
|
|
@ -138,7 +138,7 @@ class ORMultiMapSpec extends WordSpec with Matchers {
|
||||||
|
|
||||||
"be able to get all bindings for an entry and then reduce them upon putting them back" in {
|
"be able to get all bindings for an entry and then reduce them upon putting them back" in {
|
||||||
val m = ORMultiMap().addBinding(node1, "a", "A1").addBinding(node1, "a", "A2").addBinding(node1, "b", "B1")
|
val m = ORMultiMap().addBinding(node1, "a", "A1").addBinding(node1, "a", "A2").addBinding(node1, "b", "B1")
|
||||||
val Some(a) = m.get("a")
|
val a = m.get("a").get
|
||||||
|
|
||||||
a should be(Set("A1", "A2"))
|
a should be(Set("A1", "A2"))
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -169,6 +169,7 @@ public class LambdaPersistencePluginDocTest {
|
||||||
|
|
||||||
static Object o4 =
|
static Object o4 =
|
||||||
new Object() {
|
new Object() {
|
||||||
|
// https://github.com/akka/akka/issues/26826
|
||||||
// #journal-tck-before-after-java
|
// #journal-tck-before-after-java
|
||||||
@RunWith(JUnitRunner.class)
|
@RunWith(JUnitRunner.class)
|
||||||
class MyJournalSpecTest extends JavaJournalSpec {
|
class MyJournalSpecTest extends JavaJournalSpec {
|
||||||
|
|
|
||||||
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue