code: public RuntimeException endQuietly(Throwable ex) {
      try {
        GLOBALS.clear();
        Futures fs = new Futures();
        for (Frame fr : FRAMES.values()) {
          for (Key<Vec> vec : fr.keys()) {
            Integer I = REFCNTS.get(vec);
            int i = (I == null ? 0 : I) - 1;
            if (i > 0) REFCNTS.put(vec, i);
            else {
              REFCNTS.remove(vec);
              vec.remove(fs);
            }
          }
          DKV.remove(fr._key, fs);   // Shallow remove, internal Vecs removed 1-by-1
        }
        fs.blockForPending();
        FRAMES.clear();
        REFCNTS.clear();
      } catch (Exception ex2) {
        Log.warn("Exception " + ex2 + " suppressed while cleaning up Rapids Session after already throwing " + ex);
      }
      return ex instanceof RuntimeException ? (RuntimeException) ex : new RuntimeException(ex);
    }
docs: The Rapids call threw an exception.  Best-effort cleanup, no more exceptions