Esempio n. 1
0
  @Override
  public void rollback() throws UnsupportedOperationException {
    commitLock.lock();
    try {
      // flush modified records
      for (int segment = 0; segment < locks.length; segment++) {
        Lock lock = locks[segment].writeLock();
        lock.lock();
        try {
          writeCache[segment].clear();
          if (caches != null) {
            caches[segment].clear();
          }
          uncommittedDataLongs[segment].clear();
          uncommittedIndexTable[segment].clear();
        } finally {
          lock.unlock();
        }
      }

      structuralLock.lock();
      try {
        uncommittedStackPages.clear();

        // restore headVol from backup
        headVol.putData(0, headVolBackup, 0, headVolBackup.length);
        indexPages = indexPagesBackup.clone();

        wal.rollback();
        wal.sync();
      } finally {
        structuralLock.unlock();
      }
    } finally {
      commitLock.unlock();
    }
  }