@@ -16,9 +16,10 @@ import (
1616)
1717
1818var (
19- APP_VERSION string
20- EXECUTOR_ID string
21- APP_ID string
19+ APP_VERSION string
20+ EXECUTOR_ID string
21+ APP_ID string
22+ DEFAULT_ADMIN_SERVER_PORT = 3001
2223)
2324
2425func computeApplicationVersion () string {
@@ -62,6 +63,7 @@ type executor struct {
6263 queueRunnerCtx context.Context
6364 queueRunnerCancelFunc context.CancelFunc
6465 queueRunnerDone chan struct {}
66+ adminServer * AdminServer
6567}
6668
6769var dbos * executor
@@ -89,7 +91,7 @@ func getLogger() *slog.Logger {
8991
9092type config struct {
9193 logger * slog.Logger
92- adminServer * AdminServer
94+ adminServer bool
9395}
9496
9597type LaunchOption func (* config )
@@ -102,11 +104,7 @@ func WithLogger(logger *slog.Logger) LaunchOption {
102104
103105func WithAdminServer () LaunchOption {
104106 return func (config * config ) {
105- if config .adminServer == nil {
106- config .adminServer = NewAdminServer ()
107- } else {
108- getLogger ().Warn ("Admin server already initialized, ignoring duplicate call" )
109- }
107+ config .adminServer = true
110108 }
111109}
112110
@@ -149,6 +147,18 @@ func Launch(options ...LaunchOption) error {
149147
150148 systemDB .Launch (context .Background ())
151149
150+ // Start the admin server if configured
151+ var adminServer * AdminServer
152+ if config .adminServer {
153+ adminServer = NewAdminServer (DEFAULT_ADMIN_SERVER_PORT )
154+ err := adminServer .Start ()
155+ if err != nil {
156+ logger .Error ("Failed to start admin server" , "error" , err )
157+ return NewInitializationError (fmt .Sprintf ("failed to start admin server: %v" , err ))
158+ }
159+ logger .Info ("Admin server started" , "port" , DEFAULT_ADMIN_SERVER_PORT )
160+ }
161+
152162 // Create context with cancel function for queue runner
153163 ctx , cancel := context .WithCancel (context .Background ())
154164
@@ -157,6 +167,7 @@ func Launch(options ...LaunchOption) error {
157167 queueRunnerCtx : ctx ,
158168 queueRunnerCancelFunc : cancel ,
159169 queueRunnerDone : make (chan struct {}),
170+ adminServer : adminServer ,
160171 }
161172
162173 // Start the queue runner in a goroutine
@@ -218,6 +229,16 @@ func Shutdown() {
218229 dbos .systemDB = nil
219230 }
220231
232+ if dbos .adminServer != nil {
233+ err := dbos .adminServer .Shutdown ()
234+ if err != nil {
235+ getLogger ().Error ("Failed to shutdown admin server" , "error" , err )
236+ } else {
237+ getLogger ().Info ("Admin server shutdown complete" )
238+ }
239+ dbos .adminServer = nil
240+ }
241+
221242 if logger != nil {
222243 logger = nil
223244 }
0 commit comments