It looks like a bug in MdcInjectionFilter.
2008-03-09 (일), 23:00 +0100, Niklas Gustavsson 쓰시길:
> Hi
>
> When doing some load testing on FtpServer, I ran into a threading
> issue in MdcInjectionFilter. When adding some load, I frequently get a
> ConcurrentModificationException on removing the MDC properties. Here's
> the stacktrace:
>
> java.util.ConcurrentModificationException
> at java.util.HashMap$HashIterator.nextEntry(HashMap.java:793)
> at java.util.HashMap$KeyIterator.next(HashMap.java:828)
> at
> org.apache.mina.filter.logging.MdcInjectionFilter.filter(MdcInjectionFilter.java:140)
> at
> org.apache.mina.filter.util.CommonEventFilter.messageReceived(CommonEventFilter.java:67)
> at
> org.apache.mina.common.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:401)
> at
> org.apache.mina.common.DefaultIoFilterChain.access$1200(DefaultIoFilterChain.java:38)
> at
> org.apache.mina.common.DefaultIoFilterChain$EntryImpl$1.messageReceived(DefaultIoFilterChain.java:820)
> at
> org.apache.mina.common.DefaultIoFilterChain$HeadFilter.messageReceived(DefaultIoFilterChain.java:604)
> at
> org.apache.mina.common.DefaultIoFilterChain.callNextMessageReceived(DefaultIoFilterChain.java:401)
> at
> org.apache.mina.common.DefaultIoFilterChain.fireMessageReceived(DefaultIoFilterChain.java:395)
> at
> org.apache.mina.common.AbstractPollingIoProcessor.read(AbstractPollingIoProcessor.java:425)
> at
> org.apache.mina.common.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:387)
> at
> org.apache.mina.common.AbstractPollingIoProcessor.process(AbstractPollingIoProcessor.java:379)
> at
> org.apache.mina.common.AbstractPollingIoProcessor.access$400(AbstractPollingIoProcessor.java:43)
> at
> org.apache.mina.common.AbstractPollingIoProcessor$Worker.run(AbstractPollingIoProcessor.java:676)
> at
> org.apache.mina.util.NamePreservingRunnable.run(NamePreservingRunnable.java:51)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:885)
> at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:907)
> at java.lang.Thread.run(Thread.java:619)
>
> The cause of the problem is a call to setProperty() from
> org.apache.ftpserver.command.USER. I'm not familiar enough with the
> MDC filter to identify the culprit. Simply synchronizing the context
> Map does not help. The test I'm running is quite simple:
>
> package org.apache.ftpserver.clienttests;
>
>
> public class MdcThreadingTest extends ClientTestTemplate {
>
> public void testLoginMulti() throws Exception {
> tearDown();
> for(int i = 0; i<10000; i++) {
> setUp();
> assertTrue(client.login(ADMIN_USERNAME,
> ADMIN_PASSWORD));
> tearDown();
> }
> System.out.println("All done!");
> }
> }
>
> Any help would be appreciated!
>
> /niklas
--
Trustin Lee - Principal Software Engineer, JBoss, Red Hat
--
what we call human nature is actually human habit
--
http://gleamynode.net/
signature.asc
Description: This is a digitally signed message part
