You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by "Stefano Bagnara (JIRA)" <se...@james.apache.org> on 2007/03/30 14:27:25 UTC

[jira] Commented: (JAMES-781) James will not start if there is directory with too many files and folders in the repostiory path

    [ https://issues.apache.org/jira/browse/JAMES-781?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#action_12485496 ] 

Stefano Bagnara commented on JAMES-781:
---------------------------------------

This seems to be related to the new classloader in the new phoenix.
If there is no <classloaders> section in environment.xml then phoenix build this configuration:

    private ClassLoaderSetMetaData createDefaultLoaderMetaData()
    {
        final String[] includes = new String[]{"SAR-INF/lib/*.jar"};
        final String[] excludes = new String[ 0 ];
        final FileSetMetaData fileSet =
            new FileSetMetaData( ".",
                                 includes,
                                 excludes );
        final String name = "default";
        final String parent = "*system*";
        final String[] entrys = new String[]{"SAR-INF/classes/"};
        final Extension[] extensions = new Extension[ 0 ];
        final FileSetMetaData[] filesets = new FileSetMetaData[]{fileSet};
        final ClassLoaderMetaData loader =
            new ClassLoaderMetaData( name, parent, entrys, extensions, filesets );
        final String[] predefined = new String[]{parent};
        final ClassLoaderMetaData[] classLoaders = new ClassLoaderMetaData[]{loader};
        final JoinMetaData[] joins = new JoinMetaData[ 0 ];
        return
            new ClassLoaderSetMetaData( name,
                                        predefined,
                                        classLoaders,
                                        joins );
    }

so it uses "." as folder "SAR-INF/classes/" as entry and "SAR-INF/lib/*.jar" as include.

Maybe this ends up scanning the whole "." in search of paths matching SAR-INF classes and SAR-INF/lib.

One first attempt to fix this could be to specify a custom classloader scheme using "./SAR-INF" as the folder and "lib/*.jar" as include. I never tested or used something similar, but you could try adding to your environment.xml this configuration (inside the server note, as a brother of logs entry):
-----------
<classloaders default="default" version="1.0">
<classloader name="default" parent="*system*">
<entry location="./SAR-INF/classes" />
<fileset dir="./SAR-INF">
<include name="lib/*.jar" />
</fileset>
</classloader>
<!-- <predefined name="" /> -->
</classloaders>
--------------


> James will not start if there is directory with too many files and folders in the repostiory path
> -------------------------------------------------------------------------------------------------
>
>                 Key: JAMES-781
>                 URL: https://issues.apache.org/jira/browse/JAMES-781
>             Project: James
>          Issue Type: Bug
>    Affects Versions: 2.3.0
>         Environment: RedHat EL3, JVM 1.4.2_13, 
>            Reporter: Ozkan Mehmedali
>             Fix For: 2.2.0
>
>
> The real path to my repository is /var/james/var, James is installed in /usr/local/james-2.3.0. In /var/james/var/mail/ except all James store directories (address-error, ougoing ...) there is one MYOWN where I have a lot of emails sorted in many sub, sub .. folders. This is folder and everything in it have 755 SOMEUSER.SOMEUSER permissions.
> James will start successfully if it uses it's self created /var. When I link /usr/local/james-2.3.0/apps/james/var/mail/
> to the real store /var/james/var/mail it won't start, will not create any of it's store directories and the last message in phoenix.log is
> Verify that if target is null then actions is null.
> I created a new directory /var/james/var/newmail and linked it with /usr/local/james-2.3.0/apps/james/var/mail/. James started and it created all it's store directories successfully. I stopped it and then made a link in /var/james/var/newmail/ to /var/james/var/mail/MYOWN. After this changes James is not starting up again and the last message in the log again is
> Verify that if target is null then actions is null.
> Have in mind that this MYOWN directory contains a really big tree of folders and files - ~50GB. It will be really slow even if james|phoenix tries only to go trough all of them.
> The phoenix stack trace:
> STARTED Phoenix Fri Mar 30 03:13:04 PDT 2007
> Phoenix 4.2
> Full thread dump Java HotSpot(TM) Client VM (1.4.2_13-b06 mixed mode):
> "Thread-0" daemon prio=1 tid=0xaa4e5880 nid=0x6591 waiting on condition [0xaa102000..0xaa102868]
> 	at java.lang.Thread.sleep(Native Method)
> 	at org.apache.avalon.excalibur.monitor.impl.ActiveMonitor.run(ActiveMonitor.java:101)
> 	at java.lang.Thread.run(Thread.java:534)
> "Signal Dispatcher" daemon prio=1 tid=0xaab14470 nid=0x658e waiting on condition [0x00000000..0x00000000]
> "Finalizer" daemon prio=1 tid=0xaab00690 nid=0x658c in Object.wait() [0xaacad000..0xaacad868]
> 	at java.lang.Object.wait(Native Method)
> 	- waiting on <0xab31f998> (a java.lang.ref.ReferenceQueue$Lock)
> 	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111)
> 	- locked <0xab31f998> (a java.lang.ref.ReferenceQueue$Lock)
> 	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:127)
> 	at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)
> "Reference Handler" daemon prio=1 tid=0x0808d770 nid=0x658b in Object.wait() [0xaad2e000..0xaad2e868]
> 	at java.lang.Object.wait(Native Method)
> 	- waiting on <0xab31fa00> (a java.lang.ref.Reference$Lock)
> 	at java.lang.Object.wait(Object.java:429)
> 	at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:115)
> 	- locked <0xab31fa00> (a java.lang.ref.Reference$Lock)
> "main" prio=1 tid=0x08057c98 nid=0x6588 runnable [0xbfffa000..0xbfffbeb8]
> 	at java.io.ExpiringCache.cleanup(ExpiringCache.java:99)
> 	at java.io.ExpiringCache.get(ExpiringCache.java:51)
> 	- locked <0xab3224f8> (a java.io.ExpiringCache)
> 	at java.io.UnixFileSystem.canonicalize(UnixFileSystem.java:137)
> 	at java.io.File.getCanonicalPath(File.java:513)
> 	at java.io.FilePermission$1.run(FilePermission.java:218)
> 	at java.security.AccessController.doPrivileged(Native Method)
> 	at java.io.FilePermission.init(FilePermission.java:212)
> 	at java.io.FilePermission.<init>(FilePermission.java:264)
> 	at java.lang.SecurityManager.checkRead(SecurityManager.java:863)
> 	at java.io.File.isDirectory(File.java:699)
> 	at org.apache.avalon.phoenix.components.classloader.DefaultLoaderResolver.scanDir(DefaultLoaderResolver.java:168)
> 	at org.apache.avalon.phoenix.components.classloader.DefaultLoaderResolver.scanDir(DefaultLoaderResolver.java:170)
> 	at org.apache.avalon.phoenix.components.classloader.DefaultLoaderResolver.scanDir(DefaultLoaderResolver.java:170)
> 	at org.apache.avalon.phoenix.components.classloader.DefaultLoaderResolver.scanDir(DefaultLoaderResolver.java:170)
> 	at org.apache.avalon.phoenix.components.classloader.DefaultLoaderResolver.scanDir(DefaultLoaderResolver.java:170)
> 	at org.apache.avalon.phoenix.components.classloader.DefaultLoaderResolver.scanDir(DefaultLoaderResolver.java:170)
> 	at org.apache.avalon.phoenix.components.classloader.DefaultLoaderResolver.scanDir(DefaultLoaderResolver.java:170)
> 	at org.apache.avalon.phoenix.components.classloader.DefaultLoaderResolver.scanDir(DefaultLoaderResolver.java:170)
> 	at org.apache.avalon.phoenix.components.classloader.DefaultLoaderResolver.scanDir(DefaultLoaderResolver.java:170)
> 	at org.apache.avalon.phoenix.components.classloader.DefaultLoaderResolver.scanDir(DefaultLoaderResolver.java:170)
> 	at org.apache.avalon.phoenix.components.classloader.DefaultLoaderResolver.resolveFileSet(DefaultLoaderResolver.java:131)
> 	at org.apache.avalon.phoenix.components.classloader.SarLoaderResolver.resolveFileSet(SarLoaderResolver.java:169)
> 	at org.realityforge.classman.builder.LoaderBuilder.buildRegularClassLoader(LoaderBuilder.java:210)
> 	at org.realityforge.classman.builder.LoaderBuilder.processClassLoader(LoaderBuilder.java:126)
> 	at org.realityforge.classman.builder.LoaderBuilder.addAllClassLoaders(LoaderBuilder.java:71)
> 	at org.realityforge.classman.builder.LoaderBuilder.buildClassLoaders(LoaderBuilder.java:48)
> 	at org.apache.avalon.phoenix.components.classloader.DefaultClassLoaderManager.createClassLoaderSet(DefaultClassLoaderManager.java:233)
> 	at org.apache.avalon.phoenix.components.deployer.DefaultDeployer.deploy(DefaultDeployer.java:331)
> 	at org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.deployFile(DefaultEmbeddor.java:542)
> 	- locked <0xab343058> (a org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor)
> 	at org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.deployFile(DefaultEmbeddor.java:535)
> 	at org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.deployFiles(DefaultEmbeddor.java:520)
> 	at org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.deployDefaultApplications(DefaultEmbeddor.java:509)
> 	at org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.execute(DefaultEmbeddor.java:268)
> 	at org.apache.avalon.phoenix.frontends.CLIMain.run(CLIMain.java:198)
> 	at org.apache.avalon.phoenix.frontends.CLIMain.execute(CLIMain.java:184)
> 	at org.apache.avalon.phoenix.frontends.CLIMain.main(CLIMain.java:145)
> 	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:324)
> 	at org.apache.avalon.phoenix.launcher.Main.startup(Main.java:128)
> 	at org.apache.avalon.phoenix.launcher.Main.main(Main.java:83)
> "VM Thread" prio=1 tid=0x0808c508 nid=0x658a runnable 
> "VM Periodic Task Thread" prio=1 tid=0xaab16c88 nid=0x6590 waiting on condition 
> "Suspend Checker Thread" prio=1 tid=0xaab139c8 nid=0x658d runnable 
> Full thread dump Java HotSpot(TM) Client VM (1.4.2_13-b06 mixed mode):
> "Thread-0" daemon prio=1 tid=0xaa4e5880 nid=0x6591 waiting on condition [0xaa102000..0xaa102868]
> 	at java.lang.Thread.sleep(Native Method)
> 	at org.apache.avalon.excalibur.monitor.impl.ActiveMonitor.run(ActiveMonitor.java:101)
> 	at java.lang.Thread.run(Thread.java:534)
> "Signal Dispatcher" daemon prio=1 tid=0xaab14470 nid=0x658e waiting on condition [0x00000000..0x00000000]
> "Finalizer" daemon prio=1 tid=0xaab00690 nid=0x658c in Object.wait() [0xaacad000..0xaacad868]
> 	at java.lang.Object.wait(Native Method)
> 	- waiting on <0xab31f998> (a java.lang.ref.ReferenceQueue$Lock)
> 	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111)
> 	- locked <0xab31f998> (a java.lang.ref.ReferenceQueue$Lock)
> 	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:127)
> 	at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)
> "Reference Handler" daemon prio=1 tid=0x0808d770 nid=0x658b in Object.wait() [0xaad2e000..0xaad2e868]
> 	at java.lang.Object.wait(Native Method)
> 	- waiting on <0xab31fa00> (a java.lang.ref.Reference$Lock)
> 	at java.lang.Object.wait(Object.java:429)
> 	at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:115)
> 	- locked <0xab31fa00> (a java.lang.ref.Reference$Lock)
> "main" prio=1 tid=0x08057c98 nid=0x6588 runnable [0xbfffa000..0xbfffbeb8]
> 	at java.security.AccessController.doPrivileged(Native Method)
> 	at java.io.FilePermission.init(FilePermission.java:212)
> 	at java.io.FilePermission.<init>(FilePermission.java:264)
> 	at java.lang.SecurityManager.checkRead(SecurityManager.java:863)
> 	at java.io.File.isDirectory(File.java:699)
> 	at org.apache.avalon.phoenix.components.classloader.DefaultLoaderResolver.scanDir(DefaultLoaderResolver.java:168)
> 	at org.apache.avalon.phoenix.components.classloader.DefaultLoaderResolver.scanDir(DefaultLoaderResolver.java:170)
> 	at org.apache.avalon.phoenix.components.classloader.DefaultLoaderResolver.scanDir(DefaultLoaderResolver.java:170)
> 	at org.apache.avalon.phoenix.components.classloader.DefaultLoaderResolver.scanDir(DefaultLoaderResolver.java:170)
> 	at org.apache.avalon.phoenix.components.classloader.DefaultLoaderResolver.scanDir(DefaultLoaderResolver.java:170)
> 	at org.apache.avalon.phoenix.components.classloader.DefaultLoaderResolver.scanDir(DefaultLoaderResolver.java:170)
> 	at org.apache.avalon.phoenix.components.classloader.DefaultLoaderResolver.scanDir(DefaultLoaderResolver.java:170)
> 	at org.apache.avalon.phoenix.components.classloader.DefaultLoaderResolver.scanDir(DefaultLoaderResolver.java:170)
> 	at org.apache.avalon.phoenix.components.classloader.DefaultLoaderResolver.scanDir(DefaultLoaderResolver.java:170)
> 	at org.apache.avalon.phoenix.components.classloader.DefaultLoaderResolver.resolveFileSet(DefaultLoaderResolver.java:131)
> 	at org.apache.avalon.phoenix.components.classloader.SarLoaderResolver.resolveFileSet(SarLoaderResolver.java:169)
> 	at org.realityforge.classman.builder.LoaderBuilder.buildRegularClassLoader(LoaderBuilder.java:210)
> 	at org.realityforge.classman.builder.LoaderBuilder.processClassLoader(LoaderBuilder.java:126)
> 	at org.realityforge.classman.builder.LoaderBuilder.addAllClassLoaders(LoaderBuilder.java:71)
> 	at org.realityforge.classman.builder.LoaderBuilder.buildClassLoaders(LoaderBuilder.java:48)
> 	at org.apache.avalon.phoenix.components.classloader.DefaultClassLoaderManager.createClassLoaderSet(DefaultClassLoaderManager.java:233)
> 	at org.apache.avalon.phoenix.components.deployer.DefaultDeployer.deploy(DefaultDeployer.java:331)
> 	at org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.deployFile(DefaultEmbeddor.java:542)
> 	- locked <0xab343058> (a org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor)
> 	at org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.deployFile(DefaultEmbeddor.java:535)
> 	at org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.deployFiles(DefaultEmbeddor.java:520)
> 	at org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.deployDefaultApplications(DefaultEmbeddor.java:509)
> 	at org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.execute(DefaultEmbeddor.java:268)
> 	at org.apache.avalon.phoenix.frontends.CLIMain.run(CLIMain.java:198)
> 	at org.apache.avalon.phoenix.frontends.CLIMain.execute(CLIMain.java:184)
> 	at org.apache.avalon.phoenix.frontends.CLIMain.main(CLIMain.java:145)
> 	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:324)
> 	at org.apache.avalon.phoenix.launcher.Main.startup(Main.java:128)
> 	at org.apache.avalon.phoenix.launcher.Main.main(Main.java:83)
> "VM Thread" prio=1 tid=0x0808c508 nid=0x658a runnable 
> "VM Periodic Task Thread" prio=1 tid=0xaab16c88 nid=0x6590 waiting on condition 
> "Suspend Checker Thread" prio=1 tid=0xaab139c8 nid=0x658d runnable 
> Full thread dump Java HotSpot(TM) Client VM (1.4.2_13-b06 mixed mode):
> "Thread-0" daemon prio=1 tid=0xaa4e5880 nid=0x6591 waiting on condition [0xaa102000..0xaa102868]
> 	at java.lang.Thread.sleep(Native Method)
> 	at org.apache.avalon.excalibur.monitor.impl.ActiveMonitor.run(ActiveMonitor.java:101)
> 	at java.lang.Thread.run(Thread.java:534)
> "Signal Dispatcher" daemon prio=1 tid=0xaab14470 nid=0x658e waiting on condition [0x00000000..0x00000000]
> "Finalizer" daemon prio=1 tid=0xaab00690 nid=0x658c in Object.wait() [0xaacad000..0xaacad868]
> 	at java.lang.Object.wait(Native Method)
> 	- waiting on <0xab31f998> (a java.lang.ref.ReferenceQueue$Lock)
> 	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:111)
> 	- locked <0xab31f998> (a java.lang.ref.ReferenceQueue$Lock)
> 	at java.lang.ref.ReferenceQueue.remove(ReferenceQueue.java:127)
> 	at java.lang.ref.Finalizer$FinalizerThread.run(Finalizer.java:159)
> "Reference Handler" daemon prio=1 tid=0x0808d770 nid=0x658b in Object.wait() [0xaad2e000..0xaad2e868]
> 	at java.lang.Object.wait(Native Method)
> 	- waiting on <0xab31fa00> (a java.lang.ref.Reference$Lock)
> 	at java.lang.Object.wait(Object.java:429)
> 	at java.lang.ref.Reference$ReferenceHandler.run(Reference.java:115)
> 	- locked <0xab31fa00> (a java.lang.ref.Reference$Lock)
> "main" prio=1 tid=0x08057c98 nid=0x6588 runnable [0xbfffa000..0xbfffbeb8]
> 	at java.security.AccessController.doPrivileged(Native Method)
> 	at java.io.FilePermission.init(FilePermission.java:212)
> 	at java.io.FilePermission.<init>(FilePermission.java:264)
> 	at java.lang.SecurityManager.checkRead(SecurityManager.java:863)
> 	at java.io.File.isDirectory(File.java:699)
> 	at org.apache.avalon.phoenix.components.classloader.DefaultLoaderResolver.scanDir(DefaultLoaderResolver.java:168)
> 	at org.apache.avalon.phoenix.components.classloader.DefaultLoaderResolver.scanDir(DefaultLoaderResolver.java:170)
> 	at org.apache.avalon.phoenix.components.classloader.DefaultLoaderResolver.scanDir(DefaultLoaderResolver.java:170)
> 	at org.apache.avalon.phoenix.components.classloader.DefaultLoaderResolver.scanDir(DefaultLoaderResolver.java:170)
> 	at org.apache.avalon.phoenix.components.classloader.DefaultLoaderResolver.scanDir(DefaultLoaderResolver.java:170)
> 	at org.apache.avalon.phoenix.components.classloader.DefaultLoaderResolver.scanDir(DefaultLoaderResolver.java:170)
> 	at org.apache.avalon.phoenix.components.classloader.DefaultLoaderResolver.scanDir(DefaultLoaderResolver.java:170)
> 	at org.apache.avalon.phoenix.components.classloader.DefaultLoaderResolver.scanDir(DefaultLoaderResolver.java:170)
> 	at org.apache.avalon.phoenix.components.classloader.DefaultLoaderResolver.scanDir(DefaultLoaderResolver.java:170)
> 	at org.apache.avalon.phoenix.components.classloader.DefaultLoaderResolver.resolveFileSet(DefaultLoaderResolver.java:131)
> 	at org.apache.avalon.phoenix.components.classloader.SarLoaderResolver.resolveFileSet(SarLoaderResolver.java:169)
> 	at org.realityforge.classman.builder.LoaderBuilder.buildRegularClassLoader(LoaderBuilder.java:210)
> 	at org.realityforge.classman.builder.LoaderBuilder.processClassLoader(LoaderBuilder.java:126)
> 	at org.realityforge.classman.builder.LoaderBuilder.addAllClassLoaders(LoaderBuilder.java:71)
> 	at org.realityforge.classman.builder.LoaderBuilder.buildClassLoaders(LoaderBuilder.java:48)
> 	at org.apache.avalon.phoenix.components.classloader.DefaultClassLoaderManager.createClassLoaderSet(DefaultClassLoaderManager.java:233)
> 	at org.apache.avalon.phoenix.components.deployer.DefaultDeployer.deploy(DefaultDeployer.java:331)
> 	at org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.deployFile(DefaultEmbeddor.java:542)
> 	- locked <0xab343058> (a org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor)
> 	at org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.deployFile(DefaultEmbeddor.java:535)
> 	at org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.deployFiles(DefaultEmbeddor.java:520)
> 	at org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.deployDefaultApplications(DefaultEmbeddor.java:509)
> 	at org.apache.avalon.phoenix.components.embeddor.DefaultEmbeddor.execute(DefaultEmbeddor.java:268)
> 	at org.apache.avalon.phoenix.frontends.CLIMain.run(CLIMain.java:198)
> 	at org.apache.avalon.phoenix.frontends.CLIMain.execute(CLIMain.java:184)
> 	at org.apache.avalon.phoenix.frontends.CLIMain.main(CLIMain.java:145)
> 	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:324)
> 	at org.apache.avalon.phoenix.launcher.Main.startup(Main.java:128)
> 	at org.apache.avalon.phoenix.launcher.Main.main(Main.java:83)
> "VM Thread" prio=1 tid=0x0808c508 nid=0x658a runnable 
> "VM Periodic Task Thread" prio=1 tid=0xaab16c88 nid=0x6590 waiting on condition 
> "Suspend Checker Thread" prio=1 tid=0xaab139c8 nid=0x658d runnable 
> JVM exiting abnormally. Shutting down Phoenix.
> STOPPED Fri Mar 30 03:18:05 PDT 2007

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org