Update proxy web3

This commit is contained in:
2025-10-06 02:36:03 +07:00
parent de48e758cf
commit fa292d1688
2 changed files with 47 additions and 12 deletions

View File

@@ -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

View File

@@ -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