diff --git a/clients/rippled/Dockerfile b/clients/rippled/Dockerfile index 5f2cd33..a59a0a8 100644 --- a/clients/rippled/Dockerfile +++ b/clients/rippled/Dockerfile @@ -1,5 +1,5 @@ -ARG baseimage=rippleci/rippled -ARG tag=develop +ARG baseimage=xrpllabsofficial/xrpld +ARG tag=latest FROM --platform=linux/amd64 $baseimage:$tag diff --git a/clients/rippled/xrpl_start.sh b/clients/rippled/xrpl_start.sh index 26308b8..27c3349 100644 --- a/clients/rippled/xrpl_start.sh +++ b/clients/rippled/xrpl_start.sh @@ -57,6 +57,16 @@ $VALIDATORS [ledger_history] ${XRPL_LEDGER_HISTORY:-256} + +# Empty publisher sections so rippled does NOT fetch the mainnet UNL +# (vl.ripple.com / vl.xrplf.org). Without these, rippled in a private +# test network ends up tracking mainnet validators in its untrusted +# set — which floods the consensus log with `is_trusted: 0` +# validations and slows down close cadence on a small test network. +[validator_list_sites] + +[validator_list_keys] + CFGEOF # Validator seed. diff --git a/simulators/sync/main.go b/simulators/sync/main.go index 11fbd3f..1d45cf7 100644 --- a/simulators/sync/main.go +++ b/simulators/sync/main.go @@ -166,10 +166,22 @@ func makeLateJoinTest(initialClient, lateClient string) func(t *xrplsim.T) { t.Fatalf("late-join %s node did not sync to ledger %d: %v", lateClient, targetLedger, err) } - // Verify the late joiner has the account we created. - acct, err := lateRPC.AccountInfo("rPMh7Pi9ct699iZUTWz6CFkakUy5Ju9f9v") - if err != nil { - t.Fatal("late-join node doesn't have the account:", err) + // rippled returns `noNetwork` from account_info while server_state + // is "connected" (validations seen but state not yet replayed). + // Retry until rippled finishes catchup or we time out. rxrpl + // answers immediately so the loop exits on first try. + var acct *xrplsim.AccountInfoResult + var lastErr error + acctDeadline := time.Now().Add(120 * time.Second) + for time.Now().Before(acctDeadline) { + acct, lastErr = lateRPC.AccountInfo("rPMh7Pi9ct699iZUTWz6CFkakUy5Ju9f9v") + if lastErr == nil { + break + } + time.Sleep(2 * time.Second) + } + if lastErr != nil { + t.Fatalf("late-join %s node didn't replay state for account in time: %v", lateClient, lastErr) } t.Logf("late-join %s synced from %s network — account balance: %s", lateClient, initialClient, acct.Balance) }