When we run full nodes (IRI) there are some occasions where we should run java with the flags --revalidate
and/or --rescan
.
In which cases should we add those flags and what exactly are the technical differences?
Revalidate “drops” the stored solid milestone “table”. So all the milestones are revalidated once the node starts (checks signatures, balances etc). This is used it you take a DB from someone else, or have an issue with solid milestones acting out.
Rescan drops all the tables, except for the raw transaction trits, and re stores the transactions (refilling the metadata, address indexes etc) - this is used when a migration is needed when the DB schema changes mostly.
Source: http://iri-playbook.readthedocs.io/en/master/faq.html#what-are-the-revalidate-and-rescan-options-for
--revalidate
was explicitly added to be used after a bug in milestone processing was fixed (it will discard all milestone information and rescan the tangle for milestones). I would not be surprised if that option would disappear (or become a no-op) in the near future.