Update proxy web3
This commit is contained in:
@@ -167,13 +167,20 @@ const plugin: FastifyPluginAsyncTypebox = async (fastify) => {
|
||||
const redisPassword = process.env.REDIS_PASSWORD;
|
||||
|
||||
console.log('Redis URL:', redisUrl)
|
||||
console.log('Redis Password:', redisPassword)
|
||||
console.log('Redis Password:', redisPassword ? '***' : 'none')
|
||||
|
||||
// Create Redis client configuration
|
||||
const redisConfig: any = { url: redisUrl };
|
||||
// if (redisPassword) {
|
||||
// redisConfig.password = redisPassword;
|
||||
// }
|
||||
// Create Redis client configuration with timeout
|
||||
const redisConfig: any = {
|
||||
url: redisUrl,
|
||||
socket: {
|
||||
connectTimeout: 3000, // 3 second connection timeout
|
||||
reconnectStrategy: false // Don't retry on health check
|
||||
}
|
||||
};
|
||||
|
||||
if (redisPassword) {
|
||||
redisConfig.password = redisPassword;
|
||||
}
|
||||
|
||||
redisClient = createClient(redisConfig);
|
||||
|
||||
@@ -182,9 +189,14 @@ const plugin: FastifyPluginAsyncTypebox = async (fastify) => {
|
||||
console.error('Redis health check error:', err);
|
||||
});
|
||||
|
||||
// Connect to Redis
|
||||
// Connect to Redis with timeout
|
||||
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;
|
||||
|
||||
// Test basic operations
|
||||
|
||||
@@ -34,10 +34,23 @@ async function initializeRedis() {
|
||||
const redisPassword = process.env.REDIS_PASSWORD
|
||||
|
||||
console.log('Redis URL:', redisUrl)
|
||||
console.log('Redis Password:', redisPassword)
|
||||
console.log('Redis Password:', redisPassword ? '***' : 'none')
|
||||
|
||||
// Create Redis client with password support
|
||||
const redisConfig: any = { url: redisUrl }
|
||||
// Create Redis client with password support and timeouts
|
||||
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) {
|
||||
redisConfig.password = redisPassword
|
||||
@@ -57,7 +70,17 @@ async function initializeRedis() {
|
||||
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) {
|
||||
console.error('Failed to connect to Redis:', error)
|
||||
// Fallback to in-memory storage if Redis is not available
|
||||
|
||||
Reference in New Issue
Block a user