@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.
@@ -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
- this.#logger?.error({ err }, 'failed to set cache entry')
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
- opts.logger?.error({ err }, 'failed to get cache entry')
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
- const now = getFastNow()
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]
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nxtedition/nxt-undici",
3
- "version": "6.2.28",
3
+ "version": "6.2.30",
4
4
  "license": "MIT",
5
5
  "author": "Robert Nagy <robert.nagy@boffins.se>",
6
6
  "main": "lib/index.js",