-
Notifications
You must be signed in to change notification settings - Fork 437
Porkbun does not work concurrently (ppreview
)
#2995
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
For Porkbun, it means "not verified" yet.
This error was caused by a missing error catch for JSON parsing, the real error message should be the follow, I will fill a PR for this.
dnscontrol/providers/porkbun/api.go Line 157 in 32fe275
I'm not sure whether they have a hidden rate limit or something, in my test, when there are more than 3 domains in concurrently, an HTTP 503 error was thrown. <html>
<head><title>503 Service Temporarily Unavailable</title></head>
<body>
<center><h1>503 Service Temporarily Unavailable</h1></center>
<hr><center>openresty</center>
</body>
</html> I will contact the support for this, asking whether they have a rate limit or just the server crashed. |
I got a response from Porkbun support.
So the Porkbun provider is not supposed to work concurrently. |
1 per second? wow, that's pretty low. It might be useful to implement a re-try on 429 (if porkbun sends a proper 429 when the rate limit is exceeded). Even without concurrency it is possible that we would exceed that limit. |
Any chance this maybe works now, since the split to a separate API host? Quoting from #3153 (review)
|
I don't have a porkbun account, but if you do, you can test by adding the |
Looks like I still get rate limited by Porkbun with |
I thought you might. Did dnscontrol pause and retry or fail? |
With some, but not all domains outputting
(They return HTML when they 429.) |
Sounds like the provider needs to handle 429s to make this work. |
I've played about with the retry logic a bit, including adding explicit support for 429, but the Porkbun API still has pretty aggressive restrictions. Even if I add longish sleeps between each retry, I intermittently (and non-deterministically, AFAICT) get either 503 or 400 when running in concurrent mode. In both cases it returns HTML, despite their API docs saying:
I think for now Porkbun will have to be left out of concurrency :-( (The provider could still do with handling non-JSON responses better, though.) |
@jamesog Thanks for investigating this! We've seen similar problems with other providers. For example, gcloud's retry.go has a special case where it will retry a 502 exactly once. It's a bit hacky, but it works. I think it would be worthwhile to add support for 429 even for non-concurrent use. |
thanks for all the details in this thread! I think i managed to grok the Any of you able to write a concise definition for that column? |
Hi @gotjoshua ! Thanks for looking into this. "Concurrency Verified": A checkmark means "this has been tested and will run concurrently". The red "X" means "it hasn't been tested, we don't know if it will work concurrently". Here's how to perform a test:
I would be glad to help fix any problems! Tom |
This comment has been minimized.
This comment has been minimized.
why not use the ? for that started a PR draft with your suggestion @tlimoncelli : |
Describe the bug
Testing the new concurrency feature (
ppreview
) on domains handled by the Porkbun provider it fails to handle those:But the zone exists ... all works well when running the normal preview.
To Reproduce
dnscontrol ppreview --cmode all
Zone "example.com" does not exist. Can not create because "porkbun" does not implement ZoneCreator
issues.Expected behavior
For Porkbun to work concurrently.
DNS Provider
Additional context
Tested with dnscontrol v4.11.0.
I've checked the "Concurrency Verified" column in https://docs.dnscontrol.org/getting-started/providers ... but I was not sure if the ❌ means "verified & failed" or "not verified".
At least in my testing, when I use
dnscontrol ppreview --cmode all --domains example1.com,example2.com
it still works (most of the time). It only starts throwing issues regularly when I test it with at least 3 different zones.CC @imlonghao (maintainer of the porkbun provider)
The text was updated successfully, but these errors were encountered: