fix: remove DNS caching (#837)

* fix: remove DNS caching

DNS caching was initially implemented to avoid too many DNS requests, as Node.js does not cache
them. However, the cacheable-lookup library we used to implement this cache created more problems
than it solved, as it caused many unresolved DNS request errors that weren't occurring before.

* fix: add PNPM lock file to Prettier ignore list

* revert: prettier on PNPM
This commit is contained in:
Gauthier
2024-06-24 02:23:37 +02:00
committed by GitHub
parent 70b9cdde1a
commit 268c7df28e
4 changed files with 1 additions and 38 deletions

View File

@@ -3,6 +3,7 @@
dist/
config/
CHANGELOG.md
pnpm-lock.yaml
# assets
src/assets/

View File

@@ -46,7 +46,6 @@
"axios-rate-limit": "1.3.0",
"bcrypt": "5.1.0",
"bowser": "2.11.0",
"cacheable-lookup": "^7.0.0",
"connect-typeorm": "1.1.4",
"cookie-parser": "1.4.6",
"copy-to-clipboard": "3.3.3",

12
pnpm-lock.yaml generated
View File

@@ -52,9 +52,6 @@ importers:
bowser:
specifier: 2.11.0
version: 2.11.0
cacheable-lookup:
specifier: ^7.0.0
version: 7.0.0
connect-typeorm:
specifier: 1.1.4
version: 1.1.4(typeorm@0.3.12(sqlite3@5.1.4(encoding@0.1.13))(ts-node@10.9.1(@swc/core@1.6.5(@swc/helpers@0.5.11))(@types/node@17.0.36)(typescript@4.9.5)))
@@ -5764,13 +5761,6 @@ packages:
}
engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 }
cacheable-lookup@7.0.0:
resolution:
{
integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==,
}
engines: { node: '>=14.16' }
cachedir@2.3.0:
resolution:
{
@@ -19815,8 +19805,6 @@ snapshots:
transitivePeerDependencies:
- bluebird
cacheable-lookup@7.0.0: {}
cachedir@2.3.0: {}
cachedir@2.4.0: {}

View File

@@ -23,25 +23,19 @@ import imageproxy from '@server/routes/imageproxy';
import { getAppVersion } from '@server/utils/appVersion';
import restartFlag from '@server/utils/restartFlag';
import { getClientIp } from '@supercharge/request-ip';
import type CacheableLookupType from 'cacheable-lookup';
import { TypeormStore } from 'connect-typeorm/out';
import cookieParser from 'cookie-parser';
import csurf from 'csurf';
import { lookup } from 'dns';
import type { NextFunction, Request, Response } from 'express';
import express from 'express';
import * as OpenApiValidator from 'express-openapi-validator';
import type { Store } from 'express-session';
import session from 'express-session';
import next from 'next';
import http from 'node:http';
import https from 'node:https';
import path from 'path';
import swaggerUi from 'swagger-ui-express';
import YAML from 'yamljs';
const _importDynamic = new Function('modulePath', 'return import(modulePath)');
const API_SPEC_PATH = path.join(__dirname, '../overseerr-api.yml');
logger.info(`Starting Overseerr version ${getAppVersion()}`);
@@ -52,25 +46,6 @@ const handle = app.getRequestHandler();
app
.prepare()
.then(async () => {
const CacheableLookup = (await _importDynamic('cacheable-lookup'))
.default as typeof CacheableLookupType;
const cacheable = new CacheableLookup();
const originalLookup = cacheable.lookup;
// if hostname is localhost use dns.lookup instead of cacheable-lookup
cacheable.lookup = (...args: any) => {
const [hostname] = args;
if (hostname === 'localhost') {
lookup(...(args as Parameters<typeof lookup>));
} else {
originalLookup(...(args as Parameters<typeof originalLookup>));
}
};
cacheable.install(http.globalAgent);
cacheable.install(https.globalAgent);
const dbConnection = await dataSource.initialize();
// Run migrations in production