Page MenuHomePhabricator

EtcdConfig failed to fetch data: (curl error: 28) Timeout was reached
Open, In Progress, MediumPublic

Description

Summary

The same as T429156: EtcdConfig failed to fetch data: (curl error: 28) Timeout was reached but has appeared again for MediaModeration scanning jobs. Seen the failure cause a exception and then alert 4 times in around 3 days

Example stacktrace

madwiki Warning: EtcdConfig failed to fetch data: (curl error: 28) Timeout was reached Resolving timed out after 2000 milliseconds in /srv/mediawiki/php-1.47.0-wmf.10/includes/Config/EtcdConfig.php on line 180
madwiki Warning: EtcdConfig failed to fetch data: (curl error: 28) Timeout was reached Resolving timed out after 2000 milliseconds in /srv/mediawiki/php-1.47.0-wmf.10/includes/Config/EtcdConfig.php on line 180
madwiki Fatal error: Uncaught MediaWiki\Config\ConfigException: Failed to load configuration from etcd: (curl error: 28) Timeout was reached Resolving timed out after 2000 milliseconds in /srv/mediawiki/php-1.47.0-wmf.10/includes/Config/EtcdConfig.php:207
madwiki Stack trace:
madwiki #0 /srv/mediawiki/php-1.47.0-wmf.10/includes/Config/EtcdConfig.php(130): MediaWiki\Config\EtcdConfig->load()
madwiki #1 /srv/mediawiki/wmf-config/CommonSettings.php(197): MediaWiki\Config\EtcdConfig->getModifiedIndex()
madwiki #2 /srv/mediawiki/php-1.47.0-wmf.10/LocalSettings.php(4): require('/srv/mediawiki/...')
madwiki #3 /srv/mediawiki/php-1.47.0-wmf.10/includes/Setup.php(212): require_once('/srv/mediawiki/...')
madwiki #4 /srv/mediawiki/php-1.47.0-wmf.10/maintenance/run.php(51): require_once('/srv/mediawiki/...')
madwiki #5 /srv/mediawiki/multiversion/MWScript.php(219): require_once('/srv/mediawiki/...')
madwiki #6 {main}
madwiki   thrown in /srv/mediawiki/php-1.47.0-wmf.10/includes/Config/EtcdConfig.php on line 207

Acceptance criteria

  • This error is avoided in maintenance scripts

Event Timeline

It would also be nice if the alert for these failing jobs is fired once per job. For example, a failure on Sunday caused 4 alerts to be sent to our Slack channel until I was on my PC for Monday to check the failing job

And again for the purge temporary accounts job:

fiwikiquote Warning: EtcdConfig failed to fetch data: (curl error: 28) Timeout was reached Resolving timed out after 2000 milliseconds in /srv/mediawiki/php-1.47.0-wmf.10/includes/Config/EtcdConfig.php on line 180
fiwikiquote Warning: EtcdConfig failed to fetch data: (curl error: 28) Timeout was reached Resolving timed out after 2000 milliseconds in /srv/mediawiki/php-1.47.0-wmf.10/includes/Config/EtcdConfig.php on line 180
fiwikiquote Fatal error: Uncaught MediaWiki\Config\ConfigException: Failed to load configuration from etcd: (curl error: 28) Timeout was reached Resolving timed out after 2000 milliseconds in /srv/mediawiki/php-1.47.0-wmf.10/includes/Config/EtcdConfig.php:207
fiwikiquote Stack trace:
fiwikiquote #0 /srv/mediawiki/php-1.47.0-wmf.10/includes/Config/EtcdConfig.php(130): MediaWiki\Config\EtcdConfig->load()
fiwikiquote #1 /srv/mediawiki/wmf-config/CommonSettings.php(197): MediaWiki\Config\EtcdConfig->getModifiedIndex()
fiwikiquote #2 /srv/mediawiki/php-1.47.0-wmf.10/LocalSettings.php(4): require('/srv/mediawiki/...')
fiwikiquote #3 /srv/mediawiki/php-1.47.0-wmf.10/includes/Setup.php(212): require_once('/srv/mediawiki/...')
fiwikiquote #4 /srv/mediawiki/php-1.47.0-wmf.10/maintenance/run.php(51): require_once('/srv/mediawiki/...')
fiwikiquote #5 /srv/mediawiki/multiversion/MWScript.php(219): require_once('/srv/mediawiki/...')
fiwikiquote #6 {main}
fiwikiquote   thrown in /srv/mediawiki/php-1.47.0-wmf.10/includes/Config/EtcdConfig.php on line 207

And again for MediaModeration job:

simplewikiquote Warning: EtcdConfig failed to fetch data: (curl error: 28) Timeout was reached Resolving timed out after 2000 milliseconds in /srv/mediawiki/php-1.47.0-wmf.11/includes/Config/EtcdConfig.php on line 180
simplewikiquote Warning: EtcdConfig failed to fetch data: (curl error: 28) Timeout was reached Resolving timed out after 2000 milliseconds in /srv/mediawiki/php-1.47.0-wmf.11/includes/Config/EtcdConfig.php on line 180
simplewikiquote Fatal error: Uncaught MediaWiki\Config\ConfigException: Failed to load configuration from etcd: (curl error: 28) Timeout was reached Resolving timed out after 2000 milliseconds in /srv/mediawiki/php-1.47.0-wmf.11/includes/Config/EtcdConfig.php:207
simplewikiquote Stack trace:
simplewikiquote #0 /srv/mediawiki/php-1.47.0-wmf.11/includes/Config/EtcdConfig.php(130): MediaWiki\Config\EtcdConfig->load()
simplewikiquote #1 /srv/mediawiki/wmf-config/CommonSettings.php(197): MediaWiki\Config\EtcdConfig->getModifiedIndex()
simplewikiquote #2 /srv/mediawiki/php-1.47.0-wmf.11/LocalSettings.php(4): require('/srv/mediawiki/...')
simplewikiquote #3 /srv/mediawiki/php-1.47.0-wmf.11/includes/Setup.php(212): require_once('/srv/mediawiki/...')
simplewikiquote #4 /srv/mediawiki/php-1.47.0-wmf.11/maintenance/run.php(52): require_once('/srv/mediawiki/...')
simplewikiquote #5 /srv/mediawiki/multiversion/MWScript.php(219): require_once('/srv/mediawiki/...')
simplewikiquote #6 {main}
simplewikiquote   thrown in /srv/mediawiki/php-1.47.0-wmf.11/includes/Config/EtcdConfig.php on line 207
Clement_Goubert moved this task from Inbox to Scheduled (this Q) on the ServiceOps board.
Clement_Goubert subscribed.

It would also be nice if the alert for these failing jobs is fired once per job. For example, a failure on Sunday caused 4 alerts to be sent to our Slack channel until I was on my PC for Monday to check the failing job

We can set foreachwiki_ignore_errors => true so that an error on one wiki doesn't make the whole job fail. This will cause the job to not alert at all unless it *completely* fails to run iirc.

SRE Observability is there a way to avoid the alert repeating when sending to slack?

For the actual issue, this is T346971: Uncaught ConfigException: Failed to load configuration from etcd for which we haven't yet found a fix.

It would also be nice if the alert for these failing jobs is fired once per job. For example, a failure on Sunday caused 4 alerts to be sent to our Slack channel until I was on my PC for Monday to check the failing job

We can set foreachwiki_ignore_errors => true so that an error on one wiki doesn't make the whole job fail. This will cause the job to not alert at all unless it *completely* fails to run iirc.

There should be logging for these jobs in other ways for when the issue needs to be addressed, so that's probably fine to do

@andrea.denisse will have a look at whether we can group these alerts to reduce the volume.

(Happened again three times this week so far, with 20 messages in Slack)

(Again over the weekend with 7 alerts for the same etcd failure)

andrea.denisse changed the task status from Open to In Progress.Wed, Jul 29, 2:47 AM
andrea.denisse claimed this task.

(Again over the weekend with 7 alerts for the same etcd failure)

Hi, what's the name of the channel?? I can't find a channel for MediaModeration.

I was unable to find the alert on the alerts repo, but it seems to come from here. includes/Config/EtcdConfig.php.

These errors appear to be log lines that are making it to slack rather than alerts - I'm not sure if there's much that we can do to batch these if they are distinct failures for different instances. It would be helpful if we could see examples of the actual slack messages in questions as it's not clear how they're being created.