-
-
Notifications
You must be signed in to change notification settings - Fork 21.2k
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
DNS Resolver Issue: Condition ' resolving == IP::RESOLVER_INVALID_ID ' is true. returned: ERR_BUG #25052
Comments
CC @Faless |
UPDATE: Minimal reproduction project is added. |
UPD:
This is true for Windows Editor F5 run project. EXPORTS: Android apk always flows logcat with "Condition ' resolving == IP::RESOLVER_INVALID_ID ' is true. returned: ERR_BUG" and make high CPU load. use_threads false or true make different bugs HTML5 use_threads = false: PS: I have own DNS server (in cacher mode and full logging enabled) and can help with checking Godot DNS resolve cacher. |
Just timing, when using threads it polls more often so it likely do not get to the saturation point. The problem is that a new ID is generated even if that hostname is already in queue. Returning the same ID is not going to be an option though, otherwise there might be conflicting erase...
Yes, threads are not supported in JS.
That's not good, you should try to queue them, and do 4/5 at a time, definitely not 190 concurrent HTTPRequests to the same hostname. |
Same like facebook.com is in reality not only one host. Now it's trend use load balance technique even with servers with statics data. =) |
I said hostname not host.
This shouldn't happen. I'll try to investigate.
I agree, but again, 190 concurrent request is not good practise, even web browser have (much lower) default limits Anyway, I agree this should be fixed.
I don't think that's the right fix, it's an hack which will waste user memory 99,99% of the time without really fixing the underlying issue (that a new resolver ID is generated even when the hostname is already in cache or in queue). We could temporary raise |
Truly saying I'm not sure about HTTPRequests. Maybe DNS resolver, or image processing/loading to texture in result, or loop processing result API response or even print debug console messages.
This would be good. Thank you! Any value bigger than 32 I made queue like you advised me, with checking FPS while processing queue(if lower than threshold not load new images). Result looks very good. Thank you for advice! |
Seems still valid in 3.2.4 beta3 |
Hi I am having the same problem on 3.2.3 windows 64, could you explain me how to fix with RESOLVER_MAX_QUERIES = 16384?, I don´t know what this mean. |
Still relevant in v3.4.beta2.official @martinpelli I guess it means to change the maximum here: Line 59 in 9990f28
You have to compile the engine and export templates after the change. |
I had this error occur when downloading several images at once from an URL. To address it, I manually limited the requests at once by counting them on a queue and firing them as soon as the queue has a free spot. |
We raised the limit now, but I suggest you keep such a system in place. And I advise everyone to be mindful that doing too many concurrent requests will result in worse network performances than doing a limited number at a time. Also note that some platforms (e.g. the HTML5 platform) limits the number of concurrent requests (e.g. most browsers limit it to 6, the original HTTP standard actually had a hard limit of 2 connections which was later removed from the standard). |
Godot version:
3.x any
OS/device including version:
Windows 10
Issue description:
Porting game for social networks from Flash to GODOT.
Game on start loads icons of 190 friends. 190 icons, so it creates 190 HTTPRequests and gets:
Out of resolver queries
Condition ' resolving == IP::RESOLVER_INVALID_ID ' is true. returned: ERR_BUG
All icons images are located on one server! This means that now GODOT can't cache DNS resolve requests! or GODOT DNS resolver cacher works wrong.
With RESOLVER_MAX_QUERIES = 16384 all works great. But it's not correct solution.
Steps to reproduce:
Minimal reproduction project
Minimal reproduction project:
DNSResolver.zip
The text was updated successfully, but these errors were encountered: