code: public GobblinMetrics getOrDefault(String id, Callable<? extends GobblinMetrics> valueLoader) {
      try {
        return this.metricsCache.get(id, valueLoader);
      } catch (ExecutionException ee) {
        throw Throwables.propagate(ee);
      }
    }
docs: Get the {@link GobblinMetrics} instance associated with a given ID. If the ID is not found this method returns the
  {@link GobblinMetrics} returned by the given {@link Callable}, and creates a mapping between the specified ID
  and the {@link GobblinMetrics} instance returned by the {@link Callable}.
  
  @param id the given {@link GobblinMetrics} ID
  @param valueLoader a {@link Callable} that returns a {@link GobblinMetrics}, the {@link Callable} is only invoked
  if the given id is not found
  
  @return a {@link GobblinMetrics} instance associated with the id