From 6c11eb9c2e53f1bb81c30a3ff987100f5373be6e Mon Sep 17 00:00:00 2001 From: Vlad <13818348+walldiss@users.noreply.github.com> Date: Tue, 4 Jun 2024 17:45:45 +0500 Subject: [PATCH] fix(share/pruner) enable Light node pruner service (#3455) Fixes 2 issues that prevented Light pruner service from launching: - pruning flag was not parsed by Light node - Pruner service was not provided to Light node --- cmd/util.go | 10 ++-------- nodebuilder/pruner/module.go | 33 ++++++++++++++++++--------------- 2 files changed, 20 insertions(+), 23 deletions(-) diff --git a/cmd/util.go b/cmd/util.go index cf48b00e78..805f67b7eb 100644 --- a/cmd/util.go +++ b/cmd/util.go @@ -119,20 +119,14 @@ func PersistentPreRunEnv(cmd *cobra.Command, nodeType node.Type, _ []string) err rpc_cfg.ParseFlags(cmd, &cfg.RPC) gateway.ParseFlags(cmd, &cfg.Gateway) + pruner.ParseFlags(cmd, &cfg.Pruner) switch nodeType { - case node.Light: + case node.Light, node.Full: err = header.ParseFlags(cmd, &cfg.Header) if err != nil { return err } - case node.Full: - err = header.ParseFlags(cmd, &cfg.Header) - if err != nil { - return err - } - pruner.ParseFlags(cmd, &cfg.Pruner) case node.Bridge: - pruner.ParseFlags(cmd, &cfg.Pruner) default: panic(fmt.Sprintf("invalid node type: %v", nodeType)) } diff --git a/nodebuilder/pruner/module.go b/nodebuilder/pruner/module.go index d6234e258b..aeae1cfca3 100644 --- a/nodebuilder/pruner/module.go +++ b/nodebuilder/pruner/module.go @@ -6,12 +6,12 @@ import ( "go.uber.org/fx" "github.com/celestiaorg/celestia-node/core" + "github.com/celestiaorg/celestia-node/libs/fxutil" "github.com/celestiaorg/celestia-node/nodebuilder/node" "github.com/celestiaorg/celestia-node/pruner" "github.com/celestiaorg/celestia-node/pruner/archival" "github.com/celestiaorg/celestia-node/pruner/full" "github.com/celestiaorg/celestia-node/pruner/light" - "github.com/celestiaorg/celestia-node/share/eds" ) func ConstructModule(tp node.Type, cfg *Config) fx.Option { @@ -20,8 +20,7 @@ func ConstructModule(tp node.Type, cfg *Config) fx.Option { availWindow(tp, cfg.EnableService), ) - fullAndBridgeComponents := fx.Options( - baseComponents, + prunerService := fx.Options( fx.Provide(fx.Annotate( newPrunerService, fx.OnStart(func(ctx context.Context, p *pruner.Service) error { @@ -34,31 +33,35 @@ func ConstructModule(tp node.Type, cfg *Config) fx.Option { // This is necessary to invoke the pruner service as independent thanks to a // quirk in FX. fx.Invoke(func(_ *pruner.Service) {}), - fx.Provide(func(store *eds.Store) pruner.Pruner { - return full.NewPruner(store) - }), ) switch tp { - // TODO: Eventually, light nodes will be capable of pruning samples - // in which case, this can be enabled. case node.Light: + if cfg.EnableService { + return fx.Module("prune", + baseComponents, + prunerService, + fx.Provide(light.NewPruner), + ) + } return fx.Module("prune", baseComponents, - fx.Provide(light.NewPruner), ) case node.Full: - opts := baseComponents if cfg.EnableService { - opts = fullAndBridgeComponents + return fx.Module("prune", + baseComponents, + prunerService, + fxutil.ProvideAs(full.NewPruner, new(pruner.Pruner)), + ) } - return fx.Module("prune", - opts, - ) + return fx.Module("prune", baseComponents) case node.Bridge: if cfg.EnableService { return fx.Module("prune", - fullAndBridgeComponents, + baseComponents, + prunerService, + fxutil.ProvideAs(full.NewPruner, new(pruner.Pruner)), fx.Provide(func(window pruner.AvailabilityWindow) []core.Option { return []core.Option{core.WithAvailabilityWindow(window)} }),