[ https://issues.apache.org/jira/browse/FELIX-3701?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Chetan Mehrotra updated FELIX-3701: ----------------------------------- Attachment: fragment-bug.zip Logs attached. There are two folders - no-issue - This the logs collected when no such issue is observed. Say by starting a debug session - issue-dated - It contains the logs when issue is observed. Each folder contain two files 1. error-xxx.log - This is the Sling server logs which has the CNFE 2. felix-logs-xxx.log - This the Felix Framework log I have modified the Felix Logger class to prefix date in the logs so that one can compare the logs in error and felix log files In felix-logs-issue-dated.log you would see entries like below. The jars are however present the classpath of fragment bundles ... DEBUG: FRAGMENT WIRE: [61.0] osgi.wiring.host; (&(osgi.wiring.host=com.day.crx.sling.server)(bundle-version>=0.0.0)) -> [52.0] DEBUG: FRAGMENT WIRE: [54.0] osgi.wiring.host; (&(osgi.wiring.host=com.day.crx.sling.server)(bundle-version>=0.0.0)) -> [52.0] ... INFO: Bundle com.day.crx.sling.server [52] Class path entry not found: httpclient-4.2-beta1.jar INFO: Bundle com.day.crx.sling.server [52] Class path entry not found: httpcore-4.2-beta1.jar INFO: Bundle com.day.crx.sling.server [52] Class path entry not found: aws-java-sdk-1.3.11.jar INFO: Bundle com.day.crx.sling.server [52] Class path entry not found: tika-core-0.6.jar INFO: Bundle com.day.crx.sling.server [52] Class path entry not found: guava-13.0.jar INFO: Bundle com.day.crx.sling.server [52] Class path entry not found: day-commons-ldapclient-1.1.6.jar > Intermittent CNFE with embedded jars in Fragment Bundles > -------------------------------------------------------- > > Key: FELIX-3701 > URL: https://issues.apache.org/jira/browse/FELIX-3701 > Project: Felix > Issue Type: Bug > Components: Framework > Affects Versions: framework-4.0.2 > Reporter: Chetan Mehrotra > Priority: Minor > Attachments: fragment-bug.zip > > > In our Sling based OSGi application we are observing intermittent > ClassNotFoundException for classes which are present in a jar embedded in > Fragment bundle. Below are the details about the scenario > 1. Host bundle BundleA com.day.crx.sling.server [52] > 2. It has two fragment bundles attached. > - FragBundle1 - com.day.crx.crx-auth-ldap > - FragBundle2 - org.jcrutil.aws > 3. FragBundle2 - Has some embedded jars referred in the classpath > - FragJar2-1 - aws-java-sdk-1.3.11.jar > - FragJar2-2 - httpclient-4.2-beta1.jar > 4. There is a DS Component in BundleA which on activate tries to create an > instance of class which is present in FragJar2-1 > Now the issue is at times on clean start we get a CNFE at #4. On getting the > Felix debug logs following things were observed > 1. The logs report that INFO: Bundle BundleA [52] Class path entry not found: > FragJar2-1.jar > 2. The above entries are not observed if CNFE is not thrown > 3. If I try to debug the code the issue goes away which indicates that its > possible a race condition issue > 4. In case the issue is seen and I see the fragment bundle dir in the felix > folder the fragment jar is NOT exploded i.e. no bundle.jar-embedded directory > 5. Once the issue is seen it does not go away in restart > 6. The issue was not seen in 3.0.x releases > 7. If I flatten the jars present in fragment bundles the issue is not seen > 8. Exception seen is [1] > [1] > 05.10.2012 12:03:19.362 *ERROR* [FelixStartLevel] com.day.crx.sling.server > [com.day.crx.sling.server.impl.jmx.ManagedRepository] The activate method has > thrown an exception (java.lang.NoClassDefFoundError: > com/amazonaws/services/s3/model/S3ObjectSummary) > java.lang.NoClassDefFoundError: > com/amazonaws/services/s3/model/S3ObjectSummary > at java.lang.Class.forName0(Native Method) > at java.lang.Class.forName(Class.java:247) > at > org.apache.jackrabbit.core.config.SimpleBeanFactory.newInstance(SimpleBeanFactory.java:30) > at > org.apache.jackrabbit.core.config.BeanConfig.newInstance(BeanConfig.java:191) > at > org.apache.jackrabbit.core.config.RepositoryConfigurationParser$4.getDataStore(RepositoryConfigurationParser.java:997) > at > org.apache.jackrabbit.core.config.RepositoryConfig.getDataStore(RepositoryConfig.java:1072) > at > org.apache.jackrabbit.core.RepositoryImpl.<init>(RepositoryImpl.java:279) > at com.day.crx.core.CRXRepositoryImpl.<init>(CRXRepositoryImpl.java:307) > at com.day.crx.core.CRXRepositoryImpl.create(CRXRepositoryImpl.java:262) > at com.day.crx.core.CRXRepositoryImpl.create(CRXRepositoryImpl.java:245) > at > com.day.crx.sling.server.impl.jmx.ManagedRepository.activate(ManagedRepository.java:169) > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) > at > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) > at > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) > at java.lang.reflect.Method.invoke(Method.java:597) > at > org.apache.felix.scr.impl.helper.BaseMethod.invokeMethod(BaseMethod.java:227) > at > org.apache.felix.scr.impl.helper.BaseMethod.access$500(BaseMethod.java:38) > at > org.apache.felix.scr.impl.helper.BaseMethod$Resolved.invoke(BaseMethod.java:591) > at > org.apache.felix.scr.impl.helper.BaseMethod.invoke(BaseMethod.java:472) > at > org.apache.felix.scr.impl.helper.ActivateMethod.invoke(ActivateMethod.java:146) > at > org.apache.felix.scr.impl.manager.ImmediateComponentManager.createImplementationObject(ImmediateComponentManager.java:226) > at > org.apache.felix.scr.impl.manager.ImmediateComponentManager.createComponent(ImmediateComponentManager.java:118) > at > org.apache.felix.scr.impl.manager.DelayedComponentManager.createRealComponent(DelayedComponentManager.java:95) > at > org.apache.felix.scr.impl.manager.AbstractComponentManager$Registered.getService(AbstractComponentManager.java:1296) > at > org.apache.felix.scr.impl.manager.DelayedComponentManager.getService(DelayedComponentManager.java:88) > at > org.apache.felix.framework.ServiceRegistrationImpl.getFactoryUnchecked(ServiceRegistrationImpl.java:308) > at > org.apache.felix.framework.ServiceRegistrationImpl.getService(ServiceRegistrationImpl.java:219) > at > org.apache.felix.framework.ServiceRegistry.getService(ServiceRegistry.java:310) > at org.apache.felix.framework.Felix.getService(Felix.java:3420) > at > org.apache.felix.framework.BundleContextImpl.getService(BundleContextImpl.java:468) > at > org.osgi.util.tracker.ServiceTracker.addingService(ServiceTracker.java:450) > at > org.apache.aries.jmx.whiteboard.Activator$MBeanTracker.addingService(Activator.java:101) > at > org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:980) > at > org.osgi.util.tracker.ServiceTracker$Tracked.customizerAdding(ServiceTracker.java:906) > at > org.osgi.util.tracker.AbstractTracked.trackAdding(AbstractTracked.java:262) > at org.osgi.util.tracker.AbstractTracked.track(AbstractTracked.java:234) > at > org.osgi.util.tracker.ServiceTracker$Tracked.serviceChanged(ServiceTracker.java:941) > at > org.apache.felix.framework.util.EventDispatcher.invokeServiceListenerCallback(EventDispatcher.java:932) > at > org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:793) > at > org.apache.felix.framework.util.EventDispatcher.fireServiceEvent(EventDispatcher.java:543) > at org.apache.felix.framework.Felix.fireServiceEvent(Felix.java:4260) > at org.apache.felix.framework.Felix.registerService(Felix.java:3275) > at > org.apache.felix.framework.BundleContextImpl.registerService(BundleContextImpl.java:346) > at > org.apache.felix.scr.impl.manager.AbstractComponentManager.registerService(AbstractComponentManager.java:456) > at > org.apache.felix.scr.impl.manager.AbstractComponentManager.registerComponentService(AbstractComponentManager.java:508) > at > org.apache.felix.scr.impl.manager.AbstractComponentManager$Unsatisfied.activate(AbstractComponentManager.java:1157) > at > org.apache.felix.scr.impl.manager.AbstractComponentManager.activateInternal(AbstractComponentManager.java:334) > at > org.apache.felix.scr.impl.manager.AbstractComponentManager.enable(AbstractComponentManager.java:158) > at > org.apache.felix.scr.impl.config.ImmediateComponentHolder.enableComponents(ImmediateComponentHolder.java:313) > at > org.apache.felix.scr.impl.BundleComponentActivator.loadDescriptor(BundleComponentActivator.java:241) > at > org.apache.felix.scr.impl.BundleComponentActivator.initialize(BundleComponentActivator.java:147) > at > org.apache.felix.scr.impl.BundleComponentActivator.<init>(BundleComponentActivator.java:111) > at > org.apache.felix.scr.impl.Activator.loadComponents(Activator.java:274) > at org.apache.felix.scr.impl.Activator.bundleChanged(Activator.java:192) > at > org.apache.felix.framework.util.EventDispatcher.invokeBundleListenerCallback(EventDispatcher.java:868) > at > org.apache.felix.framework.util.EventDispatcher.fireEventImmediately(EventDispatcher.java:789) > at > org.apache.felix.framework.util.EventDispatcher.fireBundleEvent(EventDispatcher.java:514) > at org.apache.felix.framework.Felix.fireBundleEvent(Felix.java:4244) > at org.apache.felix.framework.Felix.startBundle(Felix.java:1923) > at org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1191) > at > org.apache.felix.framework.FrameworkStartLevelImpl.run(FrameworkStartLevelImpl.java:295) > at java.lang.Thread.run(Thread.java:662) > Caused by: java.lang.ClassNotFoundException: *** Class > 'com.amazonaws.services.s3.model.S3ObjectSummary' was not found. Bundle > com.day.crx.sling.server [52] does not import package > 'com.amazonaws.services.s3.model', nor is the package exported by any other > bundle or available from the system class loader. *** > at > org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1857) > at java.lang.ClassLoader.loadClass(ClassLoader.java:247) > ... 62 more > Caused by: java.lang.ClassNotFoundException: > com.amazonaws.services.s3.model.S3ObjectSummary not found by > com.day.crx.sling.server [52] > at > org.apache.felix.framework.BundleWiringImpl.findClassOrResourceByDelegation(BundleWiringImpl.java:1460) > at > org.apache.felix.framework.BundleWiringImpl.access$400(BundleWiringImpl.java:72) > at > org.apache.felix.framework.BundleWiringImpl$BundleClassLoader.loadClass(BundleWiringImpl.java:1843) > ... 63 more -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira