This is an automated email from the ASF dual-hosted git repository.

haonan pushed a commit to branch test_16968
in repository https://gitbox.apache.org/repos/asf/iotdb.git

commit c4b71597e18056aa3115449884a57d97132a21f3
Author: HTHou <[email protected]>
AuthorDate: Mon Jan 12 11:29:35 2026 +0800

    try session cpp
---
 .github/workflows/cluster-it-1c1d.yml       |   89 ---
 .github/workflows/cluster-it-1c1d1a.yml     |   60 --
 .github/workflows/cluster-it-1c3d.yml       |   69 --
 .github/workflows/compile-check.yml         |   55 --
 .github/workflows/daily-it.yml              | 1079 ---------------------------
 .github/workflows/daily-ut.yml              |   59 --
 .github/workflows/dependency-check.yml      |   62 --
 .github/workflows/multi-language-client.yml |    2 +-
 .github/workflows/pipe-it.yml               |  978 ------------------------
 .github/workflows/sonar-codecov.yml         |   89 ---
 .github/workflows/table-cluster-it-1c1d.yml |   90 ---
 .github/workflows/table-cluster-it-1c3d.yml |   69 --
 .github/workflows/todos-check.yml           |   54 --
 .github/workflows/unit-test.yml             |   71 --
 .github/workflows/vulnerability-check.yml   |   60 --
 iotdb-client/client-cpp/pom.xml             |   30 +-
 16 files changed, 13 insertions(+), 2903 deletions(-)

diff --git a/.github/workflows/cluster-it-1c1d.yml 
b/.github/workflows/cluster-it-1c1d.yml
deleted file mode 100644
index a2989a8e81c..00000000000
--- a/.github/workflows/cluster-it-1c1d.yml
+++ /dev/null
@@ -1,89 +0,0 @@
-name: Cluster IT - 1C1D
-
-on:
-  push:
-    branches:
-      - master
-      - "rel/*"
-      - "rc/*"
-    paths-ignore:
-      - "docs/**"
-      - "site/**"
-  pull_request:
-    branches:
-      - master
-      - "rel/*"
-      - "rc/*"
-    paths-ignore:
-      - "docs/**"
-      - "site/**"
-  # allow manually run the action:
-  workflow_dispatch:
-
-concurrency:
-  group: ${{ github.workflow }}-${{ github.ref }}
-  cancel-in-progress: true
-
-env:
-  MAVEN_OPTS: -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false 
-Dmaven.wagon.http.retryHandler.class=standard 
-Dmaven.wagon.http.retryHandler.count=3
-  MAVEN_ARGS: --batch-mode --no-transfer-progress
-  DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
-
-jobs:
-  Simple:
-    strategy:
-      fail-fast: false
-      max-parallel: 15
-      matrix:
-        os: [ubuntu-latest, windows-latest]
-    runs-on: ${{ matrix.os }}
-
-    steps:
-      - uses: actions/checkout@v4
-      - name: Set up JDK
-        uses: actions/setup-java@v4
-        with:
-          distribution: corretto
-          java-version: 17
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-      - name: Cache Maven packages
-        uses: actions/cache@v4
-        with:
-          path: ~/.m2
-          key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
-          restore-keys: ${{ runner.os }}-m2-
-      - name: Adjust network dynamic TCP ports range
-        if: ${{ runner.os == 'Windows' }}
-        shell: pwsh
-        run: |
-          netsh int ipv4 set dynamicport tcp start=32768 num=32768
-          netsh int ipv4 set dynamicport udp start=32768 num=32768
-          netsh int ipv6 set dynamicport tcp start=32768 num=32768
-          netsh int ipv6 set dynamicport udp start=32768 num=32768
-      - name: Adjust Linux kernel somaxconn
-        if: ${{ runner.os == 'Linux' }}
-        shell: bash
-        run: sudo sysctl -w net.core.somaxconn=65535
-      #      - name: Adjust Mac kernel somaxconn
-      #        if: ${{ runner.os == 'macOS' }}
-      #        shell: bash
-      #        run: sudo sysctl -w kern.ipc.somaxconn=65535
-      - name: IT/UT Test
-        shell: bash
-        # we do not compile client-cpp for saving time, it is tested in 
client.yml
-        # we can skip influxdb-protocol because it has been tested separately 
in influxdb-protocol.yml
-        run: |
-          mvn clean verify \
-          -P with-integration-tests \
-          -DskipUTs \
-          -DintegrationTest.forkCount=2 \
-          -pl integration-test \
-          -am
-      - name: Upload Artifact
-        if: failure()
-        uses: actions/upload-artifact@v4
-        with:
-          name: standalone-log-java${{ matrix.java }}-${{ runner.os }}
-          path: integration-test/target/cluster-logs
-          retention-days: 1
diff --git a/.github/workflows/cluster-it-1c1d1a.yml 
b/.github/workflows/cluster-it-1c1d1a.yml
deleted file mode 100644
index 67be8f1a5f6..00000000000
--- a/.github/workflows/cluster-it-1c1d1a.yml
+++ /dev/null
@@ -1,60 +0,0 @@
-name: Cluster IT - 1C1D1A
-
-on:
-  push:
-    branches:
-      - master
-      - 'rel/*'
-      - 'rc/*'
-    paths-ignore:
-      - 'docs/**'
-      - 'site/**'
-  pull_request:
-    branches:
-      - master
-      - 'rel/*'
-      - 'rc/*'
-      - 'force_ci/**'
-    paths-ignore:
-      - 'docs/**'
-      - 'site/**'
-  # allow manually run the action:
-  workflow_dispatch:
-
-concurrency:
-  group: ${{ github.workflow }}-${{ github.ref }}
-  cancel-in-progress: true
-
-env:
-  MAVEN_OPTS: -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false 
-Dmaven.wagon.http.retryHandler.class=standard 
-Dmaven.wagon.http.retryHandler.count=3
-  MAVEN_ARGS: --batch-mode --no-transfer-progress
-  DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
-
-jobs:
-  AINode:
-    strategy:
-      fail-fast: false
-      max-parallel: 1
-      matrix:
-        os: [ ubuntu-latest ]
-    runs-on: [self-hosted, gpu]
-
-    steps:
-      - uses: actions/checkout@v4
-      - name: IT Test
-        shell: bash
-        run: |
-          mvn clean verify \
-          -P with-integration-tests,with-ainode \
-          -DskipUTs \
-          -DintegrationTest.forkCount=1 \
-          -pl integration-test,iotdb-core/ainode \
-          -am \
-          -PAIClusterIT
-      - name: Upload Artifact
-        if: failure()
-        uses: actions/upload-artifact@v4
-        with:
-          name: cluster-log-ainode-${{ matrix.os }}
-          path: integration-test/target/*-logs
-          retention-days: 30
diff --git a/.github/workflows/cluster-it-1c3d.yml 
b/.github/workflows/cluster-it-1c3d.yml
deleted file mode 100644
index bb359626520..00000000000
--- a/.github/workflows/cluster-it-1c3d.yml
+++ /dev/null
@@ -1,69 +0,0 @@
-name: Cluster IT - 1C3D
-
-on:
-  push:
-    branches:
-      - master
-      - "rel/*"
-      - "rc/*"
-    paths-ignore:
-      - "docs/**"
-      - "site/**"
-  pull_request:
-    branches:
-      - master
-      - "rel/*"
-      - "rc/*"
-      - "force_ci/**"
-    paths-ignore:
-      - "docs/**"
-      - "site/**"
-  # allow manually run the action:
-  workflow_dispatch:
-
-concurrency:
-  group: ${{ github.workflow }}-${{ github.ref }}
-  cancel-in-progress: true
-
-env:
-  MAVEN_OPTS: -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false 
-Dmaven.wagon.http.retryHandler.class=standard 
-Dmaven.wagon.http.retryHandler.count=3
-  MAVEN_ARGS: --batch-mode --no-transfer-progress
-  DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
-
-jobs:
-  Simple:
-    strategy:
-      fail-fast: false
-      max-parallel: 20
-      matrix:
-        java: [17]
-    runs-on: [self-hosted, iotdb]
-    #      group: self-hosted
-    #      labels: iotdb
-    steps:
-      - uses: actions/checkout@v4
-      - name: Set up JDK ${{ matrix.java }}
-        uses: actions/setup-java@v4
-        with:
-          distribution: corretto
-          java-version: ${{ matrix.java }}
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-      - name: IT/UT Test
-        shell: bash
-        # we do not compile client-cpp for saving time, it is tested in 
client.yml
-        # we can skip influxdb-protocol because it has been tested separately 
in influxdb-protocol.yml
-        run: |
-          mvn clean verify \
-          -P with-integration-tests \
-          -DskipUTs \
-          -DintegrationTest.forkCount=6 -DConfigNodeMaxHeapSize=1024 
-DDataNodeMaxHeapSize=1024 \
-          -pl integration-test \
-          -am -PClusterIT
-      - name: Upload Artifact
-        if: failure()
-        uses: actions/upload-artifact@v4
-        with:
-          name: cluster-log-java${{ matrix.java }}-${{ runner.os }}
-          path: integration-test/target/cluster-logs
-          retention-days: 1
diff --git a/.github/workflows/compile-check.yml 
b/.github/workflows/compile-check.yml
deleted file mode 100644
index b2aeece10ed..00000000000
--- a/.github/workflows/compile-check.yml
+++ /dev/null
@@ -1,55 +0,0 @@
-#  This workflow will compile IoTDB under jdk8 to check for compatibility 
issues
-
-name: Compile Check
-
-on:
-  push:
-    branches:
-      - master
-      - "rel/*"
-      - "rc/*"
-    paths-ignore:
-      - "docs/**"
-      - "site/**"
-  pull_request:
-    branches:
-      - master
-      - "rel/*"
-      - "rc/*"
-      - "force_ci/**"
-    paths-ignore:
-      - "docs/**"
-      - "site/**"
-  # allow manually run the action:
-  workflow_dispatch:
-
-concurrency:
-  group: ${{ github.workflow }}-${{ github.ref }}
-  cancel-in-progress: true
-
-env:
-  MAVEN_OPTS: -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false 
-Dmaven.wagon.http.retryHandler.class=standard 
-Dmaven.wagon.http.retryHandler.count=3
-  MAVEN_ARGS: --batch-mode --no-transfer-progress
-  DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
-
-jobs:
-  compile-check:
-    strategy:
-      fail-fast: false
-      matrix:
-        java: [8]
-        os: [ubuntu-latest]
-    runs-on: ${{ matrix.os }}
-    steps:
-      - uses: actions/checkout@v4
-      - name: Set up JDK ${{ matrix.java }}
-        uses: actions/setup-java@v4
-        with:
-          distribution: corretto
-          java-version: ${{ matrix.java }}
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-      - name: Compiler Test
-        shell: bash
-        run: |
-          mvn clean package -P with-integration-tests -DskipTests -ntp
diff --git a/.github/workflows/daily-it.yml b/.github/workflows/daily-it.yml
deleted file mode 100644
index 5f7d8cdcfd6..00000000000
--- a/.github/workflows/daily-it.yml
+++ /dev/null
@@ -1,1079 +0,0 @@
-name: Daily IT
-
-on:
-  schedule:
-    # Run at UTC 19:00 every day (CST 03:00 AM)
-    - cron: "0 19 * * *"
-
-concurrency:
-  group: ${{ github.workflow }}-${{ github.ref }}
-  cancel-in-progress: true
-
-env:
-  MAVEN_OPTS: -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false 
-Dmaven.wagon.http.retryHandler.class=standard 
-Dmaven.wagon.http.retryHandler.count=3
-  MAVEN_ARGS: --batch-mode --no-transfer-progress
-  DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
-
-jobs:
-  Simple:
-    strategy:
-      fail-fast: false
-      max-parallel: 20
-      matrix:
-        java: [8, 17]
-    runs-on: [self-hosted, iotdb]
-    #      group: self-hosted
-    #      labels: iotdb
-    steps:
-      - uses: actions/checkout@v4
-      - name: Set up JDK ${{ matrix.java }}
-        uses: actions/setup-java@v4
-        with:
-          distribution: corretto
-          java-version: ${{ matrix.java }}
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-      - name: IT/UT Test
-        shell: bash
-        run: |
-          mvn clean verify \
-          -P with-integration-tests \
-          -DskipUTs \
-          -DintegrationTest.forkCount=6 -DConfigNodeMaxHeapSize=1024 
-DDataNodeMaxHeapSize=1024 \
-          -pl integration-test \
-          -am -PDailyIT
-      - name: Upload Artifact
-        if: failure()
-        uses: actions/upload-artifact@v4
-        with:
-          name: cluster-log-java${{ matrix.java }}-${{ runner.os }}
-          path: integration-test/target/cluster-logs
-          retention-days: 3
-  SingleRegionTableModel:
-    strategy:
-      fail-fast: false
-      max-parallel: 15
-      matrix:
-        java: [8, 17]
-    runs-on: [self-hosted, iotdb]
-    #      group: self-hosted
-    #      labels: iotdb
-    steps:
-      - uses: actions/checkout@v4
-      - name: Set up JDK
-        uses: actions/setup-java@v4
-        with:
-          distribution: corretto
-          java-version: ${{ matrix.java }}
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-      - name: IT/UT Test
-        shell: bash
-        # we do not compile client-cpp for saving time, it is tested in 
client.yml
-        # we can skip influxdb-protocol because it has been tested separately 
in influxdb-protocol.yml
-        run: |
-          mvn clean verify \
-          -P with-integration-tests \
-          -DskipUTs \
-          -DintegrationTest.forkCount=2 -DDataNodeMaxHeapSize=1024 
-DintegrationTest.dataRegionPerDataNode=1 \
-          -pl integration-test \
-          -am -PTableSimpleIT
-      - name: Upload Artifact
-        if: failure()
-        uses: actions/upload-artifact@v4
-        with:
-          name: table-standalone-log-java${{ matrix.java }}-${{ runner.os }}
-          path: integration-test/target/cluster-logs
-          retention-days: 3
-  PipeSingle:
-    strategy:
-      fail-fast: false
-      max-parallel: 15
-      matrix:
-        java: [17]
-        # StrongConsistencyClusterMode is ignored now because RatisConsensus 
has not been supported yet.
-        cluster1:
-          [
-            LightWeightStandaloneMode,
-            ScalableSingleNodeMode,
-            HighPerformanceMode,
-            PipeConsensusBatchMode,
-            PipeConsensusStreamMode,
-          ]
-        cluster2:
-          [
-            LightWeightStandaloneMode,
-            ScalableSingleNodeMode,
-            HighPerformanceMode,
-          ]
-        os: [ubuntu-latest]
-        exclude:
-          - cluster1: LightWeightStandaloneMode
-            cluster2: LightWeightStandaloneMode
-          - cluster1: LightWeightStandaloneMode
-            cluster2: ScalableSingleNodeMode
-          - cluster1: ScalableSingleNodeMode
-            cluster2: LightWeightStandaloneMode
-          - cluster1: ScalableSingleNodeMode
-            cluster2: HighPerformanceMode
-          - cluster1: HighPerformanceMode
-            cluster2: LightWeightStandaloneMode
-          - cluster1: HighPerformanceMode
-            cluster2: HighPerformanceMode
-          - cluster1: PipeConsensusBatchMode
-            cluster2: LightWeightStandaloneMode
-          - cluster1: PipeConsensusBatchMode
-            cluster2: HighPerformanceMode
-          - cluster1: PipeConsensusStreamMode
-            cluster2: LightWeightStandaloneMode
-          - cluster1: PipeConsensusStreamMode
-            cluster2: HighPerformanceMode
-    runs-on: ${{ matrix.os }}
-    steps:
-      - uses: actions/checkout@v4
-      - name: Set up JDK ${{ matrix.java }}
-        uses: actions/setup-java@v4
-        with:
-          distribution: corretto
-          java-version: ${{ matrix.java }}
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-      - name: Cache Maven packages
-        uses: actions/cache@v4
-        with:
-          path: ~/.m2
-          key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
-          restore-keys: ${{ runner.os }}-m2-
-      - name: Sleep for a random duration between 0 and 10000 milliseconds
-        run: |
-          sleep  $(( $(( RANDOM % 10000 + 1 )) / 1000))
-      - name: IT Test
-        shell: bash
-        # we do not compile client-cpp for saving time, it is tested in 
client.yml
-        # we can skip influxdb-protocol because it has been tested separately 
in influxdb-protocol.yml
-        run: |
-          retry() {
-            local -i max_attempts=3
-            local -i attempt=1
-            local -i retry_sleep=5
-            local test_output
-
-            while [ $attempt -le $max_attempts ]; do
-              mvn clean verify \
-              -P with-integration-tests \
-              -DskipUTs \
-              -DintegrationTest.forkCount=1 -DConfigNodeMaxHeapSize=256 
-DDataNodeMaxHeapSize=1024 -DDataNodeMaxDirectMemorySize=768 \
-              -DClusterConfigurations=${{ matrix.cluster1 }},${{ 
matrix.cluster2 }} \
-              -pl integration-test \
-              -am -PMultiClusterIT1 \
-              -ntp >> ~/run-tests-$attempt.log && return 0
-              test_output=$(cat ~/run-tests-$attempt.log) 
-
-              echo "==================== BEGIN: ~/run-tests-$attempt.log 
===================="          
-              echo "$test_output"
-              echo "==================== END: ~/run-tests-$attempt.log 
======================"
-
-              if ! mv ~/run-tests-$attempt.log 
integration-test/target/cluster-logs/ 2>/dev/null; then
-                echo "Failed to move log file ~/run-tests-$attempt.log to 
integration-test/target/cluster-logs/. Skipping..."
-              fi
-
-              if echo "$test_output" | grep -q "Could not transfer artifact"; 
then
-                if [ $attempt -lt $max_attempts ]; then
-                  echo "Test failed with artifact transfer issue, attempt 
$attempt. Retrying in $retry_sleep seconds..."
-                  sleep $retry_sleep
-                  attempt=$((attempt + 1))
-                else
-                  echo "Test failed after $max_attempts attempts due to 
artifact transfer issue."
-                  echo "Treating this as a success because the issue is likely 
transient."
-                  return 0
-                fi
-              elif [ $? -ne 0 ]; then
-                echo "Test failed with a different error."
-                return 1
-              else
-                echo "Tests passed"
-                return 0
-              fi
-            done
-          }
-          retry
-      - name: Upload Artifact
-        if: failure()
-        uses: actions/upload-artifact@v4
-        with:
-          name: cluster-log-single-java${{ matrix.java }}-${{ runner.os }}-${{ 
matrix.cluster1 }}-${{ matrix.cluster2 }}
-          path: integration-test/target/cluster-logs
-          retention-days: 30
-  PipeDualTreeAutoBasic:
-    strategy:
-      fail-fast: false
-      max-parallel: 15
-      matrix:
-        java: [17]
-        # StrongConsistencyClusterMode is ignored now because RatisConsensus 
has not been supported yet.
-        cluster:
-          [
-            LightWeightStandaloneMode,
-            ScalableSingleNodeMode,
-            HighPerformanceMode,
-            PipeConsensusBatchMode,
-            PipeConsensusStreamMode,
-          ]
-        os: [ubuntu-latest]
-    runs-on: ${{ matrix.os }}
-    steps:
-      - uses: actions/checkout@v4
-      - name: Set up JDK ${{ matrix.java }}
-        uses: actions/setup-java@v4
-        with:
-          distribution: corretto
-          java-version: ${{ matrix.java }}
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-      - name: Cache Maven packages
-        uses: actions/cache@v4
-        with:
-          path: ~/.m2
-          key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
-          restore-keys: ${{ runner.os }}-m2-
-      - name: Sleep for a random duration between 0 and 10000 milliseconds
-        run: |
-          sleep  $(( $(( RANDOM % 10000 + 1 )) / 1000))
-      - name: IT Test
-        shell: bash
-        # we do not compile client-cpp for saving time, it is tested in 
client.yml
-        # we can skip influxdb-protocol because it has been tested separately 
in influxdb-protocol.yml
-        run: |
-          retry() {
-            local -i max_attempts=3
-            local -i attempt=1
-            local -i retry_sleep=5
-            local test_output
-
-            while [ $attempt -le $max_attempts ]; do
-              mvn clean verify \
-              -P with-integration-tests \
-              -DskipUTs \
-              -DintegrationTest.forkCount=1 -DConfigNodeMaxHeapSize=256 
-DDataNodeMaxHeapSize=1024 -DDataNodeMaxDirectMemorySize=768 \
-              -DClusterConfigurations=${{ matrix.cluster }},${{ matrix.cluster 
}} \
-              -pl integration-test \
-              -am -PMultiClusterIT2DualTreeAutoBasic \
-              -ntp >> ~/run-tests-$attempt.log && return 0
-              test_output=$(cat ~/run-tests-$attempt.log) 
-
-              echo "==================== BEGIN: ~/run-tests-$attempt.log 
===================="          
-              echo "$test_output"
-              echo "==================== END: ~/run-tests-$attempt.log 
======================"
-
-              if ! mv ~/run-tests-$attempt.log 
integration-test/target/cluster-logs/ 2>/dev/null; then
-                echo "Failed to move log file ~/run-tests-$attempt.log to 
integration-test/target/cluster-logs/. Skipping..."
-              fi
-
-              if echo "$test_output" | grep -q "Could not transfer artifact"; 
then
-                if [ $attempt -lt $max_attempts ]; then
-                  echo "Test failed with artifact transfer issue, attempt 
$attempt. Retrying in $retry_sleep seconds..."
-                  sleep $retry_sleep
-                  attempt=$((attempt + 1))
-                else
-                  echo "Test failed after $max_attempts attempts due to 
artifact transfer issue."
-                  echo "Treating this as a success because the issue is likely 
transient."
-                  return 0
-                fi
-              elif [ $? -ne 0 ]; then
-                echo "Test failed with a different error."
-                return 1
-              else
-                echo "Tests passed"
-                return 0
-              fi
-            done
-          }
-          retry
-      - name: Upload Artifact
-        if: failure()
-        uses: actions/upload-artifact@v4
-        with:
-          name: cluster-log-dual-tree-auto-basic-java${{ matrix.java }}-${{ 
runner.os }}-${{ matrix.cluster }}-${{ matrix.cluster }}
-          path: integration-test/target/cluster-logs
-          retention-days: 30
-  PipeDualTreeAutoEnhanced:
-    strategy:
-      fail-fast: false
-      max-parallel: 15
-      matrix:
-        java: [17]
-        # StrongConsistencyClusterMode is ignored now because RatisConsensus 
has not been supported yet.
-        cluster1:
-          [
-            LightWeightStandaloneMode,
-            ScalableSingleNodeMode,
-            HighPerformanceMode,
-            PipeConsensusBatchMode,
-            PipeConsensusStreamMode,
-          ]
-        cluster2:
-          [
-            LightWeightStandaloneMode,
-            ScalableSingleNodeMode,
-            HighPerformanceMode,
-          ]
-        os: [ubuntu-latest]
-        exclude:
-          - cluster1: LightWeightStandaloneMode
-            cluster2: LightWeightStandaloneMode
-          - cluster1: LightWeightStandaloneMode
-            cluster2: ScalableSingleNodeMode
-          - cluster1: ScalableSingleNodeMode
-            cluster2: LightWeightStandaloneMode
-          - cluster1: ScalableSingleNodeMode
-            cluster2: HighPerformanceMode
-          - cluster1: HighPerformanceMode
-            cluster2: LightWeightStandaloneMode
-          - cluster1: HighPerformanceMode
-            cluster2: HighPerformanceMode
-          - cluster1: PipeConsensusBatchMode
-            cluster2: LightWeightStandaloneMode
-          - cluster1: PipeConsensusBatchMode
-            cluster2: HighPerformanceMode
-          - cluster1: PipeConsensusStreamMode
-            cluster2: LightWeightStandaloneMode
-          - cluster1: PipeConsensusStreamMode
-            cluster2: HighPerformanceMode
-    runs-on: ${{ matrix.os }}
-    steps:
-      - uses: actions/checkout@v4
-      - name: Set up JDK ${{ matrix.java }}
-        uses: actions/setup-java@v4
-        with:
-          distribution: corretto
-          java-version: ${{ matrix.java }}
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-      - name: Cache Maven packages
-        uses: actions/cache@v4
-        with:
-          path: ~/.m2
-          key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
-          restore-keys: ${{ runner.os }}-m2-
-      - name: Sleep for a random duration between 0 and 10000 milliseconds
-        run: |
-          sleep  $(( $(( RANDOM % 10000 + 1 )) / 1000))
-      - name: IT Test
-        shell: bash
-        # we do not compile client-cpp for saving time, it is tested in 
client.yml
-        # we can skip influxdb-protocol because it has been tested separately 
in influxdb-protocol.yml
-        run: |
-          retry() {
-            local -i max_attempts=3
-            local -i attempt=1
-            local -i retry_sleep=5
-            local test_output
-
-            while [ $attempt -le $max_attempts ]; do
-              mvn clean verify \
-              -P with-integration-tests \
-              -DskipUTs \
-              -DintegrationTest.forkCount=1 -DConfigNodeMaxHeapSize=256 
-DDataNodeMaxHeapSize=1024 -DDataNodeMaxDirectMemorySize=768 \
-              -DClusterConfigurations=${{ matrix.cluster1 }},${{ 
matrix.cluster2 }} \
-              -pl integration-test \
-              -am -PMultiClusterIT2DualTreeAutoEnhanced \
-              -ntp >> ~/run-tests-$attempt.log && return 0
-              test_output=$(cat ~/run-tests-$attempt.log) 
-
-              echo "==================== BEGIN: ~/run-tests-$attempt.log 
===================="          
-              echo "$test_output"
-              echo "==================== END: ~/run-tests-$attempt.log 
======================"
-
-              if ! mv ~/run-tests-$attempt.log 
integration-test/target/cluster-logs/ 2>/dev/null; then
-                echo "Failed to move log file ~/run-tests-$attempt.log to 
integration-test/target/cluster-logs/. Skipping..."
-              fi
-
-              if echo "$test_output" | grep -q "Could not transfer artifact"; 
then
-                if [ $attempt -lt $max_attempts ]; then
-                  echo "Test failed with artifact transfer issue, attempt 
$attempt. Retrying in $retry_sleep seconds..."
-                  sleep $retry_sleep
-                  attempt=$((attempt + 1))
-                else
-                  echo "Test failed after $max_attempts attempts due to 
artifact transfer issue."
-                  echo "Treating this as a success because the issue is likely 
transient."
-                  return 0
-                fi
-              elif [ $? -ne 0 ]; then
-                echo "Test failed with a different error."
-                return 1
-              else
-                echo "Tests passed"
-                return 0
-              fi
-            done
-          }
-          retry
-      - name: Upload Artifact
-        if: failure()
-        uses: actions/upload-artifact@v4
-        with:
-          name: cluster-log-dual-tree-auto-enhanced-java${{ matrix.java }}-${{ 
runner.os }}-${{ matrix.cluster1 }}-${{ matrix.cluster2 }}
-          path: integration-test/target/cluster-logs
-          retention-days: 30
-  PipeDualTreeManual:
-    strategy:
-      fail-fast: false
-      max-parallel: 15
-      matrix:
-        java: [17]
-        # StrongConsistencyClusterMode is ignored now because RatisConsensus 
has not been supported yet.
-        cluster1:
-          [
-            LightWeightStandaloneMode,
-            ScalableSingleNodeMode,
-            HighPerformanceMode,
-            PipeConsensusBatchMode,
-            PipeConsensusStreamMode,
-          ]
-        cluster2:
-          [
-            LightWeightStandaloneMode,
-            ScalableSingleNodeMode,
-            HighPerformanceMode,
-          ]
-        os: [ubuntu-latest]
-        exclude:
-          - cluster1: LightWeightStandaloneMode
-            cluster2: LightWeightStandaloneMode
-          - cluster1: LightWeightStandaloneMode
-            cluster2: ScalableSingleNodeMode
-          - cluster1: ScalableSingleNodeMode
-            cluster2: LightWeightStandaloneMode
-          - cluster1: ScalableSingleNodeMode
-            cluster2: HighPerformanceMode
-          - cluster1: HighPerformanceMode
-            cluster2: LightWeightStandaloneMode
-          - cluster1: HighPerformanceMode
-            cluster2: HighPerformanceMode
-          - cluster1: PipeConsensusBatchMode
-            cluster2: LightWeightStandaloneMode
-          - cluster1: PipeConsensusBatchMode
-            cluster2: HighPerformanceMode
-          - cluster1: PipeConsensusStreamMode
-            cluster2: LightWeightStandaloneMode
-          - cluster1: PipeConsensusStreamMode
-            cluster2: HighPerformanceMode
-    runs-on: ${{ matrix.os }}
-    steps:
-      - uses: actions/checkout@v4
-      - name: Set up JDK ${{ matrix.java }}
-        uses: actions/setup-java@v4
-        with:
-          distribution: corretto
-          java-version: ${{ matrix.java }}
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-      - name: Cache Maven packages
-        uses: actions/cache@v4
-        with:
-          path: ~/.m2
-          key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
-          restore-keys: ${{ runner.os }}-m2-
-      - name: Sleep for a random duration between 0 and 10000 milliseconds
-        run: |
-          sleep  $(( $(( RANDOM % 10000 + 1 )) / 1000))
-      - name: IT Test
-        shell: bash
-        # we do not compile client-cpp for saving time, it is tested in 
client.yml
-        # we can skip influxdb-protocol because it has been tested separately 
in influxdb-protocol.yml
-        run: |
-          retry() {
-            local -i max_attempts=3
-            local -i attempt=1
-            local -i retry_sleep=5
-            local test_output
-
-            while [ $attempt -le $max_attempts ]; do
-              mvn clean verify \
-              -P with-integration-tests \
-              -DskipUTs \
-              -DintegrationTest.forkCount=1 -DConfigNodeMaxHeapSize=256 
-DDataNodeMaxHeapSize=1024 -DDataNodeMaxDirectMemorySize=768 \
-              -DClusterConfigurations=${{ matrix.cluster1 }},${{ 
matrix.cluster2 }} \
-              -pl integration-test \
-              -am -PMultiClusterIT2DualTreeManual \
-              -ntp >> ~/run-tests-$attempt.log && return 0
-              test_output=$(cat ~/run-tests-$attempt.log) 
-
-              echo "==================== BEGIN: ~/run-tests-$attempt.log 
===================="          
-              echo "$test_output"
-              echo "==================== END: ~/run-tests-$attempt.log 
======================"
-
-              if ! mv ~/run-tests-$attempt.log 
integration-test/target/cluster-logs/ 2>/dev/null; then
-                echo "Failed to move log file ~/run-tests-$attempt.log to 
integration-test/target/cluster-logs/. Skipping..."
-              fi
-
-              if echo "$test_output" | grep -q "Could not transfer artifact"; 
then
-                if [ $attempt -lt $max_attempts ]; then
-                  echo "Test failed with artifact transfer issue, attempt 
$attempt. Retrying in $retry_sleep seconds..."
-                  sleep $retry_sleep
-                  attempt=$((attempt + 1))
-                else
-                  echo "Test failed after $max_attempts attempts due to 
artifact transfer issue."
-                  echo "Treating this as a success because the issue is likely 
transient."
-                  return 0
-                fi
-              elif [ $? -ne 0 ]; then
-                echo "Test failed with a different error."
-                return 1
-              else
-                echo "Tests passed"
-                return 0
-              fi
-            done
-          }
-          retry
-      - name: Upload Artifact
-        if: failure()
-        uses: actions/upload-artifact@v4
-        with:
-          name: cluster-log-dual-tree-manual-java${{ matrix.java }}-${{ 
runner.os }}-${{ matrix.cluster1 }}-${{ matrix.cluster2 }}
-          path: integration-test/target/cluster-logs
-          retention-days: 30
-  SubscriptionTreeArchVerification:
-    strategy:
-      fail-fast: false
-      max-parallel: 15
-      matrix:
-        java: [17]
-        # StrongConsistencyClusterMode is ignored now because RatisConsensus 
has not been supported yet.
-        cluster1:
-          [
-            ScalableSingleNodeMode,
-            PipeConsensusBatchMode,
-            PipeConsensusStreamMode,
-          ]
-        cluster2: [ScalableSingleNodeMode]
-        os: [ubuntu-latest]
-    runs-on: ${{ matrix.os }}
-    steps:
-      - uses: actions/checkout@v4
-      - name: Set up JDK ${{ matrix.java }}
-        uses: actions/setup-java@v4
-        with:
-          distribution: corretto
-          java-version: ${{ matrix.java }}
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-      - name: Cache Maven packages
-        uses: actions/cache@v4
-        with:
-          path: ~/.m2
-          key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
-          restore-keys: ${{ runner.os }}-m2-
-      - name: Sleep for a random duration between 0 and 10000 milliseconds
-        run: |
-          sleep  $(( $(( RANDOM % 10000 + 1 )) / 1000))
-      - name: IT Test
-        shell: bash
-        # we do not compile client-cpp for saving time, it is tested in 
client.yml
-        # we can skip influxdb-protocol because it has been tested separately 
in influxdb-protocol.yml
-        run: |
-          retry() {
-            local -i max_attempts=3
-            local -i attempt=1
-            local -i retry_sleep=5
-            local test_output
-
-            while [ $attempt -le $max_attempts ]; do
-              mvn clean verify \
-              -P with-integration-tests \
-              -DskipUTs \
-              -DintegrationTest.forkCount=1 -DConfigNodeMaxHeapSize=256 
-DDataNodeMaxHeapSize=1024 -DDataNodeMaxDirectMemorySize=768 \
-              -DClusterConfigurations=${{ matrix.cluster1 }},${{ 
matrix.cluster2 }} \
-              -pl integration-test \
-              -am -PMultiClusterIT2SubscriptionTreeArchVerification \
-              -ntp >> ~/run-tests-$attempt.log && return 0
-              test_output=$(cat ~/run-tests-$attempt.log) 
-
-              echo "==================== BEGIN: ~/run-tests-$attempt.log 
===================="          
-              echo "$test_output"
-              echo "==================== END: ~/run-tests-$attempt.log 
======================"
-
-              if ! mv ~/run-tests-$attempt.log 
integration-test/target/cluster-logs/ 2>/dev/null; then
-                echo "Failed to move log file ~/run-tests-$attempt.log to 
integration-test/target/cluster-logs/. Skipping..."
-              fi
-
-              if echo "$test_output" | grep -q "Could not transfer artifact"; 
then
-                if [ $attempt -lt $max_attempts ]; then
-                  echo "Test failed with artifact transfer issue, attempt 
$attempt. Retrying in $retry_sleep seconds..."
-                  sleep $retry_sleep
-                  attempt=$((attempt + 1))
-                else
-                  echo "Test failed after $max_attempts attempts due to 
artifact transfer issue."
-                  echo "Treating this as a success because the issue is likely 
transient."
-                  return 0
-                fi
-              elif [ $? -ne 0 ]; then
-                echo "Test failed with a different error."
-                return 1
-              else
-                echo "Tests passed"
-                return 0
-              fi
-            done
-          }
-          retry
-      - name: Upload Artifact
-        if: failure()
-        uses: actions/upload-artifact@v4
-        with:
-          name: cluster-log-subscription-tree-arch-verification-java${{ 
matrix.java }}-${{ runner.os }}-${{ matrix.cluster1 }}-${{ matrix.cluster2 }}
-          path: integration-test/target/cluster-logs
-          retention-days: 30
-  SubscriptionTableArchVerification:
-    strategy:
-      fail-fast: false
-      max-parallel: 15
-      matrix:
-        java: [17]
-        # StrongConsistencyClusterMode is ignored now because RatisConsensus 
has not been supported yet.
-        cluster1: [ScalableSingleNodeMode]
-        cluster2: [ScalableSingleNodeMode]
-        os: [ubuntu-latest]
-    runs-on: ${{ matrix.os }}
-    steps:
-      - uses: actions/checkout@v4
-      - name: Set up JDK ${{ matrix.java }}
-        uses: actions/setup-java@v4
-        with:
-          distribution: corretto
-          java-version: ${{ matrix.java }}
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-      - name: Cache Maven packages
-        uses: actions/cache@v4
-        with:
-          path: ~/.m2
-          key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
-          restore-keys: ${{ runner.os }}-m2-
-      - name: Sleep for a random duration between 0 and 10000 milliseconds
-        run: |
-          sleep  $(( $(( RANDOM % 10000 + 1 )) / 1000))
-      - name: IT Test
-        shell: bash
-        # we do not compile client-cpp for saving time, it is tested in 
client.yml
-        # we can skip influxdb-protocol because it has been tested separately 
in influxdb-protocol.yml
-        run: |
-          retry() {
-            local -i max_attempts=3
-            local -i attempt=1
-            local -i retry_sleep=5
-            local test_output
-
-            while [ $attempt -le $max_attempts ]; do
-              mvn clean verify \
-              -P with-integration-tests \
-              -DskipUTs \
-              -DintegrationTest.forkCount=1 -DConfigNodeMaxHeapSize=256 
-DDataNodeMaxHeapSize=1024 -DDataNodeMaxDirectMemorySize=768 \
-              -DClusterConfigurations=${{ matrix.cluster1 }},${{ 
matrix.cluster2 }} \
-              -pl integration-test \
-              -am -PMultiClusterIT2SubscriptionTableArchVerification \
-              -ntp >> ~/run-tests-$attempt.log && return 0
-              test_output=$(cat ~/run-tests-$attempt.log) 
-
-              echo "==================== BEGIN: ~/run-tests-$attempt.log 
===================="          
-              echo "$test_output"
-              echo "==================== END: ~/run-tests-$attempt.log 
======================"
-
-              if ! mv ~/run-tests-$attempt.log 
integration-test/target/cluster-logs/ 2>/dev/null; then
-                echo "Failed to move log file ~/run-tests-$attempt.log to 
integration-test/target/cluster-logs/. Skipping..."
-              fi
-
-              if echo "$test_output" | grep -q "Could not transfer artifact"; 
then
-                if [ $attempt -lt $max_attempts ]; then
-                  echo "Test failed with artifact transfer issue, attempt 
$attempt. Retrying in $retry_sleep seconds..."
-                  sleep $retry_sleep
-                  attempt=$((attempt + 1))
-                else
-                  echo "Test failed after $max_attempts attempts due to 
artifact transfer issue."
-                  echo "Treating this as a success because the issue is likely 
transient."
-                  return 0
-                fi
-              elif [ $? -ne 0 ]; then
-                echo "Test failed with a different error."
-                return 1
-              else
-                echo "Tests passed"
-                return 0
-              fi
-            done
-          }
-          retry
-      - name: Upload Artifact
-        if: failure()
-        uses: actions/upload-artifact@v4
-        with:
-          name: cluster-log-subscription-table-arch-verification-java${{ 
matrix.java }}-${{ runner.os }}-${{ matrix.cluster1 }}-${{ matrix.cluster2 }}
-          path: integration-test/target/cluster-logs
-          retention-days: 30
-  SubscriptionTreeRegressionConsumer:
-    strategy:
-      fail-fast: false
-      max-parallel: 15
-      matrix:
-        java: [17]
-        # do not use HighPerformanceMode here, otherwise some tests will cause 
the GH runner to receive a shutdown signal
-        cluster1:
-          [
-            ScalableSingleNodeMode,
-            PipeConsensusBatchMode,
-            PipeConsensusStreamMode,
-          ]
-        cluster2: [ScalableSingleNodeMode]
-        os: [ubuntu-latest]
-    runs-on: ${{ matrix.os }}
-    steps:
-      - uses: actions/checkout@v4
-      - name: Set up JDK ${{ matrix.java }}
-        uses: actions/setup-java@v4
-        with:
-          distribution: corretto
-          java-version: ${{ matrix.java }}
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-      - name: Cache Maven packages
-        uses: actions/cache@v4
-        with:
-          path: ~/.m2
-          key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
-          restore-keys: ${{ runner.os }}-m2-
-      - name: Sleep for a random duration between 0 and 10000 milliseconds
-        run: |
-          sleep  $(( $(( RANDOM % 10000 + 1 )) / 1000))
-      - name: IT Test
-        shell: bash
-        # we do not compile client-cpp for saving time, it is tested in 
client.yml
-        # we can skip influxdb-protocol because it has been tested separately 
in influxdb-protocol.yml
-        run: |
-          retry() {
-            local -i max_attempts=3
-            local -i attempt=1
-            local -i retry_sleep=5
-            local test_output
-
-            while [ $attempt -le $max_attempts ]; do
-              mvn clean verify \
-              -P with-integration-tests \
-              -DskipUTs \
-              -DintegrationTest.forkCount=1 -DConfigNodeMaxHeapSize=256 
-DDataNodeMaxHeapSize=1024 -DDataNodeMaxDirectMemorySize=768 \
-              -DClusterConfigurations=${{ matrix.cluster1 }},${{ 
matrix.cluster2 }} \
-              -pl integration-test \
-              -am -PMultiClusterIT2SubscriptionTreeRegressionConsumer \
-              -ntp >> ~/run-tests-$attempt.log && return 0
-              test_output=$(cat ~/run-tests-$attempt.log) 
-
-              echo "==================== BEGIN: ~/run-tests-$attempt.log 
===================="          
-              echo "$test_output"
-              echo "==================== END: ~/run-tests-$attempt.log 
======================"
-
-              if ! mv ~/run-tests-$attempt.log 
integration-test/target/cluster-logs/ 2>/dev/null; then
-                echo "Failed to move log file ~/run-tests-$attempt.log to 
integration-test/target/cluster-logs/. Skipping..."
-              fi
-
-              if echo "$test_output" | grep -q "Could not transfer artifact"; 
then
-                if [ $attempt -lt $max_attempts ]; then
-                  echo "Test failed with artifact transfer issue, attempt 
$attempt. Retrying in $retry_sleep seconds..."
-                  sleep $retry_sleep
-                  attempt=$((attempt + 1))
-                else
-                  echo "Test failed after $max_attempts attempts due to 
artifact transfer issue."
-                  echo "Treating this as a success because the issue is likely 
transient."
-                  return 0
-                fi
-              elif [ $? -ne 0 ]; then
-                echo "Test failed with a different error."
-                return 1
-              else
-                echo "Tests passed"
-                return 0
-              fi
-            done
-          }
-          retry
-      - name: Upload Artifact
-        if: failure()
-        uses: actions/upload-artifact@v4
-        with:
-          name: cluster-log-subscription-tree-regression-consumer-java${{ 
matrix.java }}-${{ runner.os }}-${{ matrix.cluster1 }}-${{ matrix.cluster2 }}
-          path: integration-test/target/cluster-logs
-          retention-days: 30
-  SubscriptionTreeRegressionMisc:
-    strategy:
-      fail-fast: false
-      max-parallel: 15
-      matrix:
-        java: [17]
-        # do not use HighPerformanceMode here, otherwise some tests will cause 
the GH runner to receive a shutdown signal
-        cluster1:
-          [
-            ScalableSingleNodeMode,
-            PipeConsensusBatchMode,
-            PipeConsensusStreamMode,
-          ]
-        cluster2: [ScalableSingleNodeMode]
-        os: [ubuntu-latest]
-    runs-on: ${{ matrix.os }}
-    steps:
-      - uses: actions/checkout@v4
-      - name: Set up JDK ${{ matrix.java }}
-        uses: actions/setup-java@v4
-        with:
-          distribution: corretto
-          java-version: ${{ matrix.java }}
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-      - name: Cache Maven packages
-        uses: actions/cache@v4
-        with:
-          path: ~/.m2
-          key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
-          restore-keys: ${{ runner.os }}-m2-
-      - name: Sleep for a random duration between 0 and 10000 milliseconds
-        run: |
-          sleep  $(( $(( RANDOM % 10000 + 1 )) / 1000))
-      - name: IT Test
-        shell: bash
-        # we do not compile client-cpp for saving time, it is tested in 
client.yml
-        # we can skip influxdb-protocol because it has been tested separately 
in influxdb-protocol.yml
-        run: |
-          retry() {
-            local -i max_attempts=3
-            local -i attempt=1
-            local -i retry_sleep=5
-            local test_output
-
-            while [ $attempt -le $max_attempts ]; do
-              mvn clean verify \
-              -P with-integration-tests \
-              -DskipUTs \
-              -DintegrationTest.forkCount=1 -DConfigNodeMaxHeapSize=256 
-DDataNodeMaxHeapSize=1024 -DDataNodeMaxDirectMemorySize=768 \
-              -DClusterConfigurations=${{ matrix.cluster1 }},${{ 
matrix.cluster2 }} \
-              -pl integration-test \
-              -am -PMultiClusterIT2SubscriptionTreeRegressionMisc \
-              -ntp >> ~/run-tests-$attempt.log && return 0
-              test_output=$(cat ~/run-tests-$attempt.log) 
-
-              echo "==================== BEGIN: ~/run-tests-$attempt.log 
===================="          
-              echo "$test_output"
-              echo "==================== END: ~/run-tests-$attempt.log 
======================"
-
-              if ! mv ~/run-tests-$attempt.log 
integration-test/target/cluster-logs/ 2>/dev/null; then
-                echo "Failed to move log file ~/run-tests-$attempt.log to 
integration-test/target/cluster-logs/. Skipping..."
-              fi
-
-              if echo "$test_output" | grep -q "Could not transfer artifact"; 
then
-                if [ $attempt -lt $max_attempts ]; then
-                  echo "Test failed with artifact transfer issue, attempt 
$attempt. Retrying in $retry_sleep seconds..."
-                  sleep $retry_sleep
-                  attempt=$((attempt + 1))
-                else
-                  echo "Test failed after $max_attempts attempts due to 
artifact transfer issue."
-                  echo "Treating this as a success because the issue is likely 
transient."
-                  return 0
-                fi
-              elif [ $? -ne 0 ]; then
-                echo "Test failed with a different error."
-                return 1
-              else
-                echo "Tests passed"
-                return 0
-              fi
-            done
-          }
-          retry
-      - name: Upload Artifact
-        if: failure()
-        uses: actions/upload-artifact@v4
-        with:
-          name: cluster-log-subscription-tree-regression-misc-java${{ 
matrix.java }}-${{ runner.os }}-${{ matrix.cluster1 }}-${{ matrix.cluster2 }}
-          path: integration-test/target/cluster-logs
-          retention-days: 30
-  PipeDualTableManualBasic:
-    strategy:
-      fail-fast: false
-      max-parallel: 15
-      matrix:
-        java: [17]
-        # StrongConsistencyClusterMode is ignored now because RatisConsensus 
has not been supported yet.
-        cluster:
-          [
-            LightWeightStandaloneMode,
-            ScalableSingleNodeMode,
-            HighPerformanceMode,
-            PipeConsensusBatchMode,
-            PipeConsensusStreamMode,
-          ]
-        os: [ubuntu-latest]
-    runs-on: ${{ matrix.os }}
-    steps:
-      - uses: actions/checkout@v4
-      - name: Set up JDK ${{ matrix.java }}
-        uses: actions/setup-java@v4
-        with:
-          distribution: corretto
-          java-version: ${{ matrix.java }}
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-      - name: Cache Maven packages
-        uses: actions/cache@v4
-        with:
-          path: ~/.m2
-          key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
-          restore-keys: ${{ runner.os }}-m2-
-      - name: Sleep for a random duration between 0 and 10000 milliseconds
-        run: |
-          sleep  $(( $(( RANDOM % 10000 + 1 )) / 1000))
-      - name: IT Test
-        shell: bash
-        # we do not compile client-cpp for saving time, it is tested in 
client.yml
-        # we can skip influxdb-protocol because it has been tested separately 
in influxdb-protocol.yml
-        run: |
-          retry() {
-            local -i max_attempts=3
-            local -i attempt=1
-            local -i retry_sleep=5
-            local test_output
-
-            while [ $attempt -le $max_attempts ]; do
-              mvn clean verify \
-              -P with-integration-tests \
-              -DskipUTs \
-              -DintegrationTest.forkCount=1 -DConfigNodeMaxHeapSize=256 
-DDataNodeMaxHeapSize=1024 -DDataNodeMaxDirectMemorySize=768 \
-              -DClusterConfigurations=${{ matrix.cluster }},${{ matrix.cluster 
}} \
-              -pl integration-test \
-              -am -PMultiClusterIT2DualTableManualBasic \
-              -ntp >> ~/run-tests-$attempt.log && return 0
-              test_output=$(cat ~/run-tests-$attempt.log) 
-
-              echo "==================== BEGIN: ~/run-tests-$attempt.log 
===================="          
-              echo "$test_output"
-              echo "==================== END: ~/run-tests-$attempt.log 
======================"
-
-              if ! mv ~/run-tests-$attempt.log 
integration-test/target/cluster-logs/ 2>/dev/null; then
-                echo "Failed to move log file ~/run-tests-$attempt.log to 
integration-test/target/cluster-logs/. Skipping..."
-              fi
-
-              if echo "$test_output" | grep -q "Could not transfer artifact"; 
then
-                if [ $attempt -lt $max_attempts ]; then
-                  echo "Test failed with artifact transfer issue, attempt 
$attempt. Retrying in $retry_sleep seconds..."
-                  sleep $retry_sleep
-                  attempt=$((attempt + 1))
-                else
-                  echo "Test failed after $max_attempts attempts due to 
artifact transfer issue."
-                  echo "Treating this as a success because the issue is likely 
transient."
-                  return 0
-                fi
-              elif [ $? -ne 0 ]; then
-                echo "Test failed with a different error."
-                return 1
-              else
-                echo "Tests passed"
-                return 0
-              fi
-            done
-          }
-          retry
-      - name: Upload Artifact
-        if: failure()
-        uses: actions/upload-artifact@v4
-        with:
-          name: cluster-log-dual-table-manual-basic-java${{ matrix.java }}-${{ 
runner.os }}-${{ matrix.cluster }}-${{ matrix.cluster }}
-          path: integration-test/target/cluster-logs
-          retention-days: 30
-  PipeDualTableManualEnhanced:
-    strategy:
-      fail-fast: false
-      max-parallel: 15
-      matrix:
-        java: [17]
-        # StrongConsistencyClusterMode is ignored now because RatisConsensus 
has not been supported yet.
-        cluster:
-          [
-            LightWeightStandaloneMode,
-            ScalableSingleNodeMode,
-            HighPerformanceMode,
-            PipeConsensusBatchMode,
-            PipeConsensusStreamMode,
-          ]
-        os: [ubuntu-latest]
-    runs-on: ${{ matrix.os }}
-    steps:
-      - uses: actions/checkout@v4
-      - name: Set up JDK ${{ matrix.java }}
-        uses: actions/setup-java@v4
-        with:
-          distribution: corretto
-          java-version: ${{ matrix.java }}
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-      - name: Cache Maven packages
-        uses: actions/cache@v4
-        with:
-          path: ~/.m2
-          key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
-          restore-keys: ${{ runner.os }}-m2-
-      - name: Sleep for a random duration between 0 and 10000 milliseconds
-        run: |
-          sleep  $(( $(( RANDOM % 10000 + 1 )) / 1000))
-      - name: IT Test
-        shell: bash
-        # we do not compile client-cpp for saving time, it is tested in 
client.yml
-        # we can skip influxdb-protocol because it has been tested separately 
in influxdb-protocol.yml
-        run: |
-          retry() {
-            local -i max_attempts=3
-            local -i attempt=1
-            local -i retry_sleep=5
-            local test_output
-
-            while [ $attempt -le $max_attempts ]; do
-              mvn clean verify \
-              -P with-integration-tests \
-              -DskipUTs \
-              -DintegrationTest.forkCount=1 -DConfigNodeMaxHeapSize=256 
-DDataNodeMaxHeapSize=1024 -DDataNodeMaxDirectMemorySize=768 \
-              -DClusterConfigurations=${{ matrix.cluster }},${{ matrix.cluster 
}} \
-              -pl integration-test \
-              -am -PMultiClusterIT2DualTableManualEnhanced \
-              -ntp >> ~/run-tests-$attempt.log && return 0
-              test_output=$(cat ~/run-tests-$attempt.log) 
-
-              echo "==================== BEGIN: ~/run-tests-$attempt.log 
===================="          
-              echo "$test_output"
-              echo "==================== END: ~/run-tests-$attempt.log 
======================"
-
-              if ! mv ~/run-tests-$attempt.log 
integration-test/target/cluster-logs/ 2>/dev/null; then
-                echo "Failed to move log file ~/run-tests-$attempt.log to 
integration-test/target/cluster-logs/. Skipping..."
-              fi
-
-              if echo "$test_output" | grep -q "Could not transfer artifact"; 
then
-                if [ $attempt -lt $max_attempts ]; then
-                  echo "Test failed with artifact transfer issue, attempt 
$attempt. Retrying in $retry_sleep seconds..."
-                  sleep $retry_sleep
-                  attempt=$((attempt + 1))
-                else
-                  echo "Test failed after $max_attempts attempts due to 
artifact transfer issue."
-                  echo "Treating this as a success because the issue is likely 
transient."
-                  return 0
-                fi
-              elif [ $? -ne 0 ]; then
-                echo "Test failed with a different error."
-                return 1
-              else
-                echo "Tests passed"
-                return 0
-              fi
-            done
-          }
-          retry
-      - name: Upload Artifact
-        if: failure()
-        uses: actions/upload-artifact@v4
-        with:
-          name: cluster-log-dual-table-manual-enhanced-java${{ matrix.java 
}}-${{ runner.os }}-${{ matrix.cluster }}-${{ matrix.cluster }}
-          path: integration-test/target/cluster-logs
-          retention-days: 30
diff --git a/.github/workflows/daily-ut.yml b/.github/workflows/daily-ut.yml
deleted file mode 100644
index 40715e64c56..00000000000
--- a/.github/workflows/daily-ut.yml
+++ /dev/null
@@ -1,59 +0,0 @@
-name: Daily UT
-
-on:
-  schedule:
-    # Run at UTC 19:00 every day (CST 03:00 AM)
-    - cron: "0 19 * * *"
-
-concurrency:
-  group: ${{ github.workflow }}-${{ github.ref }}
-  cancel-in-progress: true
-
-env:
-  MAVEN_OPTS: -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false 
-Dmaven.wagon.http.retryHandler.class=standard 
-Dmaven.wagon.http.retryHandler.count=3
-  MAVEN_ARGS: --batch-mode --no-transfer-progress
-  DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
-
-jobs:
-  unit-test:
-    strategy:
-      fail-fast: false
-      max-parallel: 15
-      matrix:
-        java: [8]
-        os: [ubuntu-latest, windows-latest]
-        it_task: ["others", "datanode"]
-        include:
-          - java: 17
-            os: macos-latest
-            it_task: "datanode"
-          - java: 17
-            os: macos-latest
-            it_task: "others"
-    runs-on: ${{ matrix.os }}
-
-    steps:
-      - uses: actions/checkout@v4
-      - name: Set up JDK ${{ matrix.java }}
-        uses: actions/setup-java@v4
-        with:
-          distribution: corretto
-          java-version: ${{ matrix.java }}
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-      - name: Cache Maven packages
-        uses: actions/cache@v4
-        with:
-          path: ~/.m2
-          key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
-          restore-keys: ${{ runner.os }}-m2-
-      - name: Test Datanode Module with Maven
-        shell: bash
-        if: ${{ matrix.it_task == 'datanode'}}
-        run: mvn clean integration-test -Dtest.port.closed=true -pl 
iotdb-core/datanode -am -DskipTests -Diotdb.test.only=true
-      - name: Test Other Modules with Maven
-        shell: bash
-        if: ${{ matrix.it_task == 'others'}}
-        run: |
-          mvn clean install -DskipTests
-          mvn -P get-jar-with-dependencies,with-integration-tests clean test 
-Dtest.port.closed=true -Diotdb.test.skip=true
diff --git a/.github/workflows/dependency-check.yml 
b/.github/workflows/dependency-check.yml
deleted file mode 100644
index 79ef92ac796..00000000000
--- a/.github/workflows/dependency-check.yml
+++ /dev/null
@@ -1,62 +0,0 @@
-# This workflow will check if dependencies have changed (adding new 
dependencies or removing existing ones)
-
-name: Dependency Check
-
-on:
-  push:
-    branches:
-      - master
-      - "rel/*"
-      - "rc/*"
-    paths-ignore:
-      - "docs/**"
-      - "site/**"
-  pull_request:
-    branches:
-      - master
-      - "rel/*"
-      - "rc/*"
-      - "force_ci/**"
-    paths-ignore:
-      - "docs/**"
-      - "site/**"
-  # allow manually run the action:
-  workflow_dispatch:
-
-concurrency:
-  group: ${{ github.workflow }}-${{ github.ref }}
-  cancel-in-progress: true
-
-env:
-  MAVEN_OPTS: -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false 
-Dmaven.wagon.http.retryHandler.class=standard 
-Dmaven.wagon.http.retryHandler.count=3
-  MAVEN_ARGS: --batch-mode --no-transfer-progress
-  DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
-
-jobs:
-  dependency-check:
-    strategy:
-      fail-fast: false
-      max-parallel: 15
-      matrix:
-        java: [17]
-        os: [ubuntu-latest]
-    runs-on: ${{ matrix.os }}
-
-    steps:
-      - uses: actions/checkout@v4
-      - name: Set up JDK ${{ matrix.java }}
-        uses: actions/setup-java@v4
-        with:
-          distribution: corretto
-          java-version: ${{ matrix.java }}
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-      - name: Cache Maven packages
-        uses: actions/cache@v4
-        with:
-          path: ~/.m2
-          key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
-          restore-keys: ${{ runner.os }}-m2-
-      - name: Do the dependency check
-        shell: bash
-        run: mvn verify -Dmaven.test.skip=true -Dmdep.analyze.skip=true -P 
enable-sbom-check
diff --git a/.github/workflows/multi-language-client.yml 
b/.github/workflows/multi-language-client.yml
index 5d02d39b3c7..f72d03aaedc 100644
--- a/.github/workflows/multi-language-client.yml
+++ b/.github/workflows/multi-language-client.yml
@@ -97,7 +97,7 @@ jobs:
         # (was causing problems on windows, but could cause problem on linux, 
when updating the thrift module)
         run: |
           if [[ "$RUNNER_OS" == "Linux" ]]; then
-            ./mvnw clean verify -P with-cpp -pl 
iotdb-client/client-cpp,example/client-cpp-example -am 
-Diotdb-tools-thrift.version=0.14.1.1-glibc223-SNAPSHOT
+            ./mvnw clean verify -P with-cpp -pl 
iotdb-client/client-cpp,example/client-cpp-example -am
           else
             ./mvnw clean verify -P with-cpp -pl 
iotdb-client/client-cpp,example/client-cpp-example -am
           fi
diff --git a/.github/workflows/pipe-it.yml b/.github/workflows/pipe-it.yml
deleted file mode 100644
index b1c2b75fa9f..00000000000
--- a/.github/workflows/pipe-it.yml
+++ /dev/null
@@ -1,978 +0,0 @@
-name: Multi-Cluster IT
-
-on:
-  push:
-    branches:
-      - master
-      - "rel/*"
-      - "rc/*"
-    paths-ignore:
-      - "docs/**"
-      - "site/**"
-      - "iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/**" 
#queryengine
-  pull_request:
-    branches:
-      - master
-      - "rel/*"
-      - "rc/*"
-      - "force_ci/**"
-    paths-ignore:
-      - "docs/**"
-      - "site/**"
-      - "iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/**" 
#queryengine
-  # allow manually run the action:
-  workflow_dispatch:
-
-concurrency:
-  group: ${{ github.workflow }}-${{ github.ref }}
-  cancel-in-progress: true
-
-env:
-  MAVEN_OPTS: -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false 
-Dmaven.wagon.http.retryHandler.class=standard 
-Dmaven.wagon.http.retryHandler.count=3
-  MAVEN_ARGS: --batch-mode --no-transfer-progress
-  DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
-
-jobs:
-  single:
-    strategy:
-      fail-fast: false
-      max-parallel: 15
-      matrix:
-        java: [17]
-        # StrongConsistencyClusterMode is ignored now because RatisConsensus 
has not been supported yet.
-        cluster1: [HighPerformanceMode]
-        cluster2: [HighPerformanceMode]
-        os: [ubuntu-latest]
-    runs-on: ${{ matrix.os }}
-    steps:
-      - uses: actions/checkout@v4
-      - name: Set up JDK ${{ matrix.java }}
-        uses: actions/setup-java@v4
-        with:
-          distribution: corretto
-          java-version: ${{ matrix.java }}
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-      - name: Cache Maven packages
-        uses: actions/cache@v4
-        with:
-          path: ~/.m2
-          key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
-          restore-keys: ${{ runner.os }}-m2-
-      - name: Sleep for a random duration between 0 and 10000 milliseconds
-        run: |
-          sleep  $(( $(( RANDOM % 10000 + 1 )) / 1000))
-      - name: IT Test
-        shell: bash
-        # we do not compile client-cpp for saving time, it is tested in 
client.yml
-        # we can skip influxdb-protocol because it has been tested separately 
in influxdb-protocol.yml
-        run: |
-          retry() {
-            local -i max_attempts=3
-            local -i attempt=1
-            local -i retry_sleep=5
-            local test_output
-
-            while [ $attempt -le $max_attempts ]; do
-              mvn clean verify \
-              -P with-integration-tests \
-              -DskipUTs \
-              -DintegrationTest.forkCount=1 -DConfigNodeMaxHeapSize=256 
-DDataNodeMaxHeapSize=1024 -DDataNodeMaxDirectMemorySize=768 \
-              -DClusterConfigurations=${{ matrix.cluster1 }},${{ 
matrix.cluster2 }} \
-              -pl integration-test \
-              -am -PMultiClusterIT1 \
-              -ntp >> ~/run-tests-$attempt.log && return 0
-              test_output=$(cat ~/run-tests-$attempt.log) 
-
-              echo "==================== BEGIN: ~/run-tests-$attempt.log 
===================="          
-              echo "$test_output"
-              echo "==================== END: ~/run-tests-$attempt.log 
======================"
-
-              if ! mv ~/run-tests-$attempt.log 
integration-test/target/cluster-logs/ 2>/dev/null; then
-                echo "Failed to move log file ~/run-tests-$attempt.log to 
integration-test/target/cluster-logs/. Skipping..."
-              fi
-
-              if echo "$test_output" | grep -q "Could not transfer artifact"; 
then
-                if [ $attempt -lt $max_attempts ]; then
-                  echo "Test failed with artifact transfer issue, attempt 
$attempt. Retrying in $retry_sleep seconds..."
-                  sleep $retry_sleep
-                  attempt=$((attempt + 1))
-                else
-                  echo "Test failed after $max_attempts attempts due to 
artifact transfer issue."
-                  echo "Treating this as a success because the issue is likely 
transient."
-                  return 0
-                fi
-              elif [ $? -ne 0 ]; then
-                echo "Test failed with a different error."
-                return 1
-              else
-                echo "Tests passed"
-                return 0
-              fi
-            done
-          }
-          retry
-      - name: Upload Artifact
-        if: failure()
-        uses: actions/upload-artifact@v4
-        with:
-          name: cluster-log-single-java${{ matrix.java }}-${{ runner.os }}-${{ 
matrix.cluster1 }}-${{ matrix.cluster2 }}
-          path: integration-test/target/cluster-logs
-          retention-days: 30
-  dual-tree-auto-basic:
-    strategy:
-      fail-fast: false
-      max-parallel: 15
-      matrix:
-        java: [17]
-        # StrongConsistencyClusterMode is ignored now because RatisConsensus 
has not been supported yet.
-        cluster: [HighPerformanceMode]
-        os: [ubuntu-latest]
-    runs-on: ${{ matrix.os }}
-    steps:
-      - uses: actions/checkout@v4
-      - name: Set up JDK ${{ matrix.java }}
-        uses: actions/setup-java@v4
-        with:
-          distribution: corretto
-          java-version: ${{ matrix.java }}
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-      - name: Cache Maven packages
-        uses: actions/cache@v4
-        with:
-          path: ~/.m2
-          key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
-          restore-keys: ${{ runner.os }}-m2-
-      - name: Sleep for a random duration between 0 and 10000 milliseconds
-        run: |
-          sleep  $(( $(( RANDOM % 10000 + 1 )) / 1000))
-      - name: IT Test
-        shell: bash
-        # we do not compile client-cpp for saving time, it is tested in 
client.yml
-        # we can skip influxdb-protocol because it has been tested separately 
in influxdb-protocol.yml
-        run: |
-          retry() {
-            local -i max_attempts=3
-            local -i attempt=1
-            local -i retry_sleep=5
-            local test_output
-
-            while [ $attempt -le $max_attempts ]; do
-              mvn clean verify \
-              -P with-integration-tests \
-              -DskipUTs \
-              -DintegrationTest.forkCount=1 -DConfigNodeMaxHeapSize=256 
-DDataNodeMaxHeapSize=1024 -DDataNodeMaxDirectMemorySize=768 \
-              -DClusterConfigurations=${{ matrix.cluster }},${{ matrix.cluster 
}} \
-              -pl integration-test \
-              -am -PMultiClusterIT2DualTreeAutoBasic \
-              -ntp >> ~/run-tests-$attempt.log && return 0
-              test_output=$(cat ~/run-tests-$attempt.log) 
-
-              echo "==================== BEGIN: ~/run-tests-$attempt.log 
===================="          
-              echo "$test_output"
-              echo "==================== END: ~/run-tests-$attempt.log 
======================"
-
-              if ! mv ~/run-tests-$attempt.log 
integration-test/target/cluster-logs/ 2>/dev/null; then
-                echo "Failed to move log file ~/run-tests-$attempt.log to 
integration-test/target/cluster-logs/. Skipping..."
-              fi
-
-              if echo "$test_output" | grep -q "Could not transfer artifact"; 
then
-                if [ $attempt -lt $max_attempts ]; then
-                  echo "Test failed with artifact transfer issue, attempt 
$attempt. Retrying in $retry_sleep seconds..."
-                  sleep $retry_sleep
-                  attempt=$((attempt + 1))
-                else
-                  echo "Test failed after $max_attempts attempts due to 
artifact transfer issue."
-                  echo "Treating this as a success because the issue is likely 
transient."
-                  return 0
-                fi
-              elif [ $? -ne 0 ]; then
-                echo "Test failed with a different error."
-                return 1
-              else
-                echo "Tests passed"
-                return 0
-              fi
-            done
-          }
-          retry
-      - name: Upload Artifact
-        if: failure()
-        uses: actions/upload-artifact@v4
-        with:
-          name: cluster-log-dual-tree-auto-basic-java${{ matrix.java }}-${{ 
runner.os }}-${{ matrix.cluster }}-${{ matrix.cluster }}
-          path: integration-test/target/cluster-logs
-          retention-days: 30
-  dual-tree-auto-enhanced:
-    strategy:
-      fail-fast: false
-      max-parallel: 15
-      matrix:
-        java: [17]
-        # StrongConsistencyClusterMode is ignored now because RatisConsensus 
has not been supported yet.
-        cluster1: [HighPerformanceMode]
-        cluster2: [HighPerformanceMode]
-        os: [ubuntu-latest]
-    runs-on: ${{ matrix.os }}
-    steps:
-      - uses: actions/checkout@v4
-      - name: Set up JDK ${{ matrix.java }}
-        uses: actions/setup-java@v4
-        with:
-          distribution: corretto
-          java-version: ${{ matrix.java }}
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-      - name: Cache Maven packages
-        uses: actions/cache@v4
-        with:
-          path: ~/.m2
-          key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
-          restore-keys: ${{ runner.os }}-m2-
-      - name: Sleep for a random duration between 0 and 10000 milliseconds
-        run: |
-          sleep  $(( $(( RANDOM % 10000 + 1 )) / 1000))
-      - name: IT Test
-        shell: bash
-        # we do not compile client-cpp for saving time, it is tested in 
client.yml
-        # we can skip influxdb-protocol because it has been tested separately 
in influxdb-protocol.yml
-        run: |
-          retry() {
-            local -i max_attempts=3
-            local -i attempt=1
-            local -i retry_sleep=5
-            local test_output
-
-            while [ $attempt -le $max_attempts ]; do
-              mvn clean verify \
-              -P with-integration-tests \
-              -DskipUTs \
-              -DintegrationTest.forkCount=1 -DConfigNodeMaxHeapSize=256 
-DDataNodeMaxHeapSize=1024 -DDataNodeMaxDirectMemorySize=768 \
-              -DClusterConfigurations=${{ matrix.cluster1 }},${{ 
matrix.cluster2 }} \
-              -pl integration-test \
-              -am -PMultiClusterIT2DualTreeAutoEnhanced \
-              -ntp >> ~/run-tests-$attempt.log && return 0
-              test_output=$(cat ~/run-tests-$attempt.log) 
-
-              echo "==================== BEGIN: ~/run-tests-$attempt.log 
===================="          
-              echo "$test_output"
-              echo "==================== END: ~/run-tests-$attempt.log 
======================"
-
-              if ! mv ~/run-tests-$attempt.log 
integration-test/target/cluster-logs/ 2>/dev/null; then
-                echo "Failed to move log file ~/run-tests-$attempt.log to 
integration-test/target/cluster-logs/. Skipping..."
-              fi
-
-              if echo "$test_output" | grep -q "Could not transfer artifact"; 
then
-                if [ $attempt -lt $max_attempts ]; then
-                  echo "Test failed with artifact transfer issue, attempt 
$attempt. Retrying in $retry_sleep seconds..."
-                  sleep $retry_sleep
-                  attempt=$((attempt + 1))
-                else
-                  echo "Test failed after $max_attempts attempts due to 
artifact transfer issue."
-                  echo "Treating this as a success because the issue is likely 
transient."
-                  return 0
-                fi
-              elif [ $? -ne 0 ]; then
-                echo "Test failed with a different error."
-                return 1
-              else
-                echo "Tests passed"
-                return 0
-              fi
-            done
-          }
-          retry
-      - name: Upload Artifact
-        if: failure()
-        uses: actions/upload-artifact@v4
-        with:
-          name: cluster-log-dual-tree-auto-enhanced-java${{ matrix.java }}-${{ 
runner.os }}-${{ matrix.cluster1 }}-${{ matrix.cluster2 }}
-          path: integration-test/target/cluster-logs
-          retention-days: 30
-  dual-tree-manual:
-    strategy:
-      fail-fast: false
-      max-parallel: 15
-      matrix:
-        java: [17]
-        # StrongConsistencyClusterMode is ignored now because RatisConsensus 
has not been supported yet.
-        cluster1: [HighPerformanceMode]
-        cluster2: [HighPerformanceMode]
-        os: [ubuntu-latest]
-    runs-on: ${{ matrix.os }}
-    steps:
-      - uses: actions/checkout@v4
-      - name: Set up JDK ${{ matrix.java }}
-        uses: actions/setup-java@v4
-        with:
-          distribution: corretto
-          java-version: ${{ matrix.java }}
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-      - name: Cache Maven packages
-        uses: actions/cache@v4
-        with:
-          path: ~/.m2
-          key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
-          restore-keys: ${{ runner.os }}-m2-
-      - name: Sleep for a random duration between 0 and 10000 milliseconds
-        run: |
-          sleep  $(( $(( RANDOM % 10000 + 1 )) / 1000))
-      - name: IT Test
-        shell: bash
-        # we do not compile client-cpp for saving time, it is tested in 
client.yml
-        # we can skip influxdb-protocol because it has been tested separately 
in influxdb-protocol.yml
-        run: |
-          retry() {
-            local -i max_attempts=3
-            local -i attempt=1
-            local -i retry_sleep=5
-            local test_output
-
-            while [ $attempt -le $max_attempts ]; do
-              mvn clean verify \
-              -P with-integration-tests \
-              -DskipUTs \
-              -DintegrationTest.forkCount=1 -DConfigNodeMaxHeapSize=256 
-DDataNodeMaxHeapSize=1024 -DDataNodeMaxDirectMemorySize=768 \
-              -DClusterConfigurations=${{ matrix.cluster1 }},${{ 
matrix.cluster2 }} \
-              -pl integration-test \
-              -am -PMultiClusterIT2DualTreeManual \
-              -ntp >> ~/run-tests-$attempt.log && return 0
-              test_output=$(cat ~/run-tests-$attempt.log) 
-
-              echo "==================== BEGIN: ~/run-tests-$attempt.log 
===================="          
-              echo "$test_output"
-              echo "==================== END: ~/run-tests-$attempt.log 
======================"
-
-              if ! mv ~/run-tests-$attempt.log 
integration-test/target/cluster-logs/ 2>/dev/null; then
-                echo "Failed to move log file ~/run-tests-$attempt.log to 
integration-test/target/cluster-logs/. Skipping..."
-              fi
-
-              if echo "$test_output" | grep -q "Could not transfer artifact"; 
then
-                if [ $attempt -lt $max_attempts ]; then
-                  echo "Test failed with artifact transfer issue, attempt 
$attempt. Retrying in $retry_sleep seconds..."
-                  sleep $retry_sleep
-                  attempt=$((attempt + 1))
-                else
-                  echo "Test failed after $max_attempts attempts due to 
artifact transfer issue."
-                  echo "Treating this as a success because the issue is likely 
transient."
-                  return 0
-                fi
-              elif [ $? -ne 0 ]; then
-                echo "Test failed with a different error."
-                return 1
-              else
-                echo "Tests passed"
-                return 0
-              fi
-            done
-          }
-          retry
-      - name: Upload Artifact
-        if: failure()
-        uses: actions/upload-artifact@v4
-        with:
-          name: cluster-log-dual-tree-manual-java${{ matrix.java }}-${{ 
runner.os }}-${{ matrix.cluster1 }}-${{ matrix.cluster2 }}
-          path: integration-test/target/cluster-logs
-          retention-days: 30
-  subscription-tree-arch-verification:
-    strategy:
-      fail-fast: false
-      max-parallel: 15
-      matrix:
-        java: [17]
-        # StrongConsistencyClusterMode is ignored now because RatisConsensus 
has not been supported yet.
-        cluster1: [ScalableSingleNodeMode]
-        cluster2: [ScalableSingleNodeMode]
-        os: [ubuntu-latest]
-    runs-on: ${{ matrix.os }}
-    steps:
-      - uses: actions/checkout@v4
-      - name: Set up JDK ${{ matrix.java }}
-        uses: actions/setup-java@v4
-        with:
-          distribution: corretto
-          java-version: ${{ matrix.java }}
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-      - name: Cache Maven packages
-        uses: actions/cache@v4
-        with:
-          path: ~/.m2
-          key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
-          restore-keys: ${{ runner.os }}-m2-
-      - name: Sleep for a random duration between 0 and 10000 milliseconds
-        run: |
-          sleep  $(( $(( RANDOM % 10000 + 1 )) / 1000))
-      - name: IT Test
-        shell: bash
-        # we do not compile client-cpp for saving time, it is tested in 
client.yml
-        # we can skip influxdb-protocol because it has been tested separately 
in influxdb-protocol.yml
-        run: |
-          retry() {
-            local -i max_attempts=3
-            local -i attempt=1
-            local -i retry_sleep=5
-            local test_output
-
-            while [ $attempt -le $max_attempts ]; do
-              mvn clean verify \
-              -P with-integration-tests \
-              -DskipUTs \
-              -DintegrationTest.forkCount=1 -DConfigNodeMaxHeapSize=256 
-DDataNodeMaxHeapSize=1024 -DDataNodeMaxDirectMemorySize=768 \
-              -DClusterConfigurations=${{ matrix.cluster1 }},${{ 
matrix.cluster2 }} \
-              -pl integration-test \
-              -am -PMultiClusterIT2SubscriptionTreeArchVerification \
-              -ntp >> ~/run-tests-$attempt.log && return 0
-              test_output=$(cat ~/run-tests-$attempt.log) 
-
-              echo "==================== BEGIN: ~/run-tests-$attempt.log 
===================="          
-              echo "$test_output"
-              echo "==================== END: ~/run-tests-$attempt.log 
======================"
-
-              if ! mv ~/run-tests-$attempt.log 
integration-test/target/cluster-logs/ 2>/dev/null; then
-                echo "Failed to move log file ~/run-tests-$attempt.log to 
integration-test/target/cluster-logs/. Skipping..."
-              fi
-
-              if echo "$test_output" | grep -q "Could not transfer artifact"; 
then
-                if [ $attempt -lt $max_attempts ]; then
-                  echo "Test failed with artifact transfer issue, attempt 
$attempt. Retrying in $retry_sleep seconds..."
-                  sleep $retry_sleep
-                  attempt=$((attempt + 1))
-                else
-                  echo "Test failed after $max_attempts attempts due to 
artifact transfer issue."
-                  echo "Treating this as a success because the issue is likely 
transient."
-                  return 0
-                fi
-              elif [ $? -ne 0 ]; then
-                echo "Test failed with a different error."
-                return 1
-              else
-                echo "Tests passed"
-                return 0
-              fi
-            done
-          }
-          retry
-      - name: Upload Artifact
-        if: failure()
-        uses: actions/upload-artifact@v4
-        with:
-          name: cluster-log-subscription-tree-arch-verification-java${{ 
matrix.java }}-${{ runner.os }}-${{ matrix.cluster1 }}-${{ matrix.cluster2 }}
-          path: integration-test/target/cluster-logs
-          retention-days: 30
-  subscription-table-arch-verification:
-    strategy:
-      fail-fast: false
-      max-parallel: 15
-      matrix:
-        java: [17]
-        # StrongConsistencyClusterMode is ignored now because RatisConsensus 
has not been supported yet.
-        cluster1: [ScalableSingleNodeMode]
-        cluster2: [ScalableSingleNodeMode]
-        os: [ubuntu-latest]
-    runs-on: ${{ matrix.os }}
-    steps:
-      - uses: actions/checkout@v4
-      - name: Set up JDK ${{ matrix.java }}
-        uses: actions/setup-java@v4
-        with:
-          distribution: corretto
-          java-version: ${{ matrix.java }}
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-      - name: Cache Maven packages
-        uses: actions/cache@v4
-        with:
-          path: ~/.m2
-          key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
-          restore-keys: ${{ runner.os }}-m2-
-      - name: Sleep for a random duration between 0 and 10000 milliseconds
-        run: |
-          sleep  $(( $(( RANDOM % 10000 + 1 )) / 1000))
-      - name: IT Test
-        shell: bash
-        # we do not compile client-cpp for saving time, it is tested in 
client.yml
-        # we can skip influxdb-protocol because it has been tested separately 
in influxdb-protocol.yml
-        run: |
-          retry() {
-            local -i max_attempts=3
-            local -i attempt=1
-            local -i retry_sleep=5
-            local test_output
-
-            while [ $attempt -le $max_attempts ]; do
-              mvn clean verify \
-              -P with-integration-tests \
-              -DskipUTs \
-              -DintegrationTest.forkCount=1 -DConfigNodeMaxHeapSize=256 
-DDataNodeMaxHeapSize=1024 -DDataNodeMaxDirectMemorySize=768 \
-              -DClusterConfigurations=${{ matrix.cluster1 }},${{ 
matrix.cluster2 }} \
-              -pl integration-test \
-              -am -PMultiClusterIT2SubscriptionTableArchVerification \
-              -ntp >> ~/run-tests-$attempt.log && return 0
-              test_output=$(cat ~/run-tests-$attempt.log) 
-
-              echo "==================== BEGIN: ~/run-tests-$attempt.log 
===================="          
-              echo "$test_output"
-              echo "==================== END: ~/run-tests-$attempt.log 
======================"
-
-              if ! mv ~/run-tests-$attempt.log 
integration-test/target/cluster-logs/ 2>/dev/null; then
-                echo "Failed to move log file ~/run-tests-$attempt.log to 
integration-test/target/cluster-logs/. Skipping..."
-              fi
-
-              if echo "$test_output" | grep -q "Could not transfer artifact"; 
then
-                if [ $attempt -lt $max_attempts ]; then
-                  echo "Test failed with artifact transfer issue, attempt 
$attempt. Retrying in $retry_sleep seconds..."
-                  sleep $retry_sleep
-                  attempt=$((attempt + 1))
-                else
-                  echo "Test failed after $max_attempts attempts due to 
artifact transfer issue."
-                  echo "Treating this as a success because the issue is likely 
transient."
-                  return 0
-                fi
-              elif [ $? -ne 0 ]; then
-                echo "Test failed with a different error."
-                return 1
-              else
-                echo "Tests passed"
-                return 0
-              fi
-            done
-          }
-          retry
-      - name: Upload Artifact
-        if: failure()
-        uses: actions/upload-artifact@v4
-        with:
-          name: cluster-log-subscription-table-arch-verification-java${{ 
matrix.java }}-${{ runner.os }}-${{ matrix.cluster1 }}-${{ matrix.cluster2 }}
-          path: integration-test/target/cluster-logs
-          retention-days: 30
-  subscription-tree-regression-consumer:
-    strategy:
-      fail-fast: false
-      max-parallel: 15
-      matrix:
-        java: [17]
-        # do not use HighPerformanceMode here, otherwise some tests will cause 
the GH runner to receive a shutdown signal
-        cluster1: [ScalableSingleNodeMode]
-        cluster2: [ScalableSingleNodeMode]
-        os: [ubuntu-latest]
-    runs-on: ${{ matrix.os }}
-    steps:
-      - uses: actions/checkout@v4
-      - name: Set up JDK ${{ matrix.java }}
-        uses: actions/setup-java@v4
-        with:
-          distribution: corretto
-          java-version: ${{ matrix.java }}
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-      - name: Cache Maven packages
-        uses: actions/cache@v4
-        with:
-          path: ~/.m2
-          key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
-          restore-keys: ${{ runner.os }}-m2-
-      - name: Sleep for a random duration between 0 and 10000 milliseconds
-        run: |
-          sleep  $(( $(( RANDOM % 10000 + 1 )) / 1000))
-      - name: IT Test
-        shell: bash
-        # we do not compile client-cpp for saving time, it is tested in 
client.yml
-        # we can skip influxdb-protocol because it has been tested separately 
in influxdb-protocol.yml
-        run: |
-          retry() {
-            local -i max_attempts=3
-            local -i attempt=1
-            local -i retry_sleep=5
-            local test_output
-
-            while [ $attempt -le $max_attempts ]; do
-              mvn clean verify \
-              -P with-integration-tests \
-              -DskipUTs \
-              -DintegrationTest.forkCount=1 -DConfigNodeMaxHeapSize=256 
-DDataNodeMaxHeapSize=1024 -DDataNodeMaxDirectMemorySize=768 \
-              -DClusterConfigurations=${{ matrix.cluster1 }},${{ 
matrix.cluster2 }} \
-              -pl integration-test \
-              -am -PMultiClusterIT2SubscriptionTreeRegressionConsumer \
-              -ntp >> ~/run-tests-$attempt.log && return 0
-              test_output=$(cat ~/run-tests-$attempt.log) 
-
-              echo "==================== BEGIN: ~/run-tests-$attempt.log 
===================="          
-              echo "$test_output"
-              echo "==================== END: ~/run-tests-$attempt.log 
======================"
-
-              if ! mv ~/run-tests-$attempt.log 
integration-test/target/cluster-logs/ 2>/dev/null; then
-                echo "Failed to move log file ~/run-tests-$attempt.log to 
integration-test/target/cluster-logs/. Skipping..."
-              fi
-
-              if echo "$test_output" | grep -q "Could not transfer artifact"; 
then
-                if [ $attempt -lt $max_attempts ]; then
-                  echo "Test failed with artifact transfer issue, attempt 
$attempt. Retrying in $retry_sleep seconds..."
-                  sleep $retry_sleep
-                  attempt=$((attempt + 1))
-                else
-                  echo "Test failed after $max_attempts attempts due to 
artifact transfer issue."
-                  echo "Treating this as a success because the issue is likely 
transient."
-                  return 0
-                fi
-              elif [ $? -ne 0 ]; then
-                echo "Test failed with a different error."
-                return 1
-              else
-                echo "Tests passed"
-                return 0
-              fi
-            done
-          }
-          retry
-      - name: Upload Artifact
-        if: failure()
-        uses: actions/upload-artifact@v4
-        with:
-          name: cluster-log-subscription-tree-regression-consumer-java${{ 
matrix.java }}-${{ runner.os }}-${{ matrix.cluster1 }}-${{ matrix.cluster2 }}
-          path: integration-test/target/cluster-logs
-          retention-days: 30
-  subscription-tree-regression-misc:
-    strategy:
-      fail-fast: false
-      max-parallel: 15
-      matrix:
-        java: [17]
-        # do not use HighPerformanceMode here, otherwise some tests will cause 
the GH runner to receive a shutdown signal
-        cluster1: [ScalableSingleNodeMode]
-        cluster2: [ScalableSingleNodeMode]
-        os: [ubuntu-latest]
-    runs-on: ${{ matrix.os }}
-    steps:
-      - uses: actions/checkout@v4
-      - name: Set up JDK ${{ matrix.java }}
-        uses: actions/setup-java@v4
-        with:
-          distribution: corretto
-          java-version: ${{ matrix.java }}
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-      - name: Cache Maven packages
-        uses: actions/cache@v4
-        with:
-          path: ~/.m2
-          key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
-          restore-keys: ${{ runner.os }}-m2-
-      - name: Sleep for a random duration between 0 and 10000 milliseconds
-        run: |
-          sleep  $(( $(( RANDOM % 10000 + 1 )) / 1000))
-      - name: IT Test
-        shell: bash
-        # we do not compile client-cpp for saving time, it is tested in 
client.yml
-        # we can skip influxdb-protocol because it has been tested separately 
in influxdb-protocol.yml
-        run: |
-          retry() {
-            local -i max_attempts=3
-            local -i attempt=1
-            local -i retry_sleep=5
-            local test_output
-
-            while [ $attempt -le $max_attempts ]; do
-              mvn clean verify \
-              -P with-integration-tests \
-              -DskipUTs \
-              -DintegrationTest.forkCount=1 -DConfigNodeMaxHeapSize=256 
-DDataNodeMaxHeapSize=1024 -DDataNodeMaxDirectMemorySize=768 \
-              -DClusterConfigurations=${{ matrix.cluster1 }},${{ 
matrix.cluster2 }} \
-              -pl integration-test \
-              -am -PMultiClusterIT2SubscriptionTreeRegressionMisc \
-              -ntp >> ~/run-tests-$attempt.log && return 0
-              test_output=$(cat ~/run-tests-$attempt.log) 
-
-              echo "==================== BEGIN: ~/run-tests-$attempt.log 
===================="          
-              echo "$test_output"
-              echo "==================== END: ~/run-tests-$attempt.log 
======================"
-
-              if ! mv ~/run-tests-$attempt.log 
integration-test/target/cluster-logs/ 2>/dev/null; then
-                echo "Failed to move log file ~/run-tests-$attempt.log to 
integration-test/target/cluster-logs/. Skipping..."
-              fi
-
-              if echo "$test_output" | grep -q "Could not transfer artifact"; 
then
-                if [ $attempt -lt $max_attempts ]; then
-                  echo "Test failed with artifact transfer issue, attempt 
$attempt. Retrying in $retry_sleep seconds..."
-                  sleep $retry_sleep
-                  attempt=$((attempt + 1))
-                else
-                  echo "Test failed after $max_attempts attempts due to 
artifact transfer issue."
-                  echo "Treating this as a success because the issue is likely 
transient."
-                  return 0
-                fi
-              elif [ $? -ne 0 ]; then
-                echo "Test failed with a different error."
-                return 1
-              else
-                echo "Tests passed"
-                return 0
-              fi
-            done
-          }
-          retry
-      - name: Upload Artifact
-        if: failure()
-        uses: actions/upload-artifact@v4
-        with:
-          name: cluster-log-subscription-tree-regression-misc-java${{ 
matrix.java }}-${{ runner.os }}-${{ matrix.cluster1 }}-${{ matrix.cluster2 }}
-          path: integration-test/target/cluster-logs
-          retention-days: 30
-  dual-table-manual-basic:
-    strategy:
-      fail-fast: false
-      max-parallel: 15
-      matrix:
-        java: [17]
-        # StrongConsistencyClusterMode is ignored now because RatisConsensus 
has not been supported yet.
-        cluster: [HighPerformanceMode]
-        os: [ubuntu-latest]
-    runs-on: ${{ matrix.os }}
-    steps:
-      - uses: actions/checkout@v4
-      - name: Set up JDK ${{ matrix.java }}
-        uses: actions/setup-java@v4
-        with:
-          distribution: corretto
-          java-version: ${{ matrix.java }}
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-      - name: Cache Maven packages
-        uses: actions/cache@v4
-        with:
-          path: ~/.m2
-          key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
-          restore-keys: ${{ runner.os }}-m2-
-      - name: Sleep for a random duration between 0 and 10000 milliseconds
-        run: |
-          sleep  $(( $(( RANDOM % 10000 + 1 )) / 1000))
-      - name: IT Test
-        shell: bash
-        # we do not compile client-cpp for saving time, it is tested in 
client.yml
-        # we can skip influxdb-protocol because it has been tested separately 
in influxdb-protocol.yml
-        run: |
-          retry() {
-            local -i max_attempts=3
-            local -i attempt=1
-            local -i retry_sleep=5
-            local test_output
-
-            while [ $attempt -le $max_attempts ]; do
-              mvn clean verify \
-              -P with-integration-tests \
-              -DskipUTs \
-              -DintegrationTest.forkCount=1 -DConfigNodeMaxHeapSize=256 
-DDataNodeMaxHeapSize=1024 -DDataNodeMaxDirectMemorySize=768 \
-              -DClusterConfigurations=${{ matrix.cluster }},${{ matrix.cluster 
}} \
-              -pl integration-test \
-              -am -PMultiClusterIT2DualTableManualBasic \
-              -ntp >> ~/run-tests-$attempt.log && return 0
-              test_output=$(cat ~/run-tests-$attempt.log) 
-
-              echo "==================== BEGIN: ~/run-tests-$attempt.log 
===================="          
-              echo "$test_output"
-              echo "==================== END: ~/run-tests-$attempt.log 
======================"
-
-              if ! mv ~/run-tests-$attempt.log 
integration-test/target/cluster-logs/ 2>/dev/null; then
-                echo "Failed to move log file ~/run-tests-$attempt.log to 
integration-test/target/cluster-logs/. Skipping..."
-              fi
-
-              if echo "$test_output" | grep -q "Could not transfer artifact"; 
then
-                if [ $attempt -lt $max_attempts ]; then
-                  echo "Test failed with artifact transfer issue, attempt 
$attempt. Retrying in $retry_sleep seconds..."
-                  sleep $retry_sleep
-                  attempt=$((attempt + 1))
-                else
-                  echo "Test failed after $max_attempts attempts due to 
artifact transfer issue."
-                  echo "Treating this as a success because the issue is likely 
transient."
-                  return 0
-                fi
-              elif [ $? -ne 0 ]; then
-                echo "Test failed with a different error."
-                return 1
-              else
-                echo "Tests passed"
-                return 0
-              fi
-            done
-          }
-          retry
-      - name: Upload Artifact
-        if: failure()
-        uses: actions/upload-artifact@v4
-        with:
-          name: cluster-log-dual-table-manual-basic-java${{ matrix.java }}-${{ 
runner.os }}-${{ matrix.cluster }}-${{ matrix.cluster }}
-          path: integration-test/target/cluster-logs
-          retention-days: 30
-  dual-table-manual-enhanced:
-    strategy:
-      fail-fast: false
-      max-parallel: 15
-      matrix:
-        java: [17]
-        # StrongConsistencyClusterMode is ignored now because RatisConsensus 
has not been supported yet.
-        cluster: [HighPerformanceMode]
-        os: [ubuntu-latest]
-    runs-on: ${{ matrix.os }}
-    steps:
-      - uses: actions/checkout@v4
-      - name: Set up JDK ${{ matrix.java }}
-        uses: actions/setup-java@v4
-        with:
-          distribution: corretto
-          java-version: ${{ matrix.java }}
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-      - name: Cache Maven packages
-        uses: actions/cache@v4
-        with:
-          path: ~/.m2
-          key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
-          restore-keys: ${{ runner.os }}-m2-
-      - name: Sleep for a random duration between 0 and 10000 milliseconds
-        run: |
-          sleep  $(( $(( RANDOM % 10000 + 1 )) / 1000))
-      - name: IT Test
-        shell: bash
-        # we do not compile client-cpp for saving time, it is tested in 
client.yml
-        # we can skip influxdb-protocol because it has been tested separately 
in influxdb-protocol.yml
-        run: |
-          retry() {
-            local -i max_attempts=3
-            local -i attempt=1
-            local -i retry_sleep=5
-            local test_output
-
-            while [ $attempt -le $max_attempts ]; do
-              mvn clean verify \
-              -P with-integration-tests \
-              -DskipUTs \
-              -DintegrationTest.forkCount=1 -DConfigNodeMaxHeapSize=256 
-DDataNodeMaxHeapSize=1024 -DDataNodeMaxDirectMemorySize=768 \
-              -DClusterConfigurations=${{ matrix.cluster }},${{ matrix.cluster 
}} \
-              -pl integration-test \
-              -am -PMultiClusterIT2DualTableManualEnhanced \
-              -ntp >> ~/run-tests-$attempt.log && return 0
-              test_output=$(cat ~/run-tests-$attempt.log) 
-
-              echo "==================== BEGIN: ~/run-tests-$attempt.log 
===================="          
-              echo "$test_output"
-              echo "==================== END: ~/run-tests-$attempt.log 
======================"
-
-              if ! mv ~/run-tests-$attempt.log 
integration-test/target/cluster-logs/ 2>/dev/null; then
-                echo "Failed to move log file ~/run-tests-$attempt.log to 
integration-test/target/cluster-logs/. Skipping..."
-              fi
-
-              if echo "$test_output" | grep -q "Could not transfer artifact"; 
then
-                if [ $attempt -lt $max_attempts ]; then
-                  echo "Test failed with artifact transfer issue, attempt 
$attempt. Retrying in $retry_sleep seconds..."
-                  sleep $retry_sleep
-                  attempt=$((attempt + 1))
-                else
-                  echo "Test failed after $max_attempts attempts due to 
artifact transfer issue."
-                  echo "Treating this as a success because the issue is likely 
transient."
-                  return 0
-                fi
-              elif [ $? -ne 0 ]; then
-                echo "Test failed with a different error."
-                return 1
-              else
-                echo "Tests passed"
-                return 0
-              fi
-            done
-          }
-          retry
-      - name: Upload Artifact
-        if: failure()
-        uses: actions/upload-artifact@v4
-        with:
-          name: cluster-log-dual-table-manual-enhanced-java${{ matrix.java 
}}-${{ runner.os }}-${{ matrix.cluster }}-${{ matrix.cluster }}
-          path: integration-test/target/cluster-logs
-          retention-days: 30
-  triple:
-    strategy:
-      fail-fast: false
-      max-parallel: 1
-      matrix:
-        java: [ 17 ]
-        cluster1: [ ScalableSingleNodeMode ]
-        cluster2: [ ScalableSingleNodeMode ]
-        cluster3: [ ScalableSingleNodeMode ]
-        os: [ ubuntu-latest ]
-    runs-on: ${{ matrix.os }}
-    steps:
-      - uses: actions/checkout@v4
-      - name: Set up JDK ${{ matrix.java }}
-        uses: actions/setup-java@v4
-        with:
-          distribution: corretto
-          java-version: ${{ matrix.java }}
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-      - name: Cache Maven packages
-        uses: actions/cache@v4
-        with:
-          path: ~/.m2
-          key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
-          restore-keys: ${{ runner.os }}-m2-
-      - name: Sleep for a random duration between 0 and 10000 milliseconds
-        run: |
-          sleep  $(( $(( RANDOM % 10000 + 1 )) / 1000))
-      - name: IT Test
-        shell: bash
-        # we do not compile client-cpp for saving time, it is tested in 
client.yml
-        # we can skip influxdb-protocol because it has been tested separately 
in influxdb-protocol.yml
-        run: |
-          retry() {
-            local -i max_attempts=3
-            local -i attempt=1
-            local -i retry_sleep=5
-            local test_output
-
-            while [ $attempt -le $max_attempts ]; do
-              mvn clean verify \
-              -P with-integration-tests \
-              -DskipUTs \
-              -DintegrationTest.forkCount=1 -DConfigNodeMaxHeapSize=256 
-DDataNodeMaxHeapSize=1024 -DDataNodeMaxDirectMemorySize=768 \
-              -DClusterConfigurations=${{ matrix.cluster1 }},${{ 
matrix.cluster2 }},${{ matrix.cluster3 }} \
-              -pl integration-test \
-              -am -PMultiClusterIT3 \
-              -ntp >> ~/run-tests-$attempt.log && return 0
-              test_output=$(cat ~/run-tests-$attempt.log) 
-
-              echo "==================== BEGIN: ~/run-tests-$attempt.log 
===================="          
-              echo "$test_output"
-              echo "==================== END: ~/run-tests-$attempt.log 
======================"
-
-              if ! mv ~/run-tests-$attempt.log 
integration-test/target/cluster-logs/ 2>/dev/null; then
-                echo "Failed to move log file ~/run-tests-$attempt.log to 
integration-test/target/cluster-logs/. Skipping..."
-              fi
-
-              if echo "$test_output" | grep -q "Could not transfer artifact"; 
then
-                if [ $attempt -lt $max_attempts ]; then
-                  echo "Test failed with artifact transfer issue, attempt 
$attempt. Retrying in $retry_sleep seconds..."
-                  sleep $retry_sleep
-                  attempt=$((attempt + 1))
-                else
-                  echo "Test failed after $max_attempts attempts due to 
artifact transfer issue."
-                  echo "Treating this as a success because the issue is likely 
transient."
-                  return 0
-                fi
-              elif [ $? -ne 0 ]; then
-                echo "Test failed with a different error."
-                return 1
-              else
-                echo "Tests passed"
-                return 0
-              fi
-            done
-          }
-          retry
-      - name: Upload Artifact
-        if: failure()
-        uses: actions/upload-artifact@v4
-        with:
-          name: cluster-log-triple-java${{ matrix.java }}-${{ runner.os }}-${{ 
matrix.cluster1 }}-${{ matrix.cluster2 }}-${{ matrix.cluster3 }}
-          path: integration-test/target/cluster-logs
-          retention-days: 30
diff --git a/.github/workflows/sonar-codecov.yml 
b/.github/workflows/sonar-codecov.yml
deleted file mode 100644
index 32df2b171c0..00000000000
--- a/.github/workflows/sonar-codecov.yml
+++ /dev/null
@@ -1,89 +0,0 @@
-# This workflow will build a Java project with Maven
-# For more information see: 
https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven
-
-name: Sonar-Codecov
-
-on:
-  push:
-    branches:
-      - master
-      - "rel/*"
-      - "rc/*"
-    paths-ignore:
-      - "docs/**"
-      - "site/**"
-  pull_request:
-    branches:
-      - master
-      - "rel/*"
-      - "new_*"
-      - "rc/*"
-      - "force_ci/**"
-    paths-ignore:
-      - "docs/**"
-      - "site/**"
-  # allow manually run the action:
-  workflow_dispatch:
-
-concurrency:
-  group: ${{ github.workflow }}-${{ github.ref }}
-  cancel-in-progress: true
-
-env:
-  MAVEN_OPTS: -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false 
-Dmaven.wagon.http.retryHandler.class=standard 
-Dmaven.wagon.http.retryHandler.count=3
-  MAVEN_ARGS: --batch-mode --no-transfer-progress
-  PR_NUMBER: ${{ github.event.number }}
-  DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
-
-jobs:
-  codecov:
-    runs-on: ubuntu-latest
-    if: github.event_name == 'pull_request' && 
github.event.pull_request.head.repo.full_name == 'apache/iotdb' || 
github.event_name == 'push'
-
-    steps:
-      - uses: actions/checkout@v4
-      - name: Cache Maven packages
-        uses: actions/cache@v4
-        with:
-          path: ~/.m2
-          key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
-          restore-keys: ${{ runner.os }}-m2-
-      - name: Test
-        run: |
-          mvn -B -P with-code-coverage clean package -pl 
distribution,iotdb-client/cli,iotdb-client/session,iotdb-client/jdbc -am 
-Dtest.port.closed=true
-          mvn -B -P with-code-coverage post-integration-test -pl code-coverage
-      - name: Upload coverage reports to codecov
-        uses: codecov/codecov-action@v4
-        with:
-          token: ${{ secrets.CODECOV_TOKEN }}
-          files: ./code-coverage/target/jacoco-merged-reports/jacoco.xml
-
-  sonar:
-    runs-on: ubuntu-latest
-    if: github.event_name == 'pull_request' && 
github.event.pull_request.head.repo.full_name == 'apache/iotdb' || 
github.event_name == 'push'
-    steps:
-      - uses: actions/checkout@v4
-      - name: Set up JDK 17
-        uses: actions/setup-java@v4
-        with:
-          distribution: corretto
-          java-version: 17
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-      - name: Cache Maven packages
-        uses: actions/cache@v4
-        with:
-          path: ~/.m2
-          key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
-          restore-keys: ${{ runner.os }}-m2-
-      - name: SonarCloud Report
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-          SONAR_TOKEN: ${{ secrets.SONARCLOUD_TOKEN }}
-        run: |
-          mvn -B -P with-integration-tests,with-code-coverage verify 
sonar:sonar \
-          -Dsonar.organization=apache \
-          -Dsonar.projectKey=apache_iotdb \
-          -Dsonar.host.url=https://sonarcloud.io \
-          -Dsonar.token=${{ secrets.SONARCLOUD_TOKEN }} \
-          -DskipTests -pl '!distribution,!integration-test' -am
diff --git a/.github/workflows/table-cluster-it-1c1d.yml 
b/.github/workflows/table-cluster-it-1c1d.yml
deleted file mode 100644
index c192398b966..00000000000
--- a/.github/workflows/table-cluster-it-1c1d.yml
+++ /dev/null
@@ -1,90 +0,0 @@
-name: Table Cluster IT - 1C1D
-
-on:
-  push:
-    branches:
-      - master
-      - "rel/*"
-      - "rc/*"
-    paths-ignore:
-      - "docs/**"
-      - "site/**"
-  pull_request:
-    branches:
-      - master
-      - "rel/*"
-      - "rc/*"
-      - "force_ci/**"
-    paths-ignore:
-      - "docs/**"
-      - "site/**"
-  # allow manually run the action:
-  workflow_dispatch:
-
-concurrency:
-  group: ${{ github.workflow }}-${{ github.ref }}
-  cancel-in-progress: true
-
-env:
-  MAVEN_OPTS: -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false 
-Dmaven.wagon.http.retryHandler.class=standard 
-Dmaven.wagon.http.retryHandler.count=3
-  MAVEN_ARGS: --batch-mode --no-transfer-progress
-  DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
-
-jobs:
-  Simple:
-    strategy:
-      fail-fast: false
-      max-parallel: 15
-      matrix:
-        os: [ubuntu-latest, windows-latest]
-    runs-on: ${{ matrix.os }}
-
-    steps:
-      - uses: actions/checkout@v4
-      - name: Set up JDK
-        uses: actions/setup-java@v4
-        with:
-          distribution: corretto
-          java-version: 17
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-      - name: Cache Maven packages
-        uses: actions/cache@v4
-        with:
-          path: ~/.m2
-          key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
-          restore-keys: ${{ runner.os }}-m2-
-      - name: Adjust network dynamic TCP ports range
-        if: ${{ runner.os == 'Windows' }}
-        shell: pwsh
-        run: |
-          netsh int ipv4 set dynamicport tcp start=32768 num=32768
-          netsh int ipv4 set dynamicport udp start=32768 num=32768
-          netsh int ipv6 set dynamicport tcp start=32768 num=32768
-          netsh int ipv6 set dynamicport udp start=32768 num=32768
-      - name: Adjust Linux kernel somaxconn
-        if: ${{ runner.os == 'Linux' }}
-        shell: bash
-        run: sudo sysctl -w net.core.somaxconn=65535
-      #      - name: Adjust Mac kernel somaxconn
-      #        if: ${{ runner.os == 'macOS' }}
-      #        shell: bash
-      #        run: sudo sysctl -w kern.ipc.somaxconn=65535
-      - name: IT/UT Test
-        shell: bash
-        # we do not compile client-cpp for saving time, it is tested in 
client.yml
-        # we can skip influxdb-protocol because it has been tested separately 
in influxdb-protocol.yml
-        run: |
-          mvn clean verify \
-          -P with-integration-tests \
-          -DskipUTs \
-          -DintegrationTest.forkCount=2 -DDataNodeMaxHeapSize=1024 \
-          -pl integration-test \
-          -am -PTableSimpleIT
-      - name: Upload Artifact
-        if: failure()
-        uses: actions/upload-artifact@v4
-        with:
-          name: table-standalone-log-java${{ matrix.java }}-${{ runner.os }}
-          path: integration-test/target/cluster-logs
-          retention-days: 1
diff --git a/.github/workflows/table-cluster-it-1c3d.yml 
b/.github/workflows/table-cluster-it-1c3d.yml
deleted file mode 100644
index 2458023db02..00000000000
--- a/.github/workflows/table-cluster-it-1c3d.yml
+++ /dev/null
@@ -1,69 +0,0 @@
-name: Table Cluster IT - 1C3D
-
-on:
-  push:
-    branches:
-      - master
-      - "rel/*"
-      - "rc/*"
-    paths-ignore:
-      - "docs/**"
-      - "site/**"
-  pull_request:
-    branches:
-      - master
-      - "rel/*"
-      - "rc/*"
-      - "force_ci/**"
-    paths-ignore:
-      - "docs/**"
-      - "site/**"
-  # allow manually run the action:
-  workflow_dispatch:
-
-concurrency:
-  group: ${{ github.workflow }}-${{ github.ref }}
-  cancel-in-progress: true
-
-env:
-  MAVEN_OPTS: -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false 
-Dmaven.wagon.http.retryHandler.class=standard 
-Dmaven.wagon.http.retryHandler.count=3
-  MAVEN_ARGS: --batch-mode --no-transfer-progress
-  DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
-
-jobs:
-  Simple:
-    strategy:
-      fail-fast: false
-      max-parallel: 20
-      matrix:
-        java: [17]
-    runs-on: [self-hosted, iotdb]
-    #      group: self-hosted
-    #      labels: iotdb
-    steps:
-      - uses: actions/checkout@v4
-      - name: Set up JDK ${{ matrix.java }}
-        uses: actions/setup-java@v4
-        with:
-          distribution: corretto
-          java-version: ${{ matrix.java }}
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-      - name: IT/UT Test
-        shell: bash
-        # we do not compile client-cpp for saving time, it is tested in 
client.yml
-        # we can skip influxdb-protocol because it has been tested separately 
in influxdb-protocol.yml
-        run: |
-          mvn clean verify \
-          -P with-integration-tests \
-          -DskipUTs \
-          -DintegrationTest.forkCount=6 -DConfigNodeMaxHeapSize=1024 
-DDataNodeMaxHeapSize=1024 \
-          -pl integration-test \
-          -am -PTableClusterIT
-      - name: Upload Artifact
-        if: failure()
-        uses: actions/upload-artifact@v4
-        with:
-          name: table-cluster-log-java${{ matrix.java }}-${{ runner.os }}
-          path: integration-test/target/cluster-logs
-          retention-days: 1
diff --git a/.github/workflows/todos-check.yml 
b/.github/workflows/todos-check.yml
deleted file mode 100644
index 602edfb4612..00000000000
--- a/.github/workflows/todos-check.yml
+++ /dev/null
@@ -1,54 +0,0 @@
-name: Check TODOs and FIXMEs in Changed Files
-
-on:
-  pull_request:
-    branches:
-      - master
-      - 'dev/*'
-      - 'rel/*'
-      - "rc/*"
-      - 'force_ci/**'
-    paths-ignore:
-      - 'docs/**'
-      - 'site/**'
-  # allow manually run the action:
-  workflow_dispatch:
-
-jobs:
-  todo-check:
-    runs-on: ubuntu-latest
-
-    steps:
-      - name: Checkout code
-        uses: actions/checkout@v4
-
-      - name: Check for TODOs and FIXMEs in changed files
-        run: |
-          # Fetch the target branch
-          git fetch origin $GITHUB_BASE_REF
-          
-          git switch -c check_branch
-          
-          # Get the diff of the changes
-          echo Get the diff of the changes
-          DIFF=$(git diff origin/$GITHUB_BASE_REF check_branch  -- . 
':(exclude).github/workflows/todos-check.yml')
-          
-          if [ -z "$DIFF" ]; then
-            echo "No changes detected."
-            exit 0
-          fi
-          
-          
-          # Check the diff for TODOs
-          
-           # Check the diff for TODOs
-          echo Check the diff for TODOs
-          TODOsCOUNT=$(echo "$DIFF" | grep -E '^\+.*(TODO|FIXME)' | wc -l)
-          if [ "$TODOsCOUNT" -eq 0 ]; then
-            echo "No TODOs or FIXMEs found in changed content.";
-            exit 0
-          fi
-          
-          echo "TODO or FIXME found in the changes. Please resolve it before 
merging."
-          echo "$DIFF" | grep -E '^\+.*(TODO|FIXME)' | tee -a output.log
-          exit 1
diff --git a/.github/workflows/unit-test.yml b/.github/workflows/unit-test.yml
deleted file mode 100644
index d5fef5e5fe4..00000000000
--- a/.github/workflows/unit-test.yml
+++ /dev/null
@@ -1,71 +0,0 @@
-# This workflow will build a Java project with Maven
-# For more information see: 
https://help.github.com/actions/language-and-framework-guides/building-and-testing-java-with-maven
-
-name: Unit-Test
-
-on:
-  push:
-    branches:
-      - master
-      - "rel/*"
-      - "rc/*"
-    paths-ignore:
-      - "docs/**"
-      - "site/**"
-  pull_request:
-    branches:
-      - master
-      - "rel/*"
-      - "rc/*"
-      - "force_ci/**"
-    paths-ignore:
-      - "docs/**"
-      - "site/**"
-  # allow manually run the action:
-  workflow_dispatch:
-
-concurrency:
-  group: ${{ github.workflow }}-${{ github.ref }}
-  cancel-in-progress: true
-
-env:
-  MAVEN_OPTS: -Xms2g -Xmx4g -Dhttp.keepAlive=false 
-Dmaven.wagon.http.pool=false -Dmaven.wagon.http.retryHandler.class=standard 
-Dmaven.wagon.http.retryHandler.count=3
-  MAVEN_ARGS: --batch-mode --no-transfer-progress
-  DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
-
-jobs:
-  unit-test:
-    strategy:
-      fail-fast: false
-      max-parallel: 15
-      matrix:
-        java: [17]
-        os: [ubuntu-latest, windows-latest]
-        it_task: ["others", "datanode"]
-    runs-on: ${{ matrix.os }}
-
-    steps:
-      - uses: actions/checkout@v4
-      - name: Set up JDK ${{ matrix.java }}
-        uses: actions/setup-java@v4
-        with:
-          distribution: corretto
-          java-version: ${{ matrix.java }}
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-      - name: Cache Maven packages
-        uses: actions/cache@v4
-        with:
-          path: ~/.m2
-          key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
-          restore-keys: ${{ runner.os }}-m2-
-      - name: Test Datanode Module with Maven
-        shell: bash
-        if: ${{ matrix.it_task == 'datanode'}}
-        run: mvn clean integration-test -Dtest.port.closed=true -pl 
iotdb-core/datanode -am -DskipTests -Diotdb.test.only=true
-      - name: Test Other Modules with Maven
-        shell: bash
-        if: ${{ matrix.it_task == 'others'}}
-        run: |
-          mvn clean install -DskipTests
-          mvn -P get-jar-with-dependencies,with-integration-tests clean test 
-Dtest.port.closed=true -Diotdb.test.skip=true
diff --git a/.github/workflows/vulnerability-check.yml 
b/.github/workflows/vulnerability-check.yml
deleted file mode 100644
index f8e85378380..00000000000
--- a/.github/workflows/vulnerability-check.yml
+++ /dev/null
@@ -1,60 +0,0 @@
-name: vulnerability-check
-on:
-  schedule:
-    # Run at UTC 16:00 every week (CST 00:00 AM)
-    - cron: "0 16 * * 0"
-  workflow_dispatch:
-concurrency:
-  group: ${{ github.workflow }}-${{ github.ref }}
-  cancel-in-progress: true
-
-env:
-  MAVEN_OPTS: -Dhttp.keepAlive=false -Dmaven.wagon.http.pool=false 
-Dmaven.wagon.http.retryHandler.class=standard 
-Dmaven.wagon.http.retryHandler.count=3
-  MAVEN_ARGS: --batch-mode --no-transfer-progress
-  DEVELOCITY_ACCESS_KEY: ${{ secrets.DEVELOCITY_ACCESS_KEY }}
-
-jobs:
-  dependency-check:
-    strategy:
-      fail-fast: false
-      max-parallel: 15
-      matrix:
-        java: [17]
-        os: [ubuntu-latest]
-    runs-on: ${{ matrix.os }}
-
-    steps:
-      - uses: actions/checkout@v4
-      - name: Set up JDK ${{ matrix.java }}
-        uses: actions/setup-java@v4
-        with:
-          distribution: corretto
-          java-version: ${{ matrix.java }}
-        env:
-          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
-      - name: Cache Maven packages
-        uses: actions/cache@v4
-        with:
-          path: ~/.m2
-          key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}
-          restore-keys: ${{ runner.os }}-m2-
-      - name: Do Maven install
-        shell: bash
-        run: mvn clean install -DskipTests
-      - name: Do the dependency-check:check
-        shell: bash
-        run: mvn org.owasp:dependency-check-maven:check -DossIndexUsername=${{ 
secrets.OSS_INDEX_USER }} -DossIndexPassword=${{ secrets.OSS_INDEX_TOKEN }}
-      - name: Do the dependency-check:aggregate
-        shell: bash
-        run: mvn org.owasp:dependency-check-maven:aggregate 
-DossIndexUsername=${{ secrets.OSS_INDEX_USER }} -DossIndexPassword=${{ 
secrets.OSS_INDEX_TOKEN }}
-      - name: Convert UTC to East Asia Standard Time and Extract Date
-        run: |
-          utc_time="${{ github.run_started_at }}"
-          target_time=$(TZ=Asia/Shanghai date -d "$utc_time" +"%Y-%m-%d")
-          echo "DATE_EAST_ASIA=$target_time" >> $GITHUB_ENV
-      - name: Upload Artifact
-        uses: actions/upload-artifact@v4
-        with:
-          name: vulnerability-check-result-${{ runner.os }}-${{ 
env.DATE_EAST_ASIA }}
-          path: target/dependency-check-report.html
-          retention-days: 15
diff --git a/iotdb-client/client-cpp/pom.xml b/iotdb-client/client-cpp/pom.xml
index 77fa5318507..b21aa13a922 100644
--- a/iotdb-client/client-cpp/pom.xml
+++ b/iotdb-client/client-cpp/pom.xml
@@ -55,43 +55,37 @@
                 <artifactId>maven-resources-plugin</artifactId>
                 <executions>
                     <execution>
-                        <id>copy-test-resources</id>
+                        <id>copy-cpp-files</id>
                         <goals>
                             <goal>copy-resources</goal>
                         </goals>
                         <phase>validate</phase>
                         <configuration>
-                            
<outputDirectory>${project.build.directory}/build/test</outputDirectory>
+                            
<outputDirectory>${project.build.directory}/build/main/generated-sources-cpp</outputDirectory>
                             <resources>
                                 <resource>
-                                    
<directory>${project.basedir}/src/test</directory>
-                                    <filtering>true</filtering>
+                                    
<directory>${project.basedir}/src/main</directory>
+                                    <includes>
+                                        <include>**/*.h</include>
+                                        <include>**/*.cpp</include>
+                                        <include>**/*.cc</include>
+                                    </includes>
                                 </resource>
                             </resources>
                         </configuration>
                     </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-resources-plugin</artifactId>
-                <executions>
                     <execution>
-                        <id>copy-cpp-files</id>
+                        <id>copy-test-resources</id>
                         <goals>
                             <goal>copy-resources</goal>
                         </goals>
                         <phase>validate</phase>
                         <configuration>
-                            
<outputDirectory>${project.build.directory}/build/main/generated-sources-cpp</outputDirectory>
+                            
<outputDirectory>${project.build.directory}/build/test</outputDirectory>
                             <resources>
                                 <resource>
-                                    
<directory>${project.basedir}/src/main</directory>
-                                    <includes>
-                                        <include>**/*.h</include>
-                                        <include>**/*.cpp</include>
-                                        <include>**/*.cc</include>
-                                    </includes>
+                                    
<directory>${project.basedir}/src/test</directory>
+                                    <filtering>true</filtering>
                                 </resource>
                             </resources>
                         </configuration>

Reply via email to