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