Skip to content

Fix #7783: Deadlock during index creation when parallel workers are used #6019

Fix #7783: Deadlock during index creation when parallel workers are used

Fix #7783: Deadlock during index creation when parallel workers are used #6019

Workflow file for this run

name: CI
on: [push, pull_request]
jobs:
build-linux-ubuntu-x64-clang:
if: github.ref_type != 'tag'
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 10
- name: Adjust snapshot build number
uses: ./.github/actions/adjust-snapshot-buildno
- name: Prepare
run: |
sudo apt-get install libtool-bin libtomcrypt1 libtomcrypt-dev libtommath1 libtommath-dev libicu-dev zlib1g-dev cmake
- name: Build
run: |
CC=clang CXX=clang++ ./autogen.sh --enable-binreloc --prefix=/opt/firebird
make -j4
make tests -j4
make run_tests
make dist
tar xzvf gen/Firebird-*-linux-x64.tar.gz
(cd Firebird-*-linux-x64; sudo ./install.sh -silent)
- name: Upload installer
uses: actions/upload-artifact@v4
with:
name: firebird-ubuntu-20.04-clang-x64
path: gen/Firebird-*-linux-x64.tar.gz
build-linux-docker:
name: build-linux-docker-${{ matrix.arch }}
runs-on: ubuntu-22.04
env:
FB_DOCKER_PATH: ${{ (startsWith(matrix.arch, 'arm') && 'arm32-arm64') || 'x86-x64' }}
strategy:
fail-fast: false
matrix:
arch:
- x86
- x64
- arm32
- arm64
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 10
- name: Adjust snapshot build number
uses: ./.github/actions/adjust-snapshot-buildno
- name: Get Release Notes
uses: ./.github/actions/get-release-notes
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
if: ${{ startsWith(matrix.arch, 'arm') }}
- name: Build
run: |
cd builds/docker/linux/$FB_DOCKER_PATH
./run-${{ matrix.arch }}.sh
- name: Upload installer
uses: actions/upload-artifact@v4
with:
name: firebird-linux-${{ matrix.arch }}
path: gen/Firebird-*-linux-${{ matrix.arch }}.tar.gz
- name: Upload debug symbols
uses: actions/upload-artifact@v4
with:
name: firebird-linux-${{ matrix.arch }}-debugSymbols
path: gen/Firebird-*-linux-${{ matrix.arch }}-debugSymbols.tar.gz
- name: Create release
uses: ./.github/actions/create-release
with:
token: ${{ secrets.SNAPSHOT_RELEASE_TOKEN }}
deletePatterns: Firebird-*-linux-${{ matrix.arch }}*.tar.gz
uploadFiles: gen/Firebird-*-linux-${{ matrix.arch }}*.tar.gz
build-src-bundle-docker:
name: build-src-bundle-docker
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 10
- name: Adjust snapshot build number
uses: ./.github/actions/adjust-snapshot-buildno
- name: Get Release Notes
uses: ./.github/actions/get-release-notes
- name: Build
run: |
cd builds/docker/linux/x86-x64
./run-src-bundle.sh
- name: Create release
uses: ./.github/actions/create-release
with:
token: ${{ secrets.SNAPSHOT_RELEASE_TOKEN }}
deletePatterns: Firebird-*-source.tar.xz
uploadFiles: gen/Firebird-*-source.tar.xz
build-alpine-x64:
if: github.ref_type != 'tag'
runs-on: ubuntu-22.04
container: alpine:3.14
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 10
- name: Prepare
run: apk update && apk --no-cache --update add build-base libtool git autoconf automake cmake zlib-dev icu-dev ncurses-dev libedit-dev linux-headers tar sed
- name: Adjust snapshot build number
uses: ./.github/actions/adjust-snapshot-buildno
- name: Build
run: |
./autogen.sh --enable-binreloc-threads --with-builtin-tommath --with-builtin-tomcrypt --prefix=/opt/firebird
make -j4
make tests -j4
make run_tests
make dist
tar xzvf gen/Firebird-*-linux-x64.tar.gz
- name: Upload installer
uses: actions/upload-artifact@v4
with:
name: firebird-alpine-x64
path: gen/Firebird-*-linux-x64.tar.gz
build-windows:
if: github.ref_type != 'tag'
runs-on: ${{ matrix.os }}
env:
VS_VERSION: ${{ (matrix.os == 'windows-2019' && '2019' || (matrix.os == 'windows-2022' && '2022' || '')) }}
strategy:
fail-fast: false
matrix:
os:
- windows-2022
- windows-2019
platform: [x64, x86]
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 10
- name: Adjust snapshot build number
uses: ./.github/actions/adjust-snapshot-buildno
- name: Prepare
shell: cmd
run: |
for /r %%i in (*.bat) do unix2dos "%%i"
choco uninstall --no-progress --yes innosetup
choco install --no-progress --yes innosetup --version=6.1.2
- name: Build
shell: cmd
env:
PLATFORM: ${{ matrix.platform }}
VS_SCRIPT: ${{ matrix.os == 'windows-2022' && 'C:\Program Files\Microsoft Visual Studio\%VS_VERSION%\Enterprise\Common7\Tools\VsDevCmd.bat' || 'C:\Program Files (x86)\Microsoft Visual Studio\%VS_VERSION%\Enterprise\Common7\Tools\VsDevCmd.bat' }}
run: |
set SEVENZIP=C:\Program Files\7-Zip
set INNO6_SETUP_PATH=C:\Program Files (x86)\Inno Setup 6
if "%PLATFORM%" == "x64" set FB_VS_ARCH=amd64
if "%PLATFORM%" == "x64" set FB_PROCESSOR_ARCHITECTURE=AMD64
if "%PLATFORM%" == "x86" set FB_VS_ARCH=x86
if "%PLATFORM%" == "x86" set FB_PROCESSOR_ARCHITECTURE=x86
call "%VS_SCRIPT%" -arch=%FB_VS_ARCH%
cd builds\win32
call run_all.bat
call run_tests.bat
- name: Upload zip
uses: actions/upload-artifact@v4
with:
name: firebird-windows-vs-${{ env.VS_VERSION }}-${{ matrix.platform }}-zip
path: builds/install_images/Firebird-*-windows-${{ matrix.platform }}.zip
- name: Upload installer
uses: actions/upload-artifact@v4
with:
name: firebird-windows-vs-${{ env.VS_VERSION }}-${{ matrix.platform }}-installer
path: builds/install_images/*-windows-${{ matrix.platform }}.exe
build-windows-docker:
runs-on: windows-2022
strategy:
fail-fast: false
matrix:
platform: [x64, x86]
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 10
- name: Adjust snapshot build number
uses: ./.github/actions/adjust-snapshot-buildno
- name: Get Release Notes
uses: ./.github/actions/get-release-notes
- name: Build x86 for client package in x64
id: build-x86
shell: cmd
if: ${{ matrix.platform == 'x64' }}
run: |
mkdir builds\install_images
cd builds\docker\windows
call build.bat
call run.bat C:\fbscripts\build-x86.bat
- name: Build
id: build
shell: cmd
env:
PLATFORM: ${{ matrix.platform }}
run: |
mkdir builds\install_images
cd builds\docker\windows
call build.bat
call run.bat C:\fbscripts\build-%PLATFORM%.bat
- name: Upload zip
uses: actions/upload-artifact@v4
with:
name: firebird-windows-${{ matrix.platform }}-zip
path: builds/install_images/Firebird-*-windows-${{ matrix.platform }}.zip
- name: Upload zip (withDebugSymbols)
uses: actions/upload-artifact@v4
with:
name: firebird-windows-${{ matrix.platform }}-withDebugSymbols-zip
path: builds/install_images/Firebird-*-windows-${{ matrix.platform }}-withDebugSymbols.zip
- name: Upload installer
uses: actions/upload-artifact@v4
with:
name: firebird-windows-${{ matrix.platform }}-installer
path: builds/install_images/*-windows-${{ matrix.platform }}.exe
- name: Upload installer (withDebugSymbols)
uses: actions/upload-artifact@v4
with:
name: firebird-windows-${{ matrix.platform }}-withDebugSymbols-installer
path: builds/install_images/*-windows-${{ matrix.platform }}-withDebugSymbols.exe
- name: Create release
uses: ./.github/actions/create-release
with:
token: ${{ secrets.SNAPSHOT_RELEASE_TOKEN }}
deletePatterns: |
Firebird-*-windows-${{ matrix.platform }}*.exe
Firebird-*-windows-${{ matrix.platform }}*.zip
uploadFiles: |
builds/install_images/Firebird-*-windows-${{ matrix.platform }}*.exe
builds/install_images/Firebird-*-windows-${{ matrix.platform }}*.zip
build-macos:
name: build-macos-${{ matrix.arch }}
runs-on: ${{ (matrix.arch == 'arm64' && 'macos-14') || 'macos-12' }}
strategy:
fail-fast: false
matrix:
arch:
- x64
- arm64
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 10
submodules: 'true'
- name: Adjust snapshot build number
uses: ./.github/actions/adjust-snapshot-buildno
- name: Prepare - Install tools
run: |
brew install automake autoconf-archive cmake libtool ninja
# libcxx build is not working with python >= 3.12
- name: Do not use preinstalled python >= 3.12
run: |
brew uninstall --ignore-dependencies [email protected]
[ -e /Library/Frameworks/Python.framework ] && \
sudo mv /Library/Frameworks/Python.framework /Library/Frameworks/Python.framework.dont-look-at-this
brew install [email protected]
ln -s "$(brew --prefix [email protected])/bin/python3" "$(brew --prefix [email protected])/bin/python"
- name: Cache - vcpkg
uses: actions/cache@v4
with:
key: ${{ runner.os }}-vcpkg-0
path: |
$HOME/.cache/vcpkg/archives
- name: Build
run: |
export LIBTOOLIZE=glibtoolize
export LIBTOOL=glibtool
export PATH="$(brew --prefix [email protected])/bin:$PATH"
./autogen.sh --with-builtin-tommath --with-builtin-tomcrypt
make -j4
make tests -j4
make run_tests
make -C gen -B -f make.platform.postfix
make -C gen -B -f Makefile.install
# Rename directory to make sure the build is relocatable.
mv gen gen2
sudo installer -pkg gen2/Release/*.pkg -verbose -target /
export FIREBIRD_LOCK=`pwd`/temp
echo "create database 't.fdb'; select '1' from rdb\$database; select _win1252 '2' from rdb\$database; select _utf8 '3' collate unicode from rdb\$database;" | /Library/Frameworks/Firebird.framework/Resources/bin/isql
echo "create database 'localhost:/tmp/t.fdb' user sysdba password 'masterkey'; select '11' from rdb\$database; select _win1252 '22' from rdb\$database; select _utf8 '33' collate unicode from rdb\$database;" | /Library/Frameworks/Firebird.framework/Resources/bin/isql
mv gen2 gen
mkdir gen/artifacts
mv gen/Release/*.pkg gen/artifacts
- name: Upload installer
uses: actions/upload-artifact@v4
with:
name: firebird-macos-${{ matrix.arch }}
path: gen/artifacts
- name: Create release
uses: ./.github/actions/create-release
with:
token: ${{ secrets.SNAPSHOT_RELEASE_TOKEN }}
deletePatterns: Firebird-*-macos-${{ matrix.arch }}*.pkg
uploadFiles: gen/artifacts/Firebird-*-macos-${{ matrix.arch }}*.pkg
build-android-initial:
name: build-android-${{ matrix.arch }}-initial
runs-on: ubuntu-22.04
env:
NDK: /home/runner/Android/Ndk
ARCH: ${{ matrix.arch }}
FB_PREFIX: ${{ (matrix.arch == 'arm32' && 'arme') || (matrix.arch == 'x64' && 'x86_64') || matrix.arch }}
strategy:
fail-fast: false
matrix:
arch:
- arm32
- arm64
- x86
- x64
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 10
- name: Adjust snapshot build number
uses: ./.github/actions/adjust-snapshot-buildno
- name: Prepare - install Linux tools
run: |
sudo apt-get install libtool-bin libtomcrypt1 libtomcrypt-dev libtommath1 libtommath-dev libicu-dev zlib1g-dev
- name: Prepare - Download and install Android NDK
run: |
mkdir downloads
pushd downloads
curl -OL https://dl.google.com/android/repository/android-ndk-r25b-linux.zip
mkdir -p $NDK
unzip android-ndk-r25b-linux.zip -d $NDK && f=("$NDK"/*) && mv "$NDK"/*/* "$NDK" && rmdir "${f[@]}"
- name: Build
run: |
./autogen.sh --prefix=/opt/firebird --enable-binreloc --with-cross-build=android.$FB_PREFIX --without-editline
make -j4
make CROSS_OUT=Y tests -j4
builds/install/arch-specific/android/BuildPackage.sh $ARCH
- name: Upload initial build
uses: actions/upload-artifact@v4
with:
name: firebird-android-initial-${{ matrix.arch }}
path: |
gen/Firebird-*-android-initial-${{ matrix.arch }}*.tar.gz
gen/Make.Version
build-android-final:
name: build-android-${{ matrix.arch }}-final
needs: build-android-initial
runs-on: ubuntu-latest
env:
ARCH: ${{ matrix.arch }}
strategy:
fail-fast: false
matrix:
arch:
- arm32
- arm64
- x86
- x64
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 10
- name: Adjust snapshot build number
uses: ./.github/actions/adjust-snapshot-buildno
- name: Enable KVM
run: |
echo 'KERNEL=="kvm", GROUP="kvm", MODE="0666", OPTIONS+="static_node=kvm"' | sudo tee /etc/udev/rules.d/99-kvm4all.rules
sudo udevadm control --reload-rules
sudo udevadm trigger --name-match=kvm
- name: Download initial build
uses: actions/download-artifact@v4
with:
name: firebird-android-initial-${{ matrix.arch }}
path: gen
- name: Cache - AVD
uses: actions/cache@v4
id: avd-cache
with:
path: |
~/.android/avd/*
~/.android/adb*
key: avd-v7
- name: Create AVD and generate snapshot for caching
if: steps.avd-cache.outputs.cache-hit != 'true'
uses: reactivecircus/android-emulator-runner@v2
with:
avd-name: firebird-builder
arch: x86_64
api-level: 30
target: google_apis
ndk: 25.1.8937393
emulator-options: -no-window -noaudio -no-boot-anim -camera-back none -port 5554
emulator-boot-timeout: 900
script: |
echo "Generated AVD snapshot for caching."
- name: Create necessary files in Android emulator
uses: reactivecircus/android-emulator-runner@v2
with:
avd-name: firebird-builder
arch: x86_64
api-level: 30
target: google_apis
ndk: 25.1.8937393
emulator-options: -no-snapshot-save -no-window -noaudio -no-boot-anim -camera-back none -port 5554
emulator-boot-timeout: 900
script: |
adb wait-for-device
adb root
NDK=/usr/local/lib/android/sdk/ndk/25.1.8937393 builds/install/arch-specific/android/BuildFinalPackage.sh $ARCH
- name: Upload installer
uses: actions/upload-artifact@v4
with:
name: firebird-android-${{ matrix.arch }}
path: gen/Firebird-*-android-${{ matrix.arch }}.tar.gz
- name: Upload installer (withDebugSymbols)
uses: actions/upload-artifact@v4
with:
name: firebird-android-${{ matrix.arch }}-withDebugSymbols
path: gen/Firebird-*-android-${{ matrix.arch }}-withDebugSymbols.tar.gz
- name: Delete initial build
uses: geekyeggo/delete-artifact@v4
with:
name: firebird-android-initial-${{ matrix.arch }}
- name: Create release
uses: ./.github/actions/create-release
with:
token: ${{ secrets.SNAPSHOT_RELEASE_TOKEN }}
deletePatterns: Firebird-*-android-${{ matrix.arch }}*.tar.gz
uploadFiles: gen/Firebird-*-android-${{ matrix.arch }}*.tar.gz
build-android-aar:
needs: build-android-final
runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 10
- name: Adjust snapshot build number
uses: ./.github/actions/adjust-snapshot-buildno
- name: Download final build (x86)
uses: actions/download-artifact@v4
with:
name: firebird-android-x86
path: android/temp
- name: Download final build (x64)
uses: actions/download-artifact@v4
with:
name: firebird-android-x64
path: android/temp
- name: Download final build (arm32)
uses: actions/download-artifact@v4
with:
name: firebird-android-arm32
path: android/temp
- name: Download final build (arm64)
uses: actions/download-artifact@v4
with:
name: firebird-android-arm64
path: android/temp
- name: Extract final builds
working-directory: android
run: |
mkdir -p embedded/src/main/jniLibs/{x86,x86_64,armeabi-v7a,arm64-v8a}
tar xzvf temp/Firebird-*-android-x86.tar.gz -C embedded/src/main/jniLibs/x86 --strip-components=1
tar xzvf temp/Firebird-*-android-x64.tar.gz -C embedded/src/main/jniLibs/x86_64 --strip-components=1
tar xzvf temp/Firebird-*-android-arm32.tar.gz -C embedded/src/main/jniLibs/armeabi-v7a --strip-components=1
tar xzvf temp/Firebird-*-android-arm64.tar.gz -C embedded/src/main/jniLibs/arm64-v8a --strip-components=1
mkdir -p embedded/src/main/assets/firebird
mv embedded/src/main/jniLibs/x86/{*.conf,*.msg,*.dat,*.res} embedded/src/main/assets/firebird/
find embedded/src/main/jniLibs -type f ! -iname "*.so" -delete
- name: Assemble AAR
working-directory: android
run: |
./gradlew assembleRelease
FB_VERSION=`cd ../src/misc/ && . writeBuildNum.sh && echo $PRODUCT_VER_STRING-$FIREBIRD_PACKAGE_VERSION`
mv embedded/build/outputs/aar/firebird-embedded-release.aar \
embedded/build/outputs/aar/Firebird-$FB_VERSION-android-embedded.aar
- name: Upload installer
uses: actions/upload-artifact@v4
with:
name: firebird-android-aar
path: android/embedded/build/outputs/aar/Firebird-*-android-embedded.aar
- name: Create release
uses: ./.github/actions/create-release
with:
token: ${{ secrets.SNAPSHOT_RELEASE_TOKEN }}
deletePatterns: Firebird-*-android-embedded.aar
uploadFiles: android/embedded/build/outputs/aar/Firebird-*-android-embedded.aar