Hi JB,

We're not using the generate-features-MOJO either, the feature.xml has been
written by hand. But by using the assembly-MOJO, the
etc\org.apache.karaf.features.xml is generated, which I can also see in
the logging :

*22:43:01,512 [INFO] Generating features processor configuration:
etc\org.apache.karaf.features.xml*

I think the prefixes should be OK indeed, but it would be nice to leave
them out while looking for a solution for the other problem.

Below you can find the stacktrace from the OOM, I also have a list of
Objectsin my heapdump :

Class Name                                      |     Objects |  Shallow
Heap | Retained Heap
----------------------------------------------------------------------------------------------
org.apache.felix.resolver.util.CandidateSelector| 149,133,654 |
3,579,207,696 |
org.apache.felix.resolver.util.ShadowList       |   6,636,000 |
212,352,000 |
org.apache.felix.resolver.util.CopyOnWriteSet   |     272,437 |
4,358,992 |
org.apache.felix.resolver.ResolverImpl$Blame    |      87,915 |
2,109,960 |
org.apache.felix.resolver.util.OpenHashMapSet   |      18,261 |
1,460,880 |
org.apache.felix.resolver.util.OpenHashMapList  |      17,697 |
1,415,760 |
org.apache.felix.utils.resource.SimpleFilter    |      41,589 |
998,136 |
org.apache.felix.resolver.Candidates            |      17,697 |
849,456 |
----------------------------------------------------------------------------------------------


java.lang.OutOfMemoryError: Java heap space
Dumping heap to java_pid12712.hprof ...
Heap dump file created [14183481728 bytes in 193.147 secs]
java.lang.OutOfMemoryError: Java heap space
        at
org.apache.felix.resolver.util.OpenHashMap.clone(OpenHashMap.java:820)
        at
org.apache.felix.resolver.util.OpenHashMapList.deepClone(OpenHashMapList.java:35)
        at org.apache.felix.resolver.Candidates.copy(Candidates.java:1143)
        at
org.apache.felix.resolver.ResolverImpl.permuteUsedBlames(ResolverImpl.java:1598)
        at
org.apache.felix.resolver.ResolverImpl.checkPackageSpaceConsistency(ResolverImpl.java:1464)
        at
org.apache.felix.resolver.ResolverImpl.checkConsistency(ResolverImpl.java:621)
        at
org.apache.felix.resolver.ResolverImpl.findValidCandidates(ResolverImpl.java:574)
        at
org.apache.felix.resolver.ResolverImpl.doResolve(ResolverImpl.java:437)
        at
org.apache.felix.resolver.ResolverImpl.resolve(ResolverImpl.java:420)
        at
org.apache.felix.resolver.ResolverImpl.resolve(ResolverImpl.java:374)
        at
org.apache.felix.framework.StatefulResolver.resolve(StatefulResolver.java:478)
        at org.apache.felix.framework.Felix.resolveBundles(Felix.java:4327)
        at
org.apache.felix.framework.FrameworkWiringImpl.resolveBundles(FrameworkWiringImpl.java:133)
        at
org.apache.karaf.features.internal.service.BundleInstallSupportImpl.resolveBundles(BundleInstallSupportImpl.java:244)
        at
org.apache.karaf.features.internal.service.FeaturesServiceImpl.resolveBundles(FeaturesServiceImpl.java:1175)
        at
org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:1027)
        at
org.apache.karaf.features.internal.service.FeaturesServiceImpl.doProvision(FeaturesServiceImpl.java:1069)
        at
org.apache.karaf.features.internal.service.FeaturesServiceImpl.lambda$doProvisionInThread$13(FeaturesServiceImpl.java:1004)
        at
org.apache.karaf.features.internal.service.FeaturesServiceImpl$$Lambda$220/0x00000007c0479c40.call(Unknown
Source)
        at
java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at java.base/java.lang.Thread.run(Thread.java:834)
2021-11-28 09:53:02,366 -
[o.a.k.f.i.s.BootFeaturesInstaller][activator-1-thread-2] ERROR - Error
installing boot features
 java.lang.OutOfMemoryError: Java heap space
        at
org.apache.felix.resolver.util.OpenHashMap.clone(OpenHashMap.java:820)
        at
org.apache.felix.resolver.util.OpenHashMapList.deepClone(OpenHashMapList.java:35)
        at org.apache.felix.resolver.Candidates.copy(Candidates.java:1143)
        at
org.apache.felix.resolver.ResolverImpl.permuteUsedBlames(ResolverImpl.java:1598)
        at
org.apache.felix.resolver.ResolverImpl.checkPackageSpaceConsistency(ResolverImpl.java:1464)
        at
org.apache.felix.resolver.ResolverImpl.checkConsistency(ResolverImpl.java:621)
        at
org.apache.felix.resolver.ResolverImpl.findValidCandidates(ResolverImpl.java:574)
        at
org.apache.felix.resolver.ResolverImpl.doResolve(ResolverImpl.java:437)
        at
org.apache.felix.resolver.ResolverImpl.resolve(ResolverImpl.java:420)
        at
org.apache.felix.resolver.ResolverImpl.resolve(ResolverImpl.java:374)
        at
org.apache.felix.framework.StatefulResolver.resolve(StatefulResolver.java:478)
        at org.apache.felix.framework.Felix.resolveBundles(Felix.java:4327)
        at
org.apache.felix.framework.FrameworkWiringImpl.resolveBundles(FrameworkWiringImpl.java:133)
        at
org.apache.karaf.features.internal.service.BundleInstallSupportImpl.resolveBundles(BundleInstallSupportImpl.java:244)
        at
org.apache.karaf.features.internal.service.FeaturesServiceImpl.resolveBundles(FeaturesServiceImpl.java:1175)
        at
org.apache.karaf.features.internal.service.Deployer.deploy(Deployer.java:1027)
        at
org.apache.karaf.features.internal.service.FeaturesServiceImpl.doProvision(FeaturesServiceImpl.java:1069)
        at
org.apache.karaf.features.internal.service.FeaturesServiceImpl.lambda$doProvisionInThread$13(FeaturesServiceImpl.java:1004)
        at
org.apache.karaf.features.internal.service.FeaturesServiceImpl$$Lambda$220/0x00000007c0479c40.call(Unknown
Source)
        at
java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264)
        at
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
        at
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
        at java.base/java.lang.Thread.run(Thread.java:834)

Kind regards,
Steven

On Sun, Nov 28, 2021 at 8:17 AM Jean-Baptiste Onofre <j...@nanthrax.net>
wrote:

> Hi Steven,
>
> Let me try to reproduce on a simple test case.
>
> I don’t see yet the relationship between the prefixes generated (which are
> not bad IMHO) and the OOM (I’m suspecting more like a loop in the features
> XML definition).
>
> Just a reminder: in Karaf itself, we don’t use the generate-features MOJO,
> we write the features XML/JSON by hand (largely better to have a complete
> control).
>
> Regards
> JB
>
> > Le 27 nov. 2021 à 22:15, Steven Huypens <steven.huyp...@gmail.com> a
> écrit :
> >
> > Hi Bernd,
> >
> > That's what I did :
> >
> > 1) Compile all code with Java 8, create distro with Java 8, run with
> Java 8
> > --> Works
> > 2) Compile all code with Java 8, create distro with Java 8, run with Java
> > 11 --> Works
> > 3) Compile all code with Java 8, create distro with Java 11, run with
> Java
> > 11 --> Doesn't work, app goes OOM
> > 4) Compile all code with Java 11, create distro with Java 11, run with
> Java
> > 11 --> Doesn't work, app goes OOM
> >
> > The only difference between (2) and (3) is the prefix in
> > org.apache.karaf.features.xml, and if I remove that manually, the app
> works
> > as expected. I also think the generated org.apache.karaf.features.xml is
> > OK, but I have no clue why the application goes OOM with it.
> >
> > Kind regards,
> > Steven
> >
> >
> >
> >
> >
> > On Sat, Nov 27, 2021 at 10:02 PM Bernd Eckenfels <e...@zusammenkunft.net
> >
> > wrote:
> >
> >> Yes looked in the wrong Schema. I think, don’t worry about the prefixes,
> >> as long as the elements are correctly qualified (the processing
> elements in
> >> your case with ns3:) they are equivalent. Your memory problems have
> likely
> >> another cause. But as stated, it might be a good idea to list the repos
> and
> >> features in both running instances and compare them, just to be sure.
> >>
> >> (Besides the maven plugin probably should define a few fixed prefixes to
> >> make it better readable)
> >>
> >> Not sure why the maven plug-in is so sensitive to the jaxb version (if
> >> executed with java11 it needs to provide its own). Can you maybe run
> both
> >> builds with the same JDK?
> >>
> >> Gruss
> >> Bernd
> >> --
> >> http://bernd.eckenfels.net
> >> ________________________________
> >> Von: Steven Huypens <steven.huyp...@gmail.com>
> >> Gesendet: Saturday, November 27, 2021 9:56:04 PM
> >> An: dev@karaf.apache.org <dev@karaf.apache.org>
> >> Betreff: Re: karaf-maven-plugin generates another
> >> org.apache.karaf.features.xml with Java 8/Java 11
> >>
> >> Hi Bernd,
> >>
> >> - I do see 'blacklistedRepositories' in
> >> http://karaf.apache.org/xmlns/features-processing/v1.0.0
> >> - With the namespace-prefix my app goes OOM immediately, so I cannot
> >> compare both running systems.
> >> - I tried adding the prefix to each child, but that did not help
> >>
> >> Kind regards,
> >> Steven
> >>
> >> On Sat, Nov 27, 2021 at 9:23 PM Bernd Eckenfels <e...@zusammenkunft.net
> >
> >> wrote:
> >>
> >>> In that case maybe the child (deny* list?) is ignored, not sure how
> >> strict
> >>> the parser is in regards to namespaces. I don’t see a
> blacklistRepository
> >>> element in the Schema anyway. It’s maybe best you inspect the running
> >>> systems with feature:* commands and look for differences.
> >>>
> >>>
> >>>
> >>> --
> >>> http://bernd.eckenfels.net
> >>> ________________________________
> >>> Von: Steven Huypens <steven.huyp...@gmail.com>
> >>> Gesendet: Saturday, November 27, 2021 8:58:20 PM
> >>> An: dev@karaf.apache.org <dev@karaf.apache.org>
> >>> Betreff: Re: karaf-maven-plugin generates another
> >>> org.apache.karaf.features.xml with Java 8/Java 11
> >>>
> >>> Hi Bernd,
> >>>
> >>> Thanks for your response. The child elements have no prefix, eg.
> >>> <blacklistedRepositories></blacklistedRepositories>
> >>>
> >>> I'm sorry but I do not understand what you mean. You think part of my
> >>> org.apache.karaf.features.xml was previously ignored ? I haven't double
> >>> checked, but that would really surprise me because we have quite some
> >>> blacklistedFeatures en blacklistedBundles which would cause problems if
> >>> ignored.
> >>>
> >>> Best regards,
> >>> Steven
> >>>
> >>> On Sat, Nov 27, 2021 at 8:22 PM Bernd Eckenfels <
> e...@zusammenkunft.net>
> >>> wrote:
> >>>
> >>>> Hello Steven
> >>>>
> >>>> How do the child elements of that element look like? Are they using
> >>>> default/f/ns2 prefix and maybe the (semantically equivalent) change
> >>> affects
> >>>> your memory only because the old form ignored a actual entry for
> >>> dependency?
> >>>>
> >>>> Bernd
> >>>>
> >>>> --
> >>>> http://bernd.eckenfels.net
> >>>> ________________________________
> >>>> Von: Romain Manni-Bucau <rmannibu...@gmail.com>
> >>>> Gesendet: Samstag, November 27, 2021 8:14 PM
> >>>> An: dev
> >>>> Betreff: Re: karaf-maven-plugin generates another
> >>>> org.apache.karaf.features.xml with Java 8/Java 11
> >>>>
> >>>> Hi Steven,
> >>>>
> >>>>
> >>>> Maybe force jaxb version to an earlier one in karag pluhin
> dependencies
> >>> in
> >>>> your pom.
> >>>>
> >>>>
> >>>> Le sam. 27 nov. 2021 à 20:05, Steven Huypens <
> steven.huyp...@gmail.com
> >>>
> >>> a
> >>>> écrit :
> >>>>
> >>>>> Hi all,
> >>>>>
> >>>>> I tried to create my custom Karaf distribution (using
> >>> karaf-maven-plugin
> >>>>> 4.3.2) with Java 11 for the first time, and I noticed a difference in
> >>> the
> >>>>> resulting org.apache.karaf.features.xml
> >>>>>
> >>>>> The line
> >>>>>
> >>>>> <featuresProcessing xmlns="
> >>>>> http://karaf.apache.org/xmlns/features-processing/v1.0.0"; xmlns:f="
> >>>>> http://karaf.apache.org/xmlns/features/v1.6.0";>
> >>>>>
> >>>>> has been changed into
> >>>>>
> >>>>> <ns3:featuresProcessing xmlns:ns2="
> >>>>> http://karaf.apache.org/xmlns/features/v1.6.0"; xmlns:ns3="
> >>>>> http://karaf.apache.org/xmlns/features-processing/v1.0.0";>
> >>>>>
> >>>>> which means a namespace has been added. Unfortunately this little
> >>> change
> >>>>> has a big impact because now my app immediately runs OutOfMemory
> >> when I
> >>>>> start Karaf. There is very little DEBUG-logging, the behaviour is
> >>>> somewhat
> >>>>> like described in https://issues.apache.org/jira/browse/KARAF-6068
> >>>>>
> >>>>> Removing the namespace fixes the problem.
> >>>>>
> >>>>>
> >>>>>
> >>>>> Do you have any idea how I can prevent my app from going OOM after
> >> this
> >>>>> change ? Or how I can prevent the namespace from being added with
> >> Java
> >>>> 11 ?
> >>>>> It would be nice to understand the exact problem here.
> >>>>>
> >>>>>
> >>>>>
> >>>>> Kind regards,
> >>>>> Steven
> >>>>>
> >>>>
> >>>
> >>
>
>

Reply via email to