@InterfaceAudience.Private
 @Override
 protected void flush() throws IOException {
   for (MetricsContext ctxt : subctxt) {
     try {
       ((AbstractMetricsContext) ctxt).flush();
     } catch (IOException e) {
       LOG.warn("flush failed: " + ctxt.getContextName(), e);
     }
   }
 }