Skip to content

Commit be20e73

Browse files
committed
start/stop + default port
1 parent df40d79 commit be20e73

File tree

2 files changed

+39
-18
lines changed

2 files changed

+39
-18
lines changed

dbos/admin-server.go

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ type AdminServer struct {
1111
server *http.Server
1212
}
1313

14-
func NewAdminServer() *AdminServer {
14+
func NewAdminServer(port int) *AdminServer {
1515
mux := http.NewServeMux()
16-
16+
1717
// Health endpoint
1818
mux.HandleFunc("/dbos-healthz", func(w http.ResponseWriter, r *http.Request) {
1919
w.Header().Set("Content-Type", "application/json")
@@ -22,7 +22,7 @@ func NewAdminServer() *AdminServer {
2222
})
2323

2424
server := &http.Server{
25-
Addr: ":3001",
25+
Addr: fmt.Sprintf(":%d", port),
2626
Handler: mux,
2727
}
2828

@@ -33,27 +33,27 @@ func NewAdminServer() *AdminServer {
3333

3434
func (as *AdminServer) Start() error {
3535
getLogger().Info("Starting admin server", "port", 3001)
36-
36+
3737
go func() {
3838
if err := as.server.ListenAndServe(); err != nil && err != http.ErrServerClosed {
3939
getLogger().Error("Admin server error", "error", err)
4040
}
4141
}()
42-
42+
4343
return nil
4444
}
4545

4646
func (as *AdminServer) Shutdown() error {
4747
getLogger().Info("Shutting down admin server")
48-
48+
4949
ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second)
5050
defer cancel()
51-
51+
5252
if err := as.server.Shutdown(ctx); err != nil {
5353
getLogger().Error("Admin server shutdown error", "error", err)
5454
return fmt.Errorf("failed to shutdown admin server: %w", err)
5555
}
56-
56+
5757
getLogger().Info("Admin server shutdown complete")
5858
return nil
59-
}
59+
}

dbos/dbos.go

Lines changed: 30 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,10 @@ import (
1616
)
1717

1818
var (
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

2425
func 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

6769
var dbos *executor
@@ -89,7 +91,7 @@ func getLogger() *slog.Logger {
8991

9092
type config struct {
9193
logger *slog.Logger
92-
adminServer *AdminServer
94+
adminServer bool
9395
}
9496

9597
type LaunchOption func(*config)
@@ -102,11 +104,7 @@ func WithLogger(logger *slog.Logger) LaunchOption {
102104

103105
func 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

Comments
 (0)