Don't trigger a panic condition decoding event stats; closes pterodactyl/panel#3941
This commit is contained in:
parent
72476c61ec
commit
879dcd8df5
|
@ -55,12 +55,16 @@ func (b *Bus) Publish(topic string, data interface{}) {
|
||||||
// MustDecode decodes the event byte slice back into an events.Event struct or
|
// MustDecode decodes the event byte slice back into an events.Event struct or
|
||||||
// panics if an error is encountered during this process.
|
// panics if an error is encountered during this process.
|
||||||
func MustDecode(data []byte) (e Event) {
|
func MustDecode(data []byte) (e Event) {
|
||||||
MustDecodeTo(data, &e)
|
if err := DecodeTo(data, &e); err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func MustDecodeTo(data []byte, v interface{}) {
|
// DecodeTo decodes a byte slice of event data into the given interface.
|
||||||
|
func DecodeTo(data []byte, v interface{}) error {
|
||||||
if err := json.Unmarshal(data, &v); err != nil {
|
if err := json.Unmarshal(data, &v); err != nil {
|
||||||
panic(errors.Wrap(err, "events: failed to decode event data into interface"))
|
return errors.Wrap(err, "events: failed to decode byte slice")
|
||||||
}
|
}
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
|
@ -101,7 +101,10 @@ func (s *Server) StartEventListeners() {
|
||||||
Topic string
|
Topic string
|
||||||
Data environment.Stats
|
Data environment.Stats
|
||||||
}
|
}
|
||||||
events.MustDecodeTo(v, &stats)
|
if err := events.DecodeTo(v, &stats); err != nil {
|
||||||
|
s.Log().WithField("error", err).Warn("failed to decode server resource event")
|
||||||
|
return
|
||||||
|
}
|
||||||
s.resources.UpdateStats(stats.Data)
|
s.resources.UpdateStats(stats.Data)
|
||||||
// If there is no disk space available at this point, trigger the server
|
// If there is no disk space available at this point, trigger the server
|
||||||
// disk limiter logic which will start to stop the running instance.
|
// disk limiter logic which will start to stop the running instance.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user