Hi all,
This is more of a feedback to AEM team.
Just did an upgrade to AEM 6.3 to 6.4 of a production system, all went well in the first upgradestep to 6.4.0. However when installing SP 6.4.2 the system never started properly.
After a massive debug process, it turned out that we had a couple of sites where the cq:master attribute in LiveSyncConfig was empty, this caused the msm-core to fail during startup with the following dump:
------------------
22.10.2018 12:50:19.912 *ERROR* [qtp1785523215-65] com.day.cq.wcm.cq-msm-core bundle com.day.cq.wcm.cq-msm-core:5.11.38 (432)[com.day.cq.wcm.msm.impl.LiveCopyServiceImpl(5773)] : The activate method has thrown an exception (javax.jcr.RepositoryException: Not an absolute path: )
javax.jcr.RepositoryException: Not an absolute path:
at org.apache.jackrabbit.oak.jcr.session.SessionImpl.getOakPathOrThrow(SessionImpl.java:152) [org.apache.jackrabbit.oak-jcr:1.8.7]
at org.apache.jackrabbit.oak.jcr.session.SessionImpl.access$100(SessionImpl.java:82) [org.apache.jackrabbit.oak-jcr:1.8.7]
at org.apache.jackrabbit.oak.jcr.session.SessionImpl$1.performNullable(SessionImpl.java:186) [org.apache.jackrabbit.oak-jcr:1.8.7]
at org.apache.jackrabbit.oak.jcr.session.SessionImpl$1.performNullable(SessionImpl.java:182) [org.apache.jackrabbit.oak-jcr:1.8.7]
at org.apache.jackrabbit.oak.jcr.delegate.SessionDelegate.performNullable(SessionDelegate.java:243) [org.apache.jackrabbit.oak-jcr:1.8.7]
at org.apache.jackrabbit.oak.jcr.session.SessionImpl.getNodeOrNull(SessionImpl.java:182) [org.apache.jackrabbit.oak-jcr:1.8.7]
at org.apache.jackrabbit.oak.jcr.session.SessionImpl.nodeExists(SessionImpl.java:313) [org.apache.jackrabbit.oak-jcr:1.8.7]
at com.adobe.granite.repository.impl.CRX3SessionImpl.nodeExists(CRX3SessionImpl.java:188) [com.adobe.granite.repository:1.4.88]
at com.day.cq.wcm.msm.impl.LiveCopyFinderProvider.buildBloomFilter(LiveCopyFinderProvider.java:331) [com.day.cq.wcm.cq-msm-core:5.11.38]
at com.day.cq.wcm.msm.impl.LiveCopyServiceImpl.activate(LiveCopyServiceImpl.java:96) [com.day.cq.wcm.cq-msm-core:5.11.38]
at sun.reflect.GeneratedMethodAccessor50.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.felix.scr.impl.inject.methods.BaseMethod.invokeMethod(BaseMethod.java:228) [org.apache.felix.scr:2.1.0.B008]
at org.apache.felix.scr.impl.inject.methods.BaseMethod.access$500(BaseMethod.java:41) [org.apache.felix.scr:2.1.0.B008]
at org.apache.felix.scr.impl.inject.methods.BaseMethod$Resolved.invoke(BaseMethod.java:664) [org.apache.felix.scr:2.1.0.B008]
at org.apache.felix.scr.impl.inject.methods.BaseMethod.invoke(BaseMethod.java:510) [org.apache.felix.scr:2.1.0.B008]
at org.apache.felix.scr.impl.inject.methods.ActivateMethod.invoke(ActivateMethod.java:317) [org.apache.felix.scr:2.1.0.B008]
at org.apache.felix.scr.impl.inject.methods.ActivateMethod.invoke(ActivateMethod.java:307) [org.apache.felix.scr:2.1.0.B008]
at org.apache.felix.scr.impl.manager.SingleComponentManager.createImplementationObject(SingleComponentManager.java:334) [org.apache.felix.scr:2.1.0.B008]
-----------------
In order to find the fault, you search for the following using crxde:
SELECT * FROM [cq:LiveSyncConfig] AS s WHERE ISDESCENDANTNODE([/content]) AND s.[cq:master] = ''
Change the master refernce to something useful and that does exist!
The code cannot handle the situation where a reference is missing or is pointing to something invalid, and therefor AEM never starts properly.