Uploaded image for project: 'Derby'
  1. Derby
  2. DERBY-298

rollforward will not work correctly if the system happens to crash immediately after rollforward backup.

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Closed
    • Priority: Minor
    • Resolution: Fixed
    • Affects Version/s: 10.0.2.1
    • Fix Version/s: 10.1.3.1, 10.2.1.6
    • Component/s: Store
    • Labels:
      None

      Description

      If the system crashes after a rollforward backup; last log file
      is empty(say log2.dat). On next crash-recovery system ignores the empty log
      file and starts writing to the previous log(say log1.dat),
      even thought there was successfule log file switch before the crash.
      The reason I belive it is done this way to avoid special
      handling of crashes during the log switch process.

      Problem is on rollfroward restore from a backup log1.dat will get overwritten
      from the copy in the backup, so any transaction that got added to log1.dat
      after the backup was taken will be lost.

      One possible solution that comes to my mind to solve this problem is
      1) check if an empty a log file exist after a redo crash-recovery , if
      the log archive mode is enabled.
      2) If it exists , delete and do log file switch again

      Repro:
      connect 'jdbc:derby:wombat;create=true';
      create table t1(a int ) ;
      insert into t1 values(1) ;
      insert into t1 values(2) ;
      call SYSCS_UTIL.SYSCS_BACKUP_DATABASE_AND_ENABLE_LOG_ARCHIVE_MODE(
      'extinout/mybackup', 0);

      --crash (NO LOG RECORDS WENT IN AFTER THE BACKUP).

      connect 'jdbc:derby:wombat';
      insert into t1 select a*2 from t1 ;
      insert into t1 select a*2 from t1 ;
      insert into t1 select a*2 from t1 ;
      insert into t1 select a*2 from t1 ;
      insert into t1 select a*2 from t1 ;
      insert into t1 select a*2 from t1 ;
      insert into t1 select a*2 from t1 ;
      select count from t1 ;

      --exit from jvm and restore from backup

      connect
      'jdbc:derby:wombat;rollForwardRecoveryFrom=extinout/mybackup/wombat';
      select count from t1 ; – THIS WILL GIVE INCORRECT VALUES

        Attachments

        1. derby-298.diff
          20 kB
          Oystein Grovlen
        2. derby-298a.diff
          20 kB
          Oystein Grovlen
        3. derby-298b.diff
          20 kB
          Oystein Grovlen

          Activity

            People

            • Assignee:
              oysteing Oystein Grovlen
              Reporter:
              tsuresh Suresh Thalamati
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: