Skip to content

Dump stacktraces from goroutines on timeouts for inspection #620

Dump stacktraces from goroutines on timeouts for inspection

Dump stacktraces from goroutines on timeouts for inspection #620

Workflow file for this run

name: Ghostferry Tests
on:
push:
branches:
- main
pull_request:
# Prevent Go from auto-activating vendor mode when a stale vendor/ directory
# exists in the workspace. Actions/checkout does not always remove previously
# tracked files that were deleted in a later commit, so a checkout of a commit
# that removed vendor/ may still find the directory on disk, causing
# "inconsistent vendoring" build failures.
env:
GOFLAGS: "-mod=mod"
jobs:
gh-285:
strategy:
matrix:
mysql: ["5.7", "8.0", "8.4"]
runs-on: ubuntu-latest
continue-on-error: true
timeout-minutes: 15
env:
CI: "true"
MYSQL_VERSION: ${{ matrix.mysql }}
steps:
- uses: actions/checkout@v6.0.2
- uses: actions/setup-go@v6.4.0
with:
go-version: "1.26.2"
- name: Starting up MySQL
run: .github/workflows/start-mysql.sh
- name: Running GH-285 test
run: ./examples/gh-285/bugreport.sh
go-test:
strategy:
matrix:
mysql: ["5.7", "8.0", "8.4"]
runs-on: ubuntu-latest
timeout-minutes: 15
continue-on-error: true
env:
CI: "true"
MYSQL_VERSION: ${{ matrix.mysql }}
# Emit full goroutine stacks (all goroutines, not just the crashing one)
# when the test binary panics or times out. This is the primary
# diagnostic for stuck / deadlocked tests.
GOTRACEBACK: all
steps:
- uses: actions/checkout@v6.0.2
- uses: actions/setup-go@v6.4.0
with:
go-version: "1.26.2"
- name: Starting up MySQL
run: .github/workflows/start-mysql.sh
- name: Running Golang tests
run: make test-go
ruby-test:
strategy:
matrix:
mysql: ["5.7", "8.0", "8.4"]
log_backend: ["logrus"]
include:
- mysql: "8.4"
log_backend: "zerolog"
runs-on: ubuntu-latest
timeout-minutes: 15
continue-on-error: true
env:
CI: "true"
BUNDLE_WITHOUT: "development"
MYSQL_VERSION: ${{ matrix.mysql }}
GHOSTFERRY_LOG_BACKEND: ${{ matrix.log_backend }}
steps:
- uses: actions/checkout@v6.0.2
- uses: actions/setup-go@v6.4.0
with:
go-version: "1.26.2"
- uses: ruby/setup-ruby@v1
with:
bundler-cache: true
- name: Starting up MySQL
run: .github/workflows/start-mysql.sh
- name: Running Ruby tests
run: bundle exec rake test
build-debs:
strategy:
matrix:
runner: [ubuntu-latest, shopify-ubuntu-arm64]
runs-on: ${{ matrix.runner }}
steps:
- uses: actions/checkout@v6.0.2
- uses: actions/setup-go@v6.4.0
with:
go-version: "1.26.2"
- name: Building Ghostferry
run: .github/workflows/build-deb.sh --tagged-only
- name: Upload debs
uses: actions/upload-artifact@v7.0.1
with:
name: debs-${{ github.sha }}-${{ matrix.runner }}
path: build/ghostferry*