@nxtedition/nxt-undici 6.2.28 → 6.2.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/interceptor/cache.js +12 -2
- package/lib/sqlite-cache-store.js +11 -5
- package/package.json +1 -1
package/lib/interceptor/cache.js
CHANGED
|
@@ -164,7 +164,12 @@ class CacheHandler extends DecoratorHandler {
|
|
|
164
164
|
try {
|
|
165
165
|
this.#store.set(this.#key, this.#value)
|
|
166
166
|
} catch (err) {
|
|
167
|
-
|
|
167
|
+
if (err.message === 'database is locked') {
|
|
168
|
+
// Database is busy. We don't bother trying again...
|
|
169
|
+
this.#logger?.debug({ err }, 'failed to set cache entry')
|
|
170
|
+
} else {
|
|
171
|
+
this.#logger?.error({ err }, 'failed to set cache entry')
|
|
172
|
+
}
|
|
168
173
|
}
|
|
169
174
|
this.#value = null
|
|
170
175
|
}
|
|
@@ -207,7 +212,12 @@ export default () => (dispatch) => (opts, handler) => {
|
|
|
207
212
|
try {
|
|
208
213
|
entry = store.get(opts)
|
|
209
214
|
} catch (err) {
|
|
210
|
-
|
|
215
|
+
if (err.message === 'database is locked') {
|
|
216
|
+
// Database is busy. We don't bother trying again...
|
|
217
|
+
opts.logger?.debug({ err }, 'failed to set cache entry')
|
|
218
|
+
} else {
|
|
219
|
+
opts.logger?.error({ err }, 'failed to set cache entry')
|
|
220
|
+
}
|
|
211
221
|
}
|
|
212
222
|
|
|
213
223
|
if (!entry && !cacheControlDirectives['only-if-cached']) {
|
|
@@ -136,6 +136,8 @@ export class SqliteCacheStore {
|
|
|
136
136
|
get(key) {
|
|
137
137
|
assertCacheKey(key)
|
|
138
138
|
|
|
139
|
+
this.#prune()
|
|
140
|
+
|
|
139
141
|
const value = this.#findValue(key)
|
|
140
142
|
return value ? makeResult(value) : undefined
|
|
141
143
|
}
|
|
@@ -154,11 +156,7 @@ export class SqliteCacheStore {
|
|
|
154
156
|
assert(Number.isFinite(value.end))
|
|
155
157
|
assert(!body || body?.byteLength === value.end - value.start)
|
|
156
158
|
|
|
157
|
-
|
|
158
|
-
if (now > this.#deleteExpiredValuesTime + 60e3) {
|
|
159
|
-
this.#deleteExpiredValuesQuery.run(now)
|
|
160
|
-
this.#deleteExpiredValuesTime = now
|
|
161
|
-
}
|
|
159
|
+
this.#prune()
|
|
162
160
|
|
|
163
161
|
this.#insertValueQuery.run(
|
|
164
162
|
makeValueUrl(key),
|
|
@@ -178,6 +176,14 @@ export class SqliteCacheStore {
|
|
|
178
176
|
)
|
|
179
177
|
}
|
|
180
178
|
|
|
179
|
+
#prune() {
|
|
180
|
+
const now = getFastNow()
|
|
181
|
+
if (now > this.#deleteExpiredValuesTime) {
|
|
182
|
+
this.#deleteExpiredValuesQuery.run(this.#deleteExpiredValuesTime)
|
|
183
|
+
this.#deleteExpiredValuesTime += 60e3
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
|
|
181
187
|
/**
|
|
182
188
|
* @param {import('undici-types/cache-interceptor.d.ts').default.CacheKey} key
|
|
183
189
|
* @param {boolean} [canBeExpired=false]
|