Address rare corruption of NFTokenPage linked list (#4945)

* Add fixNFTokenPageLinks amendment:

It was discovered that under rare circumstances the links between
NFTokenPages could be removed.  If this happens, then the
account_objects and account_nfts RPC commands under-report the
NFTokens owned by an account.

The fixNFTokenPageLinks amendment does the following to address
the problem:

- It fixes the underlying problem so no further broken links
  should be created.
- It adds Invariants so, if such damage were introduced in the
  future, an invariant would stop it.
- It adds a new FixLedgerState transaction that repairs
  directories that were damaged in this fashion.
- It adds unit tests for all of it.
This commit is contained in:
Scott Schurr
2024-08-07 15:14:19 -07:00
committed by tequ
parent fd1908f5b6
commit be49b22c2f
22 changed files with 2055 additions and 132 deletions

View File

@@ -203,6 +203,9 @@ enum TxType : std::uint16_t
/** This transaction type deletes an Oracle instance */
ttORACLE_DELETE = 61,
/** This transaction type fixes a problem in the ledger state */
ttLEDGER_STATE_FIX = 62,
/* A note attaching transactor that allows the owner or issuer (on a object by object basis) to attach remarks */
ttREMARKS_SET = 94,