You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jb...@apache.org on 2009/05/07 22:33:55 UTC

svn commit: r772765 - in /incubator/cassandra/trunk/src/java/org/apache/cassandra/utils: BoundedStatsDeque.java TimedStatsDeque.java

Author: jbellis
Date: Thu May  7 20:33:55 2009
New Revision: 772765

URL: http://svn.apache.org/viewvc?rev=772765&view=rev
Log:
make TSD threadsafe; note that BSD is not (since FailureDetector does its own locking).  patch by jbellis

Modified:
    incubator/cassandra/trunk/src/java/org/apache/cassandra/utils/BoundedStatsDeque.java
    incubator/cassandra/trunk/src/java/org/apache/cassandra/utils/TimedStatsDeque.java

Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/utils/BoundedStatsDeque.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/utils/BoundedStatsDeque.java?rev=772765&r1=772764&r2=772765&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/utils/BoundedStatsDeque.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/utils/BoundedStatsDeque.java Thu May  7 20:33:55 2009
@@ -3,6 +3,9 @@
 import java.util.ArrayDeque;
 import java.util.Iterator;
 
+/**
+ * not threadsafe.  caller is responsible for any locking necessary.
+ */
 public class BoundedStatsDeque extends AbstractStatsDeque
 {
     private final int size;

Modified: incubator/cassandra/trunk/src/java/org/apache/cassandra/utils/TimedStatsDeque.java
URL: http://svn.apache.org/viewvc/incubator/cassandra/trunk/src/java/org/apache/cassandra/utils/TimedStatsDeque.java?rev=772765&r1=772764&r2=772765&view=diff
==============================================================================
--- incubator/cassandra/trunk/src/java/org/apache/cassandra/utils/TimedStatsDeque.java (original)
+++ incubator/cassandra/trunk/src/java/org/apache/cassandra/utils/TimedStatsDeque.java Thu May  7 20:33:55 2009
@@ -5,6 +5,7 @@
 import java.util.ArrayList;
 import java.util.List;
 
+/** threadsafe. */
 public class TimedStatsDeque extends AbstractStatsDeque
 {
     private final ArrayDeque<Tuple> deque;
@@ -25,10 +26,11 @@
         }
     }
 
-    public Iterator<Double> iterator()
+    public synchronized Iterator<Double> iterator()
     {
         purge();
         // I expect this method to be called relatively infrequently so inefficiency is ok.
+        // (this has the side benefit of making iteration threadsafe w/o having to use LinkedBlockingDeque.)
         List<Double> L = new ArrayList<Double>(deque.size());
         for (Tuple t : deque)
         {
@@ -37,19 +39,19 @@
         return L.iterator();
     }
 
-    public int size()
+    public synchronized int size()
     {
         purge();
         return deque.size();
     }
 
-    public void add(double o)
+    public synchronized void add(double o)
     {
         purge();
         deque.add(new Tuple(o, System.currentTimeMillis()));
     }
 
-    public void clear()
+    public synchronized void clear()
     {
         deque.clear();
     }