From 2a0cec28005b0a206fd597cdf561b8e799644b55 Mon Sep 17 00:00:00 2001 From: Aditya Vyas Date: Mon, 11 Nov 2024 12:12:09 -0500 Subject: [PATCH] Remove BatchGetLedgers from LedgerReader --- cmd/soroban-rpc/internal/db/ledger.go | 40 ++++++------------- cmd/soroban-rpc/internal/db/ledger_test.go | 4 +- cmd/soroban-rpc/internal/db/mocks.go | 6 --- .../methods/get_latest_ledger_test.go | 6 --- 4 files changed, 16 insertions(+), 40 deletions(-) diff --git a/cmd/soroban-rpc/internal/db/ledger.go b/cmd/soroban-rpc/internal/db/ledger.go index d81a5c62..730a2da6 100644 --- a/cmd/soroban-rpc/internal/db/ledger.go +++ b/cmd/soroban-rpc/internal/db/ledger.go @@ -21,7 +21,6 @@ type StreamLedgerFn func(xdr.LedgerCloseMeta) error type LedgerReader interface { GetLedger(ctx context.Context, sequence uint32) (xdr.LedgerCloseMeta, bool, error) - BatchGetLedgers(ctx context.Context, sequence uint32, batchSize uint) ([]xdr.LedgerCloseMeta, error) StreamAllLedgers(ctx context.Context, f StreamLedgerFn) error GetLedgerRange(ctx context.Context) (ledgerbucketwindow.LedgerRange, error) StreamLedgerRange(ctx context.Context, startLedger uint32, endLedger uint32, f StreamLedgerFn) error @@ -63,7 +62,19 @@ func (l ledgerReaderTx) GetLedgerRange(ctx context.Context) (ledgerbucketwindow. func (l ledgerReaderTx) BatchGetLedgers(ctx context.Context, sequence uint32, batchSize uint, ) ([]xdr.LedgerCloseMeta, error) { - return batchGetLedgers(ctx, l.tx, sequence, batchSize) + sql := sq.Select("meta"). + From(ledgerCloseMetaTableName). + Where(sq.And{ + sq.GtOrEq{"sequence": sequence}, + sq.LtOrEq{"sequence": sequence + uint32(batchSize) - 1}, + }) + + results := make([]xdr.LedgerCloseMeta, 0, batchSize) + if err := l.tx.Select(ctx, &results, sql); err != nil { + return nil, err + } + + return results, nil } func (l ledgerReaderTx) Done() error { @@ -156,31 +167,6 @@ func (r ledgerReader) GetLedger(ctx context.Context, sequence uint32) (xdr.Ledge } } -// BatchGetLedgers fetches ledgers in batches from the db. -func (r ledgerReader) BatchGetLedgers(ctx context.Context, sequence uint32, - batchSize uint, -) ([]xdr.LedgerCloseMeta, error) { - return batchGetLedgers(ctx, r.db, sequence, batchSize) -} - -func batchGetLedgers(ctx context.Context, db readDB, sequence uint32, - batchSize uint, -) ([]xdr.LedgerCloseMeta, error) { - sql := sq.Select("meta"). - From(ledgerCloseMetaTableName). - Where(sq.And{ - sq.GtOrEq{"sequence": sequence}, - sq.LtOrEq{"sequence": sequence + uint32(batchSize) - 1}, - }) - - results := make([]xdr.LedgerCloseMeta, 0, batchSize) - if err := db.Select(ctx, &results, sql); err != nil { - return nil, err - } - - return results, nil -} - // GetLedgerRange pulls the min/max ledger sequence numbers from the meta table. func (r ledgerReader) GetLedgerRange(ctx context.Context) (ledgerbucketwindow.LedgerRange, error) { r.db.cache.RLock() diff --git a/cmd/soroban-rpc/internal/db/ledger_test.go b/cmd/soroban-rpc/internal/db/ledger_test.go index 9ed9a5a4..d2fc7705 100644 --- a/cmd/soroban-rpc/internal/db/ledger_test.go +++ b/cmd/soroban-rpc/internal/db/ledger_test.go @@ -198,11 +198,13 @@ func BenchmarkGetLedgerRange(b *testing.B) { func BenchmarkBatchGetLedgers(b *testing.B) { testDB, lcms := setupBenchmarkingDB(b) reader := NewLedgerReader(testDB) + readTx, err := reader.NewTx(context.Background()) + require.NoError(b, err) batchSize := uint(200) // using the current maximum value for getLedgers endpoint b.ResetTimer() for range b.N { - ledgers, err := reader.BatchGetLedgers(context.TODO(), 1334, batchSize) + ledgers, err := readTx.BatchGetLedgers(context.TODO(), 1334, batchSize) require.NoError(b, err) assert.Equal(b, lcms[0].LedgerSequence(), ledgers[0].LedgerSequence()) assert.Equal(b, lcms[batchSize-1].LedgerSequence(), ledgers[batchSize-1].LedgerSequence()) diff --git a/cmd/soroban-rpc/internal/db/mocks.go b/cmd/soroban-rpc/internal/db/mocks.go index fa904201..4868ced4 100644 --- a/cmd/soroban-rpc/internal/db/mocks.go +++ b/cmd/soroban-rpc/internal/db/mocks.go @@ -97,12 +97,6 @@ func (m *MockLedgerReader) GetLedger(_ context.Context, sequence uint32) (xdr.Le return *lcm, true, nil } -func (m *MockLedgerReader) BatchGetLedgers(_ context.Context, _ uint32, - _ uint, -) ([]xdr.LedgerCloseMeta, error) { - return []xdr.LedgerCloseMeta{}, nil -} - func (m *MockLedgerReader) StreamAllLedgers(_ context.Context, _ StreamLedgerFn) error { return nil } diff --git a/cmd/soroban-rpc/internal/methods/get_latest_ledger_test.go b/cmd/soroban-rpc/internal/methods/get_latest_ledger_test.go index f7f79644..251b3e34 100644 --- a/cmd/soroban-rpc/internal/methods/get_latest_ledger_test.go +++ b/cmd/soroban-rpc/internal/methods/get_latest_ledger_test.go @@ -61,12 +61,6 @@ func (ledgerReader *ConstantLedgerReader) GetLedger(_ context.Context, return createLedger(sequence, expectedLatestLedgerProtocolVersion, expectedLatestLedgerHashBytes), true, nil } -func (ledgerReader *ConstantLedgerReader) BatchGetLedgers(_ context.Context, _ uint32, - _ uint, -) ([]xdr.LedgerCloseMeta, error) { - return []xdr.LedgerCloseMeta{}, nil -} - func (ledgerReader *ConstantLedgerReader) StreamAllLedgers(_ context.Context, _ db.StreamLedgerFn) error { return nil }