diff --git a/modules/system/system.queue.inc b/modules/system/system.queue.inc
index be0c31e97ec8092671d07cec2c50f2c2ea759a5c..5174a0a6521a3c287c3233933bd4172bbdd63848 100644
--- a/modules/system/system.queue.inc
+++ b/modules/system/system.queue.inc
@@ -135,6 +135,15 @@ public function claimItem($lease_time = 3600);
    */
   public function deleteItem($item);
 
+  /**
+   * Release an item that the worker could not process, so another
+   * worker can come in and process it before the timeout expires.
+   *
+   * @param $item
+   * @return boolean
+   */
+  public function releaseItem($item);
+
   /**
    * Create a queue.
    *
@@ -216,6 +225,15 @@ public function claimItem($lease_time = 30) {
     }
   }
 
+  public function releaseItem($item) {
+    $update = db_update('queue')
+      ->fields(array(
+        'expire' => 0,
+      ))
+      ->condition('item_id', $item->item_id);
+      return $update->execute();
+  }
+
   public function deleteItem($item) {
     db_delete('queue')
       ->condition('item_id', $item->item_id)