Page MenuHomePhabricator

Random "Status read failed: Connection reset by peer" errors while using the API on Wikisource
Closed, InvalidPublic

Description

I am using the API for automatically making updates to the Hebrew Wikisource site (using perl with LWP::UserAgent). In the last two weeks, I keep getting random errors with the status "read failed: Connection reset by peer".

The errors appear in various steps of the process: sometimes they appear on the first login phase, sometimes this phase succeeds but the second login phase fails, sometimes I get this error while trying to fetch a csrf token from this url: "http://he.wikisource.org/w/api.php?action=query&meta=tokens&continue=&format=xml", etc.

Event Timeline

erelsgl raised the priority of this task from to Needs Triage.
erelsgl updated the task description. (Show Details)
erelsgl subscribed.

This seems unlikely to be due to the MediaWiki API. If it's anything on the WMF side of the Internet connection, it's probably more of an operations issue.

@Anomie this makes sense. Where should I report this bug then?

@Aklapper Here is a minimal working example:

#!/usr/bin/perl -w

use LWP::Simple;

my $api_url = "http://he.wikisource.org/w/api.php";
my $username="[your-wikisource-username]"
my $password="[your-wikisource-password]"

my $browser = LWP::UserAgent->new();
$browser->cookie_jar( {} );
push @{$browser->requests_redirectable}, 'POST';

my @ns_headers = (
	'User-Agent' => "$username from Perl",
	'Accept' => 'image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*',
	'Accept-Charset' => 'iso-8859-1,*,utf-8',
	'Accept-Language' => 'en-US',
);

my $response=$browser->post(
	$api_url,
	@ns_headers, 
	Content=>[
		action=>'login',
		lgname=>$username,
		lgpassword=>$password,
		format=>'xml']
	);

if ($response->content =~ m|<login[^<>]*result="NeedToken"[^<>]*token="([^\"]+)"[^<>]*/>|) {
	my $token = $1;
	print "success in first login phase. Token = $token\n";
} else {
	print "Error in first login phase:\n";
	print substr($response->content,0,1000);
	return 0;
}

__END__

This is what I get in repeated activations of this script:

erelsgl@erelsgl-H61MLC:~/git/erel-sites/wiki$ perl testwiki.pl 
success in first login phase. Token = c4282c0e47c858ddea476daba79158d3
erelsgl@erelsgl-H61MLC:~/git/erel-sites/wiki$ 
erelsgl@erelsgl-H61MLC:~/git/erel-sites/wiki$ perl testwiki.pl 
success in first login phase. Token = 0d4028c0a8897aaeb89b12660e57c9fd
erelsgl@erelsgl-H61MLC:~/git/erel-sites/wiki$ perl testwiki.pl 
success in first login phase. Token = e13a0bc63beb6aee3298bd88a3b2046f
erelsgl@erelsgl-H61MLC:~/git/erel-sites/wiki$ perl testwiki.pl 
Error in first login phase:
Status read failed: Connection reset by peer at /home/erelsgl/perl5/lib/perl5/Net/HTTP/Methods.pm line 269.
Can't return outside a subroutine at testwiki.pl line 43.
erelsgl@erelsgl-H61MLC:~/git/erel-sites/wiki$ perl testwiki.pl 
success in first login phase. Token = 8d2b728b1e0ab6114e3ebd15e7587714
erelsgl@erelsgl-H61MLC:~/git/erel-sites/wiki$ perl testwiki.pl 
Error in first login phase:
Status read failed: Connection reset by peer at /home/erelsgl/perl5/lib/perl5/Net/HTTP/Methods.pm line 269.
Can't return outside a subroutine at testwiki.pl line 43.
erelsgl@erelsgl-H61MLC:~/git/erel-sites/wiki$ perl testwiki.pl 
success in first login phase. Token = d6d91a88e6b9c13bc7fb62ab1b90754d
erelsgl@erelsgl-H61MLC:~/git/erel-sites/wiki$ perl testwiki.pl 
Error in first login phase:
Status read failed: Connection reset by peer at /home/erelsgl/perl5/lib/perl5/Net/HTTP/Methods.pm line 269.
Can't return outside a subroutine at testwiki.pl line 43.
erelsgl@erelsgl-H61MLC:~/git/erel-sites/wiki$

As you can see, the error occurs at random in about 50% of the cases.

I now checked and this bug appears also in English Wikipedia (changing the API URL to $api_url = "http://en.wikipedia.org/w/api.php").

As I wrote in your thread on en.wp's VP, I'd be interested to know whether that also happens when using a different internet connection/provider.

@Aklapper
From a different ISP, everything works OK. So this is indeed a problem of the ISP.

Aklapper claimed this task.

Thanks for testing! Closing this task as "invalid" as there is nothing that can be fixed server-side by Wikimedia, but depends on the ISP of the user.