@@ -328,50 +328,24 @@ LedgerManagerImpl::loadLastKnownLedger(bool restoreBucketlist)
328
328
// Step 2. Restore LedgerHeader from DB based on the ledger hash derived
329
329
// earlier, or verify we're at genesis if in no-history mode
330
330
std::optional<LedgerHeader> latestLedgerHeader;
331
- if (mApp .getConfig ().MODE_STORES_HISTORY_LEDGERHEADERS )
331
+ auto currentLedger =
332
+ LedgerHeaderUtils::loadByHash (getDatabase (), lastLedgerHash);
333
+ if (!currentLedger)
332
334
{
333
- if (mRebuildInMemoryState )
334
- {
335
- LedgerHeader lh;
336
- CLOG_INFO (Ledger,
337
- " Setting empty ledger while core rebuilds state: {}" ,
338
- ledgerAbbrev (lh));
339
- setLedgerTxnHeader (lh, mApp );
340
- latestLedgerHeader = lh;
341
- }
342
- else
343
- {
344
- auto currentLedger =
345
- LedgerHeaderUtils::loadByHash (getDatabase (), lastLedgerHash);
346
- if (!currentLedger)
347
- {
348
- throw std::runtime_error (" Could not load ledger from database" );
349
- }
350
-
351
- if (currentLedger->ledgerSeq != has.currentLedger )
352
- {
353
- throw std::runtime_error (" Invalid database state: last known "
354
- " ledger does not agree with HAS" );
355
- }
356
-
357
- CLOG_INFO (Ledger, " Loaded LCL header from database: {}" ,
358
- ledgerAbbrev (*currentLedger));
359
- setLedgerTxnHeader (*currentLedger, mApp );
360
- latestLedgerHeader = *currentLedger;
361
- }
335
+ throw std::runtime_error (" Could not load ledger from database" );
362
336
}
363
- else
337
+
338
+ if (currentLedger->ledgerSeq != has.currentLedger )
364
339
{
365
- // In no-history mode, this method should only be called when
366
- // the LCL is genesis.
367
- releaseAssertOrThrow (getLCLState ().ledgerHeader .hash == lastLedgerHash);
368
- releaseAssertOrThrow (getLCLState ().ledgerHeader .header .ledgerSeq ==
369
- GENESIS_LEDGER_SEQ);
370
- CLOG_INFO (Ledger, " LCL is genesis: {}" ,
371
- ledgerAbbrev (getLCLState ().ledgerHeader ));
372
- latestLedgerHeader = getLCLState ().ledgerHeader .header ;
340
+ throw std::runtime_error (" Invalid database state: last known "
341
+ " ledger does not agree with HAS" );
373
342
}
374
343
344
+ CLOG_INFO (Ledger, " Loaded LCL header from database: {}" ,
345
+ ledgerAbbrev (*currentLedger));
346
+ setLedgerTxnHeader (*currentLedger, mApp );
347
+ latestLedgerHeader = *currentLedger;
348
+
375
349
releaseAssert (latestLedgerHeader.has_value ());
376
350
377
351
auto missing = mApp .getBucketManager ().checkForMissingBucketsFiles (has);
@@ -947,7 +921,7 @@ LedgerManagerImpl::applyLedger(LedgerCloseData const& ledgerData,
947
921
// Subtle: after this call, `header` is invalidated, and is not safe to use
948
922
auto txResultSet = applyTransactions (*applicableTxSet, mutableTxResults,
949
923
ltx, ledgerCloseMeta);
950
- if (mApp .getConfig ().MODE_STORES_HISTORY_MISC )
924
+ if (mApp .getConfig ().modeStoresHistory () )
951
925
{
952
926
auto ledgerSeq = ltx.loadHeader ().current ().ledgerSeq ;
953
927
mApp .getHistoryManager ().appendTransactionSet (ledgerSeq, txSet,
@@ -1758,14 +1732,10 @@ LedgerManagerImpl::storePersistentStateAndLedgerHeaderInDB(
1758
1732
1759
1733
mApp .getPersistentState ().setState (PersistentState::kHistoryArchiveState ,
1760
1734
has.toString (), sess);
1761
-
1762
- if (mApp . getConfig (). MODE_STORES_HISTORY_LEDGERHEADERS && storeHeader )
1735
+ LedgerHeaderUtils::storeInDatabase ( mApp . getDatabase (), header, sess);
1736
+ if (appendToCheckpoint )
1763
1737
{
1764
- LedgerHeaderUtils::storeInDatabase (mApp .getDatabase (), header, sess);
1765
- if (appendToCheckpoint)
1766
- {
1767
- mApp .getHistoryManager ().appendLedgerHeader (header);
1768
- }
1738
+ mApp .getHistoryManager ().appendLedgerHeader (header);
1769
1739
}
1770
1740
1771
1741
return has;
0 commit comments