From 62bd86a5413ab72c9c987ec839960fc71bf433a9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ole=20Sch=C3=B6nburg?= Date: Fri, 20 May 2022 16:27:28 +0200 Subject: [PATCH 1/2] test: java client should accept dead partitions (cherry picked from commit dad809dbe793e63469edc8a7bd7ac98d07861eca) --- .../zeebe/client/TopologyRequestTest.java | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/clients/java/src/test/java/io/camunda/zeebe/client/TopologyRequestTest.java b/clients/java/src/test/java/io/camunda/zeebe/client/TopologyRequestTest.java index b649d0c60b59..50c1fabb6b9e 100644 --- a/clients/java/src/test/java/io/camunda/zeebe/client/TopologyRequestTest.java +++ b/clients/java/src/test/java/io/camunda/zeebe/client/TopologyRequestTest.java @@ -17,6 +17,7 @@ import static io.camunda.zeebe.client.util.RecordingGatewayService.broker; import static io.camunda.zeebe.client.util.RecordingGatewayService.partition; +import static io.camunda.zeebe.gateway.protocol.GatewayOuterClass.Partition.PartitionBrokerHealth.DEAD; import static io.camunda.zeebe.gateway.protocol.GatewayOuterClass.Partition.PartitionBrokerHealth.HEALTHY; import static io.camunda.zeebe.gateway.protocol.GatewayOuterClass.Partition.PartitionBrokerHealth.UNHEALTHY; import static io.camunda.zeebe.gateway.protocol.GatewayOuterClass.Partition.PartitionBrokerRole.FOLLOWER; @@ -119,6 +120,25 @@ public void shouldRequestTopology() { tuple(1, PartitionBrokerRole.INACTIVE, PartitionBrokerHealth.UNHEALTHY)); } + @Test + public void shouldAcceptDeadPartitions() { + // given + gatewayService.onTopologyRequest( + 1, + 1, + 1, + "1.22.3-SNAPSHOT", + broker(0, "host1", 123, "1.22.3-SNAPSHOT", partition(0, LEADER, DEAD))); + + // when + final Topology topology = client.newTopologyRequest().send().join(); + + // then + assertThat(topology.getBrokers().get(0).getPartitions().get(0)) + .extracting(PartitionInfo::getHealth) + .isEqualTo(PartitionBrokerHealth.DEAD); + } + @Test public void shouldRaiseExceptionOnError() { // given From 210dcf1e3a0afc035df0397317b25fe95f241f5c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ole=20Sch=C3=B6nburg?= Date: Wed, 18 May 2022 18:22:57 +0200 Subject: [PATCH 2/2] fix: java client accepts `DEAD` partitions in topology (cherry picked from commit eaf3cda4ce99c1b61d41a2e8925ca1ba4134b981) --- .../api/response/PartitionBrokerHealth.java | 3 ++- .../client/impl/response/PartitionInfoImpl.java | 16 +++++++++------- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/clients/java/src/main/java/io/camunda/zeebe/client/api/response/PartitionBrokerHealth.java b/clients/java/src/main/java/io/camunda/zeebe/client/api/response/PartitionBrokerHealth.java index 9c1a0a0fc4a6..d514574af1db 100644 --- a/clients/java/src/main/java/io/camunda/zeebe/client/api/response/PartitionBrokerHealth.java +++ b/clients/java/src/main/java/io/camunda/zeebe/client/api/response/PartitionBrokerHealth.java @@ -17,5 +17,6 @@ public enum PartitionBrokerHealth { HEALTHY, - UNHEALTHY + UNHEALTHY, + DEAD, } diff --git a/clients/java/src/main/java/io/camunda/zeebe/client/impl/response/PartitionInfoImpl.java b/clients/java/src/main/java/io/camunda/zeebe/client/impl/response/PartitionInfoImpl.java index d48ca5a495cd..fa215211425f 100644 --- a/clients/java/src/main/java/io/camunda/zeebe/client/impl/response/PartitionInfoImpl.java +++ b/clients/java/src/main/java/io/camunda/zeebe/client/impl/response/PartitionInfoImpl.java @@ -31,9 +31,9 @@ public class PartitionInfoImpl implements PartitionInfo { public PartitionInfoImpl(final GatewayOuterClass.Partition partition) { partitionId = partition.getPartitionId(); - if (partition.getRole() == GatewayOuterClass.Partition.PartitionBrokerRole.LEADER) { + if (partition.getRole() == Partition.PartitionBrokerRole.LEADER) { role = PartitionBrokerRole.LEADER; - } else if (partition.getRole() == GatewayOuterClass.Partition.PartitionBrokerRole.FOLLOWER) { + } else if (partition.getRole() == Partition.PartitionBrokerRole.FOLLOWER) { role = PartitionBrokerRole.FOLLOWER; } else if (partition.getRole() == Partition.PartitionBrokerRole.INACTIVE) { role = PartitionBrokerRole.INACTIVE; @@ -43,11 +43,13 @@ public PartitionInfoImpl(final GatewayOuterClass.Partition partition) { "Unexpected partition broker role %s, should be one of %s", partition.getRole(), Arrays.toString(PartitionBrokerRole.values()))); } - if (partition.getHealth() == GatewayOuterClass.Partition.PartitionBrokerHealth.HEALTHY) { - this.partitionBrokerHealth = PartitionBrokerHealth.HEALTHY; - } else if (partition.getHealth() - == GatewayOuterClass.Partition.PartitionBrokerHealth.UNHEALTHY) { - this.partitionBrokerHealth = PartitionBrokerHealth.UNHEALTHY; + + if (partition.getHealth() == Partition.PartitionBrokerHealth.HEALTHY) { + partitionBrokerHealth = PartitionBrokerHealth.HEALTHY; + } else if (partition.getHealth() == Partition.PartitionBrokerHealth.UNHEALTHY) { + partitionBrokerHealth = PartitionBrokerHealth.UNHEALTHY; + } else if (partition.getHealth() == Partition.PartitionBrokerHealth.DEAD) { + partitionBrokerHealth = PartitionBrokerHealth.DEAD; } else { throw new RuntimeException( String.format(