paramfetch: Only pull necessary params

This commit is contained in:
Łukasz Magiera 2019-12-04 20:44:15 +01:00
parent b8646405ce
commit 3daf9103a8
10 changed files with 29 additions and 28 deletions

View File

@ -39,7 +39,7 @@ type fetch struct {
errs []error errs []error
} }
func GetParams(storage bool, tests bool) error { func GetParams(storageSize uint64) error {
if err := os.Mkdir(paramdir, 0755); err != nil && !os.IsExist(err) { if err := os.Mkdir(paramdir, 0755); err != nil && !os.IsExist(err) {
return err return err
} }
@ -54,10 +54,7 @@ func GetParams(storage bool, tests bool) error {
ft := &fetch{} ft := &fetch{}
for name, info := range params { for name, info := range params {
if !(SupportedSectorSize(info.SectorSize) || (tests && info.SectorSize == 1<<10)) { if storageSize != info.SectorSize && strings.HasSuffix(name, ".params") {
continue
}
if !storage && strings.HasSuffix(name, ".params") {
continue continue
} }
@ -83,8 +80,8 @@ func (ft *fetch) maybeFetchAsync(name string, info paramFile) {
return return
} }
ft.fetchLk.Lock() /*ft.fetchLk.Lock()
defer ft.fetchLk.Unlock() defer ft.fetchLk.Unlock()*/
if err := doFetch(path, info); err != nil { if err := doFetch(path, info); err != nil {
ft.errs = append(ft.errs, xerrors.Errorf("fetching file %s failed: %w", path, err)) ft.errs = append(ft.errs, xerrors.Errorf("fetching file %s failed: %w", path, err))

View File

@ -10,17 +10,13 @@ var fetchParamCmd = &cli.Command{
Name: "fetch-params", Name: "fetch-params",
Usage: "Fetch proving parameters", Usage: "Fetch proving parameters",
Flags: []cli.Flag{ Flags: []cli.Flag{
&cli.BoolFlag{ &cli.Uint64Flag{
Name: "only-verify-keys", Name: "proving-params",
Usage: "only download the verify keys", Usage: "download params used creating proofs for given size",
},
&cli.BoolFlag{
Name: "include-test-params",
Usage: "download params used for tests",
}, },
}, },
Action: func(cctx *cli.Context) error { Action: func(cctx *cli.Context) error {
err := build.GetParams(!cctx.Bool("only-verify-keys"), cctx.Bool("include-test-params")) err := build.GetParams(cctx.Uint64("proving-params"))
if err != nil { if err != nil {
return xerrors.Errorf("fetching proof parameters: %w", err) return xerrors.Errorf("fetching proof parameters: %w", err)
} }

View File

@ -113,7 +113,7 @@ func main() {
} }
} }
if err := build.GetParams(true, false); err != nil { if err := build.GetParams(sectorSize); err != nil {
return xerrors.Errorf("getting params: %w", err) return xerrors.Errorf("getting params: %w", err)
} }
sb, err := sectorbuilder.New(cfg, mds) sb, err := sectorbuilder.New(cfg, mds)

View File

@ -48,7 +48,7 @@ func PreSeal(maddr address.Address, ssize uint64, sectors int, sbroot string, pr
return nil, err return nil, err
} }
if err := build.GetParams(true, false); err != nil { if err := build.GetParams(ssize); err != nil {
return nil, xerrors.Errorf("getting params: %w", err) return nil, xerrors.Errorf("getting params: %w", err)
} }

View File

@ -75,8 +75,10 @@ var initCmd = &cli.Command{
Action: func(cctx *cli.Context) error { Action: func(cctx *cli.Context) error {
log.Info("Initializing lotus storage miner") log.Info("Initializing lotus storage miner")
ssize := cctx.Uint64("sector-size")
log.Info("Checking proof parameters") log.Info("Checking proof parameters")
if err := build.GetParams(true, false); err != nil { if err := build.GetParams(ssize); err != nil {
return xerrors.Errorf("fetching proof parameters: %w", err) return xerrors.Errorf("fetching proof parameters: %w", err)
} }
@ -152,7 +154,7 @@ var initCmd = &cli.Command{
} }
oldsb, err := sectorbuilder.New(&sectorbuilder.Config{ oldsb, err := sectorbuilder.New(&sectorbuilder.Config{
SectorSize: 1024, SectorSize: ssize,
WorkerThreads: 2, WorkerThreads: 2,
SealedDir: filepath.Join(pssb, "sealed"), SealedDir: filepath.Join(pssb, "sealed"),
CacheDir: filepath.Join(pssb, "cache"), CacheDir: filepath.Join(pssb, "cache"),
@ -164,7 +166,7 @@ var initCmd = &cli.Command{
} }
nsb, err := sectorbuilder.New(&sectorbuilder.Config{ nsb, err := sectorbuilder.New(&sectorbuilder.Config{
SectorSize: 1024, SectorSize: ssize,
WorkerThreads: 2, WorkerThreads: 2,
SealedDir: filepath.Join(lr.Path(), "sealed"), SealedDir: filepath.Join(lr.Path(), "sealed"),
CacheDir: filepath.Join(lr.Path(), "cache"), CacheDir: filepath.Join(lr.Path(), "cache"),

View File

@ -41,10 +41,6 @@ var runCmd = &cli.Command{
}, },
}, },
Action: func(cctx *cli.Context) error { Action: func(cctx *cli.Context) error {
if err := build.GetParams(true, false); err != nil {
return xerrors.Errorf("fetching proof parameters: %w", err)
}
if !cctx.Bool("enable-gpu-proving") { if !cctx.Bool("enable-gpu-proving") {
os.Setenv("BELLMAN_NO_GPU", "true") os.Setenv("BELLMAN_NO_GPU", "true")
} }

View File

@ -63,7 +63,7 @@ var DaemonCmd = &cli.Command{
return xerrors.Errorf("repo init error: %w", err) return xerrors.Errorf("repo init error: %w", err)
} }
if err := build.GetParams(false, false); err != nil { if err := build.GetParams(0); err != nil {
return xerrors.Errorf("fetching proof parameters: %w", err) return xerrors.Errorf("fetching proof parameters: %w", err)
} }

View File

@ -126,7 +126,7 @@ func TestSealAndVerify(t *testing.T) {
build.SectorSizes = []uint64{sectorSize} build.SectorSizes = []uint64{sectorSize}
if err := build.GetParams(true, true); err != nil { if err := build.GetParams(sectorSize); err != nil {
t.Fatalf("%+v", err) t.Fatalf("%+v", err)
} }
@ -195,7 +195,7 @@ func TestSealPoStNoCommit(t *testing.T) {
build.SectorSizes = []uint64{sectorSize} build.SectorSizes = []uint64{sectorSize}
if err := build.GetParams(true, true); err != nil { if err := build.GetParams(sectorSize); err != nil {
t.Fatalf("%+v", err) t.Fatalf("%+v", err)
} }
@ -257,7 +257,7 @@ func TestSealAndVerify2(t *testing.T) {
build.SectorSizes = []uint64{sectorSize} build.SectorSizes = []uint64{sectorSize}
if err := build.GetParams(true, true); err != nil { if err := build.GetParams(sectorSize); err != nil {
t.Fatalf("%+v", err) t.Fatalf("%+v", err)
} }

View File

@ -91,6 +91,7 @@ const (
RegisterClientValidatorKey RegisterClientValidatorKey
// storage miner // storage miner
GetParamsKey
HandleDealsKey HandleDealsKey
HandleRetrievalKey HandleRetrievalKey
RunSectorServiceKey RunSectorServiceKey
@ -250,6 +251,7 @@ func Online() Option {
Override(new(*deals.Provider), deals.NewProvider), Override(new(*deals.Provider), deals.NewProvider),
Override(RegisterProviderValidatorKey, modules.RegisterProviderValidator), Override(RegisterProviderValidatorKey, modules.RegisterProviderValidator),
Override(HandleRetrievalKey, modules.HandleRetrieval), Override(HandleRetrievalKey, modules.HandleRetrieval),
Override(GetParamsKey, modules.GetParams),
Override(HandleDealsKey, modules.HandleDeals), Override(HandleDealsKey, modules.HandleDeals),
Override(new(gen.ElectionPoStProver), storage.NewElectionPoStProver), Override(new(gen.ElectionPoStProver), storage.NewElectionPoStProver),
Override(new(*miner.Miner), modules.SetupBlockProducer), Override(new(*miner.Miner), modules.SetupBlockProducer),

View File

@ -44,6 +44,14 @@ func minerAddrFromDS(ds dtypes.MetadataDS) (address.Address, error) {
return address.NewFromBytes(maddrb) return address.NewFromBytes(maddrb)
} }
func GetParams(sbc *sectorbuilder.Config) error {
if err := build.GetParams(sbc.SectorSize); err != nil {
return xerrors.Errorf("fetching proof parameters: %w", err)
}
return nil
}
func SectorBuilderConfig(storagePath string, threads uint) func(dtypes.MetadataDS, api.FullNode) (*sectorbuilder.Config, error) { func SectorBuilderConfig(storagePath string, threads uint) func(dtypes.MetadataDS, api.FullNode) (*sectorbuilder.Config, error) {
return func(ds dtypes.MetadataDS, api api.FullNode) (*sectorbuilder.Config, error) { return func(ds dtypes.MetadataDS, api api.FullNode) (*sectorbuilder.Config, error) {
minerAddr, err := minerAddrFromDS(ds) minerAddr, err := minerAddrFromDS(ds)