You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2011/10/20 21:52:48 UTC

svn commit: r1187018 [2/2] - in /tomcat/trunk: ./ java/org/apache/catalina/startup/ java/org/apache/catalina/valves/

Modified: tomcat/trunk/java/org/apache/catalina/valves/SemaphoreValve.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/valves/SemaphoreValve.java?rev=1187018&r1=1187017&r2=1187018&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/valves/SemaphoreValve.java (original)
+++ tomcat/trunk/java/org/apache/catalina/valves/SemaphoreValve.java Thu Oct 20 19:52:47 2011
@@ -5,9 +5,9 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@@ -60,18 +60,18 @@ public class SemaphoreValve extends Valv
      * Semaphore.
      */
     protected Semaphore semaphore = null;
-    
+
 
     // ------------------------------------------------------------- Properties
 
-    
+
     /**
      * Concurrency level of the semaphore.
      */
     protected int concurrency = 10;
     public int getConcurrency() { return concurrency; }
     public void setConcurrency(int concurrency) { this.concurrency = concurrency; }
-    
+
 
     /**
      * Fairness of the semaphore.
@@ -79,7 +79,7 @@ public class SemaphoreValve extends Valv
     protected boolean fairness = false;
     public boolean getFairness() { return fairness; }
     public void setFairness(boolean fairness) { this.fairness = fairness; }
-    
+
 
     /**
      * Block until a permit is available.
@@ -87,7 +87,7 @@ public class SemaphoreValve extends Valv
     protected boolean block = true;
     public boolean getBlock() { return block; }
     public void setBlock(boolean block) { this.block = block; }
-    
+
 
     /**
      * Block interruptibly until a permit is available.
@@ -95,7 +95,7 @@ public class SemaphoreValve extends Valv
     protected boolean interruptible = false;
     public boolean getInterruptible() { return interruptible; }
     public void setInterruptible(boolean interruptible) { this.interruptible = interruptible; }
-    
+
 
     /**
      * Start this component and implement the requirements
@@ -106,7 +106,7 @@ public class SemaphoreValve extends Valv
      */
     @Override
     protected synchronized void startInternal() throws LifecycleException {
-        
+
         semaphore = new Semaphore(concurrency, fairness);
 
         setState(LifecycleState.STARTING);
@@ -128,7 +128,7 @@ public class SemaphoreValve extends Valv
         semaphore = null;
     }
 
-    
+
     // --------------------------------------------------------- Public Methods
 
 
@@ -165,7 +165,7 @@ public class SemaphoreValve extends Valv
                             shouldRelease = false;
                             permitDenied(request, response);
                             return;
-                        }  
+                        }
                     } else {
                         semaphore.acquireUninterruptibly();
                     }
@@ -188,22 +188,22 @@ public class SemaphoreValve extends Valv
 
     }
 
-    
+
     /**
      * Subclass friendly method to add conditions.
-     * @param request 
-     * @param response 
+     * @param request
+     * @param response
      */
     public boolean controlConcurrency(Request request, Response response) {
         return true;
     }
-    
+
 
     /**
      * Subclass friendly method to add error handling when a permit isn't
      * granted.
-     * @param request 
-     * @param response 
+     * @param request
+     * @param response
      * @throws IOException
      * @throws ServletException
      */
@@ -211,6 +211,6 @@ public class SemaphoreValve extends Valv
         throws IOException, ServletException {
         // NO-OP by default
     }
-    
+
 
 }

Modified: tomcat/trunk/java/org/apache/catalina/valves/StuckThreadDetectionValve.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/valves/StuckThreadDetectionValve.java?rev=1187018&r1=1187017&r2=1187018&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/valves/StuckThreadDetectionValve.java (original)
+++ tomcat/trunk/java/org/apache/catalina/valves/StuckThreadDetectionValve.java Thu Oct 20 19:52:47 2011
@@ -38,7 +38,7 @@ import org.apache.tomcat.util.res.String
  * This valve allows to detect requests that take a long time to process, which might
  * indicate that the thread that is processing it is stuck.
  * Based on code proposed by TomLu in Bugzilla entry #50306
- * 
+ *
  * @author slaurent
  *
  */
@@ -53,7 +53,7 @@ public class StuckThreadDetectionValve e
      * Logger
      */
     private static final Log log = LogFactory.getLog(StuckThreadDetectionValve.class);
-    
+
     /**
      * The string manager for this package.
      */
@@ -64,30 +64,30 @@ public class StuckThreadDetectionValve e
      * Keeps count of the number of stuck threads detected
      */
     private final AtomicInteger stuckCount = new AtomicInteger(0);
-    
+
     /**
      * In seconds. Default 600 (10 minutes).
      */
     private int threshold = 600;
-    
+
     /**
      * The only references we keep to actual running Thread objects are in
      * this Map (which is automatically cleaned in invoke()s finally clause).
      * That way, Threads can be GC'ed, eventhough the Valve still thinks they
      * are stuck (caused by a long monitor interval)
      */
-    private ConcurrentHashMap<Long, MonitoredThread> activeThreads =
+    private final ConcurrentHashMap<Long, MonitoredThread> activeThreads =
             new ConcurrentHashMap<Long, MonitoredThread>();
     /**
      *
      */
-    private Queue<CompletedStuckThread> completedStuckThreadsQueue =
+    private final Queue<CompletedStuckThread> completedStuckThreadsQueue =
             new ConcurrentLinkedQueue<CompletedStuckThread>();
 
     /**
      * Specify the threshold (in seconds) used when checking for stuck threads.
      * If &lt;=0, the detection is disabled. The default is 600 seconds.
-     * 
+     *
      * @param threshold
      *            The new threshold in seconds
      */
@@ -103,7 +103,7 @@ public class StuckThreadDetectionValve e
         return threshold;
     }
 
-    
+
     /**
      * Required to enable async support.
      */
@@ -166,7 +166,7 @@ public class StuckThreadDetectionValve e
     @Override
     public void invoke(Request request, Response response)
             throws IOException, ServletException {
-        
+
         if (threshold <= 0) {
             // short-circuit if not monitoring stuck threads
             getNext().invoke(request, response);
@@ -183,7 +183,7 @@ public class StuckThreadDetectionValve e
             requestUrl.append("?");
             requestUrl.append(request.getQueryString());
         }
-        MonitoredThread monitoredThread = new MonitoredThread(Thread.currentThread(), 
+        MonitoredThread monitoredThread = new MonitoredThread(Thread.currentThread(),
             requestUrl.toString());
         activeThreads.put(key, monitoredThread);
 
@@ -216,7 +216,7 @@ public class StuckThreadDetectionValve e
             }
         }
         // Check if any threads previously reported as stuck, have finished.
-        for (CompletedStuckThread completedStuckThread = completedStuckThreadsQueue.poll(); 
+        for (CompletedStuckThread completedStuckThread = completedStuckThreadsQueue.poll();
             completedStuckThread != null; completedStuckThread = completedStuckThreadsQueue.poll()) {
 
             int numStuckThreads = stuckCount.decrementAndGet();
@@ -224,7 +224,7 @@ public class StuckThreadDetectionValve e
                     completedStuckThread.getTotalActiveTime(), numStuckThreads);
         }
     }
-    
+
     public long[] getStuckThreadIds() {
         List<Long> idList = new ArrayList<Long>();
         for (MonitoredThread monitoredThread : activeThreads.values()) {
@@ -282,7 +282,7 @@ public class StuckThreadDetectionValve e
             int val = this.state.getAndSet(MonitoredThreadState.DONE.ordinal());
             return MonitoredThreadState.values()[val];
         }
-        
+
         boolean isMarkedAsStuck() {
             return this.state.get() == MonitoredThreadState.STUCK.ordinal();
         }
@@ -290,8 +290,8 @@ public class StuckThreadDetectionValve e
 
     private static class CompletedStuckThread {
 
-        private String threadName;
-        private long totalActiveTime;
+        private final String threadName;
+        private final long totalActiveTime;
 
         public CompletedStuckThread(String threadName, long totalActiveTime) {
             this.threadName = threadName;

Modified: tomcat/trunk/java/org/apache/catalina/valves/ValveBase.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/valves/ValveBase.java?rev=1187018&r1=1187017&r2=1187018&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/valves/ValveBase.java (original)
+++ tomcat/trunk/java/org/apache/catalina/valves/ValveBase.java Thu Oct 20 19:52:47 2011
@@ -5,17 +5,15 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
-
 package org.apache.catalina.valves;
 
 
@@ -53,11 +51,11 @@ public abstract class ValveBase extends 
     implements Contained, Valve {
 
     //------------------------------------------------------ Constructor
-    
+
     public ValveBase() {
         this(false);
     }
-    
+
     public ValveBase(boolean asyncSupported) {
         this.asyncSupported = asyncSupported;
     }
@@ -67,7 +65,7 @@ public abstract class ValveBase extends 
      * Does this valve support Servlet 3+ async requests?
      */
     protected boolean asyncSupported;
-    
+
     /**
      * The Container whose pipeline this Valve is a component of.
      */
@@ -103,7 +101,7 @@ public abstract class ValveBase extends 
 
     //-------------------------------------------------------------- Properties
 
-    
+
     /**
      * Return the Container with which this Valve is associated, if any.
      */
@@ -208,7 +206,7 @@ public abstract class ValveBase extends 
 
     /**
      * Process a Comet event. This method will rarely need to be provided by
-     * a subclass, unless it needs to reassociate a particular object with 
+     * a subclass, unless it needs to reassociate a particular object with
      * the thread that is processing the request.
      *
      * @param request The servlet request to be processed
@@ -230,11 +228,11 @@ public abstract class ValveBase extends 
     @Override
     protected void initInternal() throws LifecycleException {
         super.initInternal();
-        
+
         containerLog = getContainer().getLogger();
     }
-    
-    
+
+
     /**
      * Start this component and implement the requirements
      * of {@link org.apache.catalina.util.LifecycleBase#startInternal()}.
@@ -244,7 +242,7 @@ public abstract class ValveBase extends 
      */
     @Override
     protected synchronized void startInternal() throws LifecycleException {
-        
+
         setState(LifecycleState.STARTING);
     }
 
@@ -261,8 +259,8 @@ public abstract class ValveBase extends 
 
         setState(LifecycleState.STOPPING);
     }
-    
-    
+
+
     /**
      * Return a String rendering of this object.
      */
@@ -284,13 +282,13 @@ public abstract class ValveBase extends 
     @Override
     public String getObjectNameKeyProperties() {
         StringBuilder name = new StringBuilder("type=Valve");
-        
+
         Container container = getContainer();
 
         name.append(MBeanUtils.getContainerKeyProperties(container));
-        
+
         int seq = 0;
-        
+
         // Pipeline may not be present in unit testing
         Pipeline p = container.getPipeline();
         if (p != null) {
@@ -310,7 +308,7 @@ public abstract class ValveBase extends 
                 }
             }
         }
-        
+
         if (seq > 0) {
             name.append(",seq=");
             name.append(seq);
@@ -323,7 +321,7 @@ public abstract class ValveBase extends 
         }
         name.append(",name=");
         name.append(className);
-        
+
         return name.toString();
     }
 



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