code: public static void await(CountDownLatch latch, String callerClass, String callerMethod, Object... args)
  	throws InterruptedException {
  		final String sourceMethod = "await"; //$NON-NLS-1$
  		final boolean isTraceLogging = log.isLoggable(Level.FINER);
  		if (isTraceLogging) {
  			log.entering(sourceClass, sourceMethod, new Object[]{Thread.currentThread(), latch, callerClass, callerMethod, args});
  		}
  		long start = System.currentTimeMillis();
  		boolean quiesced = false, logged = false;
  		while (!latch.await(SignalUtil.SIGNAL_LOG_INTERVAL_SECONDS, TimeUnit.SECONDS)) {
  			if (!quiesced) {
  				quiesced = logWaiting(callerClass, callerMethod, latch, start, args);
  				logged = true;
  			}
  		}
  		if (logged) {
  			logResuming(callerClass, callerMethod, latch, start);
  		}
  		if (isTraceLogging) {
  			log.exiting(sourceClass, sourceMethod, Arrays.asList(Thread.currentThread(), latch, callerClass, callerMethod));
  		}
  	}
docs: Implements the same semantics as {@link CountDownLatch#await()}, except that the wait will
  periodically time out within this method to log a warning message that the thread appears
  stuck. This cycle will be repeated until the latch has counted down to zero. If the thread
  has waited for an extended period, then wait logging is quiesced to avoid overwhelming the
  logs. If and when a thread that has been reported as being stuck and the latch is finally
  counted down to zero, then a warning level message is logged to indicate that the thread is
  resuming.
  
  @param latch
  the CountDownLatch object to wait on
  @param callerClass
  the caller class
  @param callerMethod
  the caller method
  @param args
  extra arguments to be appended to the log message
  @throws InterruptedException