@Override
  public Object executeOn(ServerLocation server, final Op op, final boolean accessed,
      final boolean onlyUseExistingCnx) {
    if (serverAffinity.get()) {
      final ServerLocation affinityServer = affinityServerLocation.get();
      if (affinityServer != null) {
        server = affinityServer;
      } else {
        affinityServerLocation.set(server);
      }
      // redirect to executeWithServerAffinity so that we
      // can send a TXFailoverOp.
      return executeWithServerAffinity(server, op);
    }
    return executeOnServer(server, op, accessed, onlyUseExistingCnx);
  }
execute the given op on the given server. If the server cannot be reached, sends a
TXFailoverOp, then retries the given op

@param loc the server to execute the op on
@param op the op to execute
@return the result of execution
geode-core/src/main/java/org/apache/geode/cache/client/internal/OpExecutorImpl.java