Skip to content

Commit

Permalink
Jobs Status
Browse files Browse the repository at this point in the history
  • Loading branch information
Plakhotnikov Vladimir committed Jun 8, 2023
1 parent 00cf06b commit da43228
Showing 1 changed file with 48 additions and 0 deletions.
48 changes: 48 additions & 0 deletions status.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
package jobs

import (
"net/http"

"github.com/roadrunner-server/api/v4/plugins/v1/status"
"github.com/roadrunner-server/sdk/v4/fsm"
)

// Status return status of the particular plugin
func (p *Plugin) Status() (*status.Status, error) {
p.mu.RLock()
defer p.mu.RUnlock()

workers := p.workersPool.Workers()
for i := 0; i < len(workers); i++ {
if workers[i].State().IsActive() {
return &status.Status{
Code: http.StatusOK,
}, nil
}
}
// if there are no workers, threat this as error
return &status.Status{
Code: http.StatusServiceUnavailable,
}, nil
}

// Ready return readiness status of the particular plugin
func (p *Plugin) Ready() (*status.Status, error) {
p.mu.RLock()
defer p.mu.RUnlock()

workers := p.workersPool.Workers()
for i := 0; i < len(workers); i++ {
// If state of the worker is ready (at least 1)
// we assume, that plugin's worker pool is ready
if workers[i].State().Compare(fsm.StateReady) {
return &status.Status{
Code: http.StatusOK,
}, nil
}
}
// if there are no workers, threat this as no content error
return &status.Status{
Code: http.StatusServiceUnavailable,
}, nil
}

0 comments on commit da43228

Please sign in to comment.