Commit bc913ac7 authored by catch's avatar catch

Issue #1492188 by Berdir: Fixed Update module creates duplicate queue items.

parent bf6a8a1a
......@@ -809,14 +809,19 @@ function _update_get_cache_multiple($cid_prefix) {
* @param $cid
* Optional cache ID of the record to clear from the private update module
* cache. If empty, all records will be cleared from the table.
* cache. If empty, all records will be cleared from the table except
* fetch tasks.
* @param $wildcard
* If $wildcard is TRUE, cache IDs starting with $cid are deleted in
* addition to the exact cache ID specified by $cid.
function _update_cache_clear($cid = NULL, $wildcard = FALSE) {
if (empty($cid)) {
// Clear everything except fetch task information because these are used
// to ensure that the fetch task queue items are not added multiple times.
->condition('cid', 'fetch_task::%', 'NOT LIKE')
else {
$query = db_delete('cache_update');
......@@ -225,6 +225,33 @@ class UpdateCoreTestCase extends UpdateTestHelper {
$this->assertUniqueText(t('Failed to get available update data for one project.'));
* Tests that exactly one fetch task per project is created and not more.
function testFetchTasks() {
$projecta = array(
'name' => 'aaa_update_test',
$projectb = array(
'name' => 'bbb_update_test',
$queue = queue('update_fetch_tasks');
$this->assertEqual($queue->numberOfItems(), 0, 'Queue is empty');
$this->assertEqual($queue->numberOfItems(), 1, 'Queue contains one item');
$this->assertEqual($queue->numberOfItems(), 2, 'Queue contains two items');
// Try to add project a again.
$this->assertEqual($queue->numberOfItems(), 2, 'Queue still contains two items');
// Clear cache and try again.
$this->assertEqual($queue->numberOfItems(), 2, 'Queue contains two items');
protected function setSystemInfo7_0() {
$setting = array(
'#all' => array(
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment