public ConfigResponse resolveConfig(GetConfigRequest req, ConfigResponseFactory responseFactory) {
        long start = System.currentTimeMillis();
        metricUpdater.incrementRequests();
        ConfigKey<?> configKey = req.getConfigKey();
        String defMd5 = req.getRequestDefMd5();
        if (defMd5 == null || defMd5.isEmpty()) {
            defMd5 = ConfigUtils.getDefMd5(req.getDefContent().asList());
        }
        ConfigCacheKey cacheKey = new ConfigCacheKey(configKey, defMd5);
        log.log(Level.FINE, () -> TenantRepository.logPre(getId()) + ("Resolving config " + cacheKey));

        ConfigResponse config;
        if (useCache(req)) {
            config = cache.computeIfAbsent(cacheKey, (ConfigCacheKey key) -> {
                var response = createConfigResponse(configKey, req, responseFactory);
                metricUpdater.setCacheConfigElems(cache.configElems());
                metricUpdater.setCacheChecksumElems(cache.checkSumElems());
                return response;
            });
        } else {
            config = createConfigResponse(configKey, req, responseFactory);
        }
        metricUpdater.incrementProcTime(System.currentTimeMillis() - start);
        return config;
    }
@Test(expected = UnknownConfigDefinitionException.class)
    public void require_that_def_file_must_exist() {
        handler.resolveConfig(createRequest("unknown", "namespace", emptySchema));
    }