docs: @Override
    public void finish() throws Exception
    {
      LOGGER.debug("Finish Loading");
      flushQueues();
  
      if (_is_last_finish_call)
      {
        try
        {
          if (_after != null)
          {
            LOGGER.debug("Running Execute After SQL");
            _processConn.createStatement().execute(_after);
          }
          // Loader sucessfully completed. Commit and return.
          _processConn.createStatement().execute("commit");
          LOGGER.debug("Committed");
        }
        catch (SQLException ex)
        {
          try
          {
            _processConn.createStatement().execute("rollback");
          }
          catch (SQLException ex0)
          {
            LOGGER.debug("Failed to rollback");
          }
          LOGGER.debug(String.format("Execute After SQL failed to run: %s", _after),
                       ex);
          throw new Loader.ConnectionError(Utils.getCause(ex));
        }
      }
    }