Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Storage & Compute release 2024-07-08 #8304

Merged
merged 51 commits into from
Jul 8, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
51 commits
Select commit Hold shift + click to select a range
86c8ba2
pageserver: add metric `pageserver_secondary_resident_physical_size` …
jcsp Jul 1, 2024
325294b
CI(build-tools): Remove libpq from build image (#8206)
bayandin Jul 1, 2024
cf4ea92
fix(pageserver): include aux file in basebackup only once (#8207)
skyzh Jul 1, 2024
504ca77
CI(gather-rust-build-stats): fix build with libpq (#8219)
bayandin Jul 1, 2024
588bda9
tests: Make neon_xlogflush() flush all WAL, if you omit the LSN arg (…
hlinnaka Jul 1, 2024
8c0ec2f
docs: Graceful storage controller cluster restarts RFC (#7704)
VladLazar Jul 1, 2024
47c50ec
Check status of connection after PQconnectStartParams (#8210)
knizhnik Jul 2, 2024
ed3b976
remote_storage config: move handling of empty inline table `{}` to ca…
problame Jul 2, 2024
7ff9989
pageserver: simpler, stricter config error handling (#8177)
jcsp Jul 2, 2024
daaa321
fix: noisy logging when download gets cancelled during shutdown (#8224)
problame Jul 2, 2024
c3e5223
pageserver: rate limit log for loads of layers visited (#8228)
VladLazar Jul 2, 2024
aeb68e5
Add support for reading and writing compressed blobs (#8106)
arpad-m Jul 2, 2024
1ae6aa0
L0 flush: opt-in mechanism to bypass PageCache reads and writes (#8190)
problame Jul 2, 2024
64ccdf6
CI(benchmarking): move psql queries to actions/run-python-test-set (#…
bayandin Jul 2, 2024
13a8a5b
tense of errors (#8234)
jcsp Jul 2, 2024
320b24e
fix(pageserver): comments about metadata key range (#8236)
skyzh Jul 2, 2024
2863d1d
Add test for proper handling of connection failure to avoid 'cannot w…
knizhnik Jul 2, 2024
ed3b4a5
docker: add storage_scrubber into the docker image (#8239)
skyzh Jul 3, 2024
db70c17
Simplify test_wal_page_boundary_start test (#8214)
hlinnaka Jul 3, 2024
252c4ac
CI: update docker/* actions to latest versions (#7694)
bayandin Jul 3, 2024
c500137
pageserver: don't try to flush if shutdown during attach (#8235)
jcsp Jul 3, 2024
4fb5014
Only support compressed reads if the compression setting is present (…
arpad-m Jul 3, 2024
08b33ad
add pagebench test cases for periodic pagebench on dedicated hardware…
Bodobolero Jul 3, 2024
a11cf03
pageserver: reduce ops tracked at per-timeline detail (#8245)
jcsp Jul 3, 2024
c4423c0
Fix outdated comment (#8149)
japinli Jul 3, 2024
47e06a2
page_service: stop exposing `get_last_record_rlsn` (#8244)
problame Jul 3, 2024
fee4169
fix(pageserver): ensure test creates valid layer map (#8191)
skyzh Jul 3, 2024
7b7d16f
pageserver: add supplementary branch usage stats (#8131)
jcsp Jul 3, 2024
b917868
tests: perform graceful rolling restarts in storcon scale test (#8173)
VladLazar Jul 4, 2024
a86b43f
proxy: cache certain non-retriable console errors for a short time (#…
conradludgate Jul 4, 2024
1d0ec50
CI(build-and-test): add conclusion job (#8246)
bayandin Jul 4, 2024
2897dcc
pageserver: increase rate limit duration for layer visit log (#8263)
VladLazar Jul 4, 2024
0a63bc4
Use bool param for round_trip_test_compressed (#8252)
arpad-m Jul 4, 2024
0e48323
CI(pg-clients): unify workflow with build-and-test (#8160)
bayandin Jul 4, 2024
7e2a3d2
pageserver: downgrade stale generation messages to INFO (#8256)
jcsp Jul 4, 2024
bd2046e
Add find-large-objects subcommand to scrubber (#8257)
arpad-m Jul 4, 2024
32828cd
feat(pageserver): integrate lsn lease into synthetic size (#8220)
yliang412 Jul 4, 2024
e770aee
Flatten compression algorithm setting (#8265)
arpad-m Jul 4, 2024
3ee82a9
implement rolling hyper-log-log algorithm (#8068)
knizhnik Jul 4, 2024
d35ddfb
add checkout depth1 to workflow to access local github actions like g…
Bodobolero Jul 4, 2024
32fc2dd
tests: extend allow list in deletion test (#8268)
jcsp Jul 5, 2024
5ffcb68
correct error handling for periodic pagebench runner status (#8274)
Bodobolero Jul 5, 2024
64334f4
tests: make location_conf_churn more robust (#8271)
jcsp Jul 5, 2024
b44ee39
safekeeper: add separate `tombstones` map for deleted timelines (#8253)
jcsp Jul 5, 2024
c8dd78c
pageserver: add time based image layer creation check (#8247)
VladLazar Jul 5, 2024
d149575
SELECT 💣(); (#8270)
bayandin Jul 5, 2024
05b4169
Increase timeout for wating subscriber caught-up (#8118)
knizhnik Jul 5, 2024
f331014
pageserver_live_connections: track as counter pair (#8227)
problame Jul 5, 2024
3ef7748
Improve parsing of `ImageCompressionAlgorithm` (#8281)
arpad-m Jul 5, 2024
36b790f
Add concurrency to the find-large-objects scrubber subcommand (#8291)
arpad-m Jul 5, 2024
a58827f
build(deps): bump certifi from 2023.7.22 to 2024.7.4 (#8301)
dependabot[bot] Jul 6, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 10 additions & 1 deletion .github/actions/run-python-test-set/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@ runs:
export PLATFORM=${PLATFORM:-github-actions-selfhosted}
export POSTGRES_DISTRIB_DIR=${POSTGRES_DISTRIB_DIR:-/tmp/neon/pg_install}
export DEFAULT_PG_VERSION=${PG_VERSION#v}
export LD_LIBRARY_PATH=${POSTGRES_DISTRIB_DIR}/v${DEFAULT_PG_VERSION}/lib

if [ "${BUILD_TYPE}" = "remote" ]; then
export REMOTE_ENV=1
Expand Down Expand Up @@ -178,7 +179,15 @@ runs:

# Wake up the cluster if we use remote neon instance
if [ "${{ inputs.build_type }}" = "remote" ] && [ -n "${BENCHMARK_CONNSTR}" ]; then
${POSTGRES_DISTRIB_DIR}/v${DEFAULT_PG_VERSION}/bin/psql ${BENCHMARK_CONNSTR} -c "SELECT version();"
QUERIES=("SELECT version()")
if [[ "${PLATFORM}" = "neon"* ]]; then
QUERIES+=("SHOW neon.tenant_id")
QUERIES+=("SHOW neon.timeline_id")
fi

for q in "${QUERIES[@]}"; do
${POSTGRES_DISTRIB_DIR}/v${DEFAULT_PG_VERSION}/bin/psql ${BENCHMARK_CONNSTR} -c "${q}"
done
fi

# Run the tests.
Expand Down
79 changes: 3 additions & 76 deletions .github/workflows/benchmarking.yml
Original file line number Diff line number Diff line change
Expand Up @@ -239,11 +239,6 @@ jobs:
path: /tmp/neon/
prefix: latest

- name: Add Postgres binaries to PATH
run: |
${POSTGRES_DISTRIB_DIR}/v${DEFAULT_PG_VERSION}/bin/pgbench --version
echo "${POSTGRES_DISTRIB_DIR}/v${DEFAULT_PG_VERSION}/bin" >> $GITHUB_PATH

- name: Create Neon Project
if: contains(fromJson('["neon-captest-new", "neon-captest-freetier", "neonvm-captest-new", "neonvm-captest-freetier"]'), matrix.platform)
id: create-neon-project
Expand Down Expand Up @@ -282,16 +277,6 @@ jobs:

echo "connstr=${CONNSTR}" >> $GITHUB_OUTPUT

QUERIES=("SELECT version()")
if [[ "${PLATFORM}" = "neon"* ]]; then
QUERIES+=("SHOW neon.tenant_id")
QUERIES+=("SHOW neon.timeline_id")
fi

for q in "${QUERIES[@]}"; do
psql ${CONNSTR} -c "${q}"
done

- name: Benchmark init
uses: ./.github/actions/run-python-test-set
with:
Expand Down Expand Up @@ -377,25 +362,12 @@ jobs:
path: /tmp/neon/
prefix: latest

- name: Add Postgres binaries to PATH
run: |
${POSTGRES_DISTRIB_DIR}/v${DEFAULT_PG_VERSION}/bin/pgbench --version
echo "${POSTGRES_DISTRIB_DIR}/v${DEFAULT_PG_VERSION}/bin" >> $GITHUB_PATH

- name: Set up Connection String
id: set-up-connstr
run: |
CONNSTR=${{ secrets.BENCHMARK_PGVECTOR_CONNSTR }}

echo "connstr=${CONNSTR}" >> $GITHUB_OUTPUT

QUERIES=("SELECT version()")
QUERIES+=("SHOW neon.tenant_id")
QUERIES+=("SHOW neon.timeline_id")

for q in "${QUERIES[@]}"; do
psql ${CONNSTR} -c "${q}"
done
echo "connstr=${CONNSTR}" >> $GITHUB_OUTPUT

- name: Benchmark pgvector hnsw indexing
uses: ./.github/actions/run-python-test-set
Expand All @@ -417,12 +389,12 @@ jobs:
test_selection: performance/test_perf_pgvector_queries.py
run_in_parallel: false
save_perf_report: ${{ env.SAVE_PERF_REPORT }}
extra_params: -m remote_cluster --timeout 21600
extra_params: -m remote_cluster --timeout 21600
env:
BENCHMARK_CONNSTR: ${{ steps.set-up-connstr.outputs.connstr }}
VIP_VAP_ACCESS_TOKEN: "${{ secrets.VIP_VAP_ACCESS_TOKEN }}"
PERF_TEST_RESULT_CONNSTR: "${{ secrets.PERF_TEST_RESULT_CONNSTR }}"

- name: Create Allure report
if: ${{ !cancelled() }}
uses: ./.github/actions/allure-report-generate
Expand Down Expand Up @@ -477,11 +449,6 @@ jobs:
path: /tmp/neon/
prefix: latest

- name: Add Postgres binaries to PATH
run: |
${POSTGRES_DISTRIB_DIR}/v${DEFAULT_PG_VERSION}/bin/pgbench --version
echo "${POSTGRES_DISTRIB_DIR}/v${DEFAULT_PG_VERSION}/bin" >> $GITHUB_PATH

- name: Set up Connection String
id: set-up-connstr
run: |
Expand All @@ -503,16 +470,6 @@ jobs:

echo "connstr=${CONNSTR}" >> $GITHUB_OUTPUT

QUERIES=("SELECT version()")
if [[ "${PLATFORM}" = "neon"* ]]; then
QUERIES+=("SHOW neon.tenant_id")
QUERIES+=("SHOW neon.timeline_id")
fi

for q in "${QUERIES[@]}"; do
psql ${CONNSTR} -c "${q}"
done

- name: ClickBench benchmark
uses: ./.github/actions/run-python-test-set
with:
Expand Down Expand Up @@ -580,11 +537,6 @@ jobs:
path: /tmp/neon/
prefix: latest

- name: Add Postgres binaries to PATH
run: |
${POSTGRES_DISTRIB_DIR}/v${DEFAULT_PG_VERSION}/bin/pgbench --version
echo "${POSTGRES_DISTRIB_DIR}/v${DEFAULT_PG_VERSION}/bin" >> $GITHUB_PATH

- name: Get Connstring Secret Name
run: |
case "${PLATFORM}" in
Expand Down Expand Up @@ -613,16 +565,6 @@ jobs:

echo "connstr=${CONNSTR}" >> $GITHUB_OUTPUT

QUERIES=("SELECT version()")
if [[ "${PLATFORM}" = "neon"* ]]; then
QUERIES+=("SHOW neon.tenant_id")
QUERIES+=("SHOW neon.timeline_id")
fi

for q in "${QUERIES[@]}"; do
psql ${CONNSTR} -c "${q}"
done

- name: Run TPC-H benchmark
uses: ./.github/actions/run-python-test-set
with:
Expand Down Expand Up @@ -681,11 +623,6 @@ jobs:
path: /tmp/neon/
prefix: latest

- name: Add Postgres binaries to PATH
run: |
${POSTGRES_DISTRIB_DIR}/v${DEFAULT_PG_VERSION}/bin/pgbench --version
echo "${POSTGRES_DISTRIB_DIR}/v${DEFAULT_PG_VERSION}/bin" >> $GITHUB_PATH

- name: Set up Connection String
id: set-up-connstr
run: |
Expand All @@ -707,16 +644,6 @@ jobs:

echo "connstr=${CONNSTR}" >> $GITHUB_OUTPUT

QUERIES=("SELECT version()")
if [[ "${PLATFORM}" = "neon"* ]]; then
QUERIES+=("SHOW neon.tenant_id")
QUERIES+=("SHOW neon.timeline_id")
fi

for q in "${QUERIES[@]}"; do
psql ${CONNSTR} -c "${q}"
done

- name: Run user examples
uses: ./.github/actions/run-python-test-set
with:
Expand Down
9 changes: 6 additions & 3 deletions .github/workflows/build-build-tools-image.yml
Original file line number Diff line number Diff line change
Expand Up @@ -63,14 +63,16 @@ jobs:
mkdir -p /tmp/.docker-custom
echo DOCKER_CONFIG=/tmp/.docker-custom >> $GITHUB_ENV

- uses: docker/setup-buildx-action@v2
- uses: docker/setup-buildx-action@v3
with:
cache-binary: false

- uses: docker/login-action@v2
- uses: docker/login-action@v3
with:
username: ${{ secrets.NEON_DOCKERHUB_USERNAME }}
password: ${{ secrets.NEON_DOCKERHUB_PASSWORD }}

- uses: docker/build-push-action@v4
- uses: docker/build-push-action@v6
with:
context: .
provenance: false
Expand All @@ -82,6 +84,7 @@ jobs:
tags: neondatabase/build-tools:${{ inputs.image-tag }}-${{ matrix.arch }}

- name: Remove custom docker config directory
if: always()
run: |
rm -rf /tmp/.docker-custom

Expand Down
54 changes: 46 additions & 8 deletions .github/workflows/build_and_test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ jobs:
if: ${{ !contains(github.event.pull_request.labels.*.name, 'run-no-ci') }}
uses: ./.github/workflows/check-permissions.yml
with:
github-event-name: ${{ github.event_name}}
github-event-name: ${{ github.event_name }}

cancel-previous-e2e-tests:
needs: [ check-permissions ]
Expand Down Expand Up @@ -335,6 +335,8 @@ jobs:

- name: Run cargo build
run: |
PQ_LIB_DIR=$(pwd)/pg_install/v16/lib
export PQ_LIB_DIR
${cov_prefix} mold -run cargo build $CARGO_FLAGS $CARGO_FEATURES --bins --tests

# Do install *before* running rust tests because they might recompile the
Expand Down Expand Up @@ -383,6 +385,11 @@ jobs:
env:
NEXTEST_RETRIES: 3
run: |
PQ_LIB_DIR=$(pwd)/pg_install/v16/lib
export PQ_LIB_DIR
LD_LIBRARY_PATH=$(pwd)/pg_install/v16/lib
export LD_LIBRARY_PATH

#nextest does not yet support running doctests
cargo test --doc $CARGO_FLAGS $CARGO_FEATURES

Expand Down Expand Up @@ -744,14 +751,16 @@ jobs:
run: |
mkdir -p .docker-custom
echo DOCKER_CONFIG=$(pwd)/.docker-custom >> $GITHUB_ENV
- uses: docker/setup-buildx-action@v2
- uses: docker/setup-buildx-action@v3
with:
cache-binary: false

- uses: docker/login-action@v3
with:
username: ${{ secrets.NEON_DOCKERHUB_USERNAME }}
password: ${{ secrets.NEON_DOCKERHUB_PASSWORD }}

- uses: docker/build-push-action@v5
- uses: docker/build-push-action@v6
with:
context: .
build-args: |
Expand Down Expand Up @@ -822,11 +831,12 @@ jobs:
run: |
mkdir -p .docker-custom
echo DOCKER_CONFIG=$(pwd)/.docker-custom >> $GITHUB_ENV
- uses: docker/setup-buildx-action@v2
- uses: docker/setup-buildx-action@v3
with:
cache-binary: false
# Disable parallelism for docker buildkit.
# As we already build everything with `make -j$(nproc)`, running it in additional level of parallelisam blows up the Runner.
config-inline: |
buildkitd-config-inline: |
[worker.oci]
max-parallelism = 1

Expand All @@ -842,7 +852,7 @@ jobs:
password: ${{ secrets.AWS_SECRET_KEY_DEV }}

- name: Build compute-node image
uses: docker/build-push-action@v5
uses: docker/build-push-action@v6
with:
context: .
build-args: |
Expand All @@ -861,7 +871,7 @@ jobs:

- name: Build neon extensions test image
if: matrix.version == 'v16'
uses: docker/build-push-action@v5
uses: docker/build-push-action@v6
with:
context: .
build-args: |
Expand All @@ -882,7 +892,7 @@ jobs:
- name: Build compute-tools image
# compute-tools are Postgres independent, so build it only once
if: matrix.version == 'v16'
uses: docker/build-push-action@v5
uses: docker/build-push-action@v6
with:
target: compute-tools-image
context: .
Expand Down Expand Up @@ -1358,3 +1368,31 @@ jobs:
with:
from-tag: ${{ needs.build-build-tools-image.outputs.image-tag }}
secrets: inherit

# This job simplifies setting branch protection rules (in GitHub UI)
# by allowing to set only this job instead of listing many others.
# It also makes it easier to rename or parametrise jobs (using matrix)
# which requires changes in branch protection rules
#
# Note, that we can't add external check (like `neon-cloud-e2e`) we still need to use GitHub UI for that.
#
# https://github.com/neondatabase/neon/settings/branch_protection_rules
conclusion:
if: always()
# Format `needs` differently to make the list more readable.
# Usually we do `needs: [...]`
needs:
- check-codestyle-python
- check-codestyle-rust
- regress-tests
- test-images
runs-on: ubuntu-22.04
steps:
# The list of possible results:
# https://docs.github.com/en/actions/learn-github-actions/contexts#needs-context
- name: Fail the job if any of the dependencies do not succeed
run: exit 1
if: |
contains(needs.*.result, 'failure')
|| contains(needs.*.result, 'cancelled')
|| contains(needs.*.result, 'skipped')
9 changes: 8 additions & 1 deletion .github/workflows/neon_extra_builds.yml
Original file line number Diff line number Diff line change
Expand Up @@ -232,12 +232,19 @@ jobs:

- name: Run cargo build
run: |
PQ_LIB_DIR=$(pwd)/pg_install/v16/lib
export PQ_LIB_DIR
mold -run cargo build --locked $CARGO_FLAGS $CARGO_FEATURES --bins --tests -j$(nproc)

- name: Run cargo test
env:
NEXTEST_RETRIES: 3
run: |
PQ_LIB_DIR=$(pwd)/pg_install/v16/lib
export PQ_LIB_DIR
LD_LIBRARY_PATH=$(pwd)/pg_install/v16/lib
export LD_LIBRARY_PATH

cargo nextest run $CARGO_FEATURES -j$(nproc)

# Run separate tests for real S3
Expand Down Expand Up @@ -378,7 +385,7 @@ jobs:
run: make walproposer-lib -j$(nproc)

- name: Produce the build stats
run: cargo build --all --release --timings -j$(nproc)
run: PQ_LIB_DIR=$(pwd)/pg_install/v16/lib cargo build --all --release --timings -j$(nproc)

- name: Upload the build stats
id: upload-stats
Expand Down
Loading
Loading