1
0
mirror of https://github.com/amir20/dozzle.git synced 2025-12-21 13:23:07 +01:00

fix: tries to fix nil pointer when container for event is not there

This commit is contained in:
Amir Raminfar
2025-03-05 08:44:04 -08:00
parent bb4dca2386
commit 36588f0937
2 changed files with 36 additions and 33 deletions

View File

@@ -1,7 +1,7 @@
/* eslint-disable */
/* prettier-ignore */
// @ts-nocheck
// Generated by unplugin-vue-router. ‼️ DO NOT MODIFY THIS FILE ‼️
// Generated by unplugin-vue-router. \u203C\uFE0F DO NOT MODIFY THIS FILE \u203C\uFE0F
// It's recommended to commit this file.
// Make sure to add this file to your tsconfig.json file as an "includes" or "files" entry.

View File

@@ -182,7 +182,7 @@ func (s *ContainerStore) FindContainer(id string, labels ContainerLabels) (Conta
return &newContainer, false
} else {
log.Error().Err(err).Msg("failed to fetch container")
return c, false
return c, true
}
}
return c, false
@@ -313,39 +313,42 @@ func (s *ContainerStore) init() {
s.containers.Delete(event.ActorID)
case "update":
started := false
updatedContainer, _ := s.containers.Compute(event.ActorID, func(c *Container, loaded bool) (*Container, bool) {
if loaded {
newContainer := event.Container
if newContainer.State == "running" && c.State != "running" {
started = true
if event.Container == nil {
log.Error().Interface("event", event).Msg("container update event with nil container")
} else {
started := false
updatedContainer, _ := s.containers.Compute(event.ActorID, func(c *Container, loaded bool) (*Container, bool) {
if loaded {
newContainer := event.Container
if newContainer.State == "running" && c.State != "running" {
started = true
}
c.Name = newContainer.Name
c.State = newContainer.State
c.Labels = newContainer.Labels
c.StartedAt = newContainer.StartedAt
c.FinishedAt = newContainer.FinishedAt
c.Created = newContainer.Created
c.Host = newContainer.Host
return c, false
} else {
return c, true
}
c.Name = newContainer.Name
c.State = newContainer.State
c.Labels = newContainer.Labels
c.StartedAt = newContainer.StartedAt
c.FinishedAt = newContainer.FinishedAt
c.Created = newContainer.Created
c.Host = newContainer.Host
return c, false
} else {
return c, true
}
})
if started {
s.subscribers.Range(func(ctx context.Context, events chan<- ContainerEvent) bool {
select {
case events <- ContainerEvent{
Name: "start",
ActorID: updatedContainer.ID,
Host: updatedContainer.Host,
}:
case <-ctx.Done():
s.subscribers.Delete(ctx)
}
return true
})
if started {
s.subscribers.Range(func(ctx context.Context, events chan<- ContainerEvent) bool {
select {
case events <- ContainerEvent{
Name: "start",
ActorID: updatedContainer.ID,
Host: updatedContainer.Host,
}:
case <-ctx.Done():
s.subscribers.Delete(ctx)
}
return true
})
}
}
case "die":