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)} }),