Create
cancel
Showing results for 
Search instead for 
Did you mean: 
Sign up Log in

Errors "429 Too Many Requests" and "cURL error 56" on HTTP API CALL

radwoc April 23, 2020

Hello,

 

I am asking here, because two supports I asked did not resolve problem.


I have problem with connection to api.bitbbucket.org using

LearnDash (one of Wordpress plugins). This plugin is sending HTTP API CALLS to address:

https://api.bitbucket.org/2.0/repositories/learndash/learndash-samcart/src/master/readme.txt

(with additional oauth data) and I receive two kind of errors:

429 Too Many Requests

or

cURL error 56: GnuTLS recv error (-110): The TLS connection was non-properly terminated.

I receive timeout "15" with aprrox 0,7 seconds.

 

LearDash support says it my hosting servers problem (nazwa.pl - one of bgigest hosting provider in Poland)

Nazwa.pl support says their servers are strong enough.

How to solve? Is is something I miss to configure?

And why it is not possible even to ping bitbucket.org ?

Thanks

1 answer

0 votes
Simon_Gillmeister April 29, 2020

Hello,

I have exactly the same problem. :(

Have you found a solution so far?

Would be great if there is way to fix this error.

Kind Regards
Simon

radwoc April 30, 2020

Hi,

nope. No solution yet.

What I already know.

Facebook LearnDash group not answered.

Both LearnDash and nazwa.pl (my servers) support teams dont't know the reason.

It seems LearnDash support are sellers only, each technical question they need to ask their "developers", so you cannot ask developers straight. It takes long time to get the answer. So, finally, developers claim it is on my server's side problem.

My server setting are fine accoording to LearnDash plugin requirements (php, sql, versions, memory, and so on).

On other hand, my servers support team claims it is problem with api.bitbucket.org connection. And they also say it would be best solution to have all content that LD is getting from bitbucket on my own server.

Personally, I think it is bit strange, that LD plugin is so dependent on external servers. Especially if those servers are not replicated in Europe. Especially, if you paid almost $200 bucks for something that is not on your server.
As I investigated those querries to bitbucket.org are corelated to almost all LD functions.
I understand that plugin needs to get some update informations or add-ons. But in LD looks that most functions must be loaded/chcked from apibucket.

It is also strange behaviour from api.bitbucket.org, that very first api call after several minutes of break is always OK. Then, every further is "cURL error 56: GnuTLS recv error (-110): The TLS connection was non-properly terminated." or "Too many requestes" It seems my connection is blocked by some firewall.

Or, what is also possible, api.bitbucket.org is located in Virginia, without any Europen mirror/cloud server, which may cause too long response to TLS/SSL hanshake succesfully.
I cannot check this latency posibility, because api.bitbucket.org is non-pingable and -non-traceable server (no way to ping or tracert api.bucket.org) to check if packet are lost.

Im am investigating this problem for whole week, If nothing happen untli next monday, I am going to "refund request" and find different LMS.

 

Are you from Europe?

Let me know if you find any answer.

 

Regards, Radek

Ishan Somasiri
Atlassian Team
Atlassian Team members are employees working across the company in a wide variety of roles.
April 30, 2020

Hi radwoc and Simon,

Disclaimer: Even though I'm from team Atlassian, I have no API experience with Bitbucket nor have ever used LearnDash.

It seems you are observing two things, 

1) Bitbucket is rate limiting your requests (HTTP 429)

A rate limit occurs when your web site makes too many calls to Bitbucket. I see that your website is trying to make calls to https://api.bitbucket.org/2.0/repositories/learndash/learndash-samcart/src/master/readme.txt addres. As per documentation at https://confluence.atlassian.com/bitbucket/rate-limits-668173227.html , rate limit for accessing repository content is 1000 requests per hour. If more than 1000 requests are made from your server to Bitbucket, Bitbucket will start throwing 429s to your website.

Also it's worth understanding that this rate limiting occurs on a rolling basis. That means Bitbucket will always look at the past hour from current time to check whether rate limits have been breached.

Simplified examples:

  • If request is made at 4.09pm, then Bitbucket checks the number of requests from 3.09pm to 4.09pm and determine whether this website has already made more than 1000 requests with in that time. If yes, it'll send a 429. If not, website will be able to access the file.
  • If request is made at 11.55am, Bitbucket checks the number of requests from 10.55am to 11.55am and does the same.

And these rate limits occur per user (if authenticated requests are made) OR per IP address (if unauthenticated requests are made).

I suspect you are making unauthenticated requests. Considering both of you are using shared hosting, your IP address is used by many other people who host their websites. This results in Bitbucket rate limiting all of you. Best approach here would be to use authenticated requests to query Bitbucket API.

If authenticated requests are already being made, that probably means your website it self is actually making 1000+ requests per hour. One of the approaches to solve this would be to reduce the number of calls from your website to Bitbucket. Even if you cache the file in your webserver for 1 minute, only 60 requests will be made to Bitbucket per hour.

 

2). Connection to Bitbucket results in GnuTLS recv error (-110).

The TLS-level error is most probably complaining that, at the end of the web request(transaction), the connection was aborted without cleaning up. This may be because of he 429s thrown by Bitbucket. Bitbucket may be aborting the connection as soon as 429 is thrown to reduce it's workload. But I'm no expert on this, so I might be wrong.

Hope this answer helps you,

Regards, Ishan

Suggest an answer

Log in or Sign up to answer
TAGS
AUG Leaders

Atlassian Community Events