Skip to content

Commit dd04e3e

Browse files
authored
Merge pull request #10603 from neondatabase/rc/release-compute/2025-01-31
Compute release 2025-01-31
2 parents 3cd601b + 6d9846a commit dd04e3e

File tree

166 files changed

+4319
-2091
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

166 files changed

+4319
-2091
lines changed

Diff for: .github/ISSUE_TEMPLATE/bug-template.md

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ name: Bug Template
33
about: Used for describing bugs
44
title: ''
55
labels: t/bug
6+
type: Bug
67
assignees: ''
78

89
---

Diff for: .github/ISSUE_TEMPLATE/epic-template.md

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ about: A set of related tasks contributing towards specific outcome, comprising
44
more than 1 week of work.
55
title: 'Epic: '
66
labels: t/Epic
7+
type: Epic
78
assignees: ''
89

910
---

Diff for: .github/actionlint.yml

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ self-hosted-runner:
44
- large
55
- large-arm64
66
- small
7+
- small-metal
78
- small-arm64
89
- us-east-2
910
config-variables:

Diff for: .github/actions/neon-project-create/action.yml

+48
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,31 @@ inputs:
1717
compute_units:
1818
description: '[Min, Max] compute units'
1919
default: '[1, 1]'
20+
# settings below only needed if you want the project to be sharded from the beginning
21+
shard_split_project:
22+
description: 'by default new projects are not shard-split, specify true to shard-split'
23+
required: false
24+
default: 'false'
25+
admin_api_key:
26+
description: 'Admin API Key needed for shard-splitting. Must be specified if shard_split_project is true'
27+
required: false
28+
shard_count:
29+
description: 'Number of shards to split the project into, only applies if shard_split_project is true'
30+
required: false
31+
default: '8'
32+
stripe_size:
33+
description: 'Stripe size, optional, in 8kiB pages. e.g. set 2048 for 16MB stripes. Default is 128 MiB, only applies if shard_split_project is true'
34+
required: false
35+
default: '32768'
36+
psql_path:
37+
description: 'Path to psql binary - it is caller responsibility to provision the psql binary'
38+
required: false
39+
default: '/tmp/neon/pg_install/v16/bin/psql'
40+
libpq_lib_path:
41+
description: 'Path to directory containing libpq library - it is caller responsibility to provision the libpq library'
42+
required: false
43+
default: '/tmp/neon/pg_install/v16/lib'
44+
2045

2146
outputs:
2247
dsn:
@@ -63,10 +88,33 @@ runs:
6388
echo "project_id=${project_id}" >> $GITHUB_OUTPUT
6489
6590
echo "Project ${project_id} has been created"
91+
92+
if [ "${SHARD_SPLIT_PROJECT}" = "true" ]; then
93+
# determine tenant ID
94+
TENANT_ID=`${PSQL} ${dsn} -t -A -c "SHOW neon.tenant_id"`
95+
96+
echo "Splitting project ${project_id} with tenant_id ${TENANT_ID} into $((SHARD_COUNT)) shards with stripe size $((STRIPE_SIZE))"
97+
98+
echo "Sending PUT request to https://${API_HOST}/regions/${REGION_ID}/api/v1/admin/storage/proxy/control/v1/tenant/${TENANT_ID}/shard_split"
99+
echo "with body {\"new_shard_count\": $((SHARD_COUNT)), \"new_stripe_size\": $((STRIPE_SIZE))}"
100+
101+
# we need an ADMIN API KEY to invoke storage controller API for shard splitting (bash -u above checks that the variable is set)
102+
curl -X PUT \
103+
"https://${API_HOST}/regions/${REGION_ID}/api/v1/admin/storage/proxy/control/v1/tenant/${TENANT_ID}/shard_split" \
104+
-H "Accept: application/json" -H "Content-Type: application/json" -H "Authorization: Bearer ${ADMIN_API_KEY}" \
105+
-d "{\"new_shard_count\": $SHARD_COUNT, \"new_stripe_size\": $STRIPE_SIZE}"
106+
fi
107+
66108
env:
67109
API_HOST: ${{ inputs.api_host }}
68110
API_KEY: ${{ inputs.api_key }}
69111
REGION_ID: ${{ inputs.region_id }}
70112
POSTGRES_VERSION: ${{ inputs.postgres_version }}
71113
MIN_CU: ${{ fromJSON(inputs.compute_units)[0] }}
72114
MAX_CU: ${{ fromJSON(inputs.compute_units)[1] }}
115+
SHARD_SPLIT_PROJECT: ${{ inputs.shard_split_project }}
116+
ADMIN_API_KEY: ${{ inputs.admin_api_key }}
117+
SHARD_COUNT: ${{ inputs.shard_count }}
118+
STRIPE_SIZE: ${{ inputs.stripe_size }}
119+
PSQL: ${{ inputs.psql_path }}
120+
LD_LIBRARY_PATH: ${{ inputs.libpq_lib_path }}

Diff for: .github/workflows/_benchmarking_preparation.yml

+4-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ jobs:
1717
strategy:
1818
fail-fast: false
1919
matrix:
20-
platform: [ aws-rds-postgres, aws-aurora-serverless-v2-postgres, neon ]
20+
platform: [ aws-rds-postgres, aws-aurora-serverless-v2-postgres, neon, neon_pg17 ]
2121
database: [ clickbench, tpch, userexample ]
2222

2323
env:
@@ -41,6 +41,9 @@ jobs:
4141
neon)
4242
CONNSTR=${{ secrets.BENCHMARK_CAPTEST_CONNSTR }}
4343
;;
44+
neon_pg17)
45+
CONNSTR=${{ secrets.BENCHMARK_CAPTEST_CONNSTR_PG17 }}
46+
;;
4447
aws-rds-postgres)
4548
CONNSTR=${{ secrets.BENCHMARK_RDS_POSTGRES_CONNSTR }}
4649
;;

0 commit comments

Comments
 (0)