Skip to content

Commit 769ebc4

Browse files
committed
chore(ci): clean up env some more & downsize compose
1 parent bc0f7f2 commit 769ebc4

File tree

4 files changed

+47
-103
lines changed

4 files changed

+47
-103
lines changed

.env.example

+21-77
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,40 @@
11
RPC_HOST='https://mainnet-aura.metaplex.com/{personal_rpc_key}'
22

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

619
#Redis
720
REDIS_CONNECTION_CONFIG='{"redis_connection_str":"redis://127.0.0.1:6379/0"}'
821

922
#RocksDB
1023
ROCKS_DB_PATH="/usr/src/rocksdb-data"
11-
ROCKS_DB_SECONDARY_PATH="path/to/rocks/secondary/db"
24+
ROCKS_DB_SECONDARY_PATH="/path/to/rocks/secondary/db"
1225
# path to the slots data, required for the backfiller to work
1326
ROCKS_SLOTS_DB_PATH=/path/to/slots-data
1427
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"
28+
ROCKS_ARCHIVES_DIR="/path/to/rocks/backup/archives"
29+
ROCKS_BACKUP_ARCHIVES_DIR="/path/to/rocks/backup/archives"
1730
ROCKS_BACKUP_URL="127.0.0.1:3051/snapshot"
1831
ROCKS_MIGRATION_STORAGE_PATH=/path/to/migration_storage
32+
ROCKS_BACKUP_DIR="/path/to/rocks/backup/"
33+
ROCKS_DUMP_PATH="/path/to/dump"
1934

2035
#Backfiller
2136
BACKFILLER_SOURCE_MODE=bigtable
22-
BIG_TABLE_CONFIG='{creds="/usr/src/app/creds.json", timeout=1000}'
37+
BIG_TABLE_CONFIG='{"creds": "/usr/src/app/creds.json", "timeout": 1000}'
2338

2439
# Metrics port. Start HTTP server to report metrics if port exist.
2540
API_METRICS_PORT=8985
@@ -33,14 +48,10 @@ API_SERVER_PORT=8990
3348

3449
# GRPC Server port
3550
PEER_GRPC_PORT=9099
51+
GAPFILLER_PEER_ADDR="0.0.0.0"
3652

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"
53+
FILE_STORAGE_PATH="/path/to/file/storage"
4254
FILE_STORAGE_PATH_CONTAINER="/usr/src/app/file_storage"
43-
ROCKS_DUMP_PATH="/path/to/dump"
4455

4556
#Profiling (optional)
4657
PROFILING_FILE_PATH_CONTAINER="/usr/src/profiling"
@@ -60,70 +71,3 @@ INTEGRITY_VERIFICATION_TEST_FILE_PATH="./test_keys/test_keys.txt"
6071
INTEGRITY_VERIFICATION_TEST_FILE_PATH_CONTAINER="/test_keys/test_keys.txt"
6172
INTEGRITY_VERIFICATION_SLOTS_COLLECT_PATH="./slots_collect"
6273
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

docker-compose.yaml

+10-13
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
1-
version: "3.9"
21
services:
32
ingester:
43
container_name: ingester
54
restart: always
6-
entrypoint: sh -c "./ingester --rocks-slots-db-path $$ROCKS_SLOTS_DB_PATH --rocks-secondary-slots-db-path $$ROCKS_SECONDARY_SLOTS_DB_PATH"
75
env_file:
86
- .env
97
network_mode: host
@@ -12,20 +10,23 @@ services:
1210
- ${ROCKS_DUMP_PATH:-/tmp/rocks_dump}:${ROCKS_DUMP_PATH:-/tmp/rocks_dump}:rw
1311
- ${ROCKS_BACKUP_DIR}:${ROCKS_BACKUP_DIR}:rw
1412
- ${ROCKS_BACKUP_ARCHIVES_DIR}:${ROCKS_BACKUP_ARCHIVES_DIR}:rw
15-
- ${PROFILING_FILE_PATH}:${PROFILING_FILE_PATH_CONTAINER}:rw
1613
- ${FILE_STORAGE_PATH}:${FILE_STORAGE_PATH_CONTAINER}:rw
1714
- ${ROCKS_MIGRATION_STORAGE_PATH}:${ROCKS_MIGRATION_STORAGE_PATH}:rw
1815
- ${ROCKS_SLOTS_DB_PATH}:${ROCKS_SLOTS_DB_PATH}:ro
1916
- ${ROCKS_SECONDARY_SLOTS_DB_PATH}:${ROCKS_SECONDARY_SLOTS_DB_PATH}:rw
2017
- ./creds.json:/usr/src/app/creds.json
2118
- ./migrations:/usr/src/app/migrations
2219
- ./arweave_wallet.json:/usr/src/app/arweave_wallet.json
23-
- ./heaps:/usr/src/app/heaps:rw
20+
# Only exists for profiling - uncomment if needed
21+
# - ./heaps:/usr/src/app/heaps:rw
22+
# - ${PROFILING_FILE_PATH}:${PROFILING_FILE_PATH_CONTAINER}:rw
2423
depends_on:
2524
- db
2625
build:
2726
context: .
2827
dockerfile: docker/app.Dockerfile
28+
# Replace for profiling:
29+
# dockerfile: docker/profiling/app.Dockerfile
2930
args:
3031
BINARY: ingester
3132
stop_grace_period: 10m
@@ -44,7 +45,8 @@ services:
4445
- ${ROCKS_DB_SECONDARY_PATH}/api:${ROCKS_DB_SECONDARY_PATH}:rw
4546
- ${ROCKS_ARCHIVES_DIR}:${ROCKS_ARCHIVES_DIR}:ro
4647
- ${FILE_STORAGE_PATH}:${FILE_STORAGE_PATH_CONTAINER}:rw
47-
- ./heaps:/usr/src/app/heaps:rw
48+
# Only exists for profiling - uncomment if needed
49+
# - ./heaps:/usr/src/app/heaps:rw
4850
depends_on:
4951
- db
5052
build:
@@ -67,8 +69,9 @@ services:
6769
- ${ROCKS_DB_PATH}:${ROCKS_DB_PATH}:rw
6870
- ${ROCKS_DUMP_PATH:-/tmp/rocks_dump}:${ROCKS_DUMP_PATH:-/tmp/rocks_dump}:rw
6971
- ${ROCKS_DB_SECONDARY_PATH}/synchronizer:${ROCKS_DB_SECONDARY_PATH}:rw
70-
- ./heaps:/usr/src/app/heaps:rw
7172
- ./migrations:/usr/src/app/migrations
73+
# Only exists for profiling - uncomment if needed
74+
# - ./heaps:/usr/src/app/heaps:rw
7275
depends_on:
7376
- db
7477
build:
@@ -127,16 +130,10 @@ services:
127130
slot-persister:
128131
container_name: slot-persister
129132
restart: always
130-
entrypoint: >
131-
sh -c "if [ -f /usr/src/app/creds.json ]; then
132-
export BIG_TABLE_CREDENTIALS=/usr/src/app/creds.json;
133-
fi;
134-
exec ./slot_persister"
135133
env_file:
136134
- .env
137135
environment:
138136
SLOTS_DB_PRIMARY_PATH: ${ROCKS_SLOTS_DB_PATH}
139-
# BIG_TABLE_CREDENTIALS: /usr/src/app/creds.json # refactored this to account for the file doesn't exist case
140137
METRICS_PORT: 9090
141138
network_mode: host
142139
volumes:
@@ -164,7 +161,7 @@ services:
164161
POSTGRES_PASSWORD: solana # The PostgreSQL password (useful to connect to the database)
165162
POSTGRES_DB: solana
166163
volumes:
167-
- ${POSTGRE_DB_PATH:-./db-data}:/var/lib/postgresql/data/:rw
164+
- ${POSTGRE_DB_PATH}:/var/lib/postgresql/data/:rw
168165
- ${ROCKS_DUMP_PATH:-/tmp/rocks_dump}:${ROCKS_DUMP_PATH:-/tmp/rocks_dump}:ro
169166
logging:
170167
options:

nft_ingester/src/bin/slot_persister/main.rs

+15-12
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,11 @@ use interface::{
88
error::StorageError, signature_persistence::BlockProducer, slot_getter::FinalizedSlotGetter,
99
};
1010
use metrics_utils::{utils::start_metrics, MetricState, MetricsTrait};
11-
use nft_ingester::{backfiller::BackfillSource, inmemory_slots_dumper::InMemorySlotsDumper};
11+
use nft_ingester::{
12+
backfiller::BackfillSource,
13+
config::{parse_json_to_big_table_config, BigTableConfig},
14+
inmemory_slots_dumper::InMemorySlotsDumper,
15+
};
1216
use rocks_db::{column::TypedColumn, SlotStorage};
1317
use tokio::{
1418
sync::{broadcast, Semaphore},
@@ -50,13 +54,9 @@ struct Args {
5054
#[arg(short, long)]
5155
start_slot: Option<u64>,
5256

53-
/// Big table credentials file path
54-
#[arg(short, long, env = "BIG_TABLE_CREDENTIALS")]
55-
big_table_credentials: Option<String>,
56-
57-
/// Optional big table timeout (default: 1000)
58-
#[arg(short = 'B', long, default_value_t = 1000)]
59-
big_table_timeout: u32,
57+
/// Big table config (best passed from env)
58+
#[arg(short, long, env, value_parser = parse_json_to_big_table_config)]
59+
big_table_config: Option<BigTableConfig>,
6060

6161
/// Metrics port
6262
/// Default: 9090
@@ -195,11 +195,14 @@ pub async fn main() -> Result<(), Box<dyn std::error::Error>> {
195195
let rpc_client = Arc::new(BackfillRPC::connect(args.rpc_host.clone()));
196196

197197
let backfill_source = {
198-
if let Some(ref bg_creds) = args.big_table_credentials {
198+
if let Some(ref big_table_config) = args.big_table_config {
199199
Arc::new(BackfillSource::Bigtable(Arc::new(
200-
BigTableClient::connect_new_with(bg_creds.clone(), args.big_table_timeout)
201-
.await
202-
.expect("expected to connect to big table"),
200+
BigTableClient::connect_new_with(
201+
big_table_config.get_big_table_creds_key().expect("get big table greds"),
202+
big_table_config.get_big_table_timeout_key().expect("get big table timeout"),
203+
)
204+
.await
205+
.expect("expected to connect to big table"),
203206
)))
204207
} else {
205208
Arc::new(BackfillSource::Rpc(rpc_client.clone()))

nft_ingester/src/config.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -533,7 +533,7 @@ fn parse_json_to_json_middleware_config(s: &str) -> Result<JsonMiddlewareConfig,
533533
parse_json(s)
534534
}
535535

536-
fn parse_json_to_big_table_config(s: &str) -> Result<BigTableConfig, String> {
536+
pub fn parse_json_to_big_table_config(s: &str) -> Result<BigTableConfig, String> {
537537
parse_json(s)
538538
}
539539

0 commit comments

Comments
 (0)