Unable to view playlist, or edit and delete. Playlist not found error

This has been cross posted to github as a bug report, you can view my uploaded gif showing the issue there (image was too large to upload here):

  • What Grafana version and what operating system are you using?
    Docker latest image, grafana v 9.3.6

  • What are you trying to achieve?
    Trying to create and play playlists

  • How are you trying to achieve it?
    Normal method

  • What happened?
    Getting playlist not found error when I try to play, edit, or delete a playlist

  • What did you expect to happen?
    Expect to play, edit, delete list after created.

  • Did you receive any errors in the Grafana UI or in related logs? If so, please tell us exactly what they were.
    No errors in UI besides Playlist not found
    Chrome console gives these errors:

fetch.js:32          GET https://grafana.rsu87.org/api/playlists/1 404
(anonymous) @ fetch.js:32
e._trySubscribe @ Observable.js:38
(anonymous) @ Observable.js:32
a @ errorContext.js:19
e.subscribe @ Observable.js:23
s @ mergeInternals.js:53
(anonymous) @ mergeMap.js:14
(anonymous) @ lift.js:10
(anonymous) @ Observable.js:27
a @ errorContext.js:19
e.subscribe @ Observable.js:23
(anonymous) @ share.js:60
(anonymous) @ lift.js:10
(anonymous) @ Observable.js:27
a @ errorContext.js:19
e.subscribe @ Observable.js:23
(anonymous) @ filter.js:6
(anonymous) @ lift.js:10
(anonymous) @ Observable.js:27
a @ errorContext.js:19
e.subscribe @ Observable.js:23
(anonymous) @ tap.js:15
(anonymous) @ lift.js:10
(anonymous) @ Observable.js:27
a @ errorContext.js:19
e.subscribe @ Observable.js:23
y @ mergeInternals.js:19
g @ mergeInternals.js:14
s._next @ OperatorSubscriber.js:11
t.next @ Subscriber.js:34
(anonymous) @ innerFrom.js:51
e._trySubscribe @ Observable.js:38
(anonymous) @ Observable.js:32
a @ errorContext.js:19
e.subscribe @ Observable.js:23
s @ mergeInternals.js:53
(anonymous) @ mergeMap.js:14
(anonymous) @ lift.js:10
(anonymous) @ Observable.js:27
a @ errorContext.js:19
e.subscribe @ Observable.js:23
(anonymous) @ catchError.js:9
(anonymous) @ lift.js:10
(anonymous) @ Observable.js:27
a @ errorContext.js:19
e.subscribe @ Observable.js:23
(anonymous) @ takeUntil.js:8
(anonymous) @ lift.js:10
(anonymous) @ Observable.js:27
a @ errorContext.js:19
e.subscribe @ Observable.js:23
(anonymous) @ throwIfEmpty.js:8
(anonymous) @ lift.js:10
(anonymous) @ Observable.js:27
a @ errorContext.js:19
e.subscribe @ Observable.js:23
(anonymous) @ backend_srv.ts:99
(anonymous) @ Subscriber.js:123
t._next @ Subscriber.js:63
t.next @ Subscriber.js:34
(anonymous) @ filter.js:6
s._next @ OperatorSubscriber.js:11
t.next @ Subscriber.js:34
(anonymous) @ Subject.js:38
a @ errorContext.js:19
t.next @ Subject.js:30
(anonymous) @ ResponseQueue.ts:30
(anonymous) @ Subscriber.js:123
t._next @ Subscriber.js:63
t.next @ Subscriber.js:34
(anonymous) @ Subject.js:38
a @ errorContext.js:19
t.next @ Subject.js:30
(anonymous) @ ResponseQueue.ts:35
(anonymous) @ FetchQueueWorker.ts:54
(anonymous) @ Subscriber.js:123
t._next @ Subscriber.js:63
t.next @ Subscriber.js:34
(anonymous) @ mergeInternals.js:25
s._next @ OperatorSubscriber.js:11
t.next @ Subscriber.js:34
(anonymous) @ innerFrom.js:51
e._trySubscribe @ Observable.js:38
(anonymous) @ Observable.js:32
a @ errorContext.js:19
e.subscribe @ Observable.js:23
y @ mergeInternals.js:19
g @ mergeInternals.js:14
s._next @ OperatorSubscriber.js:11
t.next @ Subscriber.js:34
(anonymous) @ filter.js:6
s._next @ OperatorSubscriber.js:11
t.next @ Subscriber.js:34
(anonymous) @ Subject.js:38
a @ errorContext.js:19
t.next @ Subject.js:30
(anonymous) @ FetchQueue.ts:76
(anonymous) @ FetchQueue.ts:55
(anonymous) @ Subscriber.js:123
t._next @ Subscriber.js:63
t.next @ Subscriber.js:34
(anonymous) @ Subject.js:38
a @ errorContext.js:19
t.next @ Subject.js:30
(anonymous) @ FetchQueue.ts:59
(anonymous) @ backend_srv.ts:104
e._trySubscribe @ Observable.js:38
(anonymous) @ Observable.js:32
a @ errorContext.js:19
e.subscribe @ Observable.js:23
(anonymous) @ map.js:6
(anonymous) @ lift.js:10
(anonymous) @ Observable.js:27
a @ errorContext.js:19
e.subscribe @ Observable.js:23
(anonymous) @ lastValueFrom.js:7
o @ lastValueFrom.js:4
request @ backend_srv.ts:79
get @ backend_srv.ts:391
start @ PlaylistSrv.ts:82
r @ PlaylistStartPage.tsx:8
rs @ react-dom.production.min.js:157
Wi @ react-dom.production.min.js:267
Sc @ react-dom.production.min.js:250
kc @ react-dom.production.min.js:250
wc @ react-dom.production.min.js:250
hc @ react-dom.production.min.js:243
(anonymous) @ react-dom.production.min.js:123
t.unstable_runWithPriority @ scheduler.production.min.js:18
Ho @ react-dom.production.min.js:122
Vo @ react-dom.production.min.js:123
Zo @ react-dom.production.min.js:122
lc @ react-dom.production.min.js:237
enqueueSetState @ react-dom.production.min.js:133
g.setState @ react.production.min.js:12
t @ index.js:205
(anonymous) @ index.js:215
Promise.then (async)
n._loadModule @ index.js:214
n.componentWillMount @ index.js:168
va @ react-dom.production.min.js:138
Bs @ react-dom.production.min.js:181
Wi @ react-dom.production.min.js:269
Sc @ react-dom.production.min.js:250
kc @ react-dom.production.min.js:250
wc @ react-dom.production.min.js:250
hc @ react-dom.production.min.js:243
(anonymous) @ react-dom.production.min.js:123
t.unstable_runWithPriority @ scheduler.production.min.js:18
Ho @ react-dom.production.min.js:122
Vo @ react-dom.production.min.js:123
Zo @ react-dom.production.min.js:122
ze @ react-dom.production.min.js:292
$t @ react-dom.production.min.js:73
/playlists/play/1:1 Uncaught (in promise) {status: 404, statusText: '', data: {…}, config: {…}}

I have downgraded to 8.5.16 and still the same issue.

Also, using the api gives me the same error:

curl --location --request DELETE 'https://grafana.domain.org/api/playlists/2' --header 'Authorization: Basic redacted'

result:

{
    "message": "Playlist not found",
    "traceID": ""
}

Turns out this was my fault. I had improperly mounted a docker volume. :frowning: