Uploaded image for project: 'WiredTiger'
  1. WiredTiger
  2. WT-2583

incremental backup can prevent future recovery

    • Type: Icon: Bug Bug
    • Resolution: Done
    • Priority: Icon: Major - P3 Major - P3
    • WT2.9.0
    • Affects Version/s: None
    • Component/s: None
    • Labels:
      None

      Doing incremental backups can prevent future recovery.

      This diff drops core after the incremental backup file has been created but before it's removed:

      diff --git a/src/cursor/cur_backup.c b/src/cursor/cur_backup.c
      index c89f002..b39ab79 100644
      --- a/src/cursor/cur_backup.c
      +++ b/src/cursor/cur_backup.c
      @@ -412,6 +412,8 @@ err:        __wt_scr_free(session, &tmp);
              return (ret);
       }
       
      +int xxx;
      +
       /*
        * __backup_file_create --
        *     Create the meta-data backup file.
      @@ -420,6 +422,7 @@ static int
       __backup_file_create(
           WT_SESSION_IMPL *session, WT_CURSOR_BACKUP *cb, bool incremental)
       {
      +       if (incremental) xxx = 1;
              return (__wt_fopen(session,
                  incremental ? WT_INCREMENTAL_BACKUP : WT_METADATA_BACKUP,
                  WT_OPEN_CREATE, WT_STREAM_WRITE, &cb->bfs));
      @@ -434,6 +437,8 @@ __wt_backup_file_remove(WT_SESSION_IMPL *session)
       {
              WT_DECL_RET;
       
      +       if (xxx) abort();
      +
              WT_TRET(__wt_remove_if_exists(session, WT_INCREMENTAL_BACKUP));
              WT_TRET(__wt_remove_if_exists(session, WT_METADATA_BACKUP));
              return (ret);
      

      run test/format and wait for the abort, then run recovery:

      % ./t -q logging=1 backups=on logging_archive=off timer=100 ops=0
      t: process 26351
      Abort (core dumped)
      % egrep data_source RUNDIR/CONFIG
      data_source=file
      % ../../wt -R -h RUNDIR verify file:wt
      [1461431979:437735][26360:0x803006400], t, connection: Incremental backup after
      running recovery is not allowed.: Invalid argument
      

      The problem is WT_INCREMENTAL_BACKUP is created in the current directory, and if we fail before it's removed, we'll disallow recovery.

            Assignee:
            sue.loverso@mongodb.com Susan LoVerso
            Reporter:
            keith.bostic@mongodb.com Keith Bostic (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            4 Start watching this issue

              Created:
              Updated:
              Resolved: