Skip to content

Commit 9883910

Browse files
Refactor Docker workflows and remove obsolete tester image script (#2385)
### What problem does this PR solve? Remove tester docker container. Use builder container. ### Type of change - [x] Refactoring
1 parent 3f13ccb commit 9883910

File tree

9 files changed

+63
-123
lines changed

9 files changed

+63
-123
lines changed

.github/workflows/slow_test.yml

Lines changed: 3 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -60,22 +60,10 @@ jobs:
6060
echo "BUILDER_CONTAINER=${BUILDER_CONTAINER}" >> $GITHUB_ENV
6161
echo "CPUS=${CPUS}" >> $GITHUB_ENV
6262
TZ=${TZ:-$(readlink -f /etc/localtime | awk -F '/zoneinfo/' '{print $2}')}
63-
sudo docker rm -f -v ${BUILDER_CONTAINER} && sudo docker run --cap-add=NET_ADMIN -d --name ${BUILDER_CONTAINER} -e TZ=$TZ -e CMAKE_BUILD_PARALLEL_LEVEL=${CPUS} -v $PWD:/infinity -v /boot:/boot --cpus ${CPUS} infiniflow/infinity_builder:centos7_clang18
64-
65-
- name: Create Test image & Start tester container
66-
if: ${{ !cancelled() && !failure() && steps.choose_test_type.outputs.RUN_TSAN_TEST == 'true' }}
67-
run: |
68-
TESTER_IMAGE_NAME=infiniflow/infinity_tester:centos7_clang18
69-
sudo python3 scripts/build_tester_image.py --image_name=${TESTER_IMAGE_NAME} --bin_path=${RUNNER_WORKSPACE_PREFIX}/build_tester_image
70-
TESTER_CONTAINER=infinity_tester_$(od -An -N4 -tx4 /dev/urandom | tr -d ' ')
71-
CPUS=${CPUS:-$(nproc)}
72-
echo "TESTER_CONTAINER=${TESTER_CONTAINER}" >> $GITHUB_ENV
73-
echo "CPUS=${CPUS}" >> $GITHUB_ENV
74-
TZ=${TZ:-$(readlink -f /etc/localtime | awk -F '/zoneinfo/' '{print $2}')}
7563
INF_DIRECTORY=$PWD
7664
echo "${INF_DIRECTORY}" | sudo tee .tester_env
77-
sudo docker rm -f -v ${TESTER_CONTAINER} && sudo docker run --net=host --privileged --cap-add=NET_ADMIN -d --name ${TESTER_CONTAINER} -e TZ=$TZ -e CMAKE_BUILD_PARALLEL_LEVEL=${CPUS} -v $PWD:/infinity -v /boot:/boot -v /var/run/docker.sock:/var/run/docker.sock --cpus ${CPUS} ${TESTER_IMAGE_NAME}
78-
sudo docker exec ${TESTER_CONTAINER} bash -c "cd /infinity/ && rm -fr /var/infinity && export INF_DIRECTORY=`cat .tester_env` && echo INF_DIRECTORY=${INF_DIRECTORY}"
65+
sudo docker pull infiniflow/infinity_builder:centos7_clang18
66+
sudo docker rm -f -v ${BUILDER_CONTAINER} && sudo docker run --net=host --privileged --cap-add=NET_ADMIN -d --name ${BUILDER_CONTAINER} -e TZ=$TZ -e CMAKE_BUILD_PARALLEL_LEVEL=${CPUS} -v $PWD:/infinity -v /boot:/boot -v /var/run/docker.sock:/var/run/docker.sock --cpus ${CPUS} infiniflow/infinity_builder:centos7_clang18
7967
8068
- name: Build release version
8169
if: ${{ !cancelled() && !failure() }}
@@ -122,11 +110,10 @@ jobs:
122110
if: ${{ !cancelled() && !failure() && steps.choose_test_type.outputs.RUN_TSAN_TEST == 'true' }}
123111
id: run_cluster_test
124112
run: |
125-
sudo docker exec ${TESTER_CONTAINER} bash -c "rm -rf /root/.config/pip/pip.conf && cd /infinity/ && pip3 uninstall -y infinity-sdk infinity-embedded-sdk && cd python/infinity_sdk/ && pip3 install . -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host tuna.tsinghua.edu.cn && cd ../.."
126113
# Fix sanitizer: https://github.com/ClickHouse/ClickHouse/issues/64086
127114
old_value=$(sudo sysctl -n vm.mmap_rnd_bits)
128115
sudo sysctl -w vm.mmap_rnd_bits=28
129-
sudo docker exec ${TESTER_CONTAINER} bash -c "cd /infinity/ && rm -fr /var/infinity && export INF_DIRECTORY=`cat .tester_env` && echo INF_DIRECTORY=${INF_DIRECTORY} && python3 tools/run_cluster_test.py --infinity_path=cmake-build-debug/src/infinity --infinity_dir=${INF_DIRECTORY} --minio_port=9005 --minio_console_port=9006"
116+
sudo docker exec ${BUILDER_CONTAINER} bash -c "cd /infinity/ && rm -fr /var/infinity && export INF_DIRECTORY=`cat .tester_env` && echo INF_DIRECTORY=${INF_DIRECTORY} && python3 tools/run_cluster_test.py --infinity_path=cmake-build-debug/src/infinity --infinity_dir=${INF_DIRECTORY} --minio_port=9005 --minio_console_port=9006"
130117
sudo sysctl -w vm.mmap_rnd_bits=$old_value
131118
132119
- name: Collect thread sanitizer output in cluster test

.github/workflows/tests.yml

Lines changed: 28 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -54,26 +54,14 @@ jobs:
5454
echo "BUILDER_CONTAINER=${BUILDER_CONTAINER}" >> $GITHUB_ENV
5555
echo "CPUS=${CPUS}" >> $GITHUB_ENV
5656
TZ=${TZ:-$(readlink -f /etc/localtime | awk -F '/zoneinfo/' '{print $2}')}
57-
sudo docker rm -f -v ${BUILDER_CONTAINER} && sudo docker run --cap-add=NET_ADMIN -d --name ${BUILDER_CONTAINER} -e TZ=$TZ -e CMAKE_BUILD_PARALLEL_LEVEL=${CPUS} -v $PWD:/infinity -v /boot:/boot --cpus ${CPUS} infiniflow/infinity_builder:centos7_clang18
58-
59-
- name: Create Test image & Start tester container
60-
if: ${{ !cancelled() && !failure() }}
61-
run: |
62-
TESTER_IMAGE_NAME=infiniflow/infinity_tester:centos7_clang18
63-
sudo python3 scripts/build_tester_image.py --image_name=${TESTER_IMAGE_NAME} --bin_path=${RUNNER_WORKSPACE_PREFIX}/build_tester_image
64-
TESTER_CONTAINER=infinity_tester_$(od -An -N4 -tx4 /dev/urandom | tr -d ' ')
65-
CPUS=${CPUS:-$(nproc)}
66-
echo "TESTER_CONTAINER=${TESTER_CONTAINER}" >> $GITHUB_ENV
67-
echo "CPUS=${CPUS}" >> $GITHUB_ENV
68-
TZ=${TZ:-$(readlink -f /etc/localtime | awk -F '/zoneinfo/' '{print $2}')}
69-
INF_DIRECTORY=$PWD
70-
echo "${INF_DIRECTORY}" | sudo tee .tester_env
71-
sudo docker rm -f -v ${TESTER_CONTAINER} && sudo docker run --net=host --privileged --cap-add=NET_ADMIN -d --name ${TESTER_CONTAINER} -e TZ=$TZ -e CMAKE_BUILD_PARALLEL_LEVEL=${CPUS} -v $PWD:/infinity -v /boot:/boot -v /var/run/docker.sock:/var/run/docker.sock --cpus ${CPUS} ${TESTER_IMAGE_NAME}
72-
sudo docker exec ${TESTER_CONTAINER} bash -c "cd /infinity/ && rm -fr /var/infinity && export INF_DIRECTORY=`cat .tester_env` && echo INF_DIRECTORY=${INF_DIRECTORY}"
57+
INF_DIRECTORY=$PWD
58+
echo "${INF_DIRECTORY}" | sudo tee .tester_env
59+
sudo docker pull infiniflow/infinity_builder:centos7_clang18
60+
sudo docker rm -f -v ${BUILDER_CONTAINER} && sudo docker run --net=host --privileged --cap-add=NET_ADMIN -d --name ${BUILDER_CONTAINER} -e TZ=$TZ -e CMAKE_BUILD_PARALLEL_LEVEL=${CPUS} -v $PWD:/infinity -v /boot:/boot -v /var/run/docker.sock:/var/run/docker.sock --cpus ${CPUS} infiniflow/infinity_builder:centos7_clang18
7361
7462
- name: Build debug version
7563
if: ${{ !cancelled() && !failure() }}
76-
run: sudo docker exec ${BUILDER_CONTAINER} bash -c "git config --global safe.directory \"*\" && cd /infinity && rm -fr cmake-build-debug && mkdir -p cmake-build-debug && cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug -DCMAKE_JOB_POOLS:STRING=link=8 -S /infinity -B /infinity/cmake-build-debug && cmake --build /infinity/cmake-build-debug --target infinity test_main"
64+
run: sudo docker exec ${BUILDER_CONTAINER} bash -c "git config --global safe.directory \"*\" && cd /infinity && rm -fr cmake-build-debug && mkdir -p cmake-build-debug && cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug -DCMAKE_JOB_POOLS:STRING=link=8 -S /infinity -B /infinity/cmake-build-debug && cmake --build /infinity/cmake-build-debug --target infinity"
7765

7866
- name: Install pysdk
7967
if: ${{ !cancelled() && !failure() }}
@@ -83,21 +71,13 @@ jobs:
8371
if: ${{ !cancelled() && !failure() }}
8472
id: run_cluster_test
8573
run: |
86-
sudo docker exec ${TESTER_CONTAINER} bash -c "rm -rf /root/.config/pip/pip.conf && cd /infinity/ && pip3 uninstall -y infinity-sdk infinity-embedded-sdk && cd python/infinity_sdk/ && pip3 install . -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host tuna.tsinghua.edu.cn && cd ../.."
87-
sudo docker exec ${TESTER_CONTAINER} bash -c "cd /infinity/ && rm -fr /var/infinity && export INF_DIRECTORY=`cat .tester_env` && echo INF_DIRECTORY=${INF_DIRECTORY} && python3 tools/run_cluster_test.py --infinity_path=cmake-build-debug/src/infinity --infinity_dir=${INF_DIRECTORY} --minio_port=9005 --minio_console_port=9006"
74+
sudo docker exec ${BUILDER_CONTAINER} bash -c "cd /infinity/ && rm -fr /var/infinity && export INF_DIRECTORY=`cat .tester_env` && echo INF_DIRECTORY=${INF_DIRECTORY} && python3 tools/run_cluster_test.py --infinity_path=cmake-build-debug/src/infinity --infinity_dir=${INF_DIRECTORY} --minio_port=9005 --minio_console_port=9006"
8875
8976
- name: Collect cluster test output
9077
if: ${{ !cancelled() }}
9178
run: |
9279
failure="${{ steps.run_cluster_test.outcome == 'failure'}}"
9380
sudo python3 scripts/collect_cluster_log.py --executable_path=cmake-build-debug/src/infinity --log_dir=/var/infinity/ --output_dir=${RUNNER_WORKSPACE_PREFIX}/log --failure=${failure}
94-
95-
- name: Remove tester container
96-
if: always() # always run this step even if previous steps failed
97-
run: |
98-
if [ -n "${TESTER_CONTAINER}" ]; then
99-
sudo docker rm -f -v ${TESTER_CONTAINER}
100-
fi
10181
10282
- name: Prepare restart test data
10383
if: ${{ !cancelled() && !failure() }}
@@ -189,6 +169,10 @@ jobs:
189169
failure="${{ steps.run_tests_debug.outcome == 'failure' || steps.stop_tests_debug.outcome == 'failure' }}"
190170
sudo python3 scripts/collect_log.py --log_path=/var/infinity/log/infinity.log --stdout_path=debug.log --stderror_path=debug_error.log --executable_path=cmake-build-debug/src/infinity --output_dir=${RUNNER_WORKSPACE_PREFIX}/log --failure=${failure}
191171
172+
- name: Build unit test
173+
if: ${{ !cancelled() && !failure() }}
174+
run: sudo docker exec ${BUILDER_CONTAINER} bash -c "git config --global safe.directory \"*\" && cd /infinity && cmake --build /infinity/cmake-build-debug --target test_main"
175+
192176
- name: Unit test debug version
193177
if: ${{ !cancelled() && !failure() }}
194178
run: sudo docker exec ${BUILDER_CONTAINER} bash -c "mkdir -p /var/infinity && cd /infinity/ && ASAN_OPTIONS=detect_leaks=0 cmake-build-debug/src/test_main > unittest_debug.log 2>&1"
@@ -249,15 +233,28 @@ jobs:
249233
echo "BUILDER_CONTAINER=${BUILDER_CONTAINER}" >> $GITHUB_ENV
250234
echo "CPUS=${CPUS}" >> $GITHUB_ENV
251235
TZ=${TZ:-$(readlink -f /etc/localtime | awk -F '/zoneinfo/' '{print $2}')}
236+
sudo docker pull infiniflow/infinity_builder:centos7_clang18
252237
sudo docker rm -f -v ${BUILDER_CONTAINER} && sudo docker run --cap-add=NET_ADMIN -d --name ${BUILDER_CONTAINER} -e TZ=$TZ -e CMAKE_BUILD_PARALLEL_LEVEL=${CPUS} -v $PWD:/infinity -v /boot:/boot --cpus ${CPUS} infiniflow/infinity_builder:centos7_clang18
253238
254239
- name: Build release version
255240
if: ${{ !cancelled() && !failure() }}
256-
run: sudo docker exec ${BUILDER_CONTAINER} bash -c "git config --global safe.directory \"*\" && cd /infinity && rm -fr cmake-build-release && mkdir -p cmake-build-release && cmake -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_JOB_POOLS:STRING=link=8 -S /infinity -B /infinity/cmake-build-release && cmake --build /infinity/cmake-build-release --target infinity test_main knn_import_benchmark knn_query_benchmark"
241+
run: sudo docker exec ${BUILDER_CONTAINER} bash -c "git config --global safe.directory \"*\" && cd /infinity && rm -fr cmake-build-release && mkdir -p cmake-build-release && cmake -G Ninja -DCMAKE_BUILD_TYPE=RelWithDebInfo -DCMAKE_JOB_POOLS:STRING=link=8 -S /infinity -B /infinity/cmake-build-release && cmake --build /infinity/cmake-build-release --target infinity"
257242

258243
- name: Install pysdk for Python 3.10
259244
if: ${{ !cancelled() && !failure() }}
260245
run: sudo docker exec ${BUILDER_CONTAINER} bash -c "rm -rf /root/.config/pip/pip.conf && cd /infinity/ && pip3 uninstall -y infinity-sdk infinity-embedded-sdk && pip3 install . -v --config-settings=cmake.build-type='RelWithDebInfo' --config-settings=build-dir='cmake-build-release' -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host tuna.tsinghua.edu.cn && cd python/infinity_sdk/ && pip3 install . -i https://pypi.tuna.tsinghua.edu.cn/simple --trusted-host tuna.tsinghua.edu.cn && cd ../.."
246+
247+
# - name: Run cluster test
248+
# if: ${{ !cancelled() && !failure() }}
249+
# id: run_cluster_test
250+
# run: |
251+
# sudo docker exec ${BUILDER_CONTAINER} bash -c "cd /infinity/ && rm -fr /var/infinity && export INF_DIRECTORY=`cat .tester_env` && echo INF_DIRECTORY=${INF_DIRECTORY} && python3 tools/run_cluster_test.py --infinity_path=cmake-build-release/src/infinity --infinity_dir=${INF_DIRECTORY} --minio_port=9005 --minio_console_port=9006"
252+
253+
# - name: Collect cluster test output
254+
# if: ${{ !cancelled() }}
255+
# run: |
256+
# failure="${{ steps.run_cluster_test.outcome == 'failure'}}"
257+
# sudo python3 scripts/collect_cluster_log.py --executable_path=cmake-build-release/src/infinity --log_dir=/var/infinity/ --output_dir=${RUNNER_WORKSPACE_PREFIX}/log --failure=${failure}
261258

262259
- name: Prepare restart test data
263260
if: ${{ !cancelled() && !failure() }}
@@ -360,6 +357,10 @@ jobs:
360357
failure="${{ steps.run_tests_release.outcome == 'failure' || steps.stop_tests_release.outcome == 'failure' }}"
361358
sudo python3 scripts/collect_log.py --log_path=/var/infinity/log/infinity.log --stdout_path=release.log --stderror_path=release_error.log --executable_path=cmake-build-release/src/infinity --output_dir=${RUNNER_WORKSPACE_PREFIX}/log --failure=${failure}
362359
360+
- name: Build unit test
361+
if: ${{ !cancelled() && !failure() }}
362+
run: sudo docker exec ${BUILDER_CONTAINER} bash -c "git config --global safe.directory \"*\" && cd /infinity && cmake --build /infinity/cmake-build-release --target test_main knn_import_benchmark knn_query_benchmark"
363+
363364
- name: Unit test release version
364365
if: ${{ !cancelled() && !failure() }}
365366
run: sudo docker exec ${BUILDER_CONTAINER} bash -c "mkdir -p /var/infinity && cd /infinity/ && cmake-build-release/src/test_main > unittest_release.log 2>&1"

.tester_env

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
/home/huikong/Code/work/infinity2
1+
/home/huikong/Code/work/infinity

python/test_cluster/infinity_cluster.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,7 @@ def add_minio(self, minio_params: MinioParams):
251251

252252
try:
253253
self.minio_container = docker_client.containers.get(container_name)
254+
print(self.minio_container)
254255
self.minio_container.start()
255256
self.logger.debug(f"Minio container {container_name} already exists.")
256257
except docker.errors.NotFound:

scripts/Dockerfile_infinity_builder_centos7

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -240,4 +240,29 @@ RUN git clone --single-branch --depth=1 https://github.com/VectorCamp/vectorscan
240240
&& make -j 12 install \
241241
&& rm -rf ../../vectorscan
242242

243+
# Install iproute2
244+
RUN --mount=type=bind,source=iproute2-6.9.0.tar.gz,target=/root/iproute2-6.9.0.tar.gz \
245+
cd /root \
246+
&& tar -zxf iproute2-6.9.0.tar.gz && cd iproute2-6.9.0 \
247+
&& ./configure --prefix=/usr/local/iproute2 \
248+
&& make && make install \
249+
&& ip -V
250+
251+
# test requirements
252+
RUN --mount=type=bind,source=python/test_cluster/requirements.txt,target=/root/requirements1.txt \
253+
cd /root \
254+
&& /usr/local/bin/python3.10 -m venv /usr/local/venv310 && source /usr/local/venv310/bin/activate \
255+
&& pip3 install -r requirements1.txt
256+
257+
RUN yum install -y sudo bridge-utils iptables
258+
259+
# Install Docker
260+
# https://docs.docker.com/engine/install/centos/#install-using-the-convenience-script
261+
# RUN --mount=type=bind,source=get-docker.sh,target=/root/get-docker.sh \
262+
# cd /root && sh get-docker.sh
263+
RUN --mount=type=bind,source=docker-27.3.1.tgz,target=/root/docker-27.3.1.tgz \
264+
cd /root \
265+
&& tar zxf docker-27.3.1.tgz \
266+
&& sudo cp docker/* /usr/bin
267+
243268
ENTRYPOINT [ "bash", "-c", "while true; do sleep 60; done"]

scripts/Dockerfile_infinity_tester_centos7

Lines changed: 0 additions & 28 deletions
This file was deleted.

scripts/build_tester_image.py

Lines changed: 0 additions & 45 deletions
This file was deleted.

scripts/download_deps_infinity_builder_centos7.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ https://www.python.org/ftp/python/3.12.7/Python-3.12.7.tar.xz
3636
https://www.python.org/ftp/python/3.13.0/Python-3.13.0.tar.xz
3737
https://github.com/risinglightdb/sqllogictest-rs/releases/download/v0.20.2/sqllogictest-bin-v0.20.2-x86_64-unknown-linux-musl.tar.gz
3838
https://mirrors.edge.kernel.org/pub/linux/utils/net/iproute2/iproute2-6.9.0.tar.gz"
39+
https://download.docker.com/linux/static/stable/x86_64/docker-27.3.1.tgz
3940

4041
SAVEIFS=$IFS # Save current IFS (Internal Field Separator)
4142
IFS=$'\n' # Change IFS to newline char

src/storage/meta/entry/table_index_entry.cpp

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -482,22 +482,20 @@ void TableIndexEntry::PickCleanup(CleanupScanner *scanner) {
482482
Vector<SegmentID> segment_ids;
483483
{
484484
std::shared_lock r_lock(rw_locker_);
485-
for (auto iter = index_by_segment_.begin(); iter != index_by_segment_.end();) {
486-
auto &[segment_id, segment_index_entry] = *iter;
485+
for (auto &[segment_id, segment_index_entry] : index_by_segment_) {
487486
if (segment_index_entry->CheckDeprecate(visible_ts)) {
488-
scanner->AddEntry(std::move(segment_index_entry));
489487
segment_ids.push_back(segment_id);
490-
++iter;
491488
} else {
492489
segment_index_entry->PickCleanup(scanner);
493-
++iter;
494490
}
495491
}
496492
}
497493
if (!segment_ids.empty()) {
498494
std::unique_lock w_lock(rw_locker_);
499495
for (auto segment_id : segment_ids) {
500-
index_by_segment_.erase(segment_id);
496+
auto iter = index_by_segment_.find(segment_id);
497+
scanner->AddEntry(std::move(iter->second));
498+
index_by_segment_.erase(iter);
501499
}
502500
}
503501
}

0 commit comments

Comments
 (0)