Latest Release
- Repository: 0ceanSlim/grain
- Published on: 2025-07-27 15:54:26 UTC
- Version Tag: v0.4.11
- By: 0ceanSlim
- On GitHub: 0ceanSlim/grain/releases
Critical Reliability Fixes & Client Configuration
Released: [Release Date]
Commit: [Commit Hash]
Full Changelog: https://github.com/0ceanSlim/grain/compare/v0.4.1...v0.4.11
🐛 Critical Bug Fixes
Database Connection Stability 💪
- Fixed relay crashes when MongoDB temporarily becomes unavailable
- Added connection retry logic with configurable backoff to handle network interruptions
- Eliminated relay shutdowns caused by database reconnection failures
- Improved connection resilience preventing service interruption during database maintenance
Client Connectivity Resilience 🔗
- Fixed offline startup failures when default relays are unreachable
- Added graceful degradation - client now starts successfully even when external relays are down
- Eliminated blocking behavior that prevented GRAIN from starting without external connectivity
- Improved error handling for relay connection timeouts during startup
⚙️ New Client Configuration
Configurable Default Client Settings 🔧
- Complete client configuration now available in
config.yml
- Hot-reload support for client settings without server restart
- Customizable relay lists for the built-in web client
New Configuration Section
yaml
client:
default_relays:
- "wss://relay.damus.io"
- "wss://nos.lol"
- "wss://relay.nostr.band"
connection_timeout: 10 # seconds
read_timeout: 30 # seconds
write_timeout: 10 # seconds
max_connections: 10
retry_attempts: 3
retry_delay: 2 # seconds
keep_alive: true
user_agent: "grain-client/1.0"
Flexible Operation Modes
- Offline-capable startup - client initializes even when external relays are unreachable
- Automatic relay discovery using configured defaults
- Self-contained operation option by configuring localhost relay
- Hybrid connectivity with external relay fallback when available
🔧 Reliability Improvements
Database Resilience
- Connection retry mechanism prevents relay shutdown during temporary MongoDB outages
- Graceful error handling maintains relay operation during database connectivity issues
- Improved connection pooling with better timeout and retry configuration
- Background reconnection restores full functionality when database becomes available
Network Resilience
- Client starts offline when configured relays are unreachable at startup
- Non-blocking initialization prevents startup failures due to external dependency issues
- Improved timeout handling for relay connections with configurable retry behavior
- Reduced external dependencies for basic relay operation
📖 Documentation Updates
Configuration Guide
- New client configuration section with detailed explanations of all settings
- Offline operation documentation covering startup behavior and fallback modes
- Updated example configurations with new client settings and practical defaults
- Hot-reload documentation for runtime configuration changes
⚙️ Migration from v0.4.1
Zero-Downtime Upgrade
```bash
Backup current configuration
cp config.yml config.yml.backup
Replace executable - existing configs remain fully compatible
mv grain grain.old
Extract new release
Optional: Customize client settings in config.yml
Defaults are provided if client section is not present
```
Backward Compatibility
- No breaking changes - all existing v0.4.1 configurations work unchanged
- Optional client settings - sensible defaults used when not specified
- Automatic fallback to hardcoded defaults if client configuration is missing
🎯 Resolved Issues
Before This Release
- ❌ GRAIN would stop working when MongoDB became temporarily unavailable
- ❌ Relay would fail to start if external relays were unreachable
- ❌ Client configuration was hardcoded and not customizable
- ❌ Database reconnection failures caused permanent relay shutdown
After This Release
- ✅ GRAIN continues operating through temporary database outages
- ✅ Relay starts successfully even when external relays are offline
- ✅ Client behavior is fully configurable via YAML
- ✅ Automatic database reconnection prevents service interruption
🌟 Release Highlights
This patch release eliminates critical reliability issues that could make GRAIN unusable in production environments. Both database connectivity and external relay dependency problems are now handled gracefully.
Key Fixes: - Database resilience preventing relay crashes during MongoDB outages - Offline startup capability removing external relay dependencies - Configurable client behavior providing deployment flexibility - Production reliability with graceful error handling and automatic recovery
🔄 Production Impact
Improved Uptime
- No more relay crashes due to temporary database connectivity issues
- Reliable startup regardless of external relay availability
- Graceful degradation maintaining core functionality during outages
Operational Benefits
- Reduced maintenance overhead with automatic reconnection handling
- Flexible deployment options supporting air-gapped and offline scenarios
- Better monitoring with improved logging for connectivity events
This patch release addresses critical reliability issues that could prevent GRAIN from operating in production environments. The improved error handling and configurable client behavior make GRAIN significantly more robust and deployment-ready. 🚀
Full Changelog: https://github.com/0ceanSlim/grain/compare/v0.4.1...v0.4.11
Data updated on: 2025-08-09 14:47 UTC