/**
   * This method invoked rollback on the Resource that is passed as a parameter.
   *
   * <p>This procedure may be called as the main procedure of a new thread, which must be done for
   * remote Resource objects during resync to avoid the possibility of deadlock during resync.
   *
   * <p>It is called directly when the Resource is not a proxy.
   *
   * @param res The Resource to be rolled back.
   * @return
   * @see
   */
  void rollbackOrphan(Resource res) {

    try {
      res.rollback();
    } catch (Throwable exc) {

      // If the rollback raised a heuristic exception, it can
      // only be reported in a message as it will never reach
      // the Coordinator.

      if (exc instanceof HeuristicCommit
          || exc instanceof HeuristicMixed
          || exc instanceof HeuristicHazard) {
        _logger.log(Level.WARNING, "jts.heuristic_exception", exc.toString());
      } else {
      }
    }

    // We must release the proxy now.

    res._release();
  }