private void expireClientTransactionsSentFromDepartedProxy(
      InternalDistributedMember proxyServer) {
    if (cache.isClosed()) {
      return;
    }
    long timeout = getTransactionTimeToLive() * 1000L;
    if (timeout <= 0) {
      removeTransactionsSentFromDepartedProxy(proxyServer);
    } else {
      if (departedProxyServers != null) {
        departedProxyServers.add(proxyServer);
      }
      SystemTimerTask task = new SystemTimerTask() {
        @Override
        public void run2() {
          removeTransactionsSentFromDepartedProxy(proxyServer);
          if (departedProxyServers != null) {
            departedProxyServers.remove(proxyServer);
          }
        }
      };
      try {
        cache.getCCPTimer().schedule(task, timeout);
      } catch (IllegalStateException ise) {
        if (!cache.isClosed()) {
          throw ise;
        }
        // task not able to be scheduled due to cache is closing,
        // do not set it in the test hook.
        if (departedProxyServers != null) {
          departedProxyServers.remove(proxyServer);
        }
      }
    }
  }
@return the time-to-live for abandoned transactions, in seconds
geode-core/src/main/java/org/apache/geode/internal/cache/TXManagerImpl.java