diff --git a/ipfs-cluster-service/configs.go b/ipfs-cluster-service/configs.go index add3ed8b..0115b909 100644 --- a/ipfs-cluster-service/configs.go +++ b/ipfs-cluster-service/configs.go @@ -15,18 +15,20 @@ import ( "github.com/ipfs/ipfs-cluster/monitor/basic" "github.com/ipfs/ipfs-cluster/monitor/pubsubmon" "github.com/ipfs/ipfs-cluster/pintracker/maptracker" + "github.com/ipfs/ipfs-cluster/pintracker/stateless" ) type cfgs struct { - clusterCfg *ipfscluster.Config - apiCfg *rest.Config - ipfshttpCfg *ipfshttp.Config - consensusCfg *raft.Config - trackerCfg *maptracker.Config - monCfg *basic.Config - pubsubmonCfg *pubsubmon.Config - diskInfCfg *disk.Config - numpinInfCfg *numpin.Config + clusterCfg *ipfscluster.Config + apiCfg *rest.Config + ipfshttpCfg *ipfshttp.Config + consensusCfg *raft.Config + maptrackerCfg *maptracker.Config + statelessTrackerCfg *stateless.Config + monCfg *basic.Config + pubsubmonCfg *pubsubmon.Config + diskInfCfg *disk.Config + numpinInfCfg *numpin.Config } func makeConfigs() (*config.Manager, *cfgs) { @@ -35,7 +37,8 @@ func makeConfigs() (*config.Manager, *cfgs) { apiCfg := &rest.Config{} ipfshttpCfg := &ipfshttp.Config{} consensusCfg := &raft.Config{} - trackerCfg := &maptracker.Config{} + maptrackerCfg := &maptracker.Config{} + statelessCfg := &stateless.Config{} monCfg := &basic.Config{} pubsubmonCfg := &pubsubmon.Config{} diskInfCfg := &disk.Config{} @@ -44,7 +47,8 @@ func makeConfigs() (*config.Manager, *cfgs) { cfg.RegisterComponent(config.API, apiCfg) cfg.RegisterComponent(config.IPFSConn, ipfshttpCfg) cfg.RegisterComponent(config.Consensus, consensusCfg) - cfg.RegisterComponent(config.PinTracker, trackerCfg) + cfg.RegisterComponent(config.PinTracker, maptrackerCfg) + cfg.RegisterComponent(config.PinTracker, statelessCfg) cfg.RegisterComponent(config.Monitor, monCfg) cfg.RegisterComponent(config.Monitor, pubsubmonCfg) cfg.RegisterComponent(config.Informer, diskInfCfg) @@ -54,7 +58,8 @@ func makeConfigs() (*config.Manager, *cfgs) { apiCfg, ipfshttpCfg, consensusCfg, - trackerCfg, + maptrackerCfg, + statelessCfg, monCfg, pubsubmonCfg, diskInfCfg, diff --git a/ipfs-cluster-service/daemon.go b/ipfs-cluster-service/daemon.go index 38044124..1ace213e 100644 --- a/ipfs-cluster-service/daemon.go +++ b/ipfs-cluster-service/daemon.go @@ -22,6 +22,7 @@ import ( "github.com/ipfs/ipfs-cluster/monitor/basic" "github.com/ipfs/ipfs-cluster/monitor/pubsubmon" "github.com/ipfs/ipfs-cluster/pintracker/maptracker" + "github.com/ipfs/ipfs-cluster/pintracker/stateless" "github.com/ipfs/ipfs-cluster/pstoremgr" "github.com/ipfs/ipfs-cluster/state/mapstate" @@ -125,7 +126,7 @@ func createCluster( ) checkErr("creating consensus component", err) - tracker := maptracker.NewMapPinTracker(cfgs.trackerCfg, host.ID()) + tracker := setupPinTracker(c.String("pintracker"), host, cfgs.maptrackerCfg, cfgs.statelessTrackerCfg) mon := setupMonitor(c.String("monitor"), host, cfgs.monCfg, cfgs.pubsubmonCfg) informer, alloc := setupAllocation(c.String("alloc"), cfgs.diskInfCfg, cfgs.numpinInfCfg) @@ -238,10 +239,12 @@ func setupMonitor( case "basic": mon, err := basic.NewMonitor(basicCfg) checkErr("creating monitor", err) + logger.Debug("basic monitor loaded") return mon case "pubsub": mon, err := pubsubmon.New(h, pubsubCfg) checkErr("creating monitor", err) + logger.Debug("pubsub monitor loaded") return mon default: err := errors.New("unknown monitor type") @@ -250,3 +253,25 @@ func setupMonitor( } } + +func setupPinTracker( + name string, + h host.Host, + mapCfg *maptracker.Config, + statelessCfg *stateless.Config, +) ipfscluster.PinTracker { + switch name { + case "map": + ptrk := maptracker.NewMapPinTracker(mapCfg, h.ID()) + logger.Debug("map pintracker loaded") + return ptrk + case "stateless": + ptrk := stateless.New(statelessCfg, h.ID()) + logger.Debug("stateless pintracker loaded") + return ptrk + default: + err := errors.New("unknown pintracker type") + checkErr("", err) + return nil + } +} diff --git a/ipfs-cluster-service/main.go b/ipfs-cluster-service/main.go index dbcecbb2..f9c2e6c8 100644 --- a/ipfs-cluster-service/main.go +++ b/ipfs-cluster-service/main.go @@ -24,6 +24,7 @@ const programName = `ipfs-cluster-service` const ( defaultAllocation = "disk-freespace" defaultMonitor = "pubsub" + defaultPinTracker = "map" defaultLogLevel = "info" ) @@ -250,6 +251,12 @@ configuration. Hidden: true, Usage: "peer monitor to use [basic,pubsub].", }, + cli.StringFlag{ + Name: "pintracker", + Value: defaultPinTracker, + Hidden: true, + Usage: "pintracker to use [map,stateless].", + }, }, Action: daemon, }, diff --git a/logging.go b/logging.go index 6b5a059d..654062e8 100644 --- a/logging.go +++ b/logging.go @@ -21,6 +21,7 @@ var LoggingFacilities = map[string]string{ "shardingdags": "INFO", "localdags": "INFO", "adder": "INFO", + "optracker": "INFO", } // LoggingFacilitiesExtra provides logging identifiers diff --git a/pintracker/maptracker/config.go b/pintracker/maptracker/config.go index 27178b58..2b793126 100644 --- a/pintracker/maptracker/config.go +++ b/pintracker/maptracker/config.go @@ -11,7 +11,7 @@ const configKey = "maptracker" // Default values for this Config. const ( - DefaultMaxPinQueueSize = 4096 + DefaultMaxPinQueueSize = 50000 DefaultConcurrentPins = 10 ) diff --git a/pintracker/stateless/config.go b/pintracker/stateless/config.go index 94b245b7..b0dc5a29 100644 --- a/pintracker/stateless/config.go +++ b/pintracker/stateless/config.go @@ -11,8 +11,8 @@ const configKey = "stateless" // Default values for this Config. const ( - DefaultMaxPinQueueSize = 4096 - DefaultConcurrentPins = 1 + DefaultMaxPinQueueSize = 50000 + DefaultConcurrentPins = 10 ) // Config allows to initialize a Monitor and customize some parameters.