alby-hub/service/stop.go
Adithya Vardhan 4efe735acf
fix: prevent LN client access during shutdown (#2096)
* fix: prevent LN client access during shutdown

* chore: run mockery

* chore: push lnClientShuttingDown inside stopLNClient

* fix: use atomic bool for synced access
2026-02-27 15:45:09 +07:00

49 lines
1 KiB
Go

package service
import (
"fmt"
"github.com/getAlby/hub/events"
"github.com/getAlby/hub/logger"
)
func (svc *service) StopApp() {
if svc.appCancelFn != nil {
logger.Logger.Info("Stopping app...")
svc.appCancelFn()
svc.wg.Wait()
logger.Logger.Info("app stopped")
}
}
func (svc *service) stopLNClient() {
svc.lnClientShuttingDown.Store(true)
defer func() {
svc.lnClientShuttingDown.Store(false)
svc.wg.Done()
}()
if svc.lnClient == nil {
return
}
lnClient := svc.lnClient
svc.lnClient = nil
logger.Logger.Info("Shutting down LN client")
err := lnClient.Shutdown()
if err != nil {
logger.Logger.WithError(err).Error("Failed to stop LN client")
svc.eventPublisher.Publish(&events.Event{
Event: "nwc_node_stop_failed",
Properties: map[string]interface{}{
"error": fmt.Sprintf("%v", err),
},
})
return
}
logger.Logger.Info("Publishing node shutdown event")
svc.eventPublisher.Publish(&events.Event{
Event: "nwc_node_stopped",
})
logger.Logger.Info("LNClient stopped successfully")
}