Commit ee036de
authored
* Fix Plex user import crash on unauthorized token (#5418)
When the Plex auth token is invalid or expired, plex.tv returns an
Unauthorized response whose body is an <errors> document. Two problems
turned this into hard crashes that obscured the real cause:
- Api.ExecuteRequest deserialized the error body with the success type's
serializer, throwing a misleading "There is an error in XML document
(2, 2)" exception. The deserialization is now wrapped so a non-matching
error payload logs a warning and returns the default value instead.
- PlexUserImporter.ImportAdmin dereferenced the account result without a
null check, throwing a NullReferenceException when the account could not
be retrieved. It now logs a warning and skips the admin import.
Added a test covering the unauthorized (null account) path.
* Evict failed responses from the API cache
Previously a non-success response returned a value (including the default
when error-body deserialisation failed) from inside the cache factory, so
the failure was stored for the whole CacheDuration on any cacheable GET.
That contradicted the "don't cache failed responses" comment and meant a
transient 401 could be served from cache long after it resolved.
ExecuteRequest now reports whether the response was successful, and the
caching path removes the entry when it was not, so only successful
responses remain cached.
1 parent 1cecdc2 commit ee036de
3 files changed
Lines changed: 61 additions & 19 deletions
File tree
- src
- Ombi.Api
- Ombi.Schedule.Tests
- Ombi.Schedule/Jobs/Plex
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
48 | 48 | | |
49 | 49 | | |
50 | 50 | | |
51 | | - | |
| 51 | + | |
| 52 | + | |
52 | 53 | | |
53 | 54 | | |
54 | | - | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
55 | 58 | | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
56 | 69 | | |
57 | 70 | | |
58 | 71 | | |
59 | 72 | | |
60 | 73 | | |
61 | 74 | | |
62 | | - | |
| 75 | + | |
63 | 76 | | |
64 | 77 | | |
65 | 78 | | |
66 | 79 | | |
67 | 80 | | |
68 | | - | |
| 81 | + | |
69 | 82 | | |
70 | 83 | | |
71 | 84 | | |
72 | 85 | | |
73 | | - | |
| 86 | + | |
74 | 87 | | |
75 | 88 | | |
76 | | - | |
| 89 | + | |
77 | 90 | | |
78 | 91 | | |
79 | 92 | | |
| |||
117 | 130 | | |
118 | 131 | | |
119 | 132 | | |
120 | | - | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
121 | 137 | | |
122 | 138 | | |
123 | | - | |
| 139 | + | |
124 | 140 | | |
125 | | - | |
126 | | - | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
| 145 | + | |
| 146 | + | |
| 147 | + | |
127 | 148 | | |
128 | | - | |
| 149 | + | |
129 | 150 | | |
130 | | - | |
| 151 | + | |
| 152 | + | |
| 153 | + | |
131 | 154 | | |
132 | 155 | | |
133 | 156 | | |
| |||
137 | 160 | | |
138 | 161 | | |
139 | 162 | | |
140 | | - | |
141 | | - | |
142 | | - | |
143 | | - | |
144 | | - | |
145 | | - | |
| 163 | + | |
146 | 164 | | |
| 165 | + | |
| 166 | + | |
| 167 | + | |
147 | 168 | | |
148 | 169 | | |
149 | 170 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
128 | 128 | | |
129 | 129 | | |
130 | 130 | | |
| 131 | + | |
| 132 | + | |
| 133 | + | |
| 134 | + | |
| 135 | + | |
| 136 | + | |
| 137 | + | |
| 138 | + | |
| 139 | + | |
| 140 | + | |
| 141 | + | |
| 142 | + | |
| 143 | + | |
| 144 | + | |
131 | 145 | | |
132 | 146 | | |
133 | 147 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
202 | 202 | | |
203 | 203 | | |
204 | 204 | | |
205 | | - | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
206 | 213 | | |
207 | 214 | | |
208 | 215 | | |
| |||
0 commit comments