@Override
  public void postCompletion(boolean committed, boolean deadlock, SharedDbEnv dbEnv) {
    //
    // Clear the current context
    //
    dbEnv.setCurrentTransaction(null);

    try {
      if (committed) {
        //
        // Remove updated & removed objects from cache
        //
        for (ToInvalidate ti : _invalidateList) {
          ti.invalidate();
        }
        _invalidateList.clear();
      }
    } finally {
      synchronized (this) {
        if (_tx != null) {
          if (deadlock) {
            _deadlockExceptionDetected = true;
          }
          _tx = null;
          notifyAll();
        }
      }
    }
  }
  TransactionalEvictorContext(SharedDbEnv dbEnv) {
    _communicator = dbEnv.getCommunicator();
    _trace = _communicator.getProperties().getPropertyAsInt("Freeze.Trace.Evictor");
    _tx = (TransactionI) (new ConnectionI(dbEnv).beginTransaction());
    _owner = Thread.currentThread();
    _tx.adoptConnection();

    _tx.setPostCompletionCallback(this);
  }