Skip to content

Commit 5f0799e

Browse files
authored
Merge pull request #458 from metaplex-foundation/release/v0.6.0
2 parents bb23fbb + 14aadb0 commit 5f0799e

File tree

193 files changed

+5716
-2957
lines changed

Some content is hidden

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

193 files changed

+5716
-2957
lines changed

.env.example

Lines changed: 32 additions & 82 deletions
Original file line numberDiff line numberDiff line change
@@ -1,46 +1,63 @@
1+
DOCKER_IMAGE_TAG=develop-latest
2+
13
RPC_HOST='https://mainnet-aura.metaplex.com/{personal_rpc_key}'
24

5+
#Configurable app parts that could be enabled or disabled. (values in the default positions)
6+
CHECK_PROOFS=false
7+
ENABLE_ROCKS_MIGRATION=true
8+
RESTORE_ROCKS_DB=false
9+
RUN_API=true
10+
RUN_BACKFILLER=true
11+
RUN_BUBBLEGUM_BACKFILLER=true
12+
RUN_GAPFILLER=false
13+
RUN_PROFILING=false
14+
SHOULD_REINGEST=false
15+
SKIP_CHECK_TREE_GAPS=true
16+
317
#Postgres
418
PG_DATABASE_URL='postgres://solana:solana@localhost:5432/aura_db'
19+
POSTGRE_DB_PATH="/postgre/db/path"
520

621
#Redis
722
REDIS_CONNECTION_CONFIG='{"redis_connection_str":"redis://127.0.0.1:6379/0"}'
823

924
#RocksDB
1025
ROCKS_DB_PATH="/usr/src/rocksdb-data"
11-
ROCKS_DB_SECONDARY_PATH="path/to/rocks/secondary/db"
26+
ROCKS_DB_SECONDARY_PATH="/path/to/rocks/secondary/db"
1227
# path to the slots data, required for the backfiller to work
1328
ROCKS_SLOTS_DB_PATH=/path/to/slots-data
14-
ROCKS_SECONDARY_SLOTS_DB_PATH=/path/to/secondary/ingester-slots
15-
ROCKS_ARCHIVES_DIR="path/to/rocks/backup/archives"
16-
ROCKS_BACKUP_ARCHIVES_DIR="path/to/rocks/backup/archives"
29+
30+
ROCKS_ARCHIVES_DIR="/path/to/rocks/backup/archives"
31+
ROCKS_BACKUP_ARCHIVES_DIR="/path/to/rocks/backup/archives"
32+
ROCKS_BACKUP_DIR="/path/to/rocks/backup/"
1733
ROCKS_BACKUP_URL="127.0.0.1:3051/snapshot"
34+
ROCKS_DUMP_PATH="/path/to/dump"
1835
ROCKS_MIGRATION_STORAGE_PATH=/path/to/migration_storage
36+
ROCKS_SECONDARY_SLOTS_DB_PATH=/path/to/secondary/ingester-slots
1937

2038
#Backfiller
2139
BACKFILLER_SOURCE_MODE=bigtable
22-
BIG_TABLE_CONFIG='{creds="/usr/src/app/creds.json", timeout=1000}'
40+
BIG_TABLE_CONFIG='{"creds": "/usr/src/app/creds.json", "timeout": 1000}'
41+
42+
# Synchronizer
43+
DUMP_SYNCHRONIZER_BATCH_SIZE=10000
44+
45+
# API server port (if API is enabled)
46+
API_SERVER_PORT=8990
47+
INGESTER_SERVER_PORT=9092
2348

2449
# Metrics port. Start HTTP server to report metrics if port exist.
2550
API_METRICS_PORT=8985
2651
INGESTER_METRICS_PORT=9091
2752
MIGRATOR_METRICS_PORT=5091
2853
SYNCHRONIZER_METRICS_PORT=6091
2954

30-
# API server port (if API is enabled)
31-
INGESTER_SERVER_PORT=9092
32-
API_SERVER_PORT=8990
33-
3455
# GRPC Server port
3556
PEER_GRPC_PORT=9099
57+
GAPFILLER_PEER_ADDR="0.0.0.0"
3658

37-
# Docker
38-
# Required by Postgre container
39-
POSTGRE_DB_PATH="postgre/db/path"
40-
ROCKS_BACKUP_DIR="path/to/rocks/backup/"
41-
FILE_STORAGE_PATH="path/to/file/storage"
59+
FILE_STORAGE_PATH="/path/to/file/storage"
4260
FILE_STORAGE_PATH_CONTAINER="/usr/src/app/file_storage"
43-
ROCKS_DUMP_PATH="/path/to/dump"
4461

4562
#Profiling (optional)
4663
PROFILING_FILE_PATH_CONTAINER="/usr/src/profiling"
@@ -60,70 +77,3 @@ INTEGRITY_VERIFICATION_TEST_FILE_PATH="./test_keys/test_keys.txt"
6077
INTEGRITY_VERIFICATION_TEST_FILE_PATH_CONTAINER="/test_keys/test_keys.txt"
6178
INTEGRITY_VERIFICATION_SLOTS_COLLECT_PATH="./slots_collect"
6279
INTEGRITY_VERIFICATION_SLOTS_COLLECT_PATH_CONTAINER="/slots_collect"
63-
64-
#Configurable app parts that cold be enabled or disabled. (values in the default positions)
65-
RUN_API=true
66-
RUN_BACKFILLER=true
67-
RUN_BUBBLEGUM_BACKFILLER=true
68-
RUN_GAPFILLER=false
69-
SHOULD_REINGEST=false
70-
RUN_PROFILING=false
71-
RESTORE_ROCKS_DB=false
72-
ENABLE_ROCKS_MIGRATION=true
73-
CHECK_PROOFS=false
74-
SKIP_CHECK_TREE_GAPS=false
75-
76-
#Changes (todo Remove after review/migration)
77-
78-
# API_RPC_HOST INGESTER_RPC_HOST -> RPC_HOST
79-
#INGESTER_ROCKS_DB_PATH -> ROCKS_DB_PATH
80-
#INGESTER_ROCKS_DB_PATH_CONTAINER -> ROCKS_DB_PATH
81-
#INGESTER_SYNCHRONIZER_DUMP_PATH -> ROCKS_DUMP_PATH
82-
#API_ROCKS_DB_PATH_CONTAINER -> ROCKS_DB_PATH
83-
#INGESTER_FILE_STORAGE_PATH -> FILE_STORAGE_PATH
84-
#INGESTER_FILE_STORAGE_PATH_CONTAINER -> FILE_STORAGE_PATH_CONTAINER
85-
# INGESTER_PROFILING_FILE_PATH -> PROFILING_FILE_PATH
86-
# INGESTER_PROFILING_FILE_PATH_CONTAINER -> PROFILING_FILE_PATH_CONTAINER
87-
# INGESTER_MIGRATION_STORAGE_PATH -> ROCKS_MIGRATION_STORAGE_PATH
88-
#
89-
# INGESTER_ROCKS_BACKUP_ARCHIVES_DIR -> ROCKS_BACKUP_ARCHIVES_DIR
90-
# INGESTER_ROCKS_BACKUP_DIR -> ROCKS_BACKUP_DIR
91-
#
92-
#SYNCHRONIZER_DUMP_PATH -> ROCKS_DUMP_PATH
93-
#INGESTER_SLOTS_DB_PATH -> ROCKS_SLOTS_DB_PATH
94-
#INGESTER_SECONDARY_SLOTS_DB_PATH -> ROCKS_SECONDARY_SLOTS_DB_PATH
95-
96-
#API_DATABASE_CONFIG -> PG_MAX_DB_CONNECTIONS and PG_DATABASE_URL
97-
98-
#SYNCHRONIZER_DUMP_PATH -> ROCKS_DUMP_PATH
99-
#SYNCHRONIZER_ROCKS_DB_SECONDARY_PATH_CONTAINER -> ROCKS_DB_SECONDARY_PATH
100-
#SYNCHRONIZER_DUMP_SYNCHRONIZER_BATCH_SIZE -> DUMP_SYNCHRONIZER_BATCH_SIZE
101-
#SYNCHRONIZER_DUMP_SYNC_THRESHOLD -> DUMP_SYNC_THRESHOLD
102-
103-
#API_ARCHIVES_DIR -> rocks_archives_dir
104-
#API_ROCKS_DB_PATH_CONTAINER -> ROCKS_DB_PATH
105-
#API_ROCKS_DB_SECONDARY_PATH_CONTAINER -> ROCKS_DB_SECONDARY_PATH
106-
#API_FILE_STORAGE_PATH_CONTAINER -> FILE_STORAGE_PATH_CONTAINER
107-
#API_JSON_MIDDLEWARE_CONFIG -> JSON_MIDDLEWARE_CONFIG
108-
#API_CONSISTENCE_SYNCHRONIZATION_API_THRESHOLD - > CONSISTENCE_SYNCHRONIZATION_API_THRESHOLD
109-
#API_CONSISTENCE_BACKFILLING_SLOTS_THRESHOLD -> CONSISTENCE_BACKFILLING_SLOTS_THRESHOLD
110-
#
111-
#API_SKIP_CHECK_TREE_GAPS -> SKIP_CHECK_TREE_GAPS
112-
# INGESTER_REDIS_MESSENGER_CONFIG -> REDIS_CONNECTION_CONFIG and note the differnce (less complex type)
113-
# INGESTER_BACKFILLER_SOURCE_MODE -> BACKFILLER_SOURCE_MODE
114-
# INGESTER_BIG_TABLE_CONFIG -> BIG_TABLE_CONFIG
115-
# both API_PEER_GRPC_PORT and INGESTER_PEER_GRPC_PORT were replaced with a single PEER_GRPC_PORT - only one will actually work
116-
# API_PEER_GRPC_MAX_GAP_SLOTS and INGESTER_PEER_GRPC_MAX_GAP_SLOTS -> PEER_GRPC_MAX_GAP_SLOTS (optional)
117-
# INGESTER_ROCKS_SYNC_INTERVAL_SECONDS and API_ROCKS_SYNC_INTERVAL_SECONDS -> ROCKS_SYNC_INTERVAL_SECONDS (optional)
118-
# INGESTER_GAPFILLER_PEER_ADDR -> GAPFILLER_PEER_ADDR (optional, only if run_gapfiller is set)
119-
# INGESTER_ACCOUNTS_BUFFER_SIZE -> ACCOUNT_PROCESSOR_BUFFER_SIZE (has default value, may be skipped)
120-
# INGESTER_ACCOUNTS_PARSING_WORKERS -> REDIS_ACCOUNTS_PARSING_WORKERS
121-
# INGESTER_ROCKS_FLUSH_BEFORE_BACKUP -> ROCKS_FLUSH_BEFORE_BACKUP
122-
# INGESTER_ROCKS_INTERVAL_IN_SECONDS -> ROCKS_INTERVAL_IN_SECONDS
123-
# INGESTER_TRANSACTIONS_PARSING_WORKERS -> REDIS_TRANSACTIONS_PARSING_WORKERS
124-
# INGESTER_SHOULD_REINGEST -> SHOULD_REINGEST
125-
# INGESTER_RUN_SEQUENCE_CONSISTENT_CHECKER -> RUN_SEQUENCE_CONSISTENT_CHECKER
126-
# INGESTER_RUN_PROFILING -> RUN_PROFILING
127-
# INGESTER_RUN_BUBBLEGUM_BACKFILLER -> RUN_BUBBLEGUM_BACKFILLER
128-
# Removed:
129-
# INGESTER_BACKFILL_RPC_ADDRESS, INGESTER_BACKFILLER_MODE, INGESTER_MESSAGE_SOURCE (redis is used as an only option as of now), INGESTER_DISABLE_SYNCHRONIZER (synchronizer is no longer part of the ingester), INGESTER_CHUNK_SIZE, INGESTER_PERMITTED_TASKS, INGESTER_TCP_CONFIG, INGESTER_WORKERS_COUNT, INGESTER_WAIT_PERIOD_SEC, INGESTER_SNAPSHOT_PARSING_WORKERS, INGESTER_SNAPSHOT_PARSING_BATCH_SIZE, INGESTER_SLOT_UNTIL, INGESTER_SLOT_START_FROM, INGESTER_RUN_FORK_CLEANER, INGESTER_RUN_DUMP_SYNCHRONIZE_ON_START

.github/workflows/cleanup.yml

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
name: Cleanup Container Images
2+
3+
on:
4+
workflow_dispatch:
5+
schedule:
6+
- cron: '0 3 * * 0'
7+
8+
jobs:
9+
cleanup:
10+
runs-on: ubuntu-latest
11+
env:
12+
REPO_NAME: ${GITHUB_REPOSITORY#*/}
13+
strategy:
14+
matrix:
15+
binary: [ingester, das-api, slot_persister, backfill, synchronizer, rocksdb_backup]
16+
steps:
17+
- name: Set full package name
18+
id: set_pkg
19+
run: |
20+
FULL_NAME="${REPO_NAME}-${{ matrix.binary }}"
21+
echo "package_name=${FULL_NAME}" >> $GITHUB_OUTPUT
22+
echo "Cleaning up package: ${FULL_NAME}"
23+
24+
- name: Cleanup package images
25+
uses: ./.github/workflows/delete-container-versions.yml
26+
with:
27+
package_name: ${{ steps.set_pkg.outputs.package_name }}
28+
keep_release: 30
29+
keep_develop: 20
30+
keep_other: 20
31+
keep_untagged: 0
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
name: Delete Container Versions
2+
3+
on:
4+
workflow_call:
5+
inputs:
6+
package_name:
7+
required: true
8+
type: string
9+
keep_release:
10+
required: false
11+
type: number
12+
default: 30
13+
keep_develop:
14+
required: false
15+
type: number
16+
default: 20
17+
keep_other:
18+
required: false
19+
type: number
20+
default: 20
21+
keep_untagged:
22+
required: false
23+
type: number
24+
default: 0
25+
26+
jobs:
27+
delete_old_packages:
28+
runs-on: ubuntu-latest
29+
steps:
30+
- name: Keep last release versions
31+
uses: smartsquaregmbh/[email protected]
32+
with:
33+
organization: ${{ github.repository_owner }}
34+
type: container
35+
names: ${{ inputs.package_name }}
36+
version-pattern: '^v\d+\.\d+\.\d+$'
37+
keep: ${{ inputs.keep_release }}
38+
dry-run: true
39+
40+
- name: Keep last develop versions
41+
uses: smartsquaregmbh/[email protected]
42+
with:
43+
organization: ${{ github.repository_owner }}
44+
type: container
45+
names: ${{ inputs.package_name }}
46+
version-pattern: '^develop-.*'
47+
keep: ${{ inputs.keep_develop }}
48+
dry-run: true
49+
50+
- name: Keep last other tagged versions
51+
uses: smartsquaregmbh/[email protected]
52+
with:
53+
organization: ${{ github.repository_owner }}
54+
type: container
55+
names: ${{ inputs.package_name }}
56+
version-pattern: '^(?!v\d+\.\d+\.\d+$)(?!latest)(?!develop-).*'
57+
keep: ${{ inputs.keep_other }}
58+
dry-run: true
59+
60+
- name: Keep last untagged versions
61+
uses: actions/delete-package-versions@v5
62+
with:
63+
package-name: ${{ inputs.package_name }}
64+
package-type: container
65+
delete-only-untagged-versions: 'true'
66+
min-versions-to-keep: ${{ inputs.keep_untagged }}

.github/workflows/docker.yml

Lines changed: 31 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,18 @@ on:
88
branches: [develop]
99
tags: ["v*"]
1010

11+
# Add concurrency to cancel in-progress runs on the same ref
12+
concurrency:
13+
group: ${{ github.workflow }}-${{ github.ref }}
14+
cancel-in-progress: true
15+
1116
# Add permissions block for GitHub Container Registry access
1217
permissions:
1318
contents: read
1419
packages: write
1520

1621
env:
17-
PUSH_CONDITION: ${{ github.event_name == 'push' || (github.event_name == 'workflow_dispatch' && contains(fromJSON('["refs/head/main", "refs/head/develop"]'), github.event.workflow_dispatch.ref)) }}
22+
PUSH_CONDITION: ${{ github.event_name == 'push' && (contains(fromJSON('["refs/heads/develop"]'), github.ref) || startsWith(github.ref, 'refs/tags/')) || github.event_name == 'workflow_dispatch' && contains(fromJSON('["refs/heads/develop"]'), github.ref) }}
1823

1924
jobs:
2025
build-base-image:
@@ -23,7 +28,10 @@ jobs:
2328
version: ${{ steps.version.outputs.version }}
2429

2530
steps:
26-
- uses: actions/checkout@v4
31+
- name: Check out repository
32+
uses: actions/checkout@v4
33+
with:
34+
fetch-depth: 0
2735
- name: Login to GitHub Container Registry
2836
uses: docker/login-action@v3
2937
with:
@@ -82,7 +90,10 @@ jobs:
8290
rocksdb_backup,
8391
]
8492
steps:
85-
- uses: actions/checkout@v4 # Need to checkout code for Dockerfile
93+
- name: Check out repository
94+
uses: actions/checkout@v4
95+
with:
96+
fetch-depth: 0
8697
- name: Login to GitHub Container Registry
8798
uses: docker/login-action@v3
8899
with:
@@ -142,7 +153,8 @@ jobs:
142153
runs-on: ubuntu-latest
143154
needs: [build-base-image, build-binary-images]
144155
steps:
145-
- name: Repository dispatch
156+
- name: Repository dispatch for development
157+
if: startsWith(github.ref, 'refs/heads/develop')
146158
run: |
147159
curl -X POST \
148160
-H "Authorization: token ${{ secrets.DISPATCH_TOKEN_DEV }}" \
@@ -155,3 +167,18 @@ jobs:
155167
"version": "${{ needs.build-base-image.outputs.version }}"
156168
}
157169
}'
170+
171+
- name: Repository dispatch for production
172+
if: startsWith(github.ref, 'refs/tags/')
173+
run: |
174+
curl -X POST \
175+
-H "Authorization: token ${{ secrets.DISPATCH_TOKEN_PROD }}" \
176+
-H "Accept: application/vnd.github+json" \
177+
https://api.github.com/repos/adm-metaex/aura-config-prod/dispatches \
178+
-d '{
179+
"event_type": "deploy",
180+
"client_payload": {
181+
"services": "${{ env.PUSH_CONDITION && 'ingester,slot_persister,backfill,api,synchronizer,rocksdb_backup' || '' }}",
182+
"version": "${{ needs.build-base-image.outputs.version }}"
183+
}
184+
}'

0 commit comments

Comments
 (0)