You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by jm...@apache.org on 2015/09/08 18:22:26 UTC
cassandra git commit: Fix coverity errors with SSTableDeletingTask
and SnapshotDeletingtask
Repository: cassandra
Updated Branches:
refs/heads/cassandra-2.2 2a2394fdb -> 7b083a4e0
Fix coverity errors with SSTableDeletingTask and SnapshotDeletingtask
Patch by jmckenzie; reviewed by stefania for CASSANDRA-10222
Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/7b083a4e
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/7b083a4e
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/7b083a4e
Branch: refs/heads/cassandra-2.2
Commit: 7b083a4e083442cb6e6bf34735753c6103d88654
Parents: 2a2394f
Author: Joshua McKenzie <jm...@apache.org>
Authored: Tue Sep 8 12:20:10 2015 -0400
Committer: Joshua McKenzie <jm...@apache.org>
Committed: Tue Sep 8 12:20:10 2015 -0400
----------------------------------------------------------------------
.../io/sstable/SSTableDeletingTask.java | 19 ++++++-------------
.../io/sstable/SnapshotDeletingTask.java | 12 +++++-------
2 files changed, 11 insertions(+), 20 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cassandra/blob/7b083a4e/src/java/org/apache/cassandra/io/sstable/SSTableDeletingTask.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/io/sstable/SSTableDeletingTask.java b/src/java/org/apache/cassandra/io/sstable/SSTableDeletingTask.java
index 34d0347..ef16b5c 100644
--- a/src/java/org/apache/cassandra/io/sstable/SSTableDeletingTask.java
+++ b/src/java/org/apache/cassandra/io/sstable/SSTableDeletingTask.java
@@ -19,8 +19,9 @@ package org.apache.cassandra.io.sstable;
import java.io.File;
import java.util.Collections;
+import java.util.Queue;
import java.util.Set;
-import java.util.concurrent.CopyOnWriteArraySet;
+import java.util.concurrent.ConcurrentLinkedQueue;
import java.util.concurrent.TimeUnit;
import com.google.common.annotations.VisibleForTesting;
@@ -30,7 +31,6 @@ import org.slf4j.LoggerFactory;
import com.codahale.metrics.Counter;
import org.apache.cassandra.concurrent.ScheduledExecutors;
-import org.apache.cassandra.db.lifecycle.Tracker;
import org.apache.cassandra.utils.FBUtilities;
import org.apache.cassandra.utils.concurrent.Blocker;
@@ -42,7 +42,7 @@ public class SSTableDeletingTask implements Runnable
// and delete will fail (on Windows) until it is (we only force the unmapping on SUN VMs).
// Additionally, we need to make sure to delete the data file first, so on restart the others
// will be recognized as GCable.
- private static final Set<SSTableDeletingTask> failedTasks = new CopyOnWriteArraySet<>();
+ private static final Queue<Runnable> failedTasks = new ConcurrentLinkedQueue<>();
private static final Blocker blocker = new Blocker();
private final Descriptor desc;
@@ -73,11 +73,6 @@ public class SSTableDeletingTask implements Runnable
}
}
- public void schedule()
- {
- ScheduledExecutors.nonPeriodicTasks.submit(this);
- }
-
public void run()
{
blocker.ask();
@@ -101,11 +96,9 @@ public class SSTableDeletingTask implements Runnable
*/
public static void rescheduleFailedTasks()
{
- for (SSTableDeletingTask task : failedTasks)
- {
- failedTasks.remove(task);
- task.schedule();
- }
+ Runnable task;
+ while ( null != (task = failedTasks.poll()))
+ ScheduledExecutors.nonPeriodicTasks.submit(task);
// On Windows, snapshots cannot be deleted so long as a segment of the root element is memory-mapped in NTFS.
SnapshotDeletingTask.rescheduleFailedTasks();
http://git-wip-us.apache.org/repos/asf/cassandra/blob/7b083a4e/src/java/org/apache/cassandra/io/sstable/SnapshotDeletingTask.java
----------------------------------------------------------------------
diff --git a/src/java/org/apache/cassandra/io/sstable/SnapshotDeletingTask.java b/src/java/org/apache/cassandra/io/sstable/SnapshotDeletingTask.java
index 7ab1f11..d23c488 100644
--- a/src/java/org/apache/cassandra/io/sstable/SnapshotDeletingTask.java
+++ b/src/java/org/apache/cassandra/io/sstable/SnapshotDeletingTask.java
@@ -19,8 +19,8 @@
package org.apache.cassandra.io.sstable;
import java.io.File;
-import java.util.Set;
-import java.util.concurrent.CopyOnWriteArraySet;
+import java.util.Queue;
+import java.util.concurrent.ConcurrentLinkedQueue;
import com.google.common.annotations.VisibleForTesting;
import org.slf4j.Logger;
@@ -36,7 +36,7 @@ public class SnapshotDeletingTask implements Runnable
private static final Logger logger = LoggerFactory.getLogger(SnapshotDeletingTask.class);
public final File path;
- private static final Set<SnapshotDeletingTask> failedTasks = new CopyOnWriteArraySet<>();
+ private static final Queue<Runnable> failedTasks = new ConcurrentLinkedQueue<>();
public static void addFailedSnapshot(File path)
{
@@ -68,11 +68,9 @@ public class SnapshotDeletingTask implements Runnable
*/
public static void rescheduleFailedTasks()
{
- for (SnapshotDeletingTask task : failedTasks)
- {
- failedTasks.remove(task);
+ Runnable task;
+ while ( null != (task = failedTasks.poll()))
ScheduledExecutors.nonPeriodicTasks.submit(task);
- }
}
@VisibleForTesting