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();
}