Allow selecting pintracker with ipfs-cluster-service

License: MIT
Signed-off-by: Hector Sanjuan <code@hector.link>
This commit is contained in:
Hector Sanjuan 2018-08-14 19:57:14 +02:00
parent b8194143c2
commit 10fa7a13b5
6 changed files with 54 additions and 16 deletions

View File

@ -15,18 +15,20 @@ import (
"github.com/ipfs/ipfs-cluster/monitor/basic" "github.com/ipfs/ipfs-cluster/monitor/basic"
"github.com/ipfs/ipfs-cluster/monitor/pubsubmon" "github.com/ipfs/ipfs-cluster/monitor/pubsubmon"
"github.com/ipfs/ipfs-cluster/pintracker/maptracker" "github.com/ipfs/ipfs-cluster/pintracker/maptracker"
"github.com/ipfs/ipfs-cluster/pintracker/stateless"
) )
type cfgs struct { type cfgs struct {
clusterCfg *ipfscluster.Config clusterCfg *ipfscluster.Config
apiCfg *rest.Config apiCfg *rest.Config
ipfshttpCfg *ipfshttp.Config ipfshttpCfg *ipfshttp.Config
consensusCfg *raft.Config consensusCfg *raft.Config
trackerCfg *maptracker.Config maptrackerCfg *maptracker.Config
monCfg *basic.Config statelessTrackerCfg *stateless.Config
pubsubmonCfg *pubsubmon.Config monCfg *basic.Config
diskInfCfg *disk.Config pubsubmonCfg *pubsubmon.Config
numpinInfCfg *numpin.Config diskInfCfg *disk.Config
numpinInfCfg *numpin.Config
} }
func makeConfigs() (*config.Manager, *cfgs) { func makeConfigs() (*config.Manager, *cfgs) {
@ -35,7 +37,8 @@ func makeConfigs() (*config.Manager, *cfgs) {
apiCfg := &rest.Config{} apiCfg := &rest.Config{}
ipfshttpCfg := &ipfshttp.Config{} ipfshttpCfg := &ipfshttp.Config{}
consensusCfg := &raft.Config{} consensusCfg := &raft.Config{}
trackerCfg := &maptracker.Config{} maptrackerCfg := &maptracker.Config{}
statelessCfg := &stateless.Config{}
monCfg := &basic.Config{} monCfg := &basic.Config{}
pubsubmonCfg := &pubsubmon.Config{} pubsubmonCfg := &pubsubmon.Config{}
diskInfCfg := &disk.Config{} diskInfCfg := &disk.Config{}
@ -44,7 +47,8 @@ func makeConfigs() (*config.Manager, *cfgs) {
cfg.RegisterComponent(config.API, apiCfg) cfg.RegisterComponent(config.API, apiCfg)
cfg.RegisterComponent(config.IPFSConn, ipfshttpCfg) cfg.RegisterComponent(config.IPFSConn, ipfshttpCfg)
cfg.RegisterComponent(config.Consensus, consensusCfg) 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, monCfg)
cfg.RegisterComponent(config.Monitor, pubsubmonCfg) cfg.RegisterComponent(config.Monitor, pubsubmonCfg)
cfg.RegisterComponent(config.Informer, diskInfCfg) cfg.RegisterComponent(config.Informer, diskInfCfg)
@ -54,7 +58,8 @@ func makeConfigs() (*config.Manager, *cfgs) {
apiCfg, apiCfg,
ipfshttpCfg, ipfshttpCfg,
consensusCfg, consensusCfg,
trackerCfg, maptrackerCfg,
statelessCfg,
monCfg, monCfg,
pubsubmonCfg, pubsubmonCfg,
diskInfCfg, diskInfCfg,

View File

@ -22,6 +22,7 @@ import (
"github.com/ipfs/ipfs-cluster/monitor/basic" "github.com/ipfs/ipfs-cluster/monitor/basic"
"github.com/ipfs/ipfs-cluster/monitor/pubsubmon" "github.com/ipfs/ipfs-cluster/monitor/pubsubmon"
"github.com/ipfs/ipfs-cluster/pintracker/maptracker" "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/pstoremgr"
"github.com/ipfs/ipfs-cluster/state/mapstate" "github.com/ipfs/ipfs-cluster/state/mapstate"
@ -125,7 +126,7 @@ func createCluster(
) )
checkErr("creating consensus component", err) 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) mon := setupMonitor(c.String("monitor"), host, cfgs.monCfg, cfgs.pubsubmonCfg)
informer, alloc := setupAllocation(c.String("alloc"), cfgs.diskInfCfg, cfgs.numpinInfCfg) informer, alloc := setupAllocation(c.String("alloc"), cfgs.diskInfCfg, cfgs.numpinInfCfg)
@ -238,10 +239,12 @@ func setupMonitor(
case "basic": case "basic":
mon, err := basic.NewMonitor(basicCfg) mon, err := basic.NewMonitor(basicCfg)
checkErr("creating monitor", err) checkErr("creating monitor", err)
logger.Debug("basic monitor loaded")
return mon return mon
case "pubsub": case "pubsub":
mon, err := pubsubmon.New(h, pubsubCfg) mon, err := pubsubmon.New(h, pubsubCfg)
checkErr("creating monitor", err) checkErr("creating monitor", err)
logger.Debug("pubsub monitor loaded")
return mon return mon
default: default:
err := errors.New("unknown monitor type") 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
}
}

View File

@ -24,6 +24,7 @@ const programName = `ipfs-cluster-service`
const ( const (
defaultAllocation = "disk-freespace" defaultAllocation = "disk-freespace"
defaultMonitor = "pubsub" defaultMonitor = "pubsub"
defaultPinTracker = "map"
defaultLogLevel = "info" defaultLogLevel = "info"
) )
@ -250,6 +251,12 @@ configuration.
Hidden: true, Hidden: true,
Usage: "peer monitor to use [basic,pubsub].", Usage: "peer monitor to use [basic,pubsub].",
}, },
cli.StringFlag{
Name: "pintracker",
Value: defaultPinTracker,
Hidden: true,
Usage: "pintracker to use [map,stateless].",
},
}, },
Action: daemon, Action: daemon,
}, },

View File

@ -21,6 +21,7 @@ var LoggingFacilities = map[string]string{
"shardingdags": "INFO", "shardingdags": "INFO",
"localdags": "INFO", "localdags": "INFO",
"adder": "INFO", "adder": "INFO",
"optracker": "INFO",
} }
// LoggingFacilitiesExtra provides logging identifiers // LoggingFacilitiesExtra provides logging identifiers

View File

@ -11,7 +11,7 @@ const configKey = "maptracker"
// Default values for this Config. // Default values for this Config.
const ( const (
DefaultMaxPinQueueSize = 4096 DefaultMaxPinQueueSize = 50000
DefaultConcurrentPins = 10 DefaultConcurrentPins = 10
) )

View File

@ -11,8 +11,8 @@ const configKey = "stateless"
// Default values for this Config. // Default values for this Config.
const ( const (
DefaultMaxPinQueueSize = 4096 DefaultMaxPinQueueSize = 50000
DefaultConcurrentPins = 1 DefaultConcurrentPins = 10
) )
// Config allows to initialize a Monitor and customize some parameters. // Config allows to initialize a Monitor and customize some parameters.