Well, sure. But first things first :-)

I am currently running it against the unpatched 2.3 branch.
Then I'll try the patch against 2.3 and test again.
(I will not try a patched 2.2.0, maybe someone else wants to...)

I think we have to be careful calling it a fix. The OOM exception might be fixed, but we still have to confirm this does not introduce new problems. I really want to understand more deeply what the patch does. Simply had now time yet to have a closer look...

  Bernd

Norman Maurer wrote:
Can you please use the fixed attached version of the Class and run it
again against postage ?

Thx
Norman
Am Dienstag, den 30.05.2006, 09:08 +0000 schrieb Bernd Fondermann
(JIRA):

[ http://issues.apache.org/jira/browse/JAMES-512?page=comments#action_12413788 ]
Bernd Fondermann commented on JAMES-512:
----------------------------------------

I can reproduce the bug under James 2.2.0 with the following Postage szenario:

   <scenario id="release_james512" runtimeMinutes="480"><!-- 8h=480, 1d=1440, 
3d=4320 -->
       <users>
         <internal count="1" username-prefix="test_int" domain="mail.james.local" 
password="test" reuseExisting="yes" />
         <external count="0" username-prefix="test_ext" domain="mail.sample.com" 
/>
       </users>
       <profiles>
           <profile name="ext-int" source="extern" target="intern">
           </profile>
           <profile name="int-ext" source="intern" target="extern">
           </profile>
           <profile name="int-int" source="intern" target="intern">
              <send count-per-min="25" subject="int2int" text-size-min="10" text-size-max="20" 
binary-size-min="0" binary-size-max="0"  />
              <send count-per-min="25" subject="int2int" text-size-min="10" text-size-max="20" 
binary-size-min="0" binary-size-max="0"  />
              <send count-per-min="25" subject="int2int" text-size-min="10" text-size-max="20" 
binary-size-min="0" binary-size-max="0"  />
              <send count-per-min="25" subject="int2int" text-size-min="10" text-size-max="20" 
binary-size-min="0" binary-size-max="0"  />
              <send count-per-min="25" subject="int2int" text-size-min="10" text-size-max="20" 
binary-size-min="0" binary-size-max="0"  />
              <send count-per-min="25" subject="int2int" text-size-min="10" text-size-max="20" 
binary-size-min="0" binary-size-max="0"  />
              <send count-per-min="25" subject="int2int" text-size-min="10" text-size-max="20" 
binary-size-min="0" binary-size-max="0"  />
              <send count-per-min="25" subject="int2int" text-size-min="10" text-size-max="20" 
binary-size-min="0" binary-size-max="0"  />
              <send count-per-min="25" subject="int2int" text-size-min="10" text-size-max="20" 
binary-size-min="0" binary-size-max="0"  />
              <send count-per-min="25" subject="int2int" text-size-min="10" text-size-max="20" 
binary-size-min="0" binary-size-max="0"  />

              <send count-per-min="25" subject="int2int" text-size-min="10" text-size-max="20" 
binary-size-min="0" binary-size-max="0"  />
              <send count-per-min="25" subject="int2int" text-size-min="10" text-size-max="20" 
binary-size-min="0" binary-size-max="0"  />
              <send count-per-min="25" subject="int2int" text-size-min="10" text-size-max="20" 
binary-size-min="0" binary-size-max="0"  />
              <send count-per-min="25" subject="int2int" text-size-min="10" text-size-max="20" 
binary-size-min="0" binary-size-max="0"  />
              <send count-per-min="25" subject="int2int" text-size-min="10" text-size-max="20" 
binary-size-min="0" binary-size-max="0"  />
              <send count-per-min="25" subject="int2int" text-size-min="10" text-size-max="20" 
binary-size-min="0" binary-size-max="0"  />
              <send count-per-min="25" subject="int2int" text-size-min="10" text-size-max="20" 
binary-size-min="0" binary-size-max="0"  />
              <send count-per-min="25" subject="int2int" text-size-min="10" text-size-max="20" 
binary-size-min="0" binary-size-max="0"  />
              <send count-per-min="25" subject="int2int" text-size-min="10" text-size-max="20" 
binary-size-min="0" binary-size-max="0"  />
              <send count-per-min="25" subject="int2int" text-size-min="10" text-size-max="20" 
binary-size-min="0" binary-size-max="0"  />

           </profile>
       </profiles>
       <testserver host="localhost">
         <smtp-forwarding port="2525" latecomer-wait-seconds="120"/>
         <smtp-inbound port="25" />
         <pop3 port="110" count-per-min="10" />
         <remotemanager port="4555" name="root" password="root" />
         <spam-account name="spam-sink" password="spam-sink" />
         <jvm-resources jmx-remoting-port="10201" />
       </testserver>
   </scenario>


OutOfMemoryError -- object not released.
----------------------------------------

        Key: JAMES-512
        URL: http://issues.apache.org/jira/browse/JAMES-512
    Project: James
       Type: Bug

 Components: MailStore & MailRepository
   Versions: 2.2.0
Environment: windows XP,
Java 1.5.0_06
   Reporter: Quande Ren
   Priority: Critical
    Fix For: 2.3.0a4
Attachments: picture.GIF

I use the file system to store the emails.
When I run the James for a long time, the james server used more and more heap 
memory, eventually it runs out of memory and refuse to receive email. only 
restart the james will work.
I used JProfile Memory Debugger(you can get the trial version from 
www.quest.com)  and found a clue. the object allocated from following code at 
line 92 does not always get released, cause the memory been used up eventually. 
I will attach a picture file showing the call stack.
91,            final OutputStream outputStream = getOutputStream( key );
92,            final BufferedOutputStream stream = new BufferedOutputStream( 
outputStream );
93
94,            final Object o = m_outputs.get( key );
95,            if( null == o )
96,            {
97,                m_outputs.put( key; stream );
98,            }
99,            else if( o instanceof ArrayList )
100,            {
101,                ( (ArrayList)o ).add( stream );
102,            }
103,            else
104,            {
105,                final ArrayList list = new ArrayList();
106,                list.add( o );
107,                list.add( stream );
108,                m_outputs.put( key; list );
109,            }
110
111,            return stream;




---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to