-
Notifications
You must be signed in to change notification settings - Fork 69
Add RPC database backfill performance evaluation leg #830
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
Merged
Merged
Changes from all commits
Commits
Show all changes
116 commits
Select commit
Hold shift + click to select a range
3392f09
pull initial work from branch load-testing
cjonas9 ffe27bc
add ledger generation test adapted for RPC
cjonas9 65da3b5
add apply load config
cjonas9 34f086d
add generated ledger output to infrastructure/testdata/
cjonas9 80c982d
add basic ingestion of synthetic ledgers phase
cjonas9 94c69b7
disable debug logs for load test for timeout reasons
cjonas9 f4a16f9
add functions for snapshotting + restoring test DB
cjonas9 1d53b96
improve ad restructure db restoration helpers/API
cjonas9 baf2255
finish DB restoration logic flow and wiring
cjonas9 1647464
skip migrations/fee-stats in load test mode
cjonas9 2f14765
ingest test: refactor, minor semantic fixes
cjonas9 d7c90a9
test.go: add retention window to config, fix fake history archive for…
cjonas9 0390757
minor db restore/trim helper fixes
cjonas9 e0a86e7
rename restore backed-up ledgers function for accuracy
cjonas9 f151a35
refactor, add env vars, change DB helpers to take sequences
cjonas9 bffb101
remove db restoration functionality
cjonas9 e04d51d
add performance metrics json emission functionality
cjonas9 bd8c784
migrate to polling getHealth, change ingest test limits to 1000 ledgers
cjonas9 c7bc001
remove ledger fixtures
cjonas9 786423d
add workflow and script
cjonas9 1606829
fix yaml referencing wrong path for script
cjonas9 7d41b1a
fix yml parsing indentation bug
cjonas9 b701108
use head-object for metadata rather than tags
cjonas9 b1cec1d
refine workflow + instance script
cjonas9 b9ef27e
add apply load cfg
cjonas9 73df1e7
testing: on-push runs
cjonas9 241bdf8
minor yml syntax fixes
cjonas9 1161e3f
set test e2e.yml + add debugging info from instance to ssm
cjonas9 47437f4
skip e2e.yml for testing, add retry loop for root volume lookup
cjonas9 008f327
build-libs over build-stellar-rpc to cut time back
cjonas9 9441749
further slim build phase with no-install-recommends
cjonas9 36c0a82
make instance script best-effort if head-object or stellar-core versi…
cjonas9 4535977
temporarily modify script to work on scratch dev box; increase timeout
cjonas9 54f0b41
fix cfg path error and run ID regression
cjonas9 44e093c
improve error logging
cjonas9 1ce515e
fix error logging wrapper
cjonas9 22a8e6e
patch premature exit due to err trap bug
cjonas9 e925d3c
fix empty GOPATH/GOMODCACHE
cjonas9 ffb3299
updated apply-load config for specific core on runner
cjonas9 bae2fdc
fix version check if warning prints
cjonas9 70eb9dc
bump all timeouts to >= 2 hours
cjonas9 705edec
increase ingest phase timeout
cjonas9 c697510
extend aws role lifetime
cjonas9 caec3f4
undo session time limit increase, use pre-generated synthetic ledgers
cjonas9 b32181d
require confirmed gp3 throttling, extend GHA AWS session to 4 hours
cjonas9 3a0571f
patch logic for throttling behavior
cjonas9 2c4a004
slim needless instance bootstrapping work
cjonas9 d620450
refactor ephemeral load test runner
cjonas9 41529f4
fix minor refactor false sha-verify failure
cjonas9 2a21c73
add support for multiple ledger profiles/files
cjonas9 04f0fe1
change log level to warn, decrease each soroban scenario meta to 1000…
cjonas9 02556cc
refactored duplicate/messy code
cjonas9 807ca42
stop grepping to determine success status, make GHA->ec2 parameter pa…
cjonas9 af9f7b9
split offline ledger generation out of the ingest benchmark
cjonas9 e4180dd
refactor and remove old apply load cfg
cjonas9 4c3394c
Merge remote-tracking branch 'origin/main' into apply-load
cjonas9 bc2e490
Merge branch 'main' into apply-load
cjonas9 555483e
Merge branch 'apply-load' of https://github.com/stellar/stellar-rpc i…
cjonas9 a620cdc
fix linter errors
cjonas9 2dabdf3
add json file providing configurability for eval thresholds
cjonas9 3f873f7
add basic coordinator for epic's tasks
cjonas9 8f4f1d1
make ec2 ingest load test callable
cjonas9 c1c437f
propogate apply load ingest test metrics to coordinator
cjonas9 b031d9d
add releaseeval package for subtest tooling and execution
cjonas9 61d4877
make ingest load test share perf schema w/ coordinator
cjonas9 65cb6ff
update go version
cjonas9 4aca1ef
update default ledger bundle/config to existent ones for test
cjonas9 3d61ceb
decompose ec2 script into go programs
cjonas9 9bef115
reduce comment verbosity, minor clean up
cjonas9 8b39ed5
install jq on load-test box for build-libs; surface build-libs errors
cjonas9 714b1fa
throttle load-test benchmark via cgroup io.max instead of EBS ModifyV…
cjonas9 d9987f6
drop accidentally-committed refresh tooling and orphaned apply-load.cfg
cjonas9 5058ad3
fix linter errors in load-test runner
cjonas9 8cf9f6b
make load-test ingest frequency and ledger count configurable via env
cjonas9 3b33626
EXPERIMENT: run load-test benchmark un-throttled at volume-provisione…
cjonas9 7e60661
use SDK's maxLedgersPerFile ceiling and multiple-bundle functionality
cjonas9 fdb1926
simplify verification walk
cjonas9 1f974a4
simplify and refactor, add ledger ingest stall timeout
cjonas9 19a3115
simplify correctness check, delegate apply-load config work to SDK
cjonas9 103b648
remove ingest phase dependence on unnecessary supplied apply load con…
cjonas9 7e13bf3
bump go sdk to v0.6.x
cjonas9 8333974
bump go sdk again, merge SDK main into loadtest-patch
cjonas9 f3f3d58
Merge remote-tracking branch 'origin/main' into apply-load
cjonas9 a6241f6
update comments in light of changes
cjonas9 855527c
merge apply-load recent work into coordinator
cjonas9 8d5f523
rework handshake into instance->s3 results push, fix minor leaks + OO…
cjonas9 21b8045
replace polling-based ledger timing computation with daemon hook
cjonas9 a8931fe
remove trigger-on-push behavior
cjonas9 97af867
Merge branch 'apply-load' into gha-coordinator
cjonas9 b15e2e3
simplify significantly, refactor into on-release-push job launcher + …
cjonas9 fbd8b2b
moved ingest load test go programs into separate folder
cjonas9 237578c
refactored coordinator logic into go
cjonas9 4651084
Merge remote-tracking branch 'origin/main' into gha-coordinator
cjonas9 f1b4473
add temporary trigger and log->s3 for testing
cjonas9 c601be5
bring main verbosity cleanups into coordinator
cjonas9 d846b52
decompose shared ec2/gha programming into reusable modular components
cjonas9 f83c4d8
move run-load-test.sh scripting into run_leg helper in common shell s…
cjonas9 c57a23b
add initial backfill-specific testing and wiring
cjonas9 3901d85
use callable workflows in coordinator
cjonas9 c91c61f
refactor into callable workflow, factor out common main Run() func
cjonas9 f5c4f3f
Merge branch 'gha-coordinator' into backfill-test
cjonas9 4d7084d
add push to branch backfill-test to coordinator triggers
cjonas9 0d261a6
resolve the PR by head without --base main
cjonas9 2bbb35e
in ec2, build daemon to a path that doesn't collide with the repo dir
cjonas9 cda0eb4
clean up comments, increase MaxSessionDuration and backfill time limits
cjonas9 1624ebe
keep ec2 box alive on job cancel + upload more logs
cjonas9 9d0cce9
Merge remote-tracking branch 'origin/main' into backfill-test
cjonas9 1a50e42
revert residual testing changes
cjonas9 b352ba9
minor: don't hard-code binaryPath in backfill's instantiate
cjonas9 b8af67e
break up legs line
cjonas9 e908b52
remove vestigial workflow call outputs
cjonas9 aa52702
simplify comments
cjonas9 7d729bf
add scanner error check
cjonas9 5599a27
harden instantiate with ingested vs. want verification
cjonas9 5771a07
add optional pr number workflow dispatch parameter
cjonas9 03fde5c
remove push to backfill-test trigger
cjonas9 File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Some comments aren't visible on the classic Files Changed page.
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
9 changes: 9 additions & 0 deletions
9
...ellar-rpc/internal/integrationtest/infrastructure/perf-eval/backfill-test/run-backfill.sh
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,9 @@ | ||
| # Backfill ingestion leg. Concatenated after bootstrap-common.sh in the rendered | ||
| # EC2 user-data, so it relies on that file's env, helpers, bootstrap_box, and | ||
| # run_leg. It hands off to `runner instantiate`, which builds stellar-rpc and | ||
| # times a backfill run against the pubnet datastore. The other half, `runner | ||
| # gather`, polls S3 for the result object. | ||
| LEG_TITLE="Backfill ingestion" | ||
|
|
||
| bootstrap_box | ||
| run_leg ./cmd/stellar-rpc/internal/integrationtest/infrastructure/perf-eval/backfill-test/runner |
223 changes: 223 additions & 0 deletions
223
...rpc/internal/integrationtest/infrastructure/perf-eval/backfill-test/runner/instantiate.go
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,223 @@ | ||
| package main | ||
|
|
||
| import ( | ||
| "bufio" | ||
| "context" | ||
| "fmt" | ||
| "os" | ||
| "os/exec" | ||
| "path/filepath" | ||
| "regexp" | ||
| "strconv" | ||
| "time" | ||
|
|
||
| "github.com/aws/aws-sdk-go-v2/config" | ||
| "github.com/aws/aws-sdk-go-v2/service/s3" | ||
|
|
||
| "github.com/stellar/go-stellar-sdk/ingest/ledgerbackend" | ||
|
|
||
| "github.com/stellar/stellar-rpc/cmd/stellar-rpc/internal/integrationtest/infrastructure/perf-eval/harness" | ||
| ) | ||
|
|
||
| const ( | ||
| // runner runs w/ cwd = repo root, so paths are relative to there | ||
| legDir = "cmd/stellar-rpc/internal/integrationtest/infrastructure/perf-eval/backfill-test" | ||
| corePath = "/usr/local/bin/stellar-core" // fetched from S3 | ||
| ) | ||
|
|
||
| const ledgerThreshold = 384 // mirrors ingest.ledgerThreshold in backfill.go | ||
|
|
||
| // backfillDoneRe matches the terminal line emitted on backfill's completion | ||
| var backfillDoneRe = regexp.MustCompile(`Backfill process complete, ledgers \[(\d+) -> (\d+)\]`) | ||
|
|
||
| // instantiate is the instance's backfill task: it fetches + builds test fixtures, | ||
| // runs a timed backfill, then publishes the verdict. | ||
| func instantiate(ctx context.Context) error { | ||
| var ( | ||
| bucket = harness.Env("BUCKET", "stellar-rpc-ci-load-test") | ||
| region = harness.Env("REGION", "us-east-1") | ||
| workDir = harness.Env("WORK_DIR", "/data") | ||
| resultsFile = harness.Env("RESULTS_FILE", "/tmp/results.md") | ||
| resultKey = os.Getenv("RESULT_KEY") | ||
| targetSHA = os.Getenv("TARGET_SHA") | ||
| runID = harness.Env("RUN_ID", "manual") | ||
| // ~1 day by default for cheap test runs; the full week is 120960. | ||
| retention = harness.Env("HISTORY_RETENTION_WINDOW", "17280") | ||
| deadline = harness.Env("BACKFILL_DEADLINE", "4h") | ||
|
|
||
| binaryPath = filepath.Join(workDir, "stellar-rpc-bin") // built here (the repo checkout is in WORK_DIR) | ||
| ) | ||
| repoRoot, err := os.Getwd() | ||
| if err != nil { | ||
| return err | ||
| } | ||
| bail := func(format string, args ...any) error { | ||
| return harness.BailInstance(resultsFile, "Backfill ingestion", runID, targetSHA, fmt.Sprintf(format, args...)) | ||
| } | ||
|
|
||
| want, err := strconv.Atoi(retention) // used to compare against ingested ledgers below | ||
| if err != nil { | ||
| return bail("parsing retention window %q: %v", retention, err) | ||
| } | ||
|
|
||
| awsCfg, err := config.LoadDefaultConfig(ctx, config.WithRegion(region)) | ||
| if err != nil { | ||
| return bail("loading AWS config: %v", err) | ||
| } | ||
| fetch := &harness.S3Fetcher{Client: s3.NewFromConfig(awsCfg), Bucket: bucket} | ||
|
|
||
| if err := fetch.FetchVerified(ctx, "core/stellar-core.zst", corePath, true, "stellar-core"); err != nil { | ||
| return bail("%v", err) | ||
| } | ||
| if err := os.Chmod(corePath, 0o755); err != nil { | ||
| return bail("chmod stellar-core: %v", err) | ||
| } | ||
|
|
||
| logger.Infof("building stellar-rpc") | ||
| if err := harness.RunStreaming(ctx, repoRoot, nil, 40, "make", "build-libs"); err != nil { | ||
| return bail("make build-libs failed: %v", err) | ||
| } | ||
| if err := harness.RunStreaming(ctx, repoRoot, nil, 40, | ||
| "go", "build", "-o", binaryPath, "./cmd/stellar-rpc"); err != nil { | ||
| return bail("go build failed: %v", err) | ||
| } | ||
|
|
||
| // fetch + write core config from SDK | ||
| coreCfg := filepath.Join(workDir, "captive-core-pubnet.cfg") | ||
| if err := os.WriteFile(coreCfg, ledgerbackend.PubnetDefaultConfig, 0o644); err != nil { | ||
| return bail("writing captive-core config: %v", err) | ||
| } | ||
|
|
||
| cfgPath, err := renderConfig(repoRoot, workDir, coreCfg, retention) | ||
| if err != nil { | ||
| return bail("rendering config: %v", err) | ||
| } | ||
|
|
||
| dl, err := time.ParseDuration(deadline) | ||
| if err != nil { | ||
| return bail("invalid BACKFILL_DEADLINE %q: %v", deadline, err) | ||
| } | ||
| logger.Infof("starting backfill (retention=%s, deadline=%s)", retention, deadline) | ||
| elapsed, lo, hi, err := runBackfill(ctx, dl, binaryPath, cfgPath) | ||
| if err != nil { | ||
| return bail("%v", err) | ||
| } | ||
| ingested := hi - lo + 1 | ||
| if ingested+ledgerThreshold < want { | ||
| return bail("backfill reported complete but ingested %d of %s ledgers", ingested, retention) | ||
| } | ||
| logger.Infof("backfill complete: %d ledgers [%d -> %d] in %s", ingested, lo, hi, elapsed.Round(time.Second)) | ||
|
cjonas9 marked this conversation as resolved.
|
||
|
|
||
| md := renderMarkdown(targetSHA, retention, lo, hi, ingested, elapsed) | ||
| if err := os.WriteFile(resultsFile, []byte(md), 0o644); err != nil { | ||
| return bail("writing results: %v", err) | ||
| } | ||
| if err := harness.PublishResult( | ||
| ctx, fetch.Client, bucket, resultKey, "ok", runID, targetSHA, resultsFile, ""); err != nil { | ||
| return bail("publishing result: %v", err) | ||
| } | ||
| return nil | ||
| } | ||
|
|
||
| // renderConfig fills the config template's ${...} placeholders (box paths + the | ||
| // retention window) via os.Expand | ||
| func renderConfig(repoRoot, workDir, coreCfg, retention string) (string, error) { | ||
| tmpl, err := os.ReadFile(filepath.Join(repoRoot, legDir, "testdata", "backfill-pubnet.toml.tmpl")) | ||
| if err != nil { | ||
| return "", err | ||
| } | ||
| mapping := func(in string) string { | ||
| switch in { | ||
| case "CAPTIVE_CORE_CONFIG_PATH": | ||
| return coreCfg | ||
| case "CAPTIVE_CORE_STORAGE_PATH": | ||
| return filepath.Join(workDir, "core-storage") | ||
| case "DB_PATH": | ||
| return filepath.Join(workDir, "backfill.sqlite") | ||
| case "STELLAR_CORE_BINARY_PATH": | ||
| return corePath | ||
| case "HISTORY_RETENTION_WINDOW": | ||
| return retention | ||
| default: | ||
| return "${" + in + "}" // leave unknown placeholders intact | ||
| } | ||
| } | ||
| body := os.Expand(string(tmpl), mapping) | ||
| cfgPath := filepath.Join(workDir, "backfill-rpc.toml") | ||
| if err := os.WriteFile(cfgPath, []byte(body), 0o644); err != nil { | ||
| return "", err | ||
| } | ||
| return cfgPath, nil | ||
| } | ||
|
|
||
| // runBackfill launches the daemon and streams its output (teeing to the box log) | ||
| // until the backfill-complete line fires, recording the wall-clock | ||
| func runBackfill(ctx context.Context, deadline time.Duration, binary, cfgPath string) (time.Duration, int, int, error) { | ||
|
cjonas9 marked this conversation as resolved.
|
||
| runCtx, cancel := context.WithTimeout(ctx, deadline) | ||
| defer cancel() | ||
|
|
||
| cmd := exec.CommandContext(runCtx, binary, "--config-path", cfgPath) | ||
| // hide this box's IMDS creds as the public datalake 403s signed requests | ||
| cmd.Env = append(os.Environ(), "AWS_EC2_METADATA_DISABLED=true") | ||
| pr, pw, err := os.Pipe() | ||
| if err != nil { | ||
| return 0, 0, 0, err | ||
| } | ||
| cmd.Stdout, cmd.Stderr = pw, pw | ||
|
|
||
| start := time.Now() | ||
|
cjonas9 marked this conversation as resolved.
|
||
| if err := cmd.Start(); err != nil { | ||
| pw.Close() | ||
| pr.Close() | ||
| return 0, 0, 0, fmt.Errorf("starting daemon: %w", err) | ||
| } | ||
| pw.Close() // the child holds the write end and we read until it dies | ||
| defer pr.Close() | ||
|
|
||
| var elapsed time.Duration | ||
| var lo, hi int | ||
| scanner := bufio.NewScanner(pr) | ||
| scanner.Buffer(make([]byte, 64*1024), 1024*1024) | ||
| for scanner.Scan() { | ||
|
cjonas9 marked this conversation as resolved.
|
||
| line := scanner.Text() | ||
| fmt.Fprintln(os.Stderr, line) // tee to the box user-data log (SSM debug tail) | ||
| if m := backfillDoneRe.FindStringSubmatch(line); m != nil { | ||
| elapsed = time.Since(start) | ||
| lo, _ = strconv.Atoi(m[1]) | ||
| hi, _ = strconv.Atoi(m[2]) | ||
| cancel() // stop the daemon before it starts live ingestion | ||
| break | ||
| } | ||
| } | ||
| scanErr := scanner.Err() | ||
| if scanErr != nil { | ||
| cancel() | ||
| } | ||
| _ = cmd.Wait() // reap; a kill from cancel surfaces here and is expected | ||
|
|
||
| if elapsed == 0 { | ||
| if scanErr != nil { | ||
| return 0, 0, 0, fmt.Errorf("reading daemon output: %w", scanErr) | ||
| } | ||
| return 0, 0, 0, fmt.Errorf("daemon exited or hit the %s deadline before backfill completed", deadline) | ||
| } | ||
| return elapsed, lo, hi, nil | ||
| } | ||
|
|
||
| func renderMarkdown(sha, retention string, lo, hi, ingested int, elapsed time.Duration) string { | ||
| shortSHA := sha | ||
| if len(shortSHA) > 12 { | ||
| shortSHA = shortSHA[:12] | ||
| } | ||
| lps := 0.0 | ||
| if s := elapsed.Seconds(); s > 0 { | ||
| lps = float64(ingested) / s | ||
| } | ||
| return fmt.Sprintf("### ⏳ Backfill ingestion — `%s`\n\n"+ | ||
| "| Metric | Value |\n|---|---|\n"+ | ||
| "| Ledgers ingested | %d (`[%d -> %d]`) |\n"+ | ||
| "| Retention window | %s |\n"+ | ||
| "| Wall-clock | %s |\n"+ | ||
| "| Ledgers/sec | %.1f |\n", | ||
| shortSHA, ingested, lo, hi, retention, elapsed.Round(time.Second), lps) | ||
| } | ||
8 changes: 8 additions & 0 deletions
8
...tellar-rpc/internal/integrationtest/infrastructure/perf-eval/backfill-test/runner/main.go
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,8 @@ | ||
| // Command runner runs the backfill ingestion benchmark on the box. | ||
| package main | ||
|
|
||
| import "github.com/stellar/stellar-rpc/cmd/stellar-rpc/internal/integrationtest/infrastructure/perf-eval/harness" | ||
|
|
||
| var logger = harness.NewLogger() | ||
|
|
||
| func main() { harness.Run(instantiate) } |
36 changes: 36 additions & 0 deletions
36
...integrationtest/infrastructure/perf-eval/backfill-test/testdata/backfill-pubnet.toml.tmpl
|
cjonas9 marked this conversation as resolved.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,36 @@ | ||
| # To fill in and use by the backfill leg's runner (instantiate.go renderConfig), | ||
| # which substitutes the placeholders below via os.Expand before the daemon reads | ||
| # it -- not a standalone config. | ||
|
|
||
| NETWORK_PASSPHRASE = "Public Global Stellar Network ; September 2015" | ||
| HISTORY_ARCHIVE_URLS = ["https://history.stellar.org/prd/core-live/core_live_001"] | ||
| ENDPOINT = "localhost:8000" | ||
| LOG_LEVEL = "info" | ||
|
|
||
| # Captive core is constructed at startup (so the binary + config must exist) | ||
| # even though backfill itself reads from the datastore below. | ||
| CAPTIVE_CORE_CONFIG_PATH = "${CAPTIVE_CORE_CONFIG_PATH}" | ||
| STELLAR_CORE_BINARY_PATH = "${STELLAR_CORE_BINARY_PATH}" | ||
| CAPTIVE_CORE_STORAGE_PATH = "${CAPTIVE_CORE_STORAGE_PATH}" | ||
| CHECKPOINT_FREQUENCY = 64 | ||
|
|
||
| DB_PATH = "${DB_PATH}" | ||
|
|
||
| # Backfill the retention window from the datastore on startup, then stop (the | ||
| # leg kills the daemon at the completion log line). | ||
| BACKFILL = true | ||
| SERVE_LEDGERS_FROM_DATASTORE = true | ||
| HISTORY_RETENTION_WINDOW = ${HISTORY_RETENTION_WINDOW} | ||
|
cjonas9 marked this conversation as resolved.
|
||
| INGESTION_TIMEOUT = "50m0s" | ||
|
cjonas9 marked this conversation as resolved.
|
||
|
|
||
| [datastore_config] | ||
| type = "S3" | ||
|
|
||
| [datastore_config.params] | ||
| destination_bucket_path = "aws-public-blockchain/v1.1/stellar/ledgers/pubnet" | ||
| region = "us-east-2" | ||
|
|
||
| [datastore_config.schema] | ||
| FileExtension = "zst" | ||
| files_per_partition = 64000 | ||
| ledgers_per_file = 1 | ||
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.