Real Null
26a58fcabc
🚨 fix: Redis CA file handling ( #9692 )
...
* 🚨 fix: Critical Redis CA file handling bug that could crash app
🔧 Added safe error handling for Redis CA certificate file reading in cacheConfig.js
## 🐛 Problem
- fs.readFileSync() was called directly without error handling
- Missing or inaccessible REDIS_CA files would throw unhandled exceptions
- 💥 Application would crash during startup with cryptic filesystem errors
- ❌ No validation of file existence before attempting to read
## ✅ Solution
- ➕ Added getRedisCA() helper function with comprehensive error handling
- 🔍 Implemented fs.existsSync() check before file reading attempts
- 🛡️ Added try-catch block to handle filesystem errors gracefully
- 📝 Added informative warning/error logging for troubleshooting
- 🔄 Function returns null safely on any error condition
## 🎯 Benefits
- 🚫 Prevents application crashes from misconfigured CA certificate paths
- 🔍 Provides clear error messages for debugging certificate issues
- ✅ Maintains backward compatibility for valid certificate configurations
- 🚀 Improves production stability and deployment reliability
## 🧪 Testing Results
- ✅ Verified handling of missing REDIS_CA environment variable
- ✅ Tested with non-existent file paths (returns null with warning)
- ✅ Confirmed valid certificate files are read correctly
- ✅ Validated error handling for permission/access issues
🎉 This fix ensures LibreChat continues running regardless of Redis CA
certificate configuration problems, improving overall system reliability.
🏷️ Type: 🐛 Bug Fix
📊 Impact: 🔴 High (prevents application crashes)
🎯 Area: Cache Configuration, Redis Integration
* chore: Redis CA certificate handling with proper logging + JSDocs
* chore: Improve error logging for Redis CA certificate file read failure
---------
Co-authored-by: Danny Avila <danny@librechat.ai>
2025-09-18 20:33:40 -04:00
MarcAmick
ea3b671182
🔧 feat: Alternative DNS Lookup for AWS ElastiCache TLS Connections ( #9264 )
...
* added REDIS_USE_ALTERNATIVE_DNS_LOOKUP env variable to modify redis connection by adding dnsLookup
this is required when connecting to elasticache for ioredis
see "Special Note: Aws Elasticache Clusters with TLS" on this webpage: https://www.npmjs.com/package/ioredis
* added REDIS_USE_ALTERNATIVE_DNS_LOOKUP env variable to modify redis connection by adding dnsLookup
this is required when connecting to elasticache for ioredis
see "Special Note: Aws Elasticache Clusters with TLS" on this webpage: https://www.npmjs.com/package/ioredis
---------
Co-authored-by: Marc Amick <MarcAmick@jhu.edu>
2025-08-27 16:09:07 -04:00
Luís André
9b6395d955
🌐 feat: Configurable Redis Cluster Mode with Single URI Support ( #9039 )
...
* ✨ feat: Add support for enabling Redis cluster configuration
* ✨ feat: Enhance Redis client initialization to support cluster configuration without multiple URIs
* ✨ feat: Add tests for USE_REDIS_CLUSTER configuration and validation
* 🐞 fix: Remove unnecessary blank line in cacheConfig tests
2025-08-16 14:41:53 -04:00
Danny Avila
ec3cbca6e3
✨ feat: Enhance Redis Config and Error Handling ( #8709 )
...
* ✨ feat: Enhance Redis Config and Error Handling
- Added new Redis configuration options: `REDIS_RETRY_MAX_DELAY`, `REDIS_RETRY_MAX_ATTEMPTS`, `REDIS_CONNECT_TIMEOUT`, and `REDIS_ENABLE_OFFLINE_QUEUE` to improve connection resilience.
- Implemented error handling for Redis cache creation and session store initialization in `cacheFactory.js`.
- Enhanced logging for Redis client events and errors in `redisClients.js`.
- Updated `README.md` to document new Redis configuration options.
* chore: Add JSDoc comments to Redis configuration options in cacheConfig.js for improved clarity and documentation
* ci: update cacheFactory tests
* refactor: remove fallback
* fix: Improve error handling in Redis cache creation, re-throw errors when expected
2025-07-28 14:21:39 -04:00
Theo N. Truong
b050a0bf1e
✨ feat: Add Redis Ping Interval Configuration ( #8648 )
...
Co-authored-by: Danny Avila <danny@librechat.ai>
2025-07-25 11:00:02 -04:00
Theo N. Truong
21005b66cc
✨ feat: Add support for forced in-memory cache namespaces configuration ( #8586 )
...
* ✨ feat: Add support for forced in-memory cache keys configuration
* refactor: Update cache keys to use uppercase constants and moved cache for `librechat.yaml` into its own cache namespace (STATIC_CONFIG) and with a more descriptive key (LIBRECHAT_YAML_CONFIG)
2025-07-25 10:32:55 -04:00
Theo N. Truong
01b012a8fa
🏦 refactor: Centralize Caching & Redis Key Prefixing ( #8457 )
...
* 🔧 Overhauled caching feature:
- Refactored caching logic.
- Fixed redis prefix, namespace, tls, ttl, and cluster.
- Added REDIS_KEY_PREFIX_VAR
* # refactor: Rename redisCache to standardCache
* # Add Redis pinging mechanism to maintain connection.
* # docs: Add warning about Keyv Redis client prefix support
2025-07-15 18:24:31 -04:00