Fix race condition when booting wings
This commit is contained in:
parent
5b241fdf36
commit
60212bb08e
|
@ -1,9 +1,9 @@
|
|||
package server
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"github.com/pterodactyl/wings/environment"
|
||||
"sync"
|
||||
"sync/atomic"
|
||||
)
|
||||
|
||||
// Defines the current resource usage for a given server instance. If a server is offline you
|
||||
|
@ -35,6 +35,14 @@ func (s *Server) Proc() *ResourceUsage {
|
|||
return &s.resources
|
||||
}
|
||||
|
||||
func (s *Server) emitProcUsage() {
|
||||
s.resources.mu.RLock()
|
||||
defer s.resources.mu.RUnlock()
|
||||
|
||||
b, _ := json.Marshal(s.resources)
|
||||
s.Events().Publish(StatsEvent, string(b))
|
||||
}
|
||||
|
||||
// Returns the servers current state.
|
||||
func (ru *ResourceUsage) getInternalState() string {
|
||||
ru.mu.RLock()
|
||||
|
@ -51,5 +59,7 @@ func (ru *ResourceUsage) setInternalState(state string) {
|
|||
}
|
||||
|
||||
func (ru *ResourceUsage) SetDisk(i int64) {
|
||||
atomic.SwapInt64(&ru.Disk, i)
|
||||
ru.mu.Lock()
|
||||
ru.Disk = i
|
||||
ru.mu.Unlock()
|
||||
}
|
||||
|
|
|
@ -103,10 +103,11 @@ func (s *Server) SetState(state string) error {
|
|||
// Reset the resource usage to 0 when the process fully stops so that all of the UI
|
||||
// views in the Panel correctly display 0.
|
||||
if state == system.ProcessOfflineState {
|
||||
s.resources.mu.Lock()
|
||||
s.resources.Empty()
|
||||
s.resources.mu.Unlock()
|
||||
|
||||
b, _ := json.Marshal(s.Proc())
|
||||
s.Events().Publish(StatsEvent, string(b))
|
||||
s.emitProcUsage()
|
||||
}
|
||||
|
||||
// If server was in an online state, and is now in an offline state we should handle
|
||||
|
|
Loading…
Reference in New Issue
Block a user