Closed (duplicate)
Project:
Drupal core
Version:
7.x-dev
Component:
update.module
Priority:
Major
Category:
Bug report
Assigned:
Unassigned
Reporter:
Created:
29 Jan 2012 at 15:26 UTC
Updated:
17 Mar 2012 at 11:39 UTC
Like others I often get the message to run update manually because updates weren't successfully checked by cron..
When I do it takes forever and appears to be checking the modules multiple times.. For 47 enabled modules its checked 795 projects.. If everyone is having this the update servers must be getting hammered..
When running it a second time it runs through quickly..
It seems that when a check fails on a cron run it keeps the queue that it needs to check so if the cron checking has failed multiple times then the queue becomes huge and causes the multiple checks..
Wouldn't it be better to cleat the existing queue when an update check is initiated?
| Comment | File | Size | Author |
|---|---|---|---|
| Available_updates_2012-01-29_15-23-32.jpg | 29.82 KB | wipeout_dude |
Comments
Comment #1
pfrenssenThis is a duplicate of #1352102: pm-update unusable, hangs, loops
Comment #2
jonhattanI've seen this via web. Doesn't seen a drush issue.
Comment #3
berdirYeah, there's something seriously going wrong with update.module. I've seen multiple sites which ended up with *thousands* of entries in the queue.
Comment #4
rooby commentedYeah, with drush I regularly have it checking all the installed modules multiple times and I have at least once seen the drupal available updates report check > 2000 modules.
Comment #5
catchThis might be why so many people are reporting #1484216: Race condition in _update_create_fetch_task() (PDO Exceptions) too.
Comment #6
pfrenssenI'm investigating this. I noticed there is a time limit set on the function that cleans out the queue before starting the update process. This is set to 5 seconds by default. Maybe this is causing it, and if it does then perhaps the update process should be aborted if the queue could not be cleaned out in time.Edit: I'm wrong about this.
Comment #7
catchOK so there's a race condition here - before the update_fetch_task item is created, any number of processes could be creating queue items simultaneously. Probably the easiest change would be to add a lock, which in turn would fix #1484216: Race condition in _update_create_fetch_task() (PDO Exceptions).
Comment #8
catchMarking as duplicate of #1484216: Race condition in _update_create_fetch_task() (PDO Exceptions).
Comment #9
pfrenssenNew update tasks are added to the queue in _update_create_fetch_task(). This function checks if this update is queued by looking in the {cache_update} table, not if it actually exists in the queue. So if there is a discrepancy between {cache_update} and the queue, it will happily pile up tasks to the queue.
_update_cache_clear() will clear out items from the {cache_update} table, without removing them from the queue. I think this is how the discrepancies occur.
I'm not sure how this should be solved.
Comment #10
pfrenssenSorry cross posted.
Comment #10.0
pfrenssenHit save to quickly..