• Julien Muchembled's avatar
    Perform DB truncation during recovery, send PT to storages before verification · 3e3eab5b
    Julien Muchembled authored
    Currently, the database may only be truncated when leaving backup mode, but
    the issue will be the same when neoctl gets a new command to truncate at an
    arbitrary tid: we want to be sure that all nodes are truncated before anything
    else.
    
    Therefore, we stop sending Truncate orders before stopping operation because
    nodes could fail/exit before actually processing them. Truncation must also
    happen before asking nodes their last ids.
    
    With this commit, if a truncation is requested:
    - this is always the first thing done when a storage node connects to the
      primary master during the RECOVERING phase,
    - and the cluster does not start automatically if there are missing nodes,
      unless an admin forces it.
    
    Other changes:
    - Connections to storage nodes don't need to be aborted anymore when leaving
      backup mode.
    - The master always initiates communication when a storage node identifies,
      which simplifies code and reduces the number of exchanged packets.
    3e3eab5b
test.py 41.1 KB