Author: trustin
Date: Tue Nov 13 20:50:12 2007
New Revision: 594762
URL: http://svn.apache.org/viewvc?rev=594762&view=rev
Log:
Fixed a possible memory leak in ReadThrottleFilter
Modified:
mina/trunk/core/src/main/java/org/apache/mina/filter/traffic/ReadThrottleFilter.java
Modified:
mina/trunk/core/src/main/java/org/apache/mina/filter/traffic/ReadThrottleFilter.java
URL:
http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/filter/traffic/ReadThrottleFilter.java?rev=594762&r1=594761&r2=594762&view=diff
==============================================================================
---
mina/trunk/core/src/main/java/org/apache/mina/filter/traffic/ReadThrottleFilter.java
(original)
+++
mina/trunk/core/src/main/java/org/apache/mina/filter/traffic/ReadThrottleFilter.java
Tue Nov 13 20:50:12 2007
@@ -19,6 +19,8 @@
*/
package org.apache.mina.filter.traffic;
+import java.util.ArrayList;
+import java.util.List;
import java.util.Map;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledFuture;
@@ -531,8 +533,24 @@
if (resumeOthers) {
int maxGlobalBufferSize = this.maxGlobalBufferSize;
if (maxGlobalBufferSize == 0 || globalBufferSize.get() <
maxGlobalBufferSize) {
+ List<IoService> inactiveServices = null;
for (IoService service: serviceBufferSizes.keySet()) {
resumeService(service);
+
+ if (!service.isActive()) {
+ if (inactiveServices == null) {
+ inactiveServices = new ArrayList<IoService>();
+ }
+ inactiveServices.add(service);
+ }
+
+ // Remove inactive services from the map.
+ if (inactiveServices != null) {
+ for (IoService s: inactiveServices) {
+ serviceBufferSizes.remove(s);
+ }
+ }
+
synchronized (globalResumeLock) {
lastGlobalResumeTime = System.currentTimeMillis();
}