* and enable gc logging via -Dakka.ci-server=true in .jvmopts-ci * and some cleanup * exclude ClusterReceptionistSpec and JoinConfigCompatCheckerRollingUpdateSpec with new tag
This commit is contained in:
parent
ad5864c6d8
commit
5e3e61458a
8 changed files with 94 additions and 35 deletions
|
|
@ -56,7 +56,6 @@ jobs:
|
||||||
run: |-
|
run: |-
|
||||||
sbt -jvm-opts .jvmopts-ci \
|
sbt -jvm-opts .jvmopts-ci \
|
||||||
-Dakka.mima.enabled=false \
|
-Dakka.mima.enabled=false \
|
||||||
-Dakka.ci-server=true \
|
|
||||||
-Dakka.test.multi-in-test=false \
|
-Dakka.test.multi-in-test=false \
|
||||||
-Dakka.test.timefactor=2 \
|
-Dakka.test.timefactor=2 \
|
||||||
-Dakka.actor.testkit.typed.timefactor=2 \
|
-Dakka.actor.testkit.typed.timefactor=2 \
|
||||||
|
|
|
||||||
75
.github/workflows/nightly-builds.yml
vendored
75
.github/workflows/nightly-builds.yml
vendored
|
|
@ -94,6 +94,7 @@ jobs:
|
||||||
uses: coursier/cache-action@v6.2
|
uses: coursier/cache-action@v6.2
|
||||||
|
|
||||||
- name: sbt ${{ matrix.command }}
|
- name: sbt ${{ matrix.command }}
|
||||||
|
# note that this is not running any multi-jvm tests because multi-in-test=false
|
||||||
run: |-
|
run: |-
|
||||||
sbt -jvm-opts .jvmopts-ci \
|
sbt -jvm-opts .jvmopts-ci \
|
||||||
-Djava.security.egd=file:/dev/./urandom \
|
-Djava.security.egd=file:/dev/./urandom \
|
||||||
|
|
@ -101,13 +102,8 @@ jobs:
|
||||||
-Dakka.test.timefactor=2 \
|
-Dakka.test.timefactor=2 \
|
||||||
-Dakka.actor.testkit.typed.timefactor=2 \
|
-Dakka.actor.testkit.typed.timefactor=2 \
|
||||||
-Dakka.test.tags.exclude=gh-exclude,timing \
|
-Dakka.test.tags.exclude=gh-exclude,timing \
|
||||||
|
-Dakka.test.multi-in-test=false \
|
||||||
-Dakka.cluster.assert=on \
|
-Dakka.cluster.assert=on \
|
||||||
-Dakka.test.names.exclude=akka.cluster.Stress \
|
|
||||||
-Dmultinode.XX:MetaspaceSize=128M \
|
|
||||||
-Dmultinode.Xms256M \
|
|
||||||
-Dmultinode.Xmx256M \
|
|
||||||
-Dmultinode.Xlog:gc \
|
|
||||||
-Dmultinode.XX:+AlwaysActAsServerClassMachine \
|
|
||||||
clean ${{ matrix.command }}
|
clean ${{ matrix.command }}
|
||||||
|
|
||||||
- name: Email on failure
|
- name: Email on failure
|
||||||
|
|
@ -139,11 +135,11 @@ jobs:
|
||||||
jdkVersion: ["adopt@1.8.0", "adopt@1.11", "openjdk@1.17.0"]
|
jdkVersion: ["adopt@1.8.0", "adopt@1.11", "openjdk@1.17.0"]
|
||||||
include:
|
include:
|
||||||
- jdkVersion: adopt@1.8.0
|
- jdkVersion: adopt@1.8.0
|
||||||
extraOpts: "-Dmultinode.XX:+PrintGCDetails -Dmultinode.XX:+PrintGCTimeStamps"
|
extraOpts: ""
|
||||||
- jdkVersion: adopt@1.11
|
- jdkVersion: adopt@1.11
|
||||||
extraOpts: "-Dmultinode.Xlog:gc"
|
extraOpts: ""
|
||||||
- jdkVersion: openjdk@1.17.0
|
- jdkVersion: openjdk@1.17.0
|
||||||
extraopts: "-Dmultinode.Xlog:gc"
|
extraopts: ""
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
|
@ -159,7 +155,7 @@ jobs:
|
||||||
uses: coursier/cache-action@v6.2
|
uses: coursier/cache-action@v6.2
|
||||||
|
|
||||||
- name: Compile and Test
|
- name: Compile and Test
|
||||||
# note that this is not running any multi-jvm tests (yet) because multi-in-test=false
|
# note that this is not running any multi-jvm tests because multi-in-test=false
|
||||||
run: |-
|
run: |-
|
||||||
sbt -jvm-opts .jvmopts-ci \
|
sbt -jvm-opts .jvmopts-ci \
|
||||||
-Dakka.cluster.assert=on \
|
-Dakka.cluster.assert=on \
|
||||||
|
|
@ -168,10 +164,6 @@ jobs:
|
||||||
-Dakka.actor.testkit.typed.timefactor=2 \
|
-Dakka.actor.testkit.typed.timefactor=2 \
|
||||||
-Dakka.test.tags.exclude=gh-exclude,timing \
|
-Dakka.test.tags.exclude=gh-exclude,timing \
|
||||||
-Dakka.test.multi-in-test=false \
|
-Dakka.test.multi-in-test=false \
|
||||||
-Dmultinode.XX:MetaspaceSize=128M \
|
|
||||||
-Dmultinode.Xms256M \
|
|
||||||
-Dmultinode.Xmx256M \
|
|
||||||
-Dmultinode.XX:+AlwaysActAsServerClassMachine \
|
|
||||||
${{ matrix.extraOpts }} \
|
${{ matrix.extraOpts }} \
|
||||||
clean "+~ ${{ matrix.scalaVersion }} test" checkTestsHaveRun
|
clean "+~ ${{ matrix.scalaVersion }} test" checkTestsHaveRun
|
||||||
|
|
||||||
|
|
@ -225,3 +217,58 @@ jobs:
|
||||||
body: |
|
body: |
|
||||||
Job ${{ github.job }} in workflow ${{ github.workflow }} of ${{github.repository}} failed!
|
Job ${{ github.job }} in workflow ${{ github.workflow }} of ${{github.repository}} failed!
|
||||||
https://github.com/${{github.repository}}/actions/runs/${{github.run_id}}
|
https://github.com/${{github.repository}}/actions/runs/${{github.run_id}}
|
||||||
|
|
||||||
|
akka-artery-aeron-tests:
|
||||||
|
name: Akka Artery Aeron Tests
|
||||||
|
runs-on: ubuntu-20.04
|
||||||
|
if: github.repository == 'akka/akka'
|
||||||
|
strategy:
|
||||||
|
fail-fast: false
|
||||||
|
matrix:
|
||||||
|
command:
|
||||||
|
- akka-remote/test akka-remote-tests/test
|
||||||
|
- akka-cluster/test akka-cluster-typed/test
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@v2
|
||||||
|
with:
|
||||||
|
# we don't know what commit the last tag was it's safer to get entire repo so previousStableVersion resolves
|
||||||
|
fetch-depth: 0
|
||||||
|
|
||||||
|
- name: Set up JDK 11
|
||||||
|
uses: olafurpg/setup-scala@v10
|
||||||
|
with:
|
||||||
|
java-version: adopt@1.11
|
||||||
|
|
||||||
|
- name: Cache Coursier cache
|
||||||
|
uses: coursier/cache-action@v6.2
|
||||||
|
|
||||||
|
- name: sbt ${{ matrix.command }}
|
||||||
|
# note that this is not running any multi-jvm tests because multi-in-test=false
|
||||||
|
run: |-
|
||||||
|
sbt -jvm-opts .jvmopts-ci \
|
||||||
|
-Djava.security.egd=file:/dev/./urandom \
|
||||||
|
-Dakka.remote.artery.transport=aeron-udp \
|
||||||
|
-Dakka.test.timefactor=2 \
|
||||||
|
-Dakka.actor.testkit.typed.timefactor=2 \
|
||||||
|
-Dakka.test.tags.exclude=gh-exclude,gh-exclude-aeron,timing \
|
||||||
|
-Dakka.test.multi-in-test=false \
|
||||||
|
-Dakka.cluster.assert=on \
|
||||||
|
-Daeron.dir=/opt/volumes/media-driver \
|
||||||
|
-Daeron.term.buffer.length=33554432 \
|
||||||
|
clean ${{ matrix.command }}
|
||||||
|
|
||||||
|
- name: Email on failure
|
||||||
|
if: ${{ failure() }}
|
||||||
|
uses: dawidd6/action-send-mail@v3
|
||||||
|
with:
|
||||||
|
server_address: smtp.gmail.com
|
||||||
|
server_port: 465
|
||||||
|
username: ${{secrets.MAIL_USERNAME}}
|
||||||
|
password: ${{secrets.MAIL_PASSWORD}}
|
||||||
|
subject: "Failed: ${{ github.workflow }} / ${{ github.job }}"
|
||||||
|
to: akka.official@gmail.com
|
||||||
|
from: Akka CI (GHActions)
|
||||||
|
body: |
|
||||||
|
Job ${{ github.job }} in workflow ${{ github.workflow }} of ${{github.repository}} failed!
|
||||||
|
https://github.com/${{github.repository}}/actions/runs/${{github.run_id}}
|
||||||
|
|
|
||||||
1
.github/workflows/scala3-build.yml
vendored
1
.github/workflows/scala3-build.yml
vendored
|
|
@ -57,7 +57,6 @@ jobs:
|
||||||
-Dmultinode.XX:MetaspaceSize=128M \
|
-Dmultinode.XX:MetaspaceSize=128M \
|
||||||
-Dmultinode.Xms256M \
|
-Dmultinode.Xms256M \
|
||||||
-Dmultinode.Xmx256M \
|
-Dmultinode.Xmx256M \
|
||||||
-Dmultinode.Xlog:gc \
|
|
||||||
-Dmultinode.XX:+AlwaysActAsServerClassMachine \
|
-Dmultinode.XX:+AlwaysActAsServerClassMachine \
|
||||||
"+~ 3 ${{ matrix.command }}"
|
"+~ 3 ${{ matrix.command }}"
|
||||||
|
|
||||||
|
|
|
||||||
1
.github/workflows/timing-tests.yml
vendored
1
.github/workflows/timing-tests.yml
vendored
|
|
@ -39,7 +39,6 @@ jobs:
|
||||||
-Dmultinode.XX:MetaspaceSize=128M \
|
-Dmultinode.XX:MetaspaceSize=128M \
|
||||||
-Dmultinode.Xms256M \
|
-Dmultinode.Xms256M \
|
||||||
-Dmultinode.Xmx256M \
|
-Dmultinode.Xmx256M \
|
||||||
-Dmultinode.Xlog:gc \
|
|
||||||
-Dmultinode.XX:+AlwaysActAsServerClassMachine \
|
-Dmultinode.XX:+AlwaysActAsServerClassMachine \
|
||||||
clean test
|
clean test
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -12,3 +12,4 @@
|
||||||
-XX:MetaspaceSize=512M
|
-XX:MetaspaceSize=512M
|
||||||
-XX:-ClassUnloadingWithConcurrentMark
|
-XX:-ClassUnloadingWithConcurrentMark
|
||||||
-Djava.security.egd=file:/dev/./urandom
|
-Djava.security.egd=file:/dev/./urandom
|
||||||
|
-Dakka.ci-server=true
|
||||||
|
|
|
||||||
|
|
@ -8,9 +8,11 @@ import java.util.concurrent.ThreadLocalRandom
|
||||||
|
|
||||||
import scala.concurrent.Await
|
import scala.concurrent.Await
|
||||||
import scala.concurrent.duration._
|
import scala.concurrent.duration._
|
||||||
|
|
||||||
import com.typesafe.config.ConfigFactory
|
import com.typesafe.config.ConfigFactory
|
||||||
import org.scalatest.matchers.should.Matchers
|
import org.scalatest.matchers.should.Matchers
|
||||||
import org.scalatest.wordspec.AnyWordSpec
|
import org.scalatest.wordspec.AnyWordSpec
|
||||||
|
|
||||||
import akka.actor.RootActorPath
|
import akka.actor.RootActorPath
|
||||||
import akka.actor.testkit.typed.FishingOutcome
|
import akka.actor.testkit.typed.FishingOutcome
|
||||||
import akka.actor.testkit.typed.scaladsl.ActorTestKit
|
import akka.actor.testkit.typed.scaladsl.ActorTestKit
|
||||||
|
|
@ -31,6 +33,8 @@ import akka.serialization.jackson.CborSerializable
|
||||||
import akka.testkit.LongRunningTest
|
import akka.testkit.LongRunningTest
|
||||||
import org.scalatest.concurrent.ScalaFutures
|
import org.scalatest.concurrent.ScalaFutures
|
||||||
|
|
||||||
|
import akka.testkit.GHExcludeAeronTest
|
||||||
|
|
||||||
object ClusterReceptionistSpec {
|
object ClusterReceptionistSpec {
|
||||||
val config = ConfigFactory.parseString(s"""
|
val config = ConfigFactory.parseString(s"""
|
||||||
akka.loglevel = DEBUG # issue #24960
|
akka.loglevel = DEBUG # issue #24960
|
||||||
|
|
@ -80,7 +84,7 @@ class ClusterReceptionistSpec extends AnyWordSpec with Matchers with LogCapturin
|
||||||
|
|
||||||
"The cluster receptionist" must {
|
"The cluster receptionist" must {
|
||||||
|
|
||||||
"eventually replicate registrations to the other side" taggedAs (LongRunningTest) in {
|
"eventually replicate registrations to the other side".taggedAs(LongRunningTest, GHExcludeAeronTest) in {
|
||||||
val testKit1 = ActorTestKit("ClusterReceptionistSpec-test-1", ClusterReceptionistSpec.config)
|
val testKit1 = ActorTestKit("ClusterReceptionistSpec-test-1", ClusterReceptionistSpec.config)
|
||||||
val system1 = testKit1.system
|
val system1 = testKit1.system
|
||||||
val testKit2 = ActorTestKit(system1.name, system1.settings.config)
|
val testKit2 = ActorTestKit(system1.name, system1.settings.config)
|
||||||
|
|
@ -118,7 +122,7 @@ class ClusterReceptionistSpec extends AnyWordSpec with Matchers with LogCapturin
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
"handle registrations before joining" taggedAs (LongRunningTest) in {
|
"handle registrations before joining".taggedAs(LongRunningTest, GHExcludeAeronTest) in {
|
||||||
val testKit1 = ActorTestKit("ClusterReceptionistSpec-test-2", ClusterReceptionistSpec.config)
|
val testKit1 = ActorTestKit("ClusterReceptionistSpec-test-2", ClusterReceptionistSpec.config)
|
||||||
val system1 = testKit1.system
|
val system1 = testKit1.system
|
||||||
val testKit2 = ActorTestKit(system1.name, system1.settings.config)
|
val testKit2 = ActorTestKit(system1.name, system1.settings.config)
|
||||||
|
|
@ -148,11 +152,11 @@ class ClusterReceptionistSpec extends AnyWordSpec with Matchers with LogCapturin
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
"remove registrations when node dies" taggedAs (LongRunningTest) in {
|
"remove registrations when node dies".taggedAs(LongRunningTest, GHExcludeAeronTest) in {
|
||||||
testNodeRemoval(down = true)
|
testNodeRemoval(down = true)
|
||||||
}
|
}
|
||||||
|
|
||||||
"remove registrations when node leaves" taggedAs (LongRunningTest) in {
|
"remove registrations when node leaves".taggedAs(LongRunningTest, GHExcludeAeronTest) in {
|
||||||
testNodeRemoval(down = false)
|
testNodeRemoval(down = false)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -215,7 +219,7 @@ class ClusterReceptionistSpec extends AnyWordSpec with Matchers with LogCapturin
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
"not remove registrations when self is shutdown" taggedAs (LongRunningTest) in {
|
"not remove registrations when self is shutdown".taggedAs(LongRunningTest, GHExcludeAeronTest) in {
|
||||||
val testKit1 = ActorTestKit("ClusterReceptionistSpec-test-4", ClusterReceptionistSpec.config)
|
val testKit1 = ActorTestKit("ClusterReceptionistSpec-test-4", ClusterReceptionistSpec.config)
|
||||||
val system1 = testKit1.system
|
val system1 = testKit1.system
|
||||||
val testKit2 = ActorTestKit(system1.name, system1.settings.config)
|
val testKit2 = ActorTestKit(system1.name, system1.settings.config)
|
||||||
|
|
@ -264,7 +268,7 @@ class ClusterReceptionistSpec extends AnyWordSpec with Matchers with LogCapturin
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
"work with services registered before node joins cluster" taggedAs (LongRunningTest) in {
|
"work with services registered before node joins cluster".taggedAs(LongRunningTest, GHExcludeAeronTest) in {
|
||||||
val testKit1 = ActorTestKit("ClusterReceptionistSpec-test-5", ClusterReceptionistSpec.config)
|
val testKit1 = ActorTestKit("ClusterReceptionistSpec-test-5", ClusterReceptionistSpec.config)
|
||||||
val system1 = testKit1.system
|
val system1 = testKit1.system
|
||||||
val testKit2 = ActorTestKit(system1.name, system1.settings.config)
|
val testKit2 = ActorTestKit(system1.name, system1.settings.config)
|
||||||
|
|
@ -322,7 +326,7 @@ class ClusterReceptionistSpec extends AnyWordSpec with Matchers with LogCapturin
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
"handle a new incarnation of the same node well" taggedAs (LongRunningTest) in {
|
"handle a new incarnation of the same node well".taggedAs(LongRunningTest, GHExcludeAeronTest) in {
|
||||||
val testKit1 = ActorTestKit("ClusterReceptionistSpec-test-6", ClusterReceptionistSpec.config)
|
val testKit1 = ActorTestKit("ClusterReceptionistSpec-test-6", ClusterReceptionistSpec.config)
|
||||||
val system1 = testKit1.system
|
val system1 = testKit1.system
|
||||||
val testKit2 = ActorTestKit(system1.name, system1.settings.config)
|
val testKit2 = ActorTestKit(system1.name, system1.settings.config)
|
||||||
|
|
@ -423,7 +427,9 @@ class ClusterReceptionistSpec extends AnyWordSpec with Matchers with LogCapturin
|
||||||
}
|
}
|
||||||
|
|
||||||
// reproducer of issue #26284
|
// reproducer of issue #26284
|
||||||
"handle a new incarnation of the same node that is no longer part of same cluster" taggedAs (LongRunningTest) in {
|
"handle a new incarnation of the same node that is no longer part of same cluster".taggedAs(
|
||||||
|
LongRunningTest,
|
||||||
|
GHExcludeAeronTest) in {
|
||||||
val testKit1 = ActorTestKit(
|
val testKit1 = ActorTestKit(
|
||||||
"ClusterReceptionistSpec-test-7",
|
"ClusterReceptionistSpec-test-7",
|
||||||
ConfigFactory.parseString("""
|
ConfigFactory.parseString("""
|
||||||
|
|
@ -527,7 +533,7 @@ class ClusterReceptionistSpec extends AnyWordSpec with Matchers with LogCapturin
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
"not lose removals on concurrent updates to same key" taggedAs (LongRunningTest) in {
|
"not lose removals on concurrent updates to same key".taggedAs(LongRunningTest, GHExcludeAeronTest) in {
|
||||||
val config = ConfigFactory.parseString("""
|
val config = ConfigFactory.parseString("""
|
||||||
# disable delta propagation so we can have repeatable concurrent writes
|
# disable delta propagation so we can have repeatable concurrent writes
|
||||||
# without delta reaching between nodes already
|
# without delta reaching between nodes already
|
||||||
|
|
@ -598,7 +604,7 @@ class ClusterReceptionistSpec extends AnyWordSpec with Matchers with LogCapturin
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
"not conflict with the ClusterClient receptionist default name" taggedAs (LongRunningTest) in {
|
"not conflict with the ClusterClient receptionist default name".taggedAs(LongRunningTest, GHExcludeAeronTest) in {
|
||||||
val testKit = ActorTestKit(s"ClusterReceptionistSpec-test-9", ClusterReceptionistSpec.config)
|
val testKit = ActorTestKit(s"ClusterReceptionistSpec-test-9", ClusterReceptionistSpec.config)
|
||||||
try {
|
try {
|
||||||
testKit.system.systemActorOf(Behaviors.ignore, "receptionist")
|
testKit.system.systemActorOf(Behaviors.ignore, "receptionist")
|
||||||
|
|
@ -607,7 +613,7 @@ class ClusterReceptionistSpec extends AnyWordSpec with Matchers with LogCapturin
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
"handle unregistration and re-registration of services" taggedAs (LongRunningTest) in {
|
"handle unregistration and re-registration of services".taggedAs(LongRunningTest, GHExcludeAeronTest) in {
|
||||||
val testKit1 = ActorTestKit("ClusterReceptionistSpec-test-10", ClusterReceptionistSpec.config)
|
val testKit1 = ActorTestKit("ClusterReceptionistSpec-test-10", ClusterReceptionistSpec.config)
|
||||||
val system1 = testKit1.system
|
val system1 = testKit1.system
|
||||||
val testKit2 = ActorTestKit(system1.name, system1.settings.config)
|
val testKit2 = ActorTestKit(system1.name, system1.settings.config)
|
||||||
|
|
@ -665,7 +671,7 @@ class ClusterReceptionistSpec extends AnyWordSpec with Matchers with LogCapturin
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
"handle unregistration per key not per actor" taggedAs (LongRunningTest) in {
|
"handle unregistration per key not per actor".taggedAs(LongRunningTest, GHExcludeAeronTest) in {
|
||||||
val testKit1 = ActorTestKit("ClusterReceptionistSpec-test-11", ClusterReceptionistSpec.config)
|
val testKit1 = ActorTestKit("ClusterReceptionistSpec-test-11", ClusterReceptionistSpec.config)
|
||||||
val system1 = testKit1.system
|
val system1 = testKit1.system
|
||||||
val testKit2 = ActorTestKit(system1.name, system1.settings.config)
|
val testKit2 = ActorTestKit(system1.name, system1.settings.config)
|
||||||
|
|
@ -717,7 +723,7 @@ class ClusterReceptionistSpec extends AnyWordSpec with Matchers with LogCapturin
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
"handle concurrent unregistration and registration on different nodes" taggedAs (LongRunningTest) in {
|
"handle concurrent unregistration and registration on different nodes".taggedAs(LongRunningTest, GHExcludeAeronTest) in {
|
||||||
// this covers the fact that with ddata a removal can be lost
|
// this covers the fact that with ddata a removal can be lost
|
||||||
val testKit1 = ActorTestKit("ClusterReceptionistSpec-test-12", ClusterReceptionistSpec.config)
|
val testKit1 = ActorTestKit("ClusterReceptionistSpec-test-12", ClusterReceptionistSpec.config)
|
||||||
val system1 = testKit1.system
|
val system1 = testKit1.system
|
||||||
|
|
@ -776,7 +782,7 @@ class ClusterReceptionistSpec extends AnyWordSpec with Matchers with LogCapturin
|
||||||
}
|
}
|
||||||
// Fixme concurrent registration and unregistration
|
// Fixme concurrent registration and unregistration
|
||||||
|
|
||||||
"notify subscribers when registering and joining simultaneously" taggedAs (LongRunningTest) in {
|
"notify subscribers when registering and joining simultaneously".taggedAs(LongRunningTest, GHExcludeAeronTest) in {
|
||||||
// failing test reproducer for issue #28792
|
// failing test reproducer for issue #28792
|
||||||
// It's possible that the registry entry from the ddata update arrives before MemberJoined.
|
// It's possible that the registry entry from the ddata update arrives before MemberJoined.
|
||||||
val config = ConfigFactory.parseString("""
|
val config = ConfigFactory.parseString("""
|
||||||
|
|
@ -839,7 +845,7 @@ class ClusterReceptionistSpec extends AnyWordSpec with Matchers with LogCapturin
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
"never use durable store" taggedAs (LongRunningTest) in {
|
"never use durable store".taggedAs(LongRunningTest, GHExcludeAeronTest) in {
|
||||||
val testKit = ActorTestKit("ClusterReceptionistSpec-test-14", ClusterReceptionistSpec.config)
|
val testKit = ActorTestKit("ClusterReceptionistSpec-test-14", ClusterReceptionistSpec.config)
|
||||||
val system = testKit.system
|
val system = testKit.system
|
||||||
try {
|
try {
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,10 @@ package akka.cluster
|
||||||
|
|
||||||
import scala.collection.{ immutable => im }
|
import scala.collection.{ immutable => im }
|
||||||
import scala.concurrent.duration._
|
import scala.concurrent.duration._
|
||||||
|
|
||||||
import com.typesafe.config.{ Config, ConfigFactory }
|
import com.typesafe.config.{ Config, ConfigFactory }
|
||||||
|
|
||||||
|
import akka.testkit.GHExcludeAeronTest
|
||||||
import akka.testkit.LongRunningTest
|
import akka.testkit.LongRunningTest
|
||||||
|
|
||||||
object JoinConfigCompatCheckerRollingUpdateSpec {
|
object JoinConfigCompatCheckerRollingUpdateSpec {
|
||||||
|
|
@ -47,14 +50,18 @@ class JoinConfigCompatCheckerRollingUpdateSpec
|
||||||
|
|
||||||
"A Node" must {
|
"A Node" must {
|
||||||
val timeout = 20.seconds
|
val timeout = 20.seconds
|
||||||
"NOT be allowed to re-join a cluster if it has a new, additional configuration the others do not have and not the old" taggedAs LongRunningTest in {
|
"NOT be allowed to re-join a cluster if it has a new, additional configuration the others do not have and not the old"
|
||||||
|
.taggedAs(LongRunningTest, GHExcludeAeronTest) in {
|
||||||
// confirms the 2 attempted re-joins fail with both nodes being terminated
|
// confirms the 2 attempted re-joins fail with both nodes being terminated
|
||||||
upgradeCluster(3, v1Config, v2ConfigIncompatible, timeout, timeout, enforced = true, shouldRejoin = false)
|
upgradeCluster(3, v1Config, v2ConfigIncompatible, timeout, timeout, enforced = true, shouldRejoin = false)
|
||||||
}
|
}
|
||||||
"be allowed to re-join a cluster if it has a new, additional property and checker the others do not have" taggedAs LongRunningTest in {
|
"be allowed to re-join a cluster if it has a new, additional property and checker the others do not have".taggedAs(
|
||||||
|
LongRunningTest,
|
||||||
|
GHExcludeAeronTest) in {
|
||||||
upgradeCluster(3, v1Config, v2Config, timeout, timeout * 3, enforced = true, shouldRejoin = true)
|
upgradeCluster(3, v1Config, v2Config, timeout, timeout * 3, enforced = true, shouldRejoin = true)
|
||||||
}
|
}
|
||||||
"be allowed to re-join a cluster if it has a new, additional configuration the others do not have and configured to NOT enforce it" taggedAs LongRunningTest in {
|
"be allowed to re-join a cluster if it has a new, additional configuration the others do not have and configured to NOT enforce it"
|
||||||
|
.taggedAs(LongRunningTest, GHExcludeAeronTest) in {
|
||||||
upgradeCluster(3, v1Config, v2Config, timeout, timeout * 3, enforced = false, shouldRejoin = true)
|
upgradeCluster(3, v1Config, v2Config, timeout, timeout * 3, enforced = false, shouldRejoin = true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,3 +11,4 @@ object LongRunningTest extends Tag("long-running")
|
||||||
object PerformanceTest extends Tag("performance")
|
object PerformanceTest extends Tag("performance")
|
||||||
|
|
||||||
object GHExcludeTest extends Tag("gh-exclude")
|
object GHExcludeTest extends Tag("gh-exclude")
|
||||||
|
object GHExcludeAeronTest extends Tag("gh-exclude-aeron")
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue