Update proxy web3
This commit is contained in:
@@ -167,13 +167,20 @@ const plugin: FastifyPluginAsyncTypebox = async (fastify) => {
|
|||||||
const redisPassword = process.env.REDIS_PASSWORD;
|
const redisPassword = process.env.REDIS_PASSWORD;
|
||||||
|
|
||||||
console.log('Redis URL:', redisUrl)
|
console.log('Redis URL:', redisUrl)
|
||||||
console.log('Redis Password:', redisPassword)
|
console.log('Redis Password:', redisPassword ? '***' : 'none')
|
||||||
|
|
||||||
// Create Redis client configuration
|
// Create Redis client configuration with timeout
|
||||||
const redisConfig: any = { url: redisUrl };
|
const redisConfig: any = {
|
||||||
// if (redisPassword) {
|
url: redisUrl,
|
||||||
// redisConfig.password = redisPassword;
|
socket: {
|
||||||
// }
|
connectTimeout: 3000, // 3 second connection timeout
|
||||||
|
reconnectStrategy: false // Don't retry on health check
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
if (redisPassword) {
|
||||||
|
redisConfig.password = redisPassword;
|
||||||
|
}
|
||||||
|
|
||||||
redisClient = createClient(redisConfig);
|
redisClient = createClient(redisConfig);
|
||||||
|
|
||||||
@@ -182,9 +189,14 @@ const plugin: FastifyPluginAsyncTypebox = async (fastify) => {
|
|||||||
console.error('Redis health check error:', err);
|
console.error('Redis health check error:', err);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Connect to Redis
|
// Connect to Redis with timeout
|
||||||
const startTime = Date.now();
|
const startTime = Date.now();
|
||||||
await redisClient.connect();
|
await Promise.race([
|
||||||
|
redisClient.connect(),
|
||||||
|
new Promise((_, reject) =>
|
||||||
|
setTimeout(() => reject(new Error('Connection timeout after 3s')), 3000)
|
||||||
|
)
|
||||||
|
]);
|
||||||
const connectTime = Date.now() - startTime;
|
const connectTime = Date.now() - startTime;
|
||||||
|
|
||||||
// Test basic operations
|
// Test basic operations
|
||||||
|
|||||||
@@ -34,10 +34,23 @@ async function initializeRedis() {
|
|||||||
const redisPassword = process.env.REDIS_PASSWORD
|
const redisPassword = process.env.REDIS_PASSWORD
|
||||||
|
|
||||||
console.log('Redis URL:', redisUrl)
|
console.log('Redis URL:', redisUrl)
|
||||||
console.log('Redis Password:', redisPassword)
|
console.log('Redis Password:', redisPassword ? '***' : 'none')
|
||||||
|
|
||||||
// Create Redis client with password support
|
// Create Redis client with password support and timeouts
|
||||||
const redisConfig: any = { url: redisUrl }
|
const redisConfig: any = {
|
||||||
|
url: redisUrl,
|
||||||
|
socket: {
|
||||||
|
connectTimeout: 5000, // 5 second connection timeout
|
||||||
|
reconnectStrategy: (retries: number) => {
|
||||||
|
// Exponential backoff: 50ms, 100ms, 200ms, 400ms, etc., max 3000ms
|
||||||
|
if (retries > 10) {
|
||||||
|
console.error('Redis: Max reconnection attempts reached')
|
||||||
|
return new Error('Max reconnection attempts reached');
|
||||||
|
}
|
||||||
|
return Math.min(retries * 50, 3000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (redisPassword) {
|
if (redisPassword) {
|
||||||
redisConfig.password = redisPassword
|
redisConfig.password = redisPassword
|
||||||
@@ -57,7 +70,17 @@ async function initializeRedis() {
|
|||||||
console.log('Redis client ready for idempotency operations')
|
console.log('Redis client ready for idempotency operations')
|
||||||
})
|
})
|
||||||
|
|
||||||
await redisClient.connect()
|
redisClient.on('reconnecting', () => {
|
||||||
|
console.log('Redis client reconnecting...')
|
||||||
|
})
|
||||||
|
|
||||||
|
// Connect with timeout
|
||||||
|
await Promise.race([
|
||||||
|
redisClient.connect(),
|
||||||
|
new Promise((_, reject) =>
|
||||||
|
setTimeout(() => reject(new Error('Redis connection timeout after 5s')), 5000)
|
||||||
|
)
|
||||||
|
])
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('Failed to connect to Redis:', error)
|
console.error('Failed to connect to Redis:', error)
|
||||||
// Fallback to in-memory storage if Redis is not available
|
// Fallback to in-memory storage if Redis is not available
|
||||||
|
|||||||
Reference in New Issue
Block a user