Is there a setting that avoids the intermittent "No data" problem

I have a Grafana server and Influxdb running on a Raspberry Pi and the data is displayed on a Google Chrome browser running on a Windows machine. Generally it works fine, except that every few minutes one or more of the graphs fail to update. Instead, the existing graph line is erased and replaced by the message “No data”. If I do a manual refresh then the data is displayed correctly.

If this caused by a timeout somewhere? If so is there a setting that I can change to increase the value?

Hello :wave: and welcome to the forum, @mjb

I think the ideal thing would be to check the grafana server logs and see what is happening when thonse panels break.

Also, people with similar problems have had some success adjusting these two config options:

You can check the config for outher timeout related options>

What sort of key words should I look for in the Grafana log?

What if it’s a client side issue with the Javascript code running in the browser window? Is there a log for that?

I’m not sure if I completely understand, but have you inspected your browser’s developer console while experience that issue? I’d maybe check the console or the networking tab and look for errors

How do I identify an error?
All I see is network requests and responses.

I am having the same issue. Very, very regularly, one or more of my panels change from showing data to saying “No data”. Manually refreshing then fixes that until it happens during one of the next refreshes.

I did check the log and found something:

t=2022-05-25T14:10:29+0200 lvl=eror msg="Request error" logger=context userId=1 orgId=1 uname=admin error="net/http: abort Handler"
t=2022-05-25T14:13:30+0200 lvl=eror msg="Data proxy error" logger=data-proxy-log userId=1 orgId=1 uname=admin path=/api/datasources/proxy/1/query remote_addr=10.0.20.10 referer="http://10.0.50.10:3000/d/aM4cL5bWk/openwb?orgId=1&from=now%2Fd&to=now" error="httputil: ReverseProxy read error during body copy: read tcp 127.0.0.1:33130->127.0.0.1:8086: use of closed network connection"
t=2022-05-25T14:13:30+0200 lvl=eror msg="Request error" logger=context userId=1 orgId=1 uname=admin error="net/http: abort Handler"
t=2022-05-25T14:14:30+0200 lvl=eror msg="Data proxy error" logger=data-proxy-log userId=1 orgId=1 uname=admin path=/api/datasources/proxy/1/query remote_addr=10.0.20.10 referer="http://10.0.50.10:3000/d/aM4cL5bWk/openwb?orgId=1&from=now%2Fd&to=now" error="httputil: ReverseProxy read error during body copy: read tcp 127.0.0.1:60156->127.0.0.1:8086: use of closed network connection"
t=2022-05-25T14:14:30+0200 lvl=eror msg="Request error" logger=context userId=1 orgId=1 uname=admin error="net/http: abort Handler"
t=2022-05-25T14:14:31+0200 lvl=eror msg="Data proxy error" logger=data-proxy-log userId=1 orgId=1 uname=admin path=/api/datasources/proxy/1/query remote_addr=10.0.20.10 referer="http://10.0.50.10:3000/d/aM4cL5bWk/openwb?orgId=1&from=now%2Fd&to=now" error="httputil: ReverseProxy read error during body copy: read tcp 127.0.0.1:58948->127.0.0.1:8086: use of closed network connection"
t=2022-05-25T14:14:31+0200 lvl=eror msg="Request error" logger=context userId=1 orgId=1 uname=admin error="net/http: abort Handler"
t=2022-05-25T14:15:31+0200 lvl=eror msg="Data proxy error" logger=data-proxy-log userId=1 orgId=1 uname=admin path=/api/datasources/proxy/1/query remote_addr=10.0.20.10 referer="http://10.0.50.10:3000/d/aM4cL5bWk/openwb?orgId=1&from=now%2Fd&to=now" error="httputil: ReverseProxy read error during body copy: read tcp 127.0.0.1:34296->127.0.0.1:8086: use of closed network connection"
t=2022-05-25T14:15:31+0200 lvl=eror msg="Request error" logger=context userId=1 orgId=1 uname=admin error="net/http: abort Handler"

Not sure what’s happening there. I use InfluxDB as the data backend.

Is grafana behind a proxy? Like ngnix?

No, it’s local, the same Raspberry Pi.

I had a problem like this appear after switching to a new CF card. The ‘upgrade’ was spurred by the rare-occasional timeouts of the graphs on the web page.
The one I tried upgrading to, had awful random-read performance; Causing many graphs to break and recover intermittently, often timing out on my chrome display page…
My attempted card upgrade backfired by switching from the stock one, to a card that was highly reviewed for video recording (sequential write, over random-read). Turns out, the graphs need the high random-read performance in order to sample data for display.
I solved the issue by using a card that had better random-read performance than my
pi-stock ?sandisk?

This is not an product endorsement, but the [Samsung PRO Endurance] & [SanDisk Extreme PRO] have given me trouble free graph performance on a marquee with a dozen graphs running on it. Testing them both, showed higher random-read perfornamce, so I kept them in place.
Both have succeeded in making the intermittent graph errors disappear, as they refresh quickly now.
I name these two card models, because few are reviewing cards by their random-read performance. They always advertise their write performance, in which most will fit the bill in a pi. Its the ‘reads’ speed that will give you hang-ups in grafana & DB queries.

I started experiencing intermittent “no data” on my dashboards after updating my Grafana Docker container from Grafana-Enterprise 9.02 to Grafana-enterprise 9.3.6. All other components (PostgreSQL/TimescaleDB) remained unchanged.
I’ve checked the Grafana docker container logs and see no errors, but the Postgres container logs show every SQL query preceded with: “ERROR: canceling statement due to user request” - Is this correct behavior?

Full logs copied below:


# Grafana-enterprise 9.3.6 Docker container logs

logger=context userId=1 orgId=1 uname=admin t=2023-02-10T03:50:31.575793529Z level=info msg="Request Completed" method=POST path=/api/ds/query status=400 remote_addr=192.168.3.1 time_ms=109 duration=109.139107ms size=1237 referer="https://my.domain.net/d/EkW1a13nk/solar-inverter?from=now-24h&kiosk=tv&orgId=1&refresh=5s&to=now" handler=/api/ds/query
logger=context userId=1 orgId=1 uname=admin t=2023-02-10T03:50:31.653959014Z level=info msg="Request Completed" method=POST path=/api/ds/query status=400 remote_addr=192.168.3.1 time_ms=184 duration=184.519986ms size=1232 referer="https://my.domain.net/d/EkW1a13nk/solar-inverter?from=now-24h&kiosk=tv&orgId=1&refresh=5s&to=now" handler=/api/ds/query
logger=context userId=1 orgId=1 uname=admin t=2023-02-10T03:50:31.758187024Z level=info msg="Request Completed" method=POST path=/api/ds/query status=400 remote_addr=192.168.3.1 time_ms=273 duration=273.820654ms size=1238 referer="https://my.domain.net/d/EkW1a13nk/solar-inverter?from=now-24h&kiosk=tv&orgId=1&refresh=5s&to=now" handler=/api/ds/query
logger=context userId=1 orgId=1 uname=admin t=2023-02-10T03:50:31.766878168Z level=info msg="Request Completed" method=POST path=/api/ds/query status=400 remote_addr=192.168.3.1 time_ms=297 duration=297.819446ms size=1238 referer="https://my.domain.net/d/EkW1a13nk/solar-inverter?from=now-24h&kiosk=tv&orgId=1&refresh=5s&to=now" handler=/api/ds/query
logger=context userId=1 orgId=1 uname=admin t=2023-02-10T03:50:31.995680598Z level=info msg="Request Completed" method=POST path=/api/ds/query status=400 remote_addr=192.168.3.1 time_ms=446 duration=446.135609ms size=1238 referer="https://my.domain.net/d/EkW1a13nk/solar-inverter?from=now-24h&kiosk=tv&orgId=1&refresh=5s&to=now" handler=/api/ds/query
logger=context userId=1 orgId=1 uname=admin t=2023-02-10T03:50:32.022134689Z level=info msg="Request Completed" method=POST path=/api/ds/query status=400 remote_addr=192.168.3.1 time_ms=460 duration=460.505241ms size=668 referer="https://my.domain.net/d/EkW1a13nk/solar-inverter?from=now-24h&kiosk=tv&orgId=1&refresh=5s&to=now" handler=/api/ds/query
logger=context userId=1 orgId=1 uname=admin t=2023-02-10T03:50:32.037653537Z level=info msg="Request Completed" method=POST path=/api/ds/query status=400 remote_addr=192.168.3.1 time_ms=445 duration=445.562474ms size=630 referer="https://my.domain.net/d/EkW1a13nk/solar-inverter?from=now-24h&kiosk=tv&orgId=1&refresh=5s&to=now" handler=/api/ds/query
logger=context userId=1 orgId=1 uname=admin t=2023-02-10T03:50:32.041381197Z level=info msg="Request Completed" method=POST path=/api/ds/query status=400 remote_addr=192.168.3.1 time_ms=443 duration=443.023566ms size=621 referer="https://my.domain.net/d/EkW1a13nk/solar-inverter?from=now-24h&kiosk=tv&orgId=1&refresh=5s&to=now" handler=/api/ds/query
logger=context userId=1 orgId=1 uname=admin t=2023-02-10T03:50:32.160408443Z level=info msg="Request Completed" method=POST path=/api/ds/query status=400 remote_addr=192.168.3.1 time_ms=176 duration=176.691584ms size=647 referer="https://my.domain.net/d/EkW1a13nk/solar-inverter?from=now-24h&kiosk=tv&orgId=1&refresh=5s&to=now" handler=/api/ds/query
logger=context userId=1 orgId=1 uname=admin t=2023-02-10T03:50:32.160372999Z level=info msg="Request Completed" method=POST path=/api/ds/query status=400 remote_addr=192.168.3.1 time_ms=219 duration=219.256307ms size=1238 referer="https://my.domain.net/d/EkW1a13nk/solar-inverter?from=now-24h&kiosk=tv&orgId=1&refresh=5s&to=now" handler=/api/ds/query
logger=context userId=1 orgId=1 uname=admin t=2023-02-10T03:50:32.181046975Z level=info msg="Request Completed" method=POST path=/api/ds/query status=400 remote_addr=192.168.3.1 time_ms=252 duration=252.319698ms size=1240 referer="https://my.domain.net/d/EkW1a13nk/solar-inverter?from=now-24h&kiosk=tv&orgId=1&refresh=5s&to=now" handler=/api/ds/query
logger=context userId=1 orgId=1 uname=admin t=2023-02-10T03:50:32.360182507Z level=info msg="Request Completed" method=POST path=/api/ds/query status=400 remote_addr=192.168.3.1 time_ms=383 duration=383.592938ms size=12334 referer="https://my.domain.net/d/EkW1a13nk/solar-inverter?from=now-24h&kiosk=tv&orgId=1&refresh=5s&to=now" handler=/api/ds/query
logger=context userId=1 orgId=1 uname=admin t=2023-02-10T03:50:36.988315282Z level=info msg="Request Completed" method=POST path=/api/ds/query status=400 remote_addr=192.168.3.1 time_ms=190 duration=190.769402ms size=1238 referer="https://my.domain.net/d/EkW1a13nk/solar-inverter?from=now-24h&kiosk=tv&orgId=1&refresh=5s&to=now" handler=/api/ds/query
logger=context userId=1 orgId=1 uname=admin t=2023-02-10T03:50:36.988762753Z level=info msg="Request Completed" method=POST path=/api/ds/query status=400 remote_addr=192.168.1.1 time_ms=129 duration=129.762243ms size=601 referer="https://my.domain.net/d/EkW1a13nk/solar-inverter?from=now-24h&kiosk=tv&orgId=1&refresh=5s&to=now" handler=/api/ds/query
logger=context userId=1 orgId=1 uname=admin t=2023-02-10T03:50:36.992643688Z level=info msg="Request Completed" method=POST path=/api/ds/query status=400 remote_addr=192.168.1.1 time_ms=198 duration=198.379126ms size=1240 referer="https://my.domain.net/d/EkW1a13nk/solar-inverter?from=now-24h&kiosk=tv&orgId=1&refresh=5s&to=now" handler=/api/ds/query
logger=context userId=1 orgId=1 uname=admin t=2023-02-10T03:50:36.997427658Z level=info msg="Request Completed" method=POST path=/api/ds/query status=400 remote_addr=192.168.1.1 time_ms=199 duration=199.875204ms size=1238 referer="https://my.domain.net/d/EkW1a13nk/solar-inverter?from=now-24h&kiosk=tv&orgId=1&refresh=5s&to=now" handler=/api/ds/query
logger=context userId=1 orgId=1 uname=admin t=2023-02-10T03:50:37.019838469Z level=info msg="Request Completed" method=POST path=/api/ds/query status=400 remote_addr=192.168.1.1 time_ms=216 duration=216.434031ms size=1238 referer="https://my.domain.net/d/EkW1a13nk/solar-inverter?from=now-24h&kiosk=tv&orgId=1&refresh=5s&to=now" handler=/api/ds/query
logger=context userId=1 orgId=1 uname=admin t=2023-02-10T03:50:37.528526893Z level=info msg="Request Completed" method=POST path=/api/ds/query status=400 remote_addr=192.168.1.1 time_ms=712 duration=712.23779ms size=668 referer="https://my.domain.net/d/EkW1a13nk/solar-inverter?from=now-24h&kiosk=tv&orgId=1&refresh=5s&to=now" handler=/api/ds/query
logger=context userId=1 orgId=1 uname=admin t=2023-02-10T03:50:37.543641306Z level=info msg="Request Completed" method=POST path=/api/ds/query status=400 remote_addr=192.168.1.1 time_ms=665 duration=665.335324ms size=617 referer="https://my.domain.net/d/EkW1a13nk/solar-inverter?from=now-24h&kiosk=tv&orgId=1&refresh=5s&to=now" handler=/api/ds/query
logger=context userId=1 orgId=1 uname=admin t=2023-02-10T03:50:37.556941018Z level=info msg="Request Completed" method=POST path=/api/ds/query status=400 remote_addr=192.168.1.1 time_ms=746 duration=746.055871ms size=12355 referer="https://my.domain.net/d/EkW1a13nk/solar-inverter?from=now-24h&kiosk=tv&orgId=1&refresh=5s&to=now" handler=/api/ds/query
logger=context userId=1 orgId=1 uname=admin t=2023-02-10T03:50:38.846275542Z level=info msg="Request Completed" method=GET path=/api/live/ws status=-1 remote_addr=192.168.1.1 time_ms=3 duration=3.999932ms size=0 referer= handler=/api/live/ws


#PostgreSQL/timescaldb Docker container logs
#PostgreSQL 14.6 on aarch64-unknown-linux-musl, compiled by gcc (Alpine 12.2.1_git20220924-r4) 12.2.1 20220924, 64-bit
#TimescaleDB version 2.9.3


2023-02-10 11:50:31.554 AWST [6098] ERROR:  canceling statement due to user request
2023-02-10 11:50:31.554 AWST [6098] STATEMENT:  SELECT
         time_bucket_gapfill('30s', d1.time, '2023-02-09T03:50:32.17Z'::timestamptz, '2023-02-10T03:50:32.171Z'::timestamptz) AS time,
         concat(description, ' (', units, ')') AS metric,
         locf(avg(value)) as value
        FROM data d1
        INNER JOIN signals s1
        ON d1.sig_id = s1.id
        WHERE time BETWEEN '2023-02-09T03:50:32.17Z' AND '2023-02-10T03:50:32.171Z' AND d1.sig_id IN ('25','32','33','9999')
        GROUP BY 1, 2
        ORDER BY 1, 2;
2023-02-10 11:50:31.556 AWST [6097] ERROR:  canceling statement due to user request
2023-02-10 11:50:31.556 AWST [6097] STATEMENT:  SELECT
         time_bucket('30s', d1.time) + '0m'::interval AS time,
         avg(CASE WHEN (value < 0) THEN 0 ELSE value END) AS Export,
         avg(CASE WHEN (value > 0) THEN 0 ELSE value END) AS Import
        FROM data d1
        INNER JOIN signals s1
        ON d1.sig_id = s1.id
        WHERE  time BETWEEN '2023-02-09T03:50:32.17Z' AND '2023-02-10T03:50:32.171Z' AND d1.sig_id IN ('101')
        GROUP BY 1
        ORDER BY 1;
2023-02-10 11:50:31.570 AWST [6212] ERROR:  canceling statement due to user request
2023-02-10 11:50:31.570 AWST [6212] STATEMENT:  SELECT
         time_bucket_gapfill('5m', d1.time, '2023-02-09T03:50:32.24Z'::timestamptz, '2023-02-10T03:50:32.24Z'::timestamptz) AS time,
         concat(description, ' (', units, ')') AS metric,
         locf(avg(value)) as value
        FROM data d1
        INNER JOIN signals s1
        ON d1.sig_id = s1.id
        WHERE time BETWEEN '2023-02-09T03:50:32.24Z' AND '2023-02-10T03:50:32.24Z' AND d1.sig_id IN ('25','32','33','9999')
        GROUP BY 1, 2
        ORDER BY 1, 2;
2023-02-10 11:50:31.632 AWST [6213] ERROR:  canceling statement due to user request
2023-02-10 11:50:31.632 AWST [6213] STATEMENT:  SELECT
         time_bucket('5m', d1.time) + '0m'::interval AS time,
         avg(CASE WHEN (value < 0) THEN 0 ELSE value END) AS Export,
         avg(CASE WHEN (value > 0) THEN 0 ELSE value END) AS Import
        FROM data d1
        INNER JOIN signals s1
        ON d1.sig_id = s1.id
        WHERE  time BETWEEN '2023-02-09T03:50:32.24Z' AND '2023-02-10T03:50:32.24Z' AND d1.sig_id IN ('101')
        GROUP BY 1
        ORDER BY 1;
2023-02-10 11:50:31.661 AWST [6215] ERROR:  canceling statement due to user request
2023-02-10 11:50:31.661 AWST [6215] STATEMENT:  SELECT
         time_bucket('5m', d1.time) + '0m'::interval AS time,
         avg(CASE WHEN (value < 0) THEN 0 ELSE value END) AS Export,
         avg(CASE WHEN (value > 0) THEN 0 ELSE value END) AS Import
        FROM data d1
        INNER JOIN signals s1
        ON d1.sig_id = s1.id
        WHERE  time BETWEEN '2023-02-09T03:50:32.262Z' AND '2023-02-10T03:50:32.262Z' AND d1.sig_id IN ('101')
        GROUP BY 1
        ORDER BY 1;
2023-02-10 11:50:31.681 AWST [6216] ERROR:  canceling statement due to user request
2023-02-10 11:50:31.681 AWST [6216] STATEMENT:  SELECT
         time_bucket('2m', d1.time) + '0m'::interval AS time,
         avg(CASE WHEN (value < 0) THEN 0 ELSE value END) AS Export,
         avg(CASE WHEN (value > 0) THEN 0 ELSE value END) AS Import
        FROM data d1
        INNER JOIN signals s1
        ON d1.sig_id = s1.id
        WHERE  time BETWEEN '2023-02-09T03:50:32.171Z' AND '2023-02-10T03:50:32.171Z' AND d1.sig_id IN ('101')
        GROUP BY 1
        ORDER BY 1;
2023-02-10 11:50:31.741 AWST [6214] ERROR:  canceling statement due to user request
2023-02-10 11:50:31.741 AWST [6214] STATEMENT:  SELECT
         time_bucket_gapfill('5m', d1.time, '2023-02-09T03:50:32.262Z'::timestamptz, '2023-02-10T03:50:32.262Z'::timestamptz) AS time,
         concat(description, ' (', units, ')') AS metric,
         locf(avg(value)) as value
        FROM data d1
        INNER JOIN signals s1
        ON d1.sig_id = s1.id
        WHERE time BETWEEN '2023-02-09T03:50:32.262Z' AND '2023-02-10T03:50:32.262Z' AND d1.sig_id IN ('25','32','33','9999')
        GROUP BY 1, 2
        ORDER BY 1, 2;
2023-02-10 11:50:31.747 AWST [6217] ERROR:  canceling statement due to user request
2023-02-10 11:50:31.747 AWST [6217] STATEMENT:  SELECT
         time_bucket_gapfill('2m', d1.time, '2023-02-09T03:50:32.171Z'::timestamptz, '2023-02-10T03:50:32.171Z'::timestamptz) AS time,
         concat(description, ' (', units, ')') AS metric,
         locf(avg(value)) as value
        FROM data d1
        INNER JOIN signals s1
        ON d1.sig_id = s1.id
        WHERE time BETWEEN '2023-02-09T03:50:32.171Z' AND '2023-02-10T03:50:32.171Z' AND d1.sig_id IN ('25','32','33','9999')
        GROUP BY 1, 2
        ORDER BY 1, 2;
2023-02-10 11:50:31.984 AWST [6222] ERROR:  canceling statement due to user request
2023-02-10 11:50:31.984 AWST [6222] STATEMENT:  SELECT
         time_bucket('5m', d1.time) + '0m'::interval AS time,
         avg(CASE WHEN (value < 0) THEN 0 ELSE value END) AS Export,
         avg(CASE WHEN (value > 0) THEN 0 ELSE value END) AS Import
        FROM data d1
        INNER JOIN signals s1
        ON d1.sig_id = s1.id
        WHERE  time BETWEEN '2023-02-09T03:50:32.288Z' AND '2023-02-10T03:50:32.288Z' AND d1.sig_id IN ('101')
        GROUP BY 1
        ORDER BY 1;
2023-02-10 11:50:31.985 AWST [6225] ERROR:  canceling statement due to user request
2023-02-10 11:50:31.985 AWST [6225] STATEMENT:  SELECT
         time_bucket_gapfill('5m', d1.time, '2023-02-09T03:50:32.288Z'::timestamptz, '2023-02-10T03:50:32.288Z'::timestamptz) AS time,
         concat(description, ' (', units, ')') AS metric,
         locf(avg(value)) as value
        FROM data d1
        INNER JOIN signals s1
        ON d1.sig_id = s1.id
        WHERE time BETWEEN '2023-02-09T03:50:32.288Z' AND '2023-02-10T03:50:32.288Z' AND d1.sig_id IN ('25','32','33','9999')
        GROUP BY 1, 2
        ORDER BY 1, 2;
2023-02-10 11:50:32.020 AWST [6223] ERROR:  canceling statement due to user request
2023-02-10 11:50:32.020 AWST [6223] STATEMENT:  SELECT
         time_bucket_gapfill('30s', d1.time, '2023-02-09T03:50:32.319Z'::timestamptz, '2023-02-10T03:50:32.319Z'::timestamptz) AS time,
         concat(name,' ', description, ' (', units, ')') AS metric,
         locf(avg(value)) as value
        FROM data d1
        INNER JOIN signals s1
        ON d1.sig_id = s1.id
        WHERE time BETWEEN '2023-02-09T03:50:32.319Z' AND '2023-02-10T03:50:32.319Z' AND d1.sig_id IN ('25','4105','4205','4305','9999')
        GROUP BY 1, 2
        ORDER BY 1, 2;
2023-02-10 11:50:32.029 AWST [6230] ERROR:  canceling statement due to user request
2023-02-10 11:50:32.029 AWST [6230] STATEMENT:  SELECT
         time_bucket_gapfill('30s', d1.time, '2023-02-09T03:50:32.455Z'::timestamptz, '2023-02-10T03:50:32.455Z'::timestamptz) AS time,
         name AS metric,
         locf(avg(value)) as value
        FROM data d1
        INNER JOIN signals s1
        ON d1.sig_id = s1.id
        WHERE time BETWEEN '2023-02-09T03:50:32.455Z' AND '2023-02-10T03:50:32.455Z' AND d1.sig_id IN ('8','7','12','11')
        GROUP BY 1, 2, d1.sig_id
        ORDER BY 1, 2;
2023-02-10 11:50:32.030 AWST [6226] ERROR:  canceling statement due to user request
2023-02-10 11:50:32.030 AWST [6226] STATEMENT:  SELECT
          time_bucket_gapfill('30s', d1.time, '2023-02-09T03:50:32.367Z'::timestamptz, '2023-02-10T03:50:32.367Z'::timestamptz) AS time,
         name AS metric,
         locf(avg(value)) as value
        FROM data d1
        INNER JOIN signals s1
        ON d1.sig_id = s1.id
        WHERE time BETWEEN '2023-02-09T03:50:32.367Z' AND '2023-02-10T03:50:32.367Z' AND d1.sig_id IN ('28','4108','4208','4308')
        GROUP BY 1, 2, d1.sig_id
        ORDER BY 1, 2;
2023-02-10 11:50:32.115 AWST [6232] ERROR:  canceling statement due to user request
2023-02-10 11:50:32.115 AWST [6232] STATEMENT:  SELECT
         time_bucket('30s', d1.time) + '0m'::interval AS time,
         avg(CASE WHEN (value < 0) THEN 0 ELSE value END) AS Export,
         avg(CASE WHEN (value > 0) THEN 0 ELSE value END) AS Import
        FROM data d1
        INNER JOIN signals s1
        ON d1.sig_id = s1.id
        WHERE  time BETWEEN '2023-02-09T03:50:32.573Z' AND '2023-02-10T03:50:32.573Z' AND d1.sig_id IN ('101')
        GROUP BY 1
        ORDER BY 1;
2023-02-10 11:50:32.139 AWST [6233] ERROR:  canceling statement due to user request
2023-02-10 11:50:32.139 AWST [6233] STATEMENT:  SELECT
         time_bucket_gapfill('2m', d1.time, '2023-02-09T03:50:32.573Z'::timestamptz, '2023-02-10T03:50:32.573Z'::timestamptz) AS time,
         concat(description, ' (', units, ')') AS metric,
         locf(avg(value)) as value
        FROM data d1
        INNER JOIN signals s1
        ON d1.sig_id = s1.id
        WHERE time BETWEEN '2023-02-09T03:50:32.573Z' AND '2023-02-10T03:50:32.573Z' AND d1.sig_id IN ('25','32','33','9999')
        GROUP BY 1, 2
        ORDER BY 1, 2;
2023-02-10 11:50:32.150 AWST [6231] ERROR:  canceling statement due to user request
2023-02-10 11:50:32.150 AWST [6231] STATEMENT:  SELECT
         time_bucket_gapfill('30s', d1.time, '2023-02-09T03:50:32.573Z'::timestamptz, '2023-02-10T03:50:32.573Z'::timestamptz) AS time,
         concat(description, ' (', units, ')') AS metric,
         locf(avg(value)) as value
        FROM data d1
        INNER JOIN signals s1
        ON d1.sig_id = s1.id
        WHERE time BETWEEN '2023-02-09T03:50:32.573Z' AND '2023-02-10T03:50:32.573Z' AND d1.sig_id IN ('25','32','33','9999')
        GROUP BY 1, 2
        ORDER BY 1, 2;
2023-02-10 11:50:32.155 AWST [6234] ERROR:  canceling statement due to user request
2023-02-10 11:50:32.155 AWST [6234] STATEMENT:  SELECT
         time_bucket('2m', d1.time) + '0m'::interval AS time,
         avg(CASE WHEN (value < 0) THEN 0 ELSE value END) AS Export,
         avg(CASE WHEN (value > 0) THEN 0 ELSE value END) AS Import
        FROM data d1
        INNER JOIN signals s1
        ON d1.sig_id = s1.id
        WHERE  time BETWEEN '2023-02-09T03:50:32.573Z' AND '2023-02-10T03:50:32.573Z' AND d1.sig_id IN ('101')
        GROUP BY 1
        ORDER BY 1;
2023-02-10 11:50:36.922 AWST [6247] ERROR:  canceling statement due to user request
2023-02-10 11:50:36.922 AWST [6247] STATEMENT:  SELECT
         time_bucket('30s', d1.time) + '0m'::interval AS time,
         avg(CASE WHEN (value < 0) THEN 0 ELSE value END) AS Export,
         avg(CASE WHEN (value > 0) THEN 0 ELSE value END) AS Import
        FROM data d1
        INNER JOIN signals s1
        ON d1.sig_id = s1.id
        WHERE  time BETWEEN '2023-02-09T03:50:37.574Z' AND '2023-02-10T03:50:37.574Z' AND d1.sig_id IN ('101')
        GROUP BY 1
        ORDER BY 1;
2023-02-10 11:50:36.933 AWST [6261] ERROR:  canceling statement due to user request
2023-02-10 11:50:36.933 AWST [6261] STATEMENT:  SELECT
         time_bucket('5m', d1.time) + '0m'::interval AS time,
         avg(CASE WHEN (value < 0) THEN 0 ELSE value END) AS Export,
         avg(CASE WHEN (value > 0) THEN 0 ELSE value END) AS Import
        FROM data d1
        INNER JOIN signals s1
        ON d1.sig_id = s1.id
        WHERE  time BETWEEN '2023-02-09T03:50:37.633Z' AND '2023-02-10T03:50:37.633Z' AND d1.sig_id IN ('101')
        GROUP BY 1
        ORDER BY 1;
2023-02-10 11:50:36.952 AWST [6255] ERROR:  canceling statement due to user request
2023-02-10 11:50:36.952 AWST [6255] STATEMENT:  SELECT
         time_bucket_gapfill('2m', d1.time, '2023-02-09T03:50:37.575Z'::timestamptz, '2023-02-10T03:50:37.575Z'::timestamptz) AS time,
         concat(description, ' (', units, ')') AS metric,
         locf(avg(value)) as value
        FROM data d1
        INNER JOIN signals s1
        ON d1.sig_id = s1.id
        WHERE time BETWEEN '2023-02-09T03:50:37.575Z' AND '2023-02-10T03:50:37.575Z' AND d1.sig_id IN ('25','32','33','9999')
        GROUP BY 1, 2
        ORDER BY 1, 2;
2023-02-10 11:50:36.966 AWST [6256] ERROR:  canceling statement due to user request
2023-02-10 11:50:36.966 AWST [6256] STATEMENT:  SELECT
         time_bucket_gapfill('30s', d1.time, '2023-02-09T03:50:37.574Z'::timestamptz, '2023-02-10T03:50:37.574Z'::timestamptz) AS time,
         concat(description, ' (', units, ')') AS metric,
         locf(avg(value)) as value
        FROM data d1
        INNER JOIN signals s1
        ON d1.sig_id = s1.id
        WHERE time BETWEEN '2023-02-09T03:50:37.574Z' AND '2023-02-10T03:50:37.574Z' AND d1.sig_id IN ('25','32','33','9999')
        GROUP BY 1, 2
        ORDER BY 1, 2;
2023-02-10 11:50:36.979 AWST [6259] ERROR:  canceling statement due to user request
2023-02-10 11:50:36.979 AWST [6259] STATEMENT:  SELECT
         time_bucket_gapfill('5m', d1.time, '2023-02-09T03:50:37.612Z'::timestamptz, '2023-02-10T03:50:37.612Z'::timestamptz) AS time,
         concat(description, ' (', units, ')') AS metric,
         locf(avg(value)) as value
        FROM data d1
        INNER JOIN signals s1
        ON d1.sig_id = s1.id
        WHERE time BETWEEN '2023-02-09T03:50:37.612Z' AND '2023-02-10T03:50:37.612Z' AND d1.sig_id IN ('25','32','33','9999')
        GROUP BY 1, 2
        ORDER BY 1, 2;
2023-02-10 11:50:36.982 AWST [6260] ERROR:  canceling statement due to user request
2023-02-10 11:50:36.982 AWST [6260] STATEMENT:  SELECT
         time_bucket('5m', d1.time) + '0m'::interval AS time,
         avg(CASE WHEN (value < 0) THEN 0 ELSE value END) AS Export,
         avg(CASE WHEN (value > 0) THEN 0 ELSE value END) AS Import
        FROM data d1
        INNER JOIN signals s1
        ON d1.sig_id = s1.id
        WHERE  time BETWEEN '2023-02-09T03:50:37.612Z' AND '2023-02-10T03:50:37.612Z' AND d1.sig_id IN ('101')
        GROUP BY 1
        ORDER BY 1;
2023-02-10 11:50:36.987 AWST [6257] ERROR:  canceling statement due to user request
2023-02-10 11:50:36.987 AWST [6257] STATEMENT:  SELECT
         time_bucket('2m', d1.time) + '0m'::interval AS time,
         avg(CASE WHEN (value < 0) THEN 0 ELSE value END) AS Export,
         avg(CASE WHEN (value > 0) THEN 0 ELSE value END) AS Import
        FROM data d1
        INNER JOIN signals s1
        ON d1.sig_id = s1.id
        WHERE  time BETWEEN '2023-02-09T03:50:37.575Z' AND '2023-02-10T03:50:37.575Z' AND d1.sig_id IN ('101')
        GROUP BY 1
        ORDER BY 1;
2023-02-10 11:50:37.010 AWST [6258] ERROR:  canceling statement due to user request
2023-02-10 11:50:37.010 AWST [6258] STATEMENT:  SELECT
         time_bucket_gapfill('5m', d1.time, '2023-02-09T03:50:37.633Z'::timestamptz, '2023-02-10T03:50:37.633Z'::timestamptz) AS time,
         concat(description, ' (', units, ')') AS metric,
         locf(avg(value)) as value
        FROM data d1
        INNER JOIN signals s1
        ON d1.sig_id = s1.id
        WHERE time BETWEEN '2023-02-09T03:50:37.633Z' AND '2023-02-10T03:50:37.633Z' AND d1.sig_id IN ('25','32','33','9999')
        GROUP BY 1, 2
        ORDER BY 1, 2;
2023-02-10 11:50:37.524 AWST [6272] ERROR:  canceling statement due to user request
2023-02-10 11:50:37.524 AWST [6272] STATEMENT:  SELECT
         time_bucket_gapfill('30s', d1.time, '2023-02-09T03:50:37.667Z'::timestamptz, '2023-02-10T03:50:37.667Z'::timestamptz) AS time,
         concat(name,' ', description, ' (', units, ')') AS metric,
         locf(avg(value)) as value
        FROM data d1
        INNER JOIN signals s1
        ON d1.sig_id = s1.id
        WHERE time BETWEEN '2023-02-09T03:50:37.667Z' AND '2023-02-10T03:50:37.667Z' AND d1.sig_id IN ('25','4105','4205','4305','9999')
        GROUP BY 1, 2
        ORDER BY 1, 2;
2023-02-10 11:50:37.535 AWST [6262] ERROR:  canceling statement due to user request
2023-02-10 11:50:37.535 AWST [6262] STATEMENT:  SELECT
         time_bucket_gapfill('5m', d1.time, '2023-02-09T03:50:37.651Z'::timestamptz, '2023-02-10T03:50:37.651Z'::timestamptz) AS time,
         concat(description, ' (', units, ')') AS metric,
         locf(avg(value)) as value
        FROM data d1
        INNER JOIN signals s1
        ON d1.sig_id = s1.id
        WHERE time BETWEEN '2023-02-09T03:50:37.651Z' AND '2023-02-10T03:50:37.651Z' AND d1.sig_id IN ('25','32','33','9999')
        GROUP BY 1, 2
        ORDER BY 1, 2;
2023-02-10 11:50:37.539 AWST [6274] ERROR:  canceling statement due to user request
2023-02-10 11:50:37.539 AWST [6274] STATEMENT:  SELECT
         time_bucket_gapfill('30s', d1.time, '2023-02-09T03:50:37.78Z'::timestamptz, '2023-02-10T03:50:37.78Z'::timestamptz) AS time,
         name AS metric,
         locf(avg(value)) as value
        FROM data d1
        INNER JOIN signals s1
        ON d1.sig_id = s1.id
        WHERE time BETWEEN '2023-02-09T03:50:37.78Z' AND '2023-02-10T03:50:37.78Z' AND d1.sig_id IN ('8','7','12','11')
        GROUP BY 1, 2, d1.sig_id
        ORDER BY 1, 2;

#Chrome Browser Diagnostics when "no data" displayed

#Headers
Request URL: https://my.domain.net/api/ds/query
Request Method: POST
Status Code: 400 Bad Request
Remote Address: 1.1.1.1:443
Referrer Policy: strict-origin-when-cross-origin
Cache-Control: no-cache
Content-Length: 646
Content-Type: application/json
Date: Fri, 10 Feb 2023 04:26:01 GMT
Expires: -1
Pragma: no-cache
X-Content-Type-Options: nosniff
X-Frame-Options: deny
X-Xss-Protection: 1; mode=block
accept: application/json, text/plain, */*
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9,de;q=0.8
Connection: keep-alive
Content-Length: 708
content-type: application/json
Cookie: grafana_session=9e093e3d0f191489492679507fe5c6bf
Host: my.domain.net
Origin: https://my.domain.net
Referer: https://my.domain.net/d/EkW1a13nk/solar-inverter?orgId=1&refresh=5s&from=now-24h&to=now&kiosk=tv
sec-ch-ua: "Not_A Brand";v="99", "Google Chrome";v="109", "Chromium";v="109"
sec-ch-ua-mobile: ?0
sec-ch-ua-platform: "Windows"
Sec-Fetch-Dest: empty
Sec-Fetch-Mode: cors
Sec-Fetch-Site: same-origin
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36
x-dashboard-uid: EkW1a13nk
x-datasource-uid: kZbebJ3nz
x-grafana-org-id: 1
x-panel-id: 21
x-plugin-id: postgres

#Request Payload
{"queries":[{"refId":"A","datasource":{"type":"postgres","uid":"kZbebJ3nz"},"rawSql":"SELECT\r\n time_bucket_gapfill('1m', d1.time, $__timeFrom()::timestamptz, $__timeTo()::timestamptz) AS time,\r\n concat(name,' ', description, ' (', units, ')') AS metric,\r\n locf(avg(value)) as value\r\nFROM data d1\r\nINNER JOIN signals s1\r\nON d1.sig_id = s1.id\r\nWHERE $__timeFilter(time) AND d1.sig_id IN ('25','4105','4205','4305','9999')\r\nGROUP BY 1, 2\r\nORDER BY 1, 2;","format":"time_series","datasourceId":3,"intervalMs":60000,"maxDataPoints":1645}],"range":{"from":"2023-02-09T04:26:02.555Z","to":"2023-02-10T04:26:02.555Z","raw":{"from":"now-24h","to":"now"}},"from":"1675916762555","to":"1676003162555"}

#Response
{"results":{"A":{"error":"db query error: driver: bad connection","status":500,"frames":[{"schema":{"refId":"A","meta":{"executedQueryString":"SELECT\r\n time_bucket_gapfill('1m', d1.time, '2023-02-09T04:26:02.555Z'::timestamptz, '2023-02-10T04:26:02.555Z'::timestamptz) AS time,\r\n concat(name,' ', description, ' (', units, ')') AS metric,\r\n locf(avg(value)) as value\r\nFROM data d1\r\nINNER JOIN signals s1\r\nON d1.sig_id = s1.id\r\nWHERE time BETWEEN '2023-02-09T04:26:02.555Z' AND '2023-02-10T04:26:02.555Z' AND d1.sig_id IN ('25','4105','4205','4305','9999')\r\nGROUP BY 1, 2\r\nORDER BY 1, 2;"},"fields":[]},"data":{"values":[]}}]}}}