diff --git a/docker-compose/.env b/docker-compose/.env index a8457638..26b251c1 100644 --- a/docker-compose/.env +++ b/docker-compose/.env @@ -1,5 +1,5 @@ -CASSANDRA_VERSION=3.11.9 -ELASTICSEARCH_VERSION=7.16.2 +CASSANDRA_VERSION=4.1.1 +ELASTICSEARCH_VERSION=7.17.27 MYSQL_VERSION=8 POSTGRESQL_VERSION=13 TEMPORAL_VERSION=1.25 diff --git a/docker-compose/ci-cadence-dependencies.yml b/docker-compose/ci-cadence-dependencies.yml index 42f18a2d..02442ae3 100644 --- a/docker-compose/ci-cadence-dependencies.yml +++ b/docker-compose/ci-cadence-dependencies.yml @@ -18,43 +18,45 @@ services: expose: - 9200 cassandra: - image: cassandra:3.11 + image: cassandra:${CASSANDRA_VERSION} ports: - "9042:9042" + healthcheck: + test: [ "CMD", "cqlsh", "-u cassandra", "-p cassandra", "-e describe keyspaces" ] + interval: 15s + timeout: 30s + retries: 10 networks: - testing-network - zookeeper: - image: wurstmeister/zookeeper:latest - ports: - - "2181:2181" - networks: - - testing-network - healthcheck: - test: [ "CMD-SHELL", "echo ruok | nc -w 2 zookeeper 2181" ] - interval: 5s - timeout: 10s - retries: 3 kafka: - image: wurstmeister/kafka:2.12-2.1.1 - depends_on: - zookeeper: - condition: service_healthy + image: docker.io/bitnami/kafka:3.7 + hostname: kafka + container_name: kafka ports: - "9092:9092" environment: - KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092 - KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092 - KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 + # KRaft settings + - "KAFKA_CFG_NODE_ID=0" + - "KAFKA_CFG_PROCESS_ROLES=controller,broker" + - "KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=0@kafka:9093" + # Listeners + - "KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093" + - "KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092" + - "KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT" + - "KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER" + - "KAFKA_CFG_INTER_BROKER_LISTENER_NAME=PLAINTEXT" + # Topic settings + - "KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=true" networks: - testing-network healthcheck: test: - [ "CMD", "kafka-topics.sh", "--list", "--zookeeper", "zookeeper:2181" ] + [ "CMD", "kafka-topics.sh", "--list", '--bootstrap-server', 'kafka:9092' ] interval: 1s timeout: 60s retries: 60 cadence: - image: ubercadence/server:0.24.0-auto-setup + image: ubercadence/server:v1.2.16-auto-setup ports: - "8000:8000" - "8001:8001" @@ -65,6 +67,7 @@ services: - "7935:7935" - "7939:7939" - "7833:7833" + - "7936:7936" environment: - "CASSANDRA_SEEDS=cassandra" - "DYNAMIC_CONFIG_FILE_PATH=config/dynamicconfig/development_es.yaml" @@ -74,7 +77,7 @@ services: - "KAFKA_SEEDS=kafka" depends_on: cassandra: - condition: service_started + condition: service_healthy kafka: condition: service_healthy elasticsearch: @@ -87,7 +90,7 @@ services: - cadence environment: - CADENCE_CLI_ADDRESS=cadence:7933 - image: ubercadence/cli:0.24.0 + image: ubercadence/cli:v1.2.16 networks: - testing-network stdin_open: true diff --git a/docker-compose/ci-cadence-temporal-dependencies.yml b/docker-compose/ci-cadence-temporal-dependencies.yml index 924e455b..84c43205 100644 --- a/docker-compose/ci-cadence-temporal-dependencies.yml +++ b/docker-compose/ci-cadence-temporal-dependencies.yml @@ -67,43 +67,45 @@ services: - ./init-ci-temporal.sh:/etc/temporal/init-ci-temporal.sh entrypoint: sh -c "/etc/temporal/init-ci-temporal.sh" cassandra: - image: cassandra:3.11 + image: cassandra:${CASSANDRA_VERSION} ports: - "9042:9042" + healthcheck: + test: [ "CMD", "cqlsh", "-u cassandra", "-p cassandra", "-e describe keyspaces" ] + interval: 15s + timeout: 30s + retries: 10 networks: - testing-network - zookeeper: - image: wurstmeister/zookeeper:latest - ports: - - "2181:2181" - networks: - - testing-network - healthcheck: - test: [ "CMD-SHELL", "echo ruok | nc -w 2 zookeeper 2181" ] - interval: 5s - timeout: 10s - retries: 3 kafka: - image: wurstmeister/kafka:2.12-2.1.1 - depends_on: - zookeeper: - condition: service_healthy + image: docker.io/bitnami/kafka:3.7 + hostname: kafka + container_name: kafka ports: - "9092:9092" environment: - KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092 - KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092 - KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 + # KRaft settings + - "KAFKA_CFG_NODE_ID=0" + - "KAFKA_CFG_PROCESS_ROLES=controller,broker" + - "KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=0@kafka:9093" + # Listeners + - "KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093" + - "KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092" + - "KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT" + - "KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER" + - "KAFKA_CFG_INTER_BROKER_LISTENER_NAME=PLAINTEXT" + # Topic settings + - "KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=true" networks: - testing-network healthcheck: test: - [ "CMD", "kafka-topics.sh", "--list", "--zookeeper", "zookeeper:2181" ] + [ "CMD", "kafka-topics.sh", "--list", '--bootstrap-server', 'kafka:9092' ] interval: 1s timeout: 60s retries: 60 cadence: - image: ubercadence/server:0.24.0-auto-setup + image: ubercadence/server:v1.2.16-auto-setup ports: - "8000:8000" - "8001:8001" @@ -114,6 +116,7 @@ services: - "7935:7935" - "7939:7939" - "7833:7833" + - "7936:7936" environment: - "CASSANDRA_SEEDS=cassandra" - "DYNAMIC_CONFIG_FILE_PATH=config/dynamicconfig/development_es.yaml" @@ -123,7 +126,7 @@ services: - "KAFKA_SEEDS=kafka" depends_on: cassandra: - condition: service_started + condition: service_healthy kafka: condition: service_healthy elasticsearch: @@ -136,7 +139,7 @@ services: - cadence environment: - CADENCE_CLI_ADDRESS=cadence:7933 - image: ubercadence/cli:0.24.0 + image: ubercadence/cli:v1.2.16 networks: - testing-network stdin_open: true diff --git a/docker-compose/dynamicconfig/docker.yaml b/docker-compose/dynamicconfig/docker.yaml index b7e5dc6e..f9ad2b5c 100644 --- a/docker-compose/dynamicconfig/docker.yaml +++ b/docker-compose/dynamicconfig/docker.yaml @@ -1,2 +1,4 @@ frontend.enableUpdateWorkflowExecution: - - value: true \ No newline at end of file + - value: true +frontend.enableQueryAttributeValidation: + - value: false \ No newline at end of file diff --git a/docker-compose/integ-dependencies.yml b/docker-compose/integ-dependencies.yml index 063f2897..3f21b3c3 100644 --- a/docker-compose/integ-dependencies.yml +++ b/docker-compose/integ-dependencies.yml @@ -67,43 +67,45 @@ services: - ./init-ci-temporal.sh:/etc/temporal/init-ci-temporal.sh entrypoint: sh -c "/etc/temporal/init-ci-temporal.sh" cassandra: - image: cassandra:3.11 + image: cassandra:${CASSANDRA_VERSION} ports: - "9042:9042" + healthcheck: + test: [ "CMD", "cqlsh", "-u cassandra", "-p cassandra" ,"-e describe keyspaces" ] + interval: 15s + timeout: 30s + retries: 10 networks: - testing-network - zookeeper: - image: wurstmeister/zookeeper:latest - ports: - - "2181:2181" - networks: - - testing-network - healthcheck: - test: [ "CMD-SHELL", "echo ruok | nc -w 2 zookeeper 2181" ] - interval: 5s - timeout: 10s - retries: 3 kafka: - image: wurstmeister/kafka:2.12-2.1.1 - depends_on: - zookeeper: - condition: service_healthy + image: docker.io/bitnami/kafka:3.7 + hostname: kafka + container_name: kafka ports: - "9092:9092" environment: - KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092 - KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092 - KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181 + # KRaft settings + - "KAFKA_CFG_NODE_ID=0" + - "KAFKA_CFG_PROCESS_ROLES=controller,broker" + - "KAFKA_CFG_CONTROLLER_QUORUM_VOTERS=0@kafka:9093" + # Listeners + - "KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,CONTROLLER://:9093" + - "KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092" + - "KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=CONTROLLER:PLAINTEXT,PLAINTEXT:PLAINTEXT" + - "KAFKA_CFG_CONTROLLER_LISTENER_NAMES=CONTROLLER" + - "KAFKA_CFG_INTER_BROKER_LISTENER_NAME=PLAINTEXT" + # Topic settings + - "KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=true" networks: - testing-network healthcheck: test: - [ "CMD", "kafka-topics.sh", "--list", "--zookeeper", "zookeeper:2181" ] + [ "CMD", "kafka-topics.sh", "--list", '--bootstrap-server', 'kafka:9092'] interval: 1s timeout: 60s retries: 60 cadence: - image: ubercadence/server:0.24.0-auto-setup + image: ubercadence/server:v1.2.16-auto-setup ports: - "8000:8000" - "8001:8001" @@ -114,6 +116,7 @@ services: - "7935:7935" - "7939:7939" - "7833:7833" + - "7936:7936" environment: - "CASSANDRA_SEEDS=cassandra" - "DYNAMIC_CONFIG_FILE_PATH=config/dynamicconfig/development_es.yaml" @@ -123,7 +126,7 @@ services: - "KAFKA_SEEDS=kafka" depends_on: cassandra: - condition: service_started + condition: service_healthy kafka: condition: service_healthy elasticsearch: @@ -136,7 +139,7 @@ services: - cadence environment: - CADENCE_CLI_ADDRESS=cadence:7933 - image: ubercadence/cli:0.24.0 + image: ubercadence/cli:v1.2.16 networks: - testing-network stdin_open: true @@ -145,9 +148,10 @@ services: - ./init-ci-cadence.sh:/etc/cadence/init-ci-cadence.sh entrypoint: sh -c "/etc/cadence/init-ci-cadence.sh" cadence-web: - image: ubercadence/web:v3.29.6 + image: ubercadence/web:v4.0.0 environment: - "CADENCE_TCHANNEL_PEERS=cadence:7933" + - "CADENCE_GRPC_PEERS=cadence:7833" ports: - "8088:8088" depends_on: @@ -169,4 +173,4 @@ services: networks: testing-network: driver: bridge - name: testing-network + name: testing-network \ No newline at end of file diff --git a/integ/workflow/wf_ignore_already_started/routers.go b/integ/workflow/wf_ignore_already_started/routers.go index 6375cae2..5cc69189 100644 --- a/integ/workflow/wf_ignore_already_started/routers.go +++ b/integ/workflow/wf_ignore_already_started/routers.go @@ -1,18 +1,14 @@ package wf_ignore_already_started import ( - "github.com/indeedeng/iwf/integ/helpers" + "github.com/gin-gonic/gin" + "github.com/indeedeng/iwf/gen/iwfidl" + "github.com/indeedeng/iwf/service" "github.com/indeedeng/iwf/service/common/ptr" "log" "net/http" - "strconv" "sync" "testing" - "time" - - "github.com/gin-gonic/gin" - "github.com/indeedeng/iwf/gen/iwfidl" - "github.com/indeedeng/iwf/service" ) /** @@ -29,7 +25,6 @@ const ( type handler struct { invokeHistory sync.Map - invokeData sync.Map } func NewHandler() *handler { @@ -55,12 +50,6 @@ func (h *handler) ApiV1WorkflowStateStart(c *gin.Context, t *testing.T) { } if req.GetWorkflowStateId() == State1 { - nowInt, err := strconv.Atoi(req.StateInput.GetData()) - if err != nil { - helpers.FailTestWithError(err, t) - } - now := int64(nowInt) - h.invokeData.Store("scheduled_at", now) c.JSON(http.StatusOK, iwfidl.WorkflowStateStartResponse{ CommandRequest: &iwfidl.CommandRequest{ TimerCommands: []iwfidl.TimerCommand{ @@ -95,11 +84,6 @@ func (h *handler) ApiV1WorkflowStateDecide(c *gin.Context, t *testing.T) { } if req.GetWorkflowStateId() == State1 { - now := time.Now().Unix() - h.invokeData.Store("fired_at", now) - timerResults := req.GetCommandResults() - timerId := timerResults.GetTimerResults()[0].GetCommandId() - h.invokeData.Store("timer_id", timerId) c.JSON(http.StatusOK, iwfidl.WorkflowStateDecideResponse{ StateDecision: &iwfidl.StateDecision{ NextStates: []iwfidl.StateMovement{ @@ -122,10 +106,5 @@ func (h *handler) GetTestResult() (map[string]int64, map[string]interface{}) { invokeHistory[key.(string)] = value.(int64) return true }) - invokeData := make(map[string]interface{}) - h.invokeData.Range(func(key, value interface{}) bool { - invokeData[key.(string)] = value - return true - }) - return invokeHistory, invokeData + return invokeHistory, nil }