upstream servers Queries are empty

Expected Behaviour:

Live Queries, blocklist , cache are filled but not for Upstream servers ( Unbound & Quad 9)

Operating System (Family and Version) : Raspberry Pi OS Debian Trixie + Unbound ( 1.26.1-0+deb13u1)

Hardware: Pi 2

Actual Behaviour:

When i enter my upstream servers (Unbound ) Queries , the Queries are empty. Not sure if it is suppose to be like this.

After that i had switch to quad 9 to test and it Queries are empty too.

Debug Token:

https://tricorder.pi-hole.net/RGyNjkgz/

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.

You've made some modifications to the web code, queries.js is one of the files that was changed.

*** [ DIAGNOSING ]: Web version
[✓] Version: v6.6
[i] Remotes: origin	https://github.com/pi-hole/web.git (fetch)
             origin	https://github.com/pi-hole/web.git (push)
[i] Branch: master
[i] Commit: v6.6-0-gb2a4078-dirty
[i] Status:  M scripts/js/queries.js
             M scripts/lua/sidebar.lp
[i] Diff: diff --git a/scripts/js/queries.js b/scripts/js/queries.js
          index 10b2815..0045250 100644
          --- a/scripts/js/queries.js
          +++ b/scripts/js/queries.js
          @@ -626,8 +626,8 @@ $(() => {
                 { data: null, width: "10%", sortable: false, searchable: false },
               ],
               lengthMenu: [
          -      [10, 25, 50, 100, 500, 1000],
          -      [10, 25, 50, 100, 500, 1000],
          +      [15, 25, 50, 100, 500, 1000],
          +      [15, 25, 50, 100, 500, 1000],
               ],
               stateSave: true,
               stateDuration: 0,
          diff --git a/scripts/lua/sidebar.lp b/scripts/lua/sidebar.lp
          index 874ac4b..d75a624 100644
          --- a/scripts/lua/sidebar.lp
          +++ b/scripts/lua/sidebar.lp
          @@ -19,6 +19,7 @@
                               <p>Status</p>
                               <span id="status"></span><br>
                               <span id="query_frequency"></span><br>
          +<span id="temperature">&nbsp;&nbsp;<i class="fa-solid fa-temperature-three-quarters text-green-light"></i>&nbsp;&nbsp; Temp: <%= string.format("%.1f°C", tonumber(io.open("/sys/class/thermal/thermal_zone0/temp"):read("*a")) / 1000) %></span><br/>
                               <span id="cpu"></span><br>
                               <span id="memory"></span>
                           </div>

@rachelwilson nothing show up

DanSchaper

i had pihole -r & reboot my machine.

Unbound queries is empty

Debug Token:
https://tricorder.pi-hole.net/4LAvt0Rl/

Hmm, looks like that function is broken. Clicking on the donut slice from the landing page doesn't populate the query log either.

@rdwebdesign

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.

The fix is in the web interface: Do not encode the query log API URL twice by DL6ER · Pull Request #3888 · pi-hole/web · GitHub

Just curious. What has to happen before a web interface update is released?

It needs to be ready.