[
https://issues.apache.org/jira/browse/SLING-6313?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17351487#comment-17351487
]
Henry Kuijpers commented on SLING-6313:
---------------------------------------
Please be wary in using the provided tool "Felix OSGi Config Repair": This will
only delete duplicated configurations (which is fine), randomly (and there is
the problem).
There is a reference towards those configuration files (including their pid,
which includes the factory identifier) inside RegisteredResourceList.ser.
That tool has a chance of deleting the configuration that is actually refered
to in RegisteredResourceList.ser.
It is better to somehow parse the .ser file and then do lookups to see if a
configuration is still being used or not.
There is a tool created by Adobe that maybe does things better:
https://helpx.adobe.com/nl/experience-manager/kb/AEM-does-not-pick-Filedatastore-location-and-start-successfully-on-upgrading-from-56x-to-6x.html
However, we weren't able to easily start jar files anywhere on our servers.
In our case, we fixed it by using a groovy script (in the groovy console in
AEM) to list all configurations (using ConfigurationAdmin) and then looking up
each pid in the RegisteredResourceList.ser file (that we read as a string
containing the binary, because it wasn't easy to parse the file into a proper
object tree). The ones we couldn't find, we deleted.
This was important, because once the duplication happens, the old configuration
will not be used anymore, in terms of being managed by the Sling installer.
> Sling installer can duplicate factory configurations if an invalid
> RegisteredResourceList.ser is found
> ------------------------------------------------------------------------------------------------------
>
> Key: SLING-6313
> URL: https://issues.apache.org/jira/browse/SLING-6313
> Project: Sling
> Issue Type: Bug
> Components: Installer
> Reporter: Robert Munteanu
> Assignee: Carsten Ziegeler
> Priority: Major
> Fix For: Installer Core 3.9.0, Installer Configuration Factory
> 1.2.4
>
> Attachments: SLING-6313-0.diff
>
>
> Steps to reproduce, inside `launchpad/builder`
> {noformat}
> mvn clean package
> java -jar target/org.apache.sling.launchpad-9-SNAPSHOT.jar
> # wait for Sling to start up properly, stop it with CTRL-C
> truncate --size=-1 sling/installer/RegisteredResourceList.ser
> java -jar target/org.apache.sling.launchpad-9-SNAPSHOT.jar
> # wait for Sling to start up properly, stop it with CTRL-C
> java -jar target/org.apache.sling.launchpad-9-SNAPSHOT.jar
> {noformat}
> The following exceptions are logged in the last run:
> {noformat}21.11.2016 14:32:26.538 *ERROR* [CM Configuration Updater
> (ManagedServiceFactory Update:
> factoryPid=[org.apache.sling.commons.log.LogManager.factory.config])]
> org.apache.felix.configadmin Service
> [org.apache.felix.cm.ConfigurationAdmin,28,
> [org.osgi.service.cm.ConfigurationAdmin]]
> [org.osgi.service.cm.ManagedServiceFactory, id=19,
> bundle=8/slinginstall:org.apache.sling.commons.log-5.0.1-SNAPSHOT.jar]:
> Updating property org.apache.sling.commons.log.names of configuration
> org.apache.sling.commons.log.LogManager.factory.config.b4cf7982-9af0-40a1-b720-3e83a9f9e7f9
> caused a problem: Category log.request already defined by configuration
> org.apache.sling.commons.log.LogManager.factory.config.b4cf7982-9af0-40a1-b720-3e83a9f9e7f9
> (org.osgi.service.cm.ConfigurationException:
> org.apache.sling.commons.log.names : Category log.request already defined by
> configuration
> org.apache.sling.commons.log.LogManager.factory.config.b4cf7982-9af0-40a1-b720-3e83a9f9e7f9)
> org.osgi.service.cm.ConfigurationException:
> org.apache.sling.commons.log.names : Category log.request already defined by
> configuration
> org.apache.sling.commons.log.LogManager.factory.config.b4cf7982-9af0-40a1-b720-3e83a9f9e7f9
> at
> org.apache.sling.commons.log.logback.internal.config.LoggerManagedServiceFactory.updated(LoggerManagedServiceFactory.java:36)
> at
> org.apache.felix.cm.impl.helper.ManagedServiceFactoryTracker.updated(ManagedServiceFactoryTracker.java:159)
> at
> org.apache.felix.cm.impl.helper.ManagedServiceFactoryTracker.provideConfiguration(ManagedServiceFactoryTracker.java:93)
> at
> org.apache.felix.cm.impl.ConfigurationManager$ManagedServiceFactoryUpdate.provide(ConfigurationManager.java:1611)
> at
> org.apache.felix.cm.impl.ConfigurationManager$ManagedServiceFactoryUpdate.run(ConfigurationManager.java:1554)
> at org.apache.felix.cm.impl.UpdateThread.run0(UpdateThread.java:141)
> at org.apache.felix.cm.impl.UpdateThread.run(UpdateThread.java:109)
> at java.lang.Thread.run(Thread.java:745)
> Caused by:
> org.apache.sling.commons.log.logback.internal.config.ConfigurationException:
> at
> org.apache.sling.commons.log.logback.internal.LogConfigManager.updateLoggerConfiguration(LogConfigManager.java:533)
> at
> org.apache.sling.commons.log.logback.internal.config.LoggerManagedServiceFactory.updated(LoggerManagedServiceFactory.java:34)
> ... 7 common frames omitted{noformat}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)