diff --git a/features/core/src/main/java/org/apache/karaf/features/internal/service/FeatureConfigInstaller.java b/features/core/src/main/java/org/apache/karaf/features/internal/service/FeatureConfigInstaller.java index 4ebd043..7f16171 100644 --- a/features/core/src/main/java/org/apache/karaf/features/internal/service/FeatureConfigInstaller.java +++ b/features/core/src/main/java/org/apache/karaf/features/internal/service/FeatureConfigInstaller.java @@ -110,20 +110,28 @@ ConfigId cid = parsePid(config.getName()); Configuration cfg = findExistingConfiguration(configAdmin, cid); if (cfg == null) { - Dictionary cfgProps = convertToDict(props); - cfg = createConfiguration(configAdmin, cid.pid, cid.factoryPid); - cfgProps.put(CONFIG_KEY, cid.fullPid); - props.put(CONFIG_KEY, cid.fullPid); - if (storage != null && configCfgStore) { - File cfgFile = new File(storage, cid.fullPid + ".cfg"); - cfgProps.put(FILEINSTALL_FILE_NAME, cfgFile.getAbsoluteFile().toURI().toString()); - } - cfg.update(cfgProps); - try { - updateStorage(cid, props, false); - } catch (Exception e) { - LOGGER.warn("Can't update cfg file", e); - } + + File cfgFile = null; + if (storage != null && configCfgStore) { + cfgFile = new File(storage, cid.fullPid + ".cfg"); + } + if (!cfgFile.exists()) { + Dictionary cfgProps = convertToDict(props); + cfg = createConfiguration(configAdmin, cid.pid, cid.factoryPid); + cfgProps.put(CONFIG_KEY, cid.fullPid); + props.put(CONFIG_KEY, cid.fullPid); + if (storage != null && configCfgStore) { + cfgProps.put(FILEINSTALL_FILE_NAME, cfgFile.getAbsoluteFile().toURI().toString()); + } + cfg.update(cfgProps); + try { + updateStorage(cid, props, false); + } catch (Exception e) { + LOGGER.warn("Can't update cfg file", e); + } + } else { + LOGGER.info("Skipping configuration {} - file already exists", cfgFile); + } } else if (config.isAppend()) { boolean update = false; Dictionary properties = cfg.getProperties();