MCPcopy Create free account
hub / github.com/ethstorage/es-node / initShardManager

Function initShardManager

cmd/es-node/utils.go:274–310  ·  view source on GitHub ↗
(ctx *cli.Context, l1Rpc string, l1contract common.Address)

Source from the content-addressed store, hash-verified

272}
273
274func initShardManager(ctx *cli.Context, l1Rpc string, l1contract common.Address) (*es.ShardManager, error) {
275 miner := readRequiredFlag(ctx, flags.StorageMiner)
276 if !common.IsHexAddress(miner) {
277 return nil, fmt.Errorf("invalid miner address %s", miner)
278 }
279 cctx := context.Background()
280 client, err := ethclient.DialContext(cctx, l1Rpc)
281 if err != nil {
282 return nil, fmt.Errorf("failed to connect to the Ethereum client: %w", err)
283 }
284 defer client.Close()
285
286 storageCfg, err := initStorageConfig(cctx, client, l1contract, common.HexToAddress(miner), lg)
287 if err != nil {
288 return nil, fmt.Errorf("failed to load storage config: %w", err)
289 }
290 if !ctx.IsSet(flags.StorageFiles.Name) {
291 return nil, fmt.Errorf("flag is required: %s", flags.StorageFiles.Name)
292 }
293 storageCfg.Filenames = ctx.StringSlice(flags.StorageFiles.Name)
294 shardManager := es.NewShardManager(storageCfg.L1Contract, storageCfg.KvSize, storageCfg.KvEntriesPerShard, storageCfg.ChunkSize)
295 for _, filename := range storageCfg.Filenames {
296 fmt.Printf("Adding data file %s\n", filename)
297 df, err := es.OpenDataFile(filename)
298 if err != nil {
299 return nil, fmt.Errorf("open data file failed: %w", err)
300 }
301 if df.Miner() != storageCfg.Miner {
302 return nil, fmt.Errorf("miner mismatches data file")
303 }
304 shardManager.AddDataFileAndShard(df)
305 }
306 if shardManager.IsComplete() != nil {
307 return nil, fmt.Errorf("data files are not completed")
308 }
309 return shardManager, nil
310}

Callers 1

EsNodeSyncFunction · 0.70

Calls 7

AddDataFileAndShardMethod · 0.95
IsCompleteMethod · 0.95
readRequiredFlagFunction · 0.85
IsSetMethod · 0.80
initStorageConfigFunction · 0.70
CloseMethod · 0.65
MinerMethod · 0.45

Tested by

no test coverage detected