Implement daemon registry system (bd-07b8c8)
- Created global daemon registry at ~/.beads/registry.json - Daemons auto-register on start, unregister on graceful shutdown - DiscoverDaemons() now uses registry instead of filesystem scan - Instant daemon discovery (35ms vs indefinite hang) - Auto-cleanup of stale registry entries - Full test coverage Closes bd-07b8c8, bd-acb971c7
This commit is contained in:
@@ -17,6 +17,7 @@ import (
|
||||
|
||||
"github.com/spf13/cobra"
|
||||
"github.com/steveyegge/beads"
|
||||
"github.com/steveyegge/beads/internal/daemon"
|
||||
"github.com/steveyegge/beads/internal/rpc"
|
||||
"github.com/steveyegge/beads/internal/storage"
|
||||
"github.com/steveyegge/beads/internal/storage/sqlite"
|
||||
@@ -1434,6 +1435,32 @@ func runDaemonLoop(interval time.Duration, autoCommit, autoPush bool, logPath, p
|
||||
return
|
||||
}
|
||||
|
||||
// Register daemon in global registry
|
||||
registry, err := daemon.NewRegistry()
|
||||
if err != nil {
|
||||
log.log("Warning: failed to create registry: %v", err)
|
||||
} else {
|
||||
entry := daemon.RegistryEntry{
|
||||
WorkspacePath: workspacePath,
|
||||
SocketPath: socketPath,
|
||||
DatabasePath: daemonDBPath,
|
||||
PID: os.Getpid(),
|
||||
Version: Version,
|
||||
StartedAt: time.Now(),
|
||||
}
|
||||
if err := registry.Register(entry); err != nil {
|
||||
log.log("Warning: failed to register daemon: %v", err)
|
||||
} else {
|
||||
log.log("Registered in global registry")
|
||||
}
|
||||
// Ensure we unregister on exit
|
||||
defer func() {
|
||||
if err := registry.Unregister(workspacePath, os.Getpid()); err != nil {
|
||||
log.log("Warning: failed to unregister daemon: %v", err)
|
||||
}
|
||||
}()
|
||||
}
|
||||
|
||||
ticker := time.NewTicker(interval)
|
||||
defer ticker.Stop()
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ import (
|
||||
|
||||
var (
|
||||
// Version is the current version of bd (overridden by ldflags at build time)
|
||||
Version = "0.19.1"
|
||||
Version = "0.19.2"
|
||||
// Build can be set via ldflags at compile time
|
||||
Build = "dev"
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user