diff --git a/utils/misc/src/main/java/org/onlab/util/SafeRecurringTask.java b/utils/misc/src/main/java/org/onlab/util/SafeRecurringTask.java
new file mode 100644
index 0000000..756abdd
--- /dev/null
+++ b/utils/misc/src/main/java/org/onlab/util/SafeRecurringTask.java
@@ -0,0 +1,66 @@
+/*
+ * Copyright 2016 Open Networking Laboratory
+ *
+ * Licensed 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.onlab.util;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Wrapper for a recurring task which catches all exceptions to prevent task
+ * being suppressed in a ScheduledExecutorService.
+ */
+public final class SafeRecurringTask implements Runnable {
+
+    private static final Logger log = LoggerFactory.getLogger(SafeRecurringTask.class);
+
+    private final Runnable runnable;
+
+    /**
+     * Constructor.
+     *
+     * @param runnable runnable to wrap
+     */
+    private SafeRecurringTask(Runnable runnable) {
+        this.runnable = runnable;
+    }
+
+    @Override
+    public void run() {
+        if (Thread.currentThread().isInterrupted()) {
+            log.info("Task interrupted, quitting");
+            return;
+        }
+
+        try {
+            runnable.run();
+        } catch (Exception e) {
+            // Catch all exceptions to avoid task being suppressed
+            log.error("Exception thrown during task", e);
+        }
+    }
+
+    /**
+     * Wraps a runnable in a safe recurring task.
+     *
+     * @param runnable runnable to wrap
+     * @return safe recurring task
+     */
+    public static SafeRecurringTask wrap(Runnable runnable) {
+        return new SafeRecurringTask(runnable);
+    }
+
+}
