In March, I made a backup of the wallet and continued using the node. In October, I restored my old backup. After restoring the backup, I found that the listtransactions command stopped displaying some transactions made during the period from March to October.

**Expected behavior**

The listtransactions command displays all transactions in the restored wallet.

**Actual behavior**

The listtransactions command in the restored wallet does not display some transactions since the backup.

**To reproduce**

1. Run bitcoin core in regtest mode
2. Create a new address A and generate 101 blocks with sending a reward to the created address A
3. Create a wallet backup
4. Create new address B
5. Send transaction to address B, write TXID
6. Generate 1 block with sending a reward to address A
7. View getaddressinfo B. Verify labels are not an empty list
8. View listtransactions. Make sure there is a TXID transaction present
9. Stop bitcoin core
10. Restore backup
11. Run bitcoin core
12. View getaddressinfo B and listtransactions. Detect that the address does not have a label set and that listtransactions does not contain a TXID transaction.

**System information**

Bitcoin Core 0.20.1 on Debian GNU / Linux.

void AddToSpends(const uint256& wtxid, WalletBatch* batch = nullptr) EXCLUSIVE_LOCKS_REQUIRED(cs_wallet);
    /**
     * Add a transaction to the wallet, or update it.  confirm.block_* should
     * be set when the transaction was known to be included in a block.  When
     * block_hash.IsNull(), then wallet state is not updated in AddToWallet, but
     * notifications happen and cached balances are marked dirty.
     *
     * If fUpdate is true, existing transactions will be updated.
     * TODO: One exception to this is that the abandoned state is cleared under the
     * assumption that any further notification of a transaction that was considered
     * abandoned is an indication that it is not safe to be considered abandoned.
     * Abandoned state should probably be more carefully tracked via different
     * chain notifications or by checking mempool presence when necessary.
     *
     * Should be called with rescanning_old_block set to true, if the transaction is
     * not discovered in real time, but during a rescan of old blocks.
     */
    bool AddToWalletIfInvolvingMe(const CTransactionRef& tx, const SyncTxState& state, bool fUpdate, bool rescanning_old_block) EXCLUSIVE_LOCKS_REQUIRED(cs_wallet);
    
    void MarkConflicted(const uint256& hashBlock, int conflicting_height, const uint256& hashTx);
    
    void MarkInputsDirty(const CTransactionRef& tx) EXCLUSIVE_LOCKS_REQUIRED(cs_wallet);
    void SyncMetaData(std::pair<TxSpends::iterator, TxSpends::iterator>) EXCLUSIVE_LOCKS_REQUIRED(cs_wallet);
    void SyncTransaction(const CTransactionRef& tx, const SyncTxState& state, bool update_tx = true, bool rescanning_old_block = false) EXCLUSIVE_LOCKS_REQUIRED(cs_wallet);
    
    std::atomic<uint64_t> m_wallet_flags{0};
    bool SetAddressBookWithDB(WalletBatch& batch, const CTxDestination& address, const std::string& strName, const std::string& strPurpose);
    
    void UnsetWalletFlagWithDB(WalletBatch& batch, uint64_t flag);