Merge pull request #9040 from annando/fix-polling

Fix: Feeds and mail accounts hadn't been fetched reliably
This commit is contained in:
Tobias Diekershoff 2020-08-20 10:58:06 +02:00 committed by GitHub
commit 9cff999974
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 5 deletions

View File

@ -212,8 +212,6 @@ class Cron
* @throws \Friendica\Network\HTTPException\InternalServerErrorException * @throws \Friendica\Network\HTTPException\InternalServerErrorException
*/ */
private static function pollContacts() { private static function pollContacts() {
$min_poll_interval = DI::config()->get('system', 'min_poll_interval');
Addon::reload(); Addon::reload();
$sql = "SELECT `contact`.`id`, `contact`.`nick`, `contact`.`name`, `contact`.`network`, `contact`.`archive`, $sql = "SELECT `contact`.`id`, `contact`.`nick`, `contact`.`name`, `contact`.`network`, `contact`.`archive`,
@ -278,12 +276,17 @@ class Cron
/* /*
* Based on $contact['priority'], should we poll this site now? Or later? * Based on $contact['priority'], should we poll this site now? Or later?
*/ */
$t = $contact['last-update'];
$min_poll_interval = DI::config()->get('system', 'min_poll_interval');
$poll_intervals = [$min_poll_interval . ' minute', '15 minute', '30 minute', $poll_intervals = [$min_poll_interval . ' minute', '15 minute', '30 minute',
'1 hour', '2 hour', '3 hour', '6 hour', '12 hour' ,'1 day', '1 week', '1 month']; '1 hour', '2 hour', '3 hour', '6 hour', '12 hour' ,'1 day', '1 week', '1 month'];
if (empty($poll_intervals[$rating]) || (DateTimeFormat::utcNow() > DateTimeFormat::utc($t . ' + ' . $poll_intervals[$rating]))) { $now = DateTimeFormat::utcNow();
$next_update = DateTimeFormat::utc($contact['last-update'] . ' + ' . $poll_intervals[$rating]);
if (empty($poll_intervals[$rating]) || ($now < $next_update)) {
Logger::debug('No update', ['cid' => $contact['id'], 'rating' => $rating, 'next' => $next_update, 'now' => $now]);
continue; continue;
} }

View File

@ -111,7 +111,7 @@ class OnePoll
DBA::update('contact', ['last-update' => $updated], ['id' => $contact['id']]); DBA::update('contact', ['last-update' => $updated], ['id' => $contact['id']]);
return; return;
} }
// We don't poll AP contacts by now // We don't poll AP contacts by now
if ($protocol === Protocol::ACTIVITYPUB) { if ($protocol === Protocol::ACTIVITYPUB) {
Logger::log("Don't poll AP contact"); Logger::log("Don't poll AP contact");
@ -708,6 +708,9 @@ class OnePoll
Logger::log("Mail: no mails for ".$mailconf['user']); Logger::log("Mail: no mails for ".$mailconf['user']);
} }
self::updateContact($contact, ['failed' => false, 'last-update' => $updated, 'success_update' => $updated]);
Contact::unmarkForArchival($contact);
Logger::log("Mail: closing connection for ".$mailconf['user']); Logger::log("Mail: closing connection for ".$mailconf['user']);
imap_close($mbox); imap_close($mbox);
} }