thats actually expected behavior. the upstream servers tab only counts queries that were forwarded to an upstream, anything answered from cache or the blocklist never shows up there. since your cache and blocklist tabs are full, most of your recent queries just never needed an upstream. try a dig for some random domain youve never visited, then reload the query log and see if unbound shows up.
API is returning an empty record, but it only fails when the Upstream filter is used to select one of the upstream servers (this is the same as clicking on the graphic).
The page works correctly if you clear the filter and click on the Refresh button.
The page also works as expected if the Upstream is set to permitted, blocked or cache.
My latest container (FTL v6.7.1 + Web v6.6) is showing the issue.
I just tested using the previous docker image, with FTL v6.7 + Web v6.6 (same web version) and it is working correctly.
It looks like this is a FTL v6.7.1 regression.
Tomorrow I will try to identify which commit caused the issue (it's too late and I need to sleep), but I think probably DL6ER will do it before me.
@rdwebdesign Thanks for narrowing it down, the debug log made this quick.
FTL v6.7.1 now decodes query parameters once, as any HTTP server should. The query log page, however, has always encoded the filter values twice, and the old FTL code silently decoded twice to match. So 8.8.8.8#53 (dns.google) now arrives as 8.8.8.8%2353%20(dns.google) and matches no upstream. Plain values like cache or blocked look the same either way, which is why they kept working.