From 21aa12753402d6132223643f7f26b06cbe46b3ae Mon Sep 17 00:00:00 2001 From: Joe Lombrozo Date: Thu, 9 Apr 2026 15:58:46 -0700 Subject: [PATCH 1/3] redis is a required part of our infra --- packages/orchestrator/pkg/factories/run.go | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/packages/orchestrator/pkg/factories/run.go b/packages/orchestrator/pkg/factories/run.go index 0a07b39e7d..6627f5b419 100644 --- a/packages/orchestrator/pkg/factories/run.go +++ b/packages/orchestrator/pkg/factories/run.go @@ -383,17 +383,17 @@ func run(config cfg.Config, opts Options) (success bool) { RedisTLSCABase64: config.RedisTLSCABase64, PoolSize: config.RedisPoolSize, }) - if err != nil && !errors.Is(err, sharedFactories.ErrRedisDisabled) { + if err != nil { logger.L().Fatal(ctx, "Could not connect to Redis", zap.Error(err)) - } else if err == nil { - closers = append(closers, closer{"redis client", func(context.Context) error { - return sharedFactories.CloseCleanly(redisClient) - }}) } + closers = append(closers, closer{"redis client", func(context.Context) error { + return sharedFactories.CloseCleanly(redisClient) + }}) + peerRegistry := peerclient.NopRegistry() peerResolver := peerclient.NopResolver() - if nodeAddress := config.NodeAddress(); redisClient != nil && nodeAddress != nil { + if nodeAddress := config.NodeAddress(); nodeAddress != nil { peerRegistry = peerclient.NewRedisRegistry(redisClient, *nodeAddress) peerResolver = peerclient.NewResolver(peerRegistry, *nodeAddress) } @@ -453,11 +453,9 @@ func run(config cfg.Config, opts Options) (success bool) { logger.L().Info(ctx, "cgroup accounting enabled", zap.String("root", cgroup.RootCgroupPath)) // Redis sandbox events delivery target - if redisClient != nil { - sbxEventsDeliveryRedis := event.NewRedisStreamsDelivery[event.SandboxEvent](redisClient, event.SandboxEventsStreamName) - sbxEventsDeliveryTargets = append(sbxEventsDeliveryTargets, sbxEventsDeliveryRedis) - closers = append(closers, closer{"sandbox events delivery for redis", sbxEventsDeliveryRedis.Close}) - } + sbxEventsDeliveryRedis := event.NewRedisStreamsDelivery[event.SandboxEvent](redisClient, event.SandboxEventsStreamName) + sbxEventsDeliveryTargets = append(sbxEventsDeliveryTargets, sbxEventsDeliveryRedis) + closers = append(closers, closer{"sandbox events delivery for redis", sbxEventsDeliveryRedis.Close}) // sandbox observer sandboxObserver, err := metrics.NewSandboxObserver(ctx, nodeID, serviceName, commitSHA, version, serviceInstanceID, sandboxes) From b3da391b59ce8c70d913567900fafc322b07eca9 Mon Sep 17 00:00:00 2001 From: Joe Lombrozo Date: Thu, 16 Apr 2026 15:25:11 -0700 Subject: [PATCH 2/3] fail client-proxy if redis is unconfigured --- packages/client-proxy/main.go | 9 ++------- packages/shared/pkg/factories/redis.go | 4 ++-- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/packages/client-proxy/main.go b/packages/client-proxy/main.go index 070f68889c..58b2a71bf0 100644 --- a/packages/client-proxy/main.go +++ b/packages/client-proxy/main.go @@ -124,14 +124,9 @@ func run() int { }() catalog = e2bcatalog.NewRedisSandboxCatalog(redisClient) } else { - if !errors.Is(err, factories.ErrRedisDisabled) { - l.Error(ctx, "Failed to create redis client", zap.Error(err)) + l.Error(ctx, "Failed to create redis client", zap.Error(err)) - return 1 - } - - l.Warn(ctx, "Redis environment variable is not set, will fallback to in-memory sandboxes catalog that works only with one instance setup") - catalog = e2bcatalog.NewMemorySandboxesCatalog() + return 1 } info := &internal.ServiceInfo{} diff --git a/packages/shared/pkg/factories/redis.go b/packages/shared/pkg/factories/redis.go index b49f97e254..fe1082cb9d 100644 --- a/packages/shared/pkg/factories/redis.go +++ b/packages/shared/pkg/factories/redis.go @@ -16,7 +16,7 @@ import ( "github.com/e2b-dev/infra/packages/shared/pkg/logger" ) -var ErrRedisDisabled = errors.New("redis is disabled") +var ErrRedisUnconfigured = errors.New("redis is not configured") type RedisConfig struct { RedisURL string @@ -97,7 +97,7 @@ func NewRedisClient(ctx context.Context, config RedisConfig) (redis.UniversalCli redisClient = redis.NewClient(opts) default: - return nil, ErrRedisDisabled + return nil, ErrRedisUnconfigured } // Enable tracing From 767570f27447e94bccb00f1adb6c4915d5863a99 Mon Sep 17 00:00:00 2001 From: Joe Lombrozo Date: Thu, 16 Apr 2026 15:28:49 -0700 Subject: [PATCH 3/3] fix the error message --- packages/orchestrator/pkg/factories/run.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/orchestrator/pkg/factories/run.go b/packages/orchestrator/pkg/factories/run.go index 6627f5b419..7361f7b53c 100644 --- a/packages/orchestrator/pkg/factories/run.go +++ b/packages/orchestrator/pkg/factories/run.go @@ -384,7 +384,7 @@ func run(config cfg.Config, opts Options) (success bool) { PoolSize: config.RedisPoolSize, }) if err != nil { - logger.L().Fatal(ctx, "Could not connect to Redis", zap.Error(err)) + logger.L().Fatal(ctx, "Failed to create redis client", zap.Error(err)) } closers = append(closers, closer{"redis client", func(context.Context) error {