IntersectMBO / cardano-node-tests

System and end-to-end (E2E) tests for cardano-node.
https://tests.cardano.intersectmbo.org/
Apache License 2.0
55 stars 29 forks source link

[FR] cardano-db-sync - Analyse possibility of testing rollbacks with framework #2653

Open ArturWieczorek opened 1 month ago

ArturWieczorek commented 1 month ago

Analyse if it would make sense to test db-sync rollbacks with cardano-node-tests framework. Currently the only way to invoke rollback is to stop current db-sync process and start it again with flag --rollback-to-slot :

Usage: cardano-db-sync (COMMAND | --config FILEPATH --socket-path FILEPATH 
                         [--state-dir FILEPATH] --schema-dir FILEPATH 
                         [--pg-pass-env ENV] [--disable-epoch] [--disable-cache]
                         [--disable-ledger] [--skip-fix] [--fix-only] 
                         [--force-indexes] [--disable-multiassets] 
                         [--disable-metadata] [--disable-plutus-extra] 
                         [--disable-offline-data] [--turbo] [--full] 
                         [--consumed-tx-out] [--prune-tx-out] 
                         [--rollback-to-slot WORD])

This might be a time consuming process - however on a test blockchain with minimal amount of data this could be a faster process than on real networks either test ones or mainnet.

This should be probably run after all regular cluster tests are finished so we have test data including all conway era tests and check if rollback propagates properly and deletes all data. Currently some columns , tables might be ignored during rollbacks.

Detailed list of tables / columns / cases (flag configurations causing issues) would be needed in case this would make sense to implement and we wanted to proceed with idea - but for now just the concept itself can be checked from the efficiency point of view and how much time consuming it would be.

ArturWieczorek commented 1 month ago

Update: When sync db-sync with consumed_tx_out option it does not update epoch table and values inconsumed_by_tx_id column of tx_out table.