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