forked from GNUsocial/gnu-social
Fix for bug #2382: releasing claim on failed queue item works again with DB-based queues.
Warning: DB-based queue doesn't currently implement discarding of items after a retry limit. Failed items will be retried until they succeed.
This commit is contained in:
parent
9eb5a976b0
commit
f0c5e7eca3
@ -64,4 +64,17 @@ class Queue_item extends Memcached_DataObject
|
|||||||
$qi = null;
|
$qi = null;
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Release a claimed item.
|
||||||
|
*/
|
||||||
|
function releaseCLaim()
|
||||||
|
{
|
||||||
|
// DB_DataObject doesn't let us save nulls right now
|
||||||
|
$sql = sprintf("UPDATE queue_item SET claimed=NULL WHERE id=%d", $this->id);
|
||||||
|
$this->query($sql);
|
||||||
|
|
||||||
|
$this->claimed = null;
|
||||||
|
$this->encache();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -135,9 +135,7 @@ class DBQueueManager extends QueueManager
|
|||||||
if (empty($qi->claimed)) {
|
if (empty($qi->claimed)) {
|
||||||
$this->_log(LOG_WARNING, "[$queue:item $qi->id] Ignoring failure for unclaimed queue item");
|
$this->_log(LOG_WARNING, "[$queue:item $qi->id] Ignoring failure for unclaimed queue item");
|
||||||
} else {
|
} else {
|
||||||
$orig = clone($qi);
|
$qi->releaseClaim();
|
||||||
$qi->claimed = null;
|
|
||||||
$qi->update($orig);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$this->stats('error', $queue);
|
$this->stats('error', $queue);
|
||||||
|
Loading…
Reference in New Issue
Block a user