Skip to content

chore(ci): bump taiki-e/install-action from 2.85.0 to 2.85.2 #829

chore(ci): bump taiki-e/install-action from 2.85.0 to 2.85.2

chore(ci): bump taiki-e/install-action from 2.85.0 to 2.85.2 #829

Workflow file for this run

# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
name: TPC-H SF10
permissions:
contents: read
concurrency:
group: ${{ github.repository }}-${{ github.head_ref || github.sha }}-${{ github.workflow }}
cancel-in-progress: true
on:
push:
branches: [ "main" ]
paths:
- "ballista/**"
- "benchmarks/**"
- "Cargo.toml"
- "Cargo.lock"
- "rust-toolchain.toml"
- ".github/workflows/tpch.yml"
- ".github/actions/setup-builder/**"
# docs-only changes cannot affect this job; exclusions are applied last
- "!**/*.md"
pull_request:
paths:
- "ballista/**"
- "benchmarks/**"
- "Cargo.toml"
- "Cargo.lock"
- "rust-toolchain.toml"
- ".github/workflows/tpch.yml"
- ".github/actions/setup-builder/**"
# docs-only changes cannot affect this job; exclusions are applied last
- "!**/*.md"
workflow_dispatch:
jobs:
tpch-sf10:
name: TPC-H SF10 (${{ matrix.label }})
runs-on: ubuntu-latest
container:
image: amd64/rust
strategy:
fail-fast: false
matrix:
include:
- label: "AQE off"
planner_args: ""
slug: "aqe-off"
- label: "AQE on"
planner_args: "-c ballista.planner.adaptive.enabled=true"
slug: "aqe-on"
- label: "AQE on, multi-partition tasks"
planner_args: "-c ballista.planner.adaptive.enabled=true -c ballista.scheduler.max_partitions_per_task=0"
slug: "aqe-on-mpt"
steps:
- name: Install dependencies
run: |
apt-get update
apt-get install -y netcat-traditional
- uses: actions/checkout@v7.0.1
with:
fetch-depth: 1
- name: Setup Rust toolchain
uses: ./.github/actions/setup-builder
with:
rust-version: stable
- uses: swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 #2.9.1
with:
# Share the build cache across all matrix legs — the compiled
# binaries are identical; only the per-suite CLI args differ.
shared-key: tpch-sf10
- name: Build Ballista binaries
run: |
cargo build --profile tpch-ci --locked \
-p ballista-scheduler \
-p ballista-executor \
-p ballista-benchmarks
- name: Install tpchgen-cli
uses: taiki-e/install-action@41049aa56687c35e0afa74eed4f09cec4f9afabf # v2.85.2
with:
tool: tpchgen-cli@2.0.2
- name: Generate TPC-H SF10 data
run: |
mkdir -p "$RUNNER_TEMP/tpch-data"
tpchgen-cli \
--scale-factor 10 \
--parts 16 \
--format=parquet \
--output-dir "$RUNNER_TEMP/tpch-data"
- name: Run TPC-H queries against Ballista cluster
env:
DATA_DIR: ${{ runner.temp }}/tpch-data
WORK_DIR: ${{ runner.temp }}/work
SCHEDULER_LOG: ${{ runner.temp }}/scheduler.log
EXECUTOR_LOG: ${{ runner.temp }}/executor.log
run: |
set -euo pipefail
mkdir -p "$WORK_DIR"
./target/tpch-ci/ballista-scheduler \
--bind-host 127.0.0.1 \
> "$SCHEDULER_LOG" 2>&1 &
SCHEDULER_PID=$!
./target/tpch-ci/ballista-executor \
--bind-host 127.0.0.1 \
--bind-port 50051 \
--scheduler-host 127.0.0.1 \
--scheduler-connect-timeout-seconds 10 \
--vcores 4 \
--memory-pool-size 2GB \
--work-dir "$WORK_DIR" \
> "$EXECUTOR_LOG" 2>&1 &
EXECUTOR_PID=$!
cleanup() {
echo "::group::scheduler log (tail)"
tail -n 200 "$SCHEDULER_LOG" || true
echo "::endgroup::"
echo "::group::executor log (tail)"
tail -n 200 "$EXECUTOR_LOG" || true
echo "::endgroup::"
kill "$SCHEDULER_PID" "$EXECUTOR_PID" 2>/dev/null || true
wait "$SCHEDULER_PID" "$EXECUTOR_PID" 2>/dev/null || true
}
trap cleanup EXIT
echo "Waiting for scheduler on 127.0.0.1:50050..."
for _ in $(seq 1 30); do
if nc -z 127.0.0.1 50050; then
break
fi
sleep 1
done
nc -z 127.0.0.1 50050 || { echo "scheduler did not start"; exit 1; }
echo "Waiting for executor on 127.0.0.1:50051..."
for _ in $(seq 1 30); do
if nc -z 127.0.0.1 50051; then
break
fi
sleep 1
done
nc -z 127.0.0.1 50051 || { echo "executor did not start"; exit 1; }
# This matrix leg runs one planner configuration against the whole
# SF10 dataset. The other legs run in parallel jobs.
# q16 omitted: still unsupported (matches benchmarks/run.sh).
for q in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 17 18 19 20 21 22; do
echo "::group::[${{ matrix.label }}] Query $q"
./target/tpch-ci/tpch benchmark ballista \
--host 127.0.0.1 --port 50050 \
--query "$q" \
--path "$DATA_DIR" \
--format parquet \
--partitions 16 \
--iterations 1 \
--verify \
-c datafusion.optimizer.prefer_hash_join=false \
${{ matrix.planner_args }}
echo "::endgroup::"
done
- name: Upload cluster logs on failure
if: failure()
uses: actions/upload-artifact@v7
with:
name: tpch-sf10-cluster-logs-${{ matrix.slug }}
retention-days: 14
path: |
${{ runner.temp }}/scheduler.log
${{ runner.temp }}/executor.log
if-no-files-found: ignore