diff --git a/packages/envd/internal/services/process/handler/multiplex.go b/packages/envd/internal/services/process/handler/multiplex.go index 131f097981..ff699812db 100644 --- a/packages/envd/internal/services/process/handler/multiplex.go +++ b/packages/envd/internal/services/process/handler/multiplex.go @@ -1,6 +1,7 @@ package handler import ( + "slices" "sync" "sync/atomic" ) @@ -128,7 +129,8 @@ func (m *MultiplexedChannel[T]) remove(s *subscriber[T]) { for i, sub := range m.channels { if sub == s { - m.channels = append(m.channels[:i], m.channels[i+1:]...) + // New backing array so run()'s concurrent iteration is safe. + m.channels = slices.Concat(m.channels[:i], m.channels[i+1:]) return } diff --git a/packages/envd/pkg/version.go b/packages/envd/pkg/version.go index a5ccaf4cab..e251abd82f 100644 --- a/packages/envd/pkg/version.go +++ b/packages/envd/pkg/version.go @@ -1,3 +1,3 @@ package pkg -const Version = "0.5.17" +const Version = "0.5.18"