Comments (8)
This is probably related to the fact that on taking longer than 5 seconds, you end up with a redirect and a job id which is not then followed up on to retrieve the underlying records. Not sure how this worked in denominator version 1.x
from denominator.
this is unfortunately common in this particular provider, but not something easy to troubleshoot. Usually the issue clears eventually. If this is consistently in error, I'd contact Dyn as the api should have no problem querying hundreds of records.
from denominator.
I believe the problem is that the wrapper around dynect apis is not handling this properly. For large records, dyn issues a redirect giving the URL with the job id in it. That redirected URL actually holds all the records that are needed.
Thanks for your response Adrian.
from denominator.
curl -i -H 'Auth-Token: xyz' -H 'Content-Type: application/json' "https://api2.dynect.net/REST/AllRecord/isp.nflxvideo.net?detail=Y"
HTTP/1.1 200 OK
Server: nginx/1.2.6
Date: Wed, 01 Jul 2015 19:19:54 GMT
Content-Type: application/json
Transfer-Encoding: chunked
Connection: keep-alive
{"status": "incomplete", "data": null, "job_id": 1730280267}
Then, we take the job and do as below
curl -i -H 'Auth-Token: xyz' -H 'Content-Type: application/json' "https://api2.dynect.net/REST/Job/1730280267"
HTTP/1.1 200 OK
Server: nginx/1.2.6
Date: Wed, 01 Jul 2015 19:21:00 GMT
Content-Type: application/json
Transfer-Encoding: chunked
Connection: keep-alive
from denominator.
Denominator has numerous workarounds to Dyn problems including both patterns you pasted. These are also tested. You can also use the CLI with verbose on to watch denominator retry.
https://github.com/Netflix/denominator/blob/master/dynect/src/test/java/denominator/dynect/DynECTTest.java#L85
https://github.com/Netflix/denominator/blob/master/dynect/src/test/java/denominator/dynect/DynECTTest.java#L74
What happened was that the server errors beyond the retry count (5 tries ~5 seconds).
https://github.com/Netflix/feign/blob/master/core/src/main/java/feign/Retryer.java#L42
I found the code that was used in denominator 1.0 had an insanely high redirect count of 100. I actually remember doing this, as even 25 redirects sometimes failed. The service improved for a while, and maybe it is back to terrible.
https://github.com/jclouds/jclouds/blob/master/providers/dynect/src/main/java/org/jclouds/dynect/v3/DynECTProviderMetadata.java#L56
My strong opinion is that you escalate to DynECT, as really high retries feign a solution (no pun intended). Note you can reproduce this using denominator's CLI, as it will output the http calls used.
If you really want to make this have a high retry count, then feel free to raise a pull request. Note that it will break tests that show that we retry 5 times. Basically, you will add a .retryer here
Hope this helps
from denominator.
actually tell you what. If you are ok with the 100 retry option, I can put that in and push a release out tomorrow. It would be pretty easy for me to change. I'd only ask that if it fails after 100 retries, you ping dyn as I don't use the service anymore so don't have a support context. deal?
from denominator.
I am not sure that would fix it. It always worked for me when I issued a request and then used the job id to access the records.
We are going to try and delete a bunch of our old records and that should hopefully bring it down under 5 seconds so that we don't have to follow the job id route.
If that doesnt work, we can try the 100 retry option. Thank you for volunteering!
from denominator.
np
from denominator.
Related Issues (20)
- Setup process by which contributors can access shared crendentials HOT 1
- Publish test jars HOT 7
- Ensure java 6 source compatibility HOT 4
- Seems like travis is having a hard time downloading gradle HOT 5
- Add Geo support to Route53
- Control default TTL HOT 1
- Release 4.5 HOT 2
- WriteLiveTest- Case sensitive match for 'name' HOT 2
- WriteLiveTest- Quotation wrapping of TXT rdata HOT 1
- WriteLiveTest- AAAA rdata case sensetive comparison HOT 1
- Update providers wiki to include support contacts
- denominator 4.5 not compiled for java 1.6.0_65 HOT 2
- Spaces in rdata cause only first word to be used HOT 5
- Update download link to latest version in README.md
- Denominator needs a champion, or needs to be explicitly archived HOT 4
- NS1 Support HOT 1
- Graceful handling of API limits for large resource sets HOT 2
- Breaking API change at Rackspace CloudDNS HOT 2
- Bintray going away
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from denominator.