From a54da3590e110c52189e4eac43846cc79231db8d Mon Sep 17 00:00:00 2001 From: moran666666 <396124008@qq.com> Date: Sun, 20 Dec 2020 07:09:33 +0800 Subject: [PATCH 01/26] commit1 --- cmd/lotus-seal-worker/main.go | 25 ++ cmd/lotus-storage-miner/run.go | 94 ++++- cmd/lotus-storage-miner/sealing.go | 29 +- extern/sector-counter/client/client.go | 54 +++ extern/sector-counter/cmd/main.go | 25 ++ extern/sector-counter/go.mod | 9 + extern/sector-counter/go.sum | 81 ++++ extern/sector-counter/proto/rpc.pb.go | 300 +++++++++++++ extern/sector-counter/proto/rpc.proto | 14 + extern/sector-counter/server/server.go | 108 +++++ extern/sector-storage/manager.go | 2 +- extern/sector-storage/sched.go | 463 ++++++++++----------- extern/sector-storage/sched_resources.go | 18 +- extern/sector-storage/sched_worker.go | 60 +-- extern/sector-storage/selector_alloc.go | 48 +++ extern/sector-storage/selector_existing.go | 40 ++ extern/sector-storage/selector_task.go | 30 ++ extern/sector-storage/stats.go | 38 +- extern/sector-storage/stores/local.go | 26 +- extern/sector-storage/storiface/worker.go | 161 ++++++- extern/sector-storage/worker_local.go | 7 +- extern/storage-sealing/garbage.go | 21 +- extern/storage-sealing/sealing.go | 19 +- go.mod | 3 + miner/miner.go | 7 +- node/modules/storageminer.go | 6 +- 26 files changed, 1347 insertions(+), 341 deletions(-) create mode 100644 extern/sector-counter/client/client.go create mode 100644 extern/sector-counter/cmd/main.go create mode 100644 extern/sector-counter/go.mod create mode 100644 extern/sector-counter/go.sum create mode 100644 extern/sector-counter/proto/rpc.pb.go create mode 100644 extern/sector-counter/proto/rpc.proto create mode 100644 extern/sector-counter/server/server.go diff --git a/cmd/lotus-seal-worker/main.go b/cmd/lotus-seal-worker/main.go index 8726a6e0d..96cfbabb9 100644 --- a/cmd/lotus-seal-worker/main.go +++ b/cmd/lotus-seal-worker/main.go @@ -103,6 +103,21 @@ var runCmd = &cli.Command{ Name: "run", Usage: "Start lotus worker", Flags: []cli.Flag{ + &cli.StringFlag{ + Name: "rpc", + Usage: "worker rpc ip and port", + Value: "", + }, + &cli.StringFlag{ + Name: "workername", + Usage: "worker name will display on jobs list", + Value: "", + }, + &cli.StringFlag{ + Name: "ability", + Usage: "worker sealing ability", + Value: "AP:1,PC1:1,PC2:1,C1:1,C2:1,FIN:1,GET:1,UNS:1,RD:1", + }, &cli.StringFlag{ Name: "listen", Usage: "host address and port the worker api will listen on", @@ -170,6 +185,13 @@ var runCmd = &cli.Command{ Action: func(cctx *cli.Context) error { log.Info("Starting lotus worker") + if cctx.String("workername") != "" { + os.Setenv("WORKER_NAME", cctx.String("workername")) + } + if cctx.String("ability") != "" { + os.Setenv("ABILITY", cctx.String("ability")) + } + if !cctx.Bool("enable-gpu-proving") { if err := os.Setenv("BELLMAN_NO_GPU", "true"); err != nil { return xerrors.Errorf("could not set no-gpu env: %+v", err) @@ -509,6 +531,9 @@ var runCmd = &cli.Command{ select { case <-readyCh: + if cctx.String("rpc") != "" { + address = cctx.String("rpc") + } if err := nodeApi.WorkerConnect(ctx, "http://"+address+"/rpc/v0"); err != nil { log.Errorf("Registering worker failed: %+v", err) cancel() diff --git a/cmd/lotus-storage-miner/run.go b/cmd/lotus-storage-miner/run.go index 0c2fba8b3..d659059f4 100644 --- a/cmd/lotus-storage-miner/run.go +++ b/cmd/lotus-storage-miner/run.go @@ -2,11 +2,13 @@ package main import ( "context" + scServer "github.com/moran666666/sector-counter/server" "net" "net/http" _ "net/http/pprof" "os" "os/signal" + "path/filepath" "syscall" mux "github.com/gorilla/mux" @@ -36,6 +38,41 @@ var runCmd = &cli.Command{ Name: "run", Usage: "Start a lotus miner process", Flags: []cli.Flag{ + &cli.BoolFlag{ + Name: "wdpost", + Usage: "enable windowPoSt", + Value: true, + }, + &cli.BoolFlag{ + Name: "wnpost", + Usage: "enable winningPoSt", + Value: true, + }, + &cli.BoolFlag{ + Name: "p2p", + Usage: "enable P2P", + Value: true, + }, + &cli.StringFlag{ + Name: "sctype", + Usage: "sector counter type(alloce,get)", + Value: "", + }, + &cli.StringFlag{ + Name: "sclisten", + Usage: "host address and port the sector counter will listen on", + Value: "", + }, + &cli.StringFlag{ + Name: "workername", + Usage: "worker name will display on jobs list", + Value: "", + }, + &cli.StringFlag{ + Name: "ability", + Usage: "worker sealing ability", + Value: "AP:1,PC1:1,PC2:1,C1:1,C2:1,FIN:1,GET:1,UNS:1,RD:1", + }, &cli.StringFlag{ Name: "miner-api", Usage: "2345", @@ -56,6 +93,45 @@ var runCmd = &cli.Command{ }, }, Action: func(cctx *cli.Context) error { + if cctx.Bool("wdpost") { + os.Setenv("LOTUS_WDPOST", "true") + } else { + os.Unsetenv("LOTUS_WDPOST") + } + + if cctx.Bool("wnpost") { + os.Setenv("LOTUS_WNPOST", "true") + } else { + os.Unsetenv("LOTUS_WNPOST") + } + + scType := cctx.String("sctype") + if scType == "alloce" || scType == "get" { + os.Setenv("SC_TYPE", scType) + + scListen := cctx.String("sclisten") + if scListen == "" { + log.Errorf("sclisten must be set") + return nil + } + os.Setenv("SC_LISTEN", scListen) + + if scType == "alloce" { + scFilePath := filepath.Join(cctx.String(FlagMinerRepo), "sectorid") + go scServer.Run(scFilePath) + } + } else { + os.Unsetenv("SC_TYPE") + } + + if cctx.String("workername") != "" { + os.Setenv("WORKER_NAME", cctx.String("workername")) + } + + if cctx.String("ability") != "" { + os.Setenv("ABILITY", cctx.String("ability")) + } + if !cctx.Bool("enable-gpu-proving") { err := os.Setenv("BELLMAN_NO_GPU", "true") if err != nil { @@ -138,14 +214,18 @@ var runCmd = &cli.Command{ return xerrors.Errorf("getting API endpoint: %w", err) } - // Bootstrap with full node - remoteAddrs, err := nodeApi.NetAddrsListen(ctx) - if err != nil { - return xerrors.Errorf("getting full node libp2p address: %w", err) - } + if cctx.Bool("p2p") { + // Bootstrap with full node + remoteAddrs, err := nodeApi.NetAddrsListen(ctx) + if err != nil { + return xerrors.Errorf("getting full node libp2p address: %w", err) + } - if err := minerapi.NetConnect(ctx, remoteAddrs); err != nil { - return xerrors.Errorf("connecting to full node (libp2p): %w", err) + if err := minerapi.NetConnect(ctx, remoteAddrs); err != nil { + return xerrors.Errorf("connecting to full node (libp2p): %w", err) + } + } else { + log.Warn("This miner will be disable p2p.") } log.Infof("Remote version %s", v) diff --git a/cmd/lotus-storage-miner/sealing.go b/cmd/lotus-storage-miner/sealing.go index ad890129d..8bf252e28 100644 --- a/cmd/lotus-storage-miner/sealing.go +++ b/cmd/lotus-storage-miner/sealing.go @@ -85,24 +85,39 @@ var sealingWorkersCmd = &cli.Command{ var barCols = uint64(64) cpuBars := int(stat.CpuUse * barCols / stat.Info.Resources.CPUs) - cpuBar := strings.Repeat("|", cpuBars) + strings.Repeat(" ", int(barCols)-cpuBars) + cpuBar := "" + if int(barCols)-cpuBars > 0 { + cpuBar = strings.Repeat("|", cpuBars) + strings.Repeat(" ", int(barCols)-cpuBars) + } else { + cpuBar = strings.Repeat("|", int(barCols)) + } fmt.Printf("\tCPU: [%s] %d/%d core(s) in use\n", color.GreenString(cpuBar), stat.CpuUse, stat.Info.Resources.CPUs) ramBarsRes := int(stat.Info.Resources.MemReserved * barCols / stat.Info.Resources.MemPhysical) ramBarsUsed := int(stat.MemUsedMin * barCols / stat.Info.Resources.MemPhysical) - ramBar := color.YellowString(strings.Repeat("|", ramBarsRes)) + - color.GreenString(strings.Repeat("|", ramBarsUsed)) + - strings.Repeat(" ", int(barCols)-ramBarsUsed-ramBarsRes) + ramBar := "" + if int(barCols)-ramBarsUsed-ramBarsRes > 0 { + ramBar = color.YellowString(strings.Repeat("|", ramBarsRes)) + + color.GreenString(strings.Repeat("|", ramBarsUsed)) + + strings.Repeat(" ", int(barCols)-ramBarsUsed-ramBarsRes) + } else { + ramBar = strings.Repeat("|", int(barCols)) + } vmem := stat.Info.Resources.MemPhysical + stat.Info.Resources.MemSwap vmemBarsRes := int(stat.Info.Resources.MemReserved * barCols / vmem) vmemBarsUsed := int(stat.MemUsedMax * barCols / vmem) - vmemBar := color.YellowString(strings.Repeat("|", vmemBarsRes)) + - color.GreenString(strings.Repeat("|", vmemBarsUsed)) + - strings.Repeat(" ", int(barCols)-vmemBarsUsed-vmemBarsRes) + vmemBar := "" + if int(barCols)-vmemBarsUsed-vmemBarsRes > 0 { + vmemBar = color.YellowString(strings.Repeat("|", vmemBarsRes)) + + color.GreenString(strings.Repeat("|", vmemBarsUsed)) + + strings.Repeat(" ", int(barCols)-vmemBarsUsed-vmemBarsRes) + } else { + vmemBar = strings.Repeat("|", int(barCols)) + } fmt.Printf("\tRAM: [%s] %d%% %s/%s\n", ramBar, (stat.Info.Resources.MemReserved+stat.MemUsedMin)*100/stat.Info.Resources.MemPhysical, diff --git a/extern/sector-counter/client/client.go b/extern/sector-counter/client/client.go new file mode 100644 index 000000000..62668cd94 --- /dev/null +++ b/extern/sector-counter/client/client.go @@ -0,0 +1,54 @@ +package client + +import ( + "context" + "log" + "os" + + pb "github.com/moran666666/sector-counter/proto" + "google.golang.org/grpc" +) + +// Client .. +type Client struct { + DialAddr string +} + +// NewClient .. +func NewClient() *Client { + rpcAddr, ok := os.LookupEnv("SC_LISTEN") + if !ok { + log.Println("NO SC_LISTEN ENV") + } + + return &Client{ + DialAddr: rpcAddr, + } +} + +func (c *Client) connect() (pb.GrpcClient, *grpc.ClientConn, error) { + conn, err := grpc.Dial(c.DialAddr, grpc.WithInsecure()) //连接gRPC服务器 + if err != nil { + return nil, nil, err + } + client := pb.NewGrpcClient(conn) //建立客户端 + return client, conn, nil +} + +// GetSectorID .. +func (c *Client) GetSectorID(ctx context.Context, param string) (uint64, error) { + client, conn, err := c.connect() + if err != nil { + return 0, err + } + defer conn.Close() + + req := new(pb.SectorIDRequest) + + req.Question = param + resp, err := client.GetSectorID(ctx, req) //调用方法 + if err != nil { + return 0, err + } + return resp.Answer, nil +} diff --git a/extern/sector-counter/cmd/main.go b/extern/sector-counter/cmd/main.go new file mode 100644 index 000000000..3c16f0c4b --- /dev/null +++ b/extern/sector-counter/cmd/main.go @@ -0,0 +1,25 @@ +package main + +import ( + "context" + "log" + "os" + "time" + + client "github.com/moran666666/sector-counter/client" + server "github.com/moran666666/sector-counter/server" +) + +func main() { + os.Setenv("SC_LISTEN", "127.0.0.1:1357") + // os.Setenv("SECTOR_COUNTER", "0") + go server.Run() + time.Sleep(time.Second * 6) + for i := 0; i < 6; i++ { + sid, err := client.NewClient().GetSectorID(context.Background(), "") + if err != nil { + return + } + log.Println("curn sector id: ", sid) + } +} diff --git a/extern/sector-counter/go.mod b/extern/sector-counter/go.mod new file mode 100644 index 000000000..a85586171 --- /dev/null +++ b/extern/sector-counter/go.mod @@ -0,0 +1,9 @@ +module github.com/moran666666/sector-counter + +go 1.14 + +require ( + github.com/golang/protobuf v1.4.2 + google.golang.org/grpc v1.31.0 + google.golang.org/protobuf v1.25.0 +) diff --git a/extern/sector-counter/go.sum b/extern/sector-counter/go.sum new file mode 100644 index 000000000..80697179f --- /dev/null +++ b/extern/sector-counter/go.sum @@ -0,0 +1,81 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3 h1:gyjaxf+svBWX08ZjK86iN9geUJF0H6gp2IRKX6Nf6/I= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0 h1:xsAVV57WRhGj6kEIi8ReJzQlHHqcBYCElAvkovg3B/4= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a h1:oWX7TPOiFAMXLq8o0ikBYfCJVlRHBcsciT5bXOrH628= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a h1:1BGLXjeY4akVXGgbC9HugT3Jv3hCI0z56oJR5vAMgBU= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55 h1:gSJIx1SDwno+2ElGhA4+qG2zF97qiUzTM+rQ0klBOcE= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013 h1:+kGHl1aib/qcwaRi1CbqBZ1rk19r85MNUf8HaBghugY= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.31.0 h1:T7P4R73V3SSDPhH7WW7ATbfViLtmamH0DKrP3f9AuDI= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0 h1:4MY060fB1DLGMB/7MBTLnwQUY6+F09GEiz6SsrNqyzM= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.25.0 h1:Ejskq+SyPohKW+1uil0JJMtmHCgJPJ/qWTxr8qp+R4c= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= diff --git a/extern/sector-counter/proto/rpc.pb.go b/extern/sector-counter/proto/rpc.pb.go new file mode 100644 index 000000000..249137e28 --- /dev/null +++ b/extern/sector-counter/proto/rpc.pb.go @@ -0,0 +1,300 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.25.0 +// protoc v3.12.3 +// source: proto/rpc.proto + +package proto + +import ( + context "context" + proto "github.com/golang/protobuf/proto" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +// This is a compile-time assertion that a sufficiently up-to-date version +// of the legacy proto package is being used. +const _ = proto.ProtoPackageIsVersion4 + +type SectorIDRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Question string `protobuf:"bytes,1,opt,name=question,proto3" json:"question,omitempty"` +} + +func (x *SectorIDRequest) Reset() { + *x = SectorIDRequest{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_rpc_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SectorIDRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SectorIDRequest) ProtoMessage() {} + +func (x *SectorIDRequest) ProtoReflect() protoreflect.Message { + mi := &file_proto_rpc_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SectorIDRequest.ProtoReflect.Descriptor instead. +func (*SectorIDRequest) Descriptor() ([]byte, []int) { + return file_proto_rpc_proto_rawDescGZIP(), []int{0} +} + +func (x *SectorIDRequest) GetQuestion() string { + if x != nil { + return x.Question + } + return "" +} + +type SectorIDResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Answer uint64 `protobuf:"varint,1,opt,name=answer,proto3" json:"answer,omitempty"` +} + +func (x *SectorIDResponse) Reset() { + *x = SectorIDResponse{} + if protoimpl.UnsafeEnabled { + mi := &file_proto_rpc_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SectorIDResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SectorIDResponse) ProtoMessage() {} + +func (x *SectorIDResponse) ProtoReflect() protoreflect.Message { + mi := &file_proto_rpc_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SectorIDResponse.ProtoReflect.Descriptor instead. +func (*SectorIDResponse) Descriptor() ([]byte, []int) { + return file_proto_rpc_proto_rawDescGZIP(), []int{1} +} + +func (x *SectorIDResponse) GetAnswer() uint64 { + if x != nil { + return x.Answer + } + return 0 +} + +var File_proto_rpc_proto protoreflect.FileDescriptor + +var file_proto_rpc_proto_rawDesc = []byte{ + 0x0a, 0x0f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2f, 0x72, 0x70, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x12, 0x05, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x2d, 0x0a, 0x0f, 0x53, 0x65, 0x63, 0x74, + 0x6f, 0x72, 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x2a, 0x0a, 0x10, 0x53, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x49, 0x44, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x61, + 0x6e, 0x73, 0x77, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x06, 0x61, 0x6e, 0x73, + 0x77, 0x65, 0x72, 0x32, 0x46, 0x0a, 0x04, 0x47, 0x72, 0x70, 0x63, 0x12, 0x3e, 0x0a, 0x0b, 0x47, + 0x65, 0x74, 0x53, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x44, 0x12, 0x16, 0x2e, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x49, 0x44, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x17, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x2e, 0x53, 0x65, 0x63, 0x74, 0x6f, + 0x72, 0x49, 0x44, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, + 0x74, 0x6f, 0x33, +} + +var ( + file_proto_rpc_proto_rawDescOnce sync.Once + file_proto_rpc_proto_rawDescData = file_proto_rpc_proto_rawDesc +) + +func file_proto_rpc_proto_rawDescGZIP() []byte { + file_proto_rpc_proto_rawDescOnce.Do(func() { + file_proto_rpc_proto_rawDescData = protoimpl.X.CompressGZIP(file_proto_rpc_proto_rawDescData) + }) + return file_proto_rpc_proto_rawDescData +} + +var file_proto_rpc_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_proto_rpc_proto_goTypes = []interface{}{ + (*SectorIDRequest)(nil), // 0: proto.SectorIDRequest + (*SectorIDResponse)(nil), // 1: proto.SectorIDResponse +} +var file_proto_rpc_proto_depIdxs = []int32{ + 0, // 0: proto.Grpc.GetSectorID:input_type -> proto.SectorIDRequest + 1, // 1: proto.Grpc.GetSectorID:output_type -> proto.SectorIDResponse + 1, // [1:2] is the sub-list for method output_type + 0, // [0:1] is the sub-list for method input_type + 0, // [0:0] is the sub-list for extension type_name + 0, // [0:0] is the sub-list for extension extendee + 0, // [0:0] is the sub-list for field type_name +} + +func init() { file_proto_rpc_proto_init() } +func file_proto_rpc_proto_init() { + if File_proto_rpc_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_proto_rpc_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SectorIDRequest); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_proto_rpc_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SectorIDResponse); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_proto_rpc_proto_rawDesc, + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_proto_rpc_proto_goTypes, + DependencyIndexes: file_proto_rpc_proto_depIdxs, + MessageInfos: file_proto_rpc_proto_msgTypes, + }.Build() + File_proto_rpc_proto = out.File + file_proto_rpc_proto_rawDesc = nil + file_proto_rpc_proto_goTypes = nil + file_proto_rpc_proto_depIdxs = nil +} + +// Reference imports to suppress errors if they are not otherwise used. +var _ context.Context +var _ grpc.ClientConnInterface + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +const _ = grpc.SupportPackageIsVersion6 + +// GrpcClient is the client API for Grpc service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://godoc.org/google.golang.org/grpc#ClientConn.NewStream. +type GrpcClient interface { + GetSectorID(ctx context.Context, in *SectorIDRequest, opts ...grpc.CallOption) (*SectorIDResponse, error) +} + +type grpcClient struct { + cc grpc.ClientConnInterface +} + +func NewGrpcClient(cc grpc.ClientConnInterface) GrpcClient { + return &grpcClient{cc} +} + +func (c *grpcClient) GetSectorID(ctx context.Context, in *SectorIDRequest, opts ...grpc.CallOption) (*SectorIDResponse, error) { + out := new(SectorIDResponse) + err := c.cc.Invoke(ctx, "/proto.Grpc/GetSectorID", in, out, opts...) + if err != nil { + return nil, err + } + return out, nil +} + +// GrpcServer is the server API for Grpc service. +type GrpcServer interface { + GetSectorID(context.Context, *SectorIDRequest) (*SectorIDResponse, error) +} + +// UnimplementedGrpcServer can be embedded to have forward compatible implementations. +type UnimplementedGrpcServer struct { +} + +func (*UnimplementedGrpcServer) GetSectorID(context.Context, *SectorIDRequest) (*SectorIDResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetSectorID not implemented") +} + +func RegisterGrpcServer(s *grpc.Server, srv GrpcServer) { + s.RegisterService(&_Grpc_serviceDesc, srv) +} + +func _Grpc_GetSectorID_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(SectorIDRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(GrpcServer).GetSectorID(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: "/proto.Grpc/GetSectorID", + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(GrpcServer).GetSectorID(ctx, req.(*SectorIDRequest)) + } + return interceptor(ctx, in, info, handler) +} + +var _Grpc_serviceDesc = grpc.ServiceDesc{ + ServiceName: "proto.Grpc", + HandlerType: (*GrpcServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "GetSectorID", + Handler: _Grpc_GetSectorID_Handler, + }, + }, + Streams: []grpc.StreamDesc{}, + Metadata: "proto/rpc.proto", +} diff --git a/extern/sector-counter/proto/rpc.proto b/extern/sector-counter/proto/rpc.proto new file mode 100644 index 000000000..058b6f2c7 --- /dev/null +++ b/extern/sector-counter/proto/rpc.proto @@ -0,0 +1,14 @@ +syntax = "proto3"; //指定proto版本 + +package proto; + +message SectorIDRequest{ // 定义请求信息 + string question = 1; +} +message SectorIDResponse{ // 定义响应信息 + uint64 answer = 1; +} + +service Grpc{ + rpc GetSectorID(SectorIDRequest) returns(SectorIDResponse); +} \ No newline at end of file diff --git a/extern/sector-counter/server/server.go b/extern/sector-counter/server/server.go new file mode 100644 index 000000000..bc6df7e5c --- /dev/null +++ b/extern/sector-counter/server/server.go @@ -0,0 +1,108 @@ +package server + +import ( + "context" + "io/ioutil" + "log" + "net" + "os" + "strconv" + "strings" + "sync" + + pb "github.com/moran666666/sector-counter/proto" + + "google.golang.org/grpc" +) + +// Service 定义我们的服务 +type Service struct { + SectorIDLk sync.RWMutex // 对应RPC调用GetSectorID,返回miner的sectorid + SectorID uint64 + SCFilePath string +} + +// GetSectorID 实现 GetSectorID 方法 +func (s *Service) GetSectorID(ctx context.Context, req *pb.SectorIDRequest) (*pb.SectorIDResponse, error) { + s.SectorIDLk.Lock() + defer s.SectorIDLk.Unlock() + s.SectorID++ + s.WriteSectorID() + return &pb.SectorIDResponse{Answer: s.SectorID}, nil +} + +// WriteSectorID 实现 WriteSectorID 方法 +func (s *Service) WriteSectorID() { + f, err := os.OpenFile(s.SCFilePath, os.O_WRONLY|os.O_TRUNC, 0600) + if err != nil { + log.Println(err) + } + defer f.Close() + strID := strconv.FormatUint(s.SectorID, 10) + _, _ = f.Write([]byte(strID)) +} + +func readFileSid(filePath string) (uint64, error) { + if _, err := os.Stat(filePath); err != nil { // 文件不存在 + f, err := os.Create(filePath) + if err != nil { + return 0, err + } + _, _ = f.Write([]byte("0")) + f.Close() + return 0, nil + } + + // 存在历史文件 + f, err := os.Open(filePath) + if err != nil { + return 0, err + } + defer f.Close() + + byteID, err := ioutil.ReadAll(f) + if err != nil { + return 0, err + } + + stringID := strings.Replace(string(byteID), "\n", "", -1) // 将最后的\n去掉 + sectorID, err := strconv.ParseUint(string(stringID), 0, 64) // 将字符型数字转化为uint64类型 + if err != nil { + return 0, err + } + + return sectorID, nil +} + +// Run .. +func Run(scFilePath string) { + rpcAddr, ok := os.LookupEnv("SC_LISTEN") + if !ok { + log.Println("NO SC_LISTEN ENV") + return + } + + sectorID, err := readFileSid(scFilePath) + if err != nil { + log.Println(err) + return + } + log.Println("currn sectorid: ", sectorID) + + listener, err := net.Listen("tcp", rpcAddr) // 监听本地端口 + if err != nil { + log.Println(err) + } + log.Println("grpc server Listing on", rpcAddr) + + grpcServer := grpc.NewServer() // 新建gRPC服务器实例 + server := &Service{ // 在gRPC服务器注册我们的服务 + SectorID: sectorID, + SCFilePath: scFilePath, + } + pb.RegisterGrpcServer(grpcServer, server) + + if err = grpcServer.Serve(listener); err != nil { //用服务器 Serve() 方法以及我们的端口信息区实现阻塞等待,直到进程被杀死或者 Stop() 被调用 + log.Println(err) + } +} diff --git a/extern/sector-storage/manager.go b/extern/sector-storage/manager.go index c56bbdf50..1b0375154 100644 --- a/extern/sector-storage/manager.go +++ b/extern/sector-storage/manager.go @@ -427,7 +427,7 @@ func (m *Manager) SealPreCommit2(ctx context.Context, sector storage.SectorRef, return storage.SectorCids{}, xerrors.Errorf("acquiring sector lock: %w", err) } - selector := newExistingSelector(m.index, sector.ID, storiface.FTCache|storiface.FTSealed, true) + selector := newExistingSelector(m.index, sector.ID, storiface.FTCache|storiface.FTSealed, false) err = m.sched.Schedule(ctx, sector, sealtasks.TTPreCommit2, selector, m.schedFetch(sector, storiface.FTCache|storiface.FTSealed, storiface.PathSealing, storiface.AcquireMove), func(ctx context.Context, w Worker) error { err := m.startWork(ctx, w, wk)(w.SealPreCommit2(ctx, sector, phase1Out)) diff --git a/extern/sector-storage/sched.go b/extern/sector-storage/sched.go index 61411081a..6d52bbf10 100644 --- a/extern/sector-storage/sched.go +++ b/extern/sector-storage/sched.go @@ -2,8 +2,6 @@ package sectorstorage import ( "context" - "math/rand" - "sort" "sync" "time" @@ -49,6 +47,7 @@ type WorkerSelector interface { Ok(ctx context.Context, task sealtasks.TaskType, spt abi.RegisteredSealProof, a *workerHandle) (bool, error) // true if worker is acceptable for performing a task Cmp(ctx context.Context, task sealtasks.TaskType, a, b *workerHandle) (bool, error) // true if a is preferred over b + FindDataWoker(ctx context.Context, task sealtasks.TaskType, sid abi.SectorID, spt abi.RegisteredSealProof, a *workerHandle) bool } type scheduler struct { @@ -92,6 +91,8 @@ type workerHandle struct { cleanupStarted bool closedMgr chan struct{} closingMgr chan struct{} + workerOnFree chan struct{} + todo []*workerRequest } type schedWindowRequest struct { @@ -106,6 +107,7 @@ type schedWindow struct { } type workerDisableReq struct { + todo []*workerRequest activeWindows []*schedWindow wid WorkerID done func() @@ -220,88 +222,41 @@ type SchedDiagInfo struct { func (sh *scheduler) runSched() { defer close(sh.closed) - - iw := time.After(InitWait) - var initialised bool + go func() { + for { + time.Sleep(time.Second * 180) // 3分钟执行一次 + sh.workersLk.Lock() + if sh.schedQueue.Len() > 0 { + sh.windowRequests <- &schedWindowRequest{} + } + sh.workersLk.Unlock() + } + }() for { - var doSched bool - var toDisable []workerDisableReq - select { case <-sh.workerChange: - doSched = true - case dreq := <-sh.workerDisable: - toDisable = append(toDisable, dreq) - doSched = true + sh.trySched() + case toDisable := <-sh.workerDisable: + sh.workersLk.Lock() + sh.workers[toDisable.wid].enabled = false + sh.workersLk.Unlock() + toDisable.done() case req := <-sh.schedule: sh.schedQueue.Push(req) - doSched = true + sh.trySched() if sh.testSync != nil { sh.testSync <- struct{}{} } - case req := <-sh.windowRequests: - sh.openWindows = append(sh.openWindows, req) - doSched = true + case <-sh.windowRequests: + sh.trySched() case ireq := <-sh.info: ireq(sh.diag()) - - case <-iw: - initialised = true - iw = nil - doSched = true case <-sh.closing: sh.schedClose() return } - - if doSched && initialised { - // First gather any pending tasks, so we go through the scheduling loop - // once for every added task - loop: - for { - select { - case <-sh.workerChange: - case dreq := <-sh.workerDisable: - toDisable = append(toDisable, dreq) - case req := <-sh.schedule: - sh.schedQueue.Push(req) - if sh.testSync != nil { - sh.testSync <- struct{}{} - } - case req := <-sh.windowRequests: - sh.openWindows = append(sh.openWindows, req) - default: - break loop - } - } - - for _, req := range toDisable { - for _, window := range req.activeWindows { - for _, request := range window.todo { - sh.schedQueue.Push(request) - } - } - - openWindows := make([]*schedWindowRequest, 0, len(sh.openWindows)) - for _, window := range sh.openWindows { - if window.worker != req.wid { - openWindows = append(openWindows, window) - } - } - sh.openWindows = openWindows - - sh.workersLk.Lock() - sh.workers[req.wid].enabled = false - sh.workersLk.Unlock() - - req.done() - } - - sh.trySched() - } - } } @@ -329,210 +284,148 @@ func (sh *scheduler) diag() SchedDiagInfo { } func (sh *scheduler) trySched() { - /* - This assigns tasks to workers based on: - - Task priority (achieved by handling sh.schedQueue in order, since it's already sorted by priority) - - Worker resource availability - - Task-specified worker preference (acceptableWindows array below sorted by this preference) - - Window request age - - 1. For each task in the schedQueue find windows which can handle them - 1.1. Create list of windows capable of handling a task - 1.2. Sort windows according to task selector preferences - 2. Going through schedQueue again, assign task to first acceptable window - with resources available - 3. Submit windows with scheduled tasks to workers - - */ - - sh.workersLk.RLock() - defer sh.workersLk.RUnlock() - - windowsLen := len(sh.openWindows) - queuneLen := sh.schedQueue.Len() - - log.Debugf("SCHED %d queued; %d open windows", queuneLen, windowsLen) - - if windowsLen == 0 || queuneLen == 0 { - // nothing to schedule on - return - } - - windows := make([]schedWindow, windowsLen) - acceptableWindows := make([][]int, queuneLen) - - // Step 1 - throttle := make(chan struct{}, windowsLen) - - var wg sync.WaitGroup - wg.Add(queuneLen) - for i := 0; i < queuneLen; i++ { - throttle <- struct{}{} - - go func(sqi int) { - defer wg.Done() - defer func() { - <-throttle - }() - - task := (*sh.schedQueue)[sqi] - needRes := ResourceTable[task.taskType][task.sector.ProofType] - - task.indexHeap = sqi - for wnd, windowRequest := range sh.openWindows { - worker, ok := sh.workers[windowRequest.worker] - if !ok { - log.Errorf("worker referenced by windowRequest not found (worker: %s)", windowRequest.worker) - // TODO: How to move forward here? - continue - } - - if !worker.enabled { - log.Debugw("skipping disabled worker", "worker", windowRequest.worker) - continue - } + sh.workersLk.Lock() + defer sh.workersLk.Unlock() - // TODO: allow bigger windows - if !windows[wnd].allocated.canHandleRequest(needRes, windowRequest.worker, "schedAcceptable", worker.info.Resources) { - continue - } + log.Debugf("trySched %d queued", sh.schedQueue.Len()) + for sqi := 0; sqi < sh.schedQueue.Len(); sqi++ { // 遍历任务列表 + task := (*sh.schedQueue)[sqi] - rpcCtx, cancel := context.WithTimeout(task.ctx, SelectorTimeout) - ok, err := task.sel.Ok(rpcCtx, task.taskType, task.sector.ProofType, worker) - cancel() - if err != nil { - log.Errorf("trySched(1) req.sel.Ok error: %+v", err) - continue - } + tried := 0 + var acceptable []WorkerID + var freetable []int + best := 0 + localWorker := false + for wid, worker := range sh.workers { + if !worker.enabled { + continue + } - if !ok { + if task.taskType == sealtasks.TTPreCommit2 || task.taskType == sealtasks.TTCommit1 { + if isExist := task.sel.FindDataWoker(task.ctx, task.taskType, task.sector.ID, task.sector.ProofType, worker); !isExist { continue } - - acceptableWindows[sqi] = append(acceptableWindows[sqi], wnd) } - if len(acceptableWindows[sqi]) == 0 { - return + ok, err := task.sel.Ok(task.ctx, task.taskType, task.sector.ProofType, worker) + if err != nil || !ok { + continue } - // Pick best worker (shuffle in case some workers are equally as good) - rand.Shuffle(len(acceptableWindows[sqi]), func(i, j int) { - acceptableWindows[sqi][i], acceptableWindows[sqi][j] = acceptableWindows[sqi][j], acceptableWindows[sqi][i] // nolint:scopelint - }) - sort.SliceStable(acceptableWindows[sqi], func(i, j int) bool { - wii := sh.openWindows[acceptableWindows[sqi][i]].worker // nolint:scopelint - wji := sh.openWindows[acceptableWindows[sqi][j]].worker // nolint:scopelint - - if wii == wji { - // for the same worker prefer older windows - return acceptableWindows[sqi][i] < acceptableWindows[sqi][j] // nolint:scopelint - } - - wi := sh.workers[wii] - wj := sh.workers[wji] - - rpcCtx, cancel := context.WithTimeout(task.ctx, SelectorTimeout) - defer cancel() - - r, err := task.sel.Cmp(rpcCtx, task.taskType, wi, wj) - if err != nil { - log.Errorf("selecting best worker: %s", err) - } - return r - }) - }(i) - } - - wg.Wait() - - log.Debugf("SCHED windows: %+v", windows) - log.Debugf("SCHED Acceptable win: %+v", acceptableWindows) - - // Step 2 - scheduled := 0 - rmQueue := make([]int, 0, queuneLen) - - for sqi := 0; sqi < queuneLen; sqi++ { - task := (*sh.schedQueue)[sqi] - needRes := ResourceTable[task.taskType][task.sector.ProofType] - - selectedWindow := -1 - for _, wnd := range acceptableWindows[task.indexHeap] { - wid := sh.openWindows[wnd].worker - wr := sh.workers[wid].info.Resources - - log.Debugf("SCHED try assign sqi:%d sector %d to window %d", sqi, task.sector.ID.Number, wnd) - - // TODO: allow bigger windows - if !windows[wnd].allocated.canHandleRequest(needRes, wid, "schedAssign", wr) { + freecount := sh.getTaskFreeCount(wid, task.taskType) + if freecount <= 0 { continue } + tried++ + freetable = append(freetable, freecount) + acceptable = append(acceptable, wid) - log.Debugf("SCHED ASSIGNED sqi:%d sector %d task %s to window %d", sqi, task.sector.ID.Number, task.taskType, wnd) + if isExist := task.sel.FindDataWoker(task.ctx, task.taskType, task.sector.ID, task.sector.ProofType, worker); isExist { + localWorker = true + break + } + } - windows[wnd].allocated.add(wr, needRes) - // TODO: We probably want to re-sort acceptableWindows here based on new - // workerHandle.utilization + windows[wnd].allocated.utilization (workerHandle.utilization is used in all - // task selectors, but not in the same way, so need to figure out how to do that in a non-O(n^2 way), and - // without additional network roundtrips (O(n^2) could be avoided by turning acceptableWindows.[] into heaps)) + if len(acceptable) > 0 { + if localWorker { + best = len(acceptable) - 1 + } else { + max := 0 + for i, v := range freetable { + if v > max { + max = v + best = i + } + } + } - selectedWindow = wnd - break + wid := acceptable[best] + whl := sh.workers[wid] + log.Infof("worker %s will be do the %+v jobTask!", whl.info.Hostname, task.taskType) + sh.schedQueue.Remove(sqi) + sqi-- + if err := sh.assignWorker(wid, whl, task); err != nil { + log.Error("assignWorker error: %+v", err) + go task.respond(xerrors.Errorf("assignWorker error: %w", err)) + } } - if selectedWindow < 0 { - // all windows full - continue + if tried == 0 { + log.Infof("no worker do the %+v jobTask!", task.taskType) } - - windows[selectedWindow].todo = append(windows[selectedWindow].todo, task) - - rmQueue = append(rmQueue, sqi) - scheduled++ } +} + +func (sh *scheduler) assignWorker(wid WorkerID, w *workerHandle, req *workerRequest) error { + sh.taskAddOne(wid, req.taskType) + needRes := ResourceTable[req.taskType][req.sector.ProofType] + + w.lk.Lock() + w.preparing.add(w.info.Resources, needRes) + w.lk.Unlock() + + go func() { + err := req.prepare(req.ctx, sh.workTracker.worker(wid, w.workerRpc)) // fetch扇区 + sh.workersLk.Lock() + + if err != nil { + sh.taskReduceOne(wid, req.taskType) + w.lk.Lock() + w.preparing.free(w.info.Resources, needRes) + w.lk.Unlock() + sh.workersLk.Unlock() + + select { + case w.workerOnFree <- struct{}{}: + case <-sh.closing: + log.Warnf("scheduler closed while sending response (prepare error: %+v)", err) + } - if len(rmQueue) > 0 { - for i := len(rmQueue) - 1; i >= 0; i-- { - sh.schedQueue.Remove(rmQueue[i]) + select { + case req.ret <- workerResponse{err: err}: + case <-req.ctx.Done(): + log.Warnf("request got cancelled before we could respond (prepare error: %+v)", err) + case <-sh.closing: + log.Warnf("scheduler closed while sending response (prepare error: %+v)", err) + } + return } - } - // Step 3 + err = w.active.withResources(wid, w.info.Resources, needRes, &sh.workersLk, func() error { + w.lk.Lock() + w.preparing.free(w.info.Resources, needRes) + w.lk.Unlock() + sh.workersLk.Unlock() + defer sh.workersLk.Lock() // we MUST return locked from this function - if scheduled == 0 { - return - } + select { + case w.workerOnFree <- struct{}{}: + case <-sh.closing: + } - scheduledWindows := map[int]struct{}{} - for wnd, window := range windows { - if len(window.todo) == 0 { - // Nothing scheduled here, keep the window open - continue - } + err = req.work(req.ctx, sh.workTracker.worker(wid, w.workerRpc)) + sh.taskReduceOne(wid, req.taskType) - scheduledWindows[wnd] = struct{}{} + select { + case req.ret <- workerResponse{err: err}: + case <-req.ctx.Done(): + log.Warnf("request got cancelled before we could respond") + case <-sh.closing: + log.Warnf("scheduler closed while sending response") + } - window := window // copy - select { - case sh.openWindows[wnd].done <- &window: - default: - log.Error("expected sh.openWindows[wnd].done to be buffered") - } - } + return nil + }) - // Rewrite sh.openWindows array, removing scheduled windows - newOpenWindows := make([]*schedWindowRequest, 0, windowsLen-len(scheduledWindows)) - for wnd, window := range sh.openWindows { - if _, scheduled := scheduledWindows[wnd]; scheduled { - // keep unscheduled windows open - continue - } + sh.workersLk.Unlock() - newOpenWindows = append(newOpenWindows, window) - } + // This error should always be nil, since nothing is setting it, but just to be safe: + if err != nil { + log.Errorf("error executing worker (withResources): %+v", err) + } + }() - sh.openWindows = newOpenWindows + return nil } func (sh *scheduler) schedClose() { @@ -569,3 +462,85 @@ func (sh *scheduler) Close(ctx context.Context) error { } return nil } + +func (sh *scheduler) taskAddOne(wid WorkerID, phaseTaskType sealtasks.TaskType) { + if whl, ok := sh.workers[wid]; ok { + whl.info.TaskResourcesLk.Lock() + defer whl.info.TaskResourcesLk.Unlock() + if counts, ok := whl.info.TaskResources[phaseTaskType]; ok { + counts.RunCount++ + } + } +} + +func (sh *scheduler) taskReduceOne(wid WorkerID, phaseTaskType sealtasks.TaskType) { + if whl, ok := sh.workers[wid]; ok { + whl.info.TaskResourcesLk.Lock() + defer whl.info.TaskResourcesLk.Unlock() + if counts, ok := whl.info.TaskResources[phaseTaskType]; ok { + counts.RunCount-- + } + } +} + +func (sh *scheduler) getTaskCount(wid WorkerID, phaseTaskType sealtasks.TaskType, typeCount string) int { + if whl, ok := sh.workers[wid]; ok { + if counts, ok := whl.info.TaskResources[phaseTaskType]; ok { + whl.info.TaskResourcesLk.Lock() + defer whl.info.TaskResourcesLk.Unlock() + if typeCount == "limit" { + return counts.LimitCount + } + if typeCount == "run" { + return counts.RunCount + } + } + } + return 0 +} + +func (sh *scheduler) getTaskFreeCount(wid WorkerID, phaseTaskType sealtasks.TaskType) int { + limitCount := sh.getTaskCount(wid, phaseTaskType, "limit") // json文件限制的任务数量 + runCount := sh.getTaskCount(wid, phaseTaskType, "run") // 运行中的任务数量 + freeCount := limitCount - runCount + + if limitCount == 0 { // 0:禁止 + return 0 + } + + whl := sh.workers[wid] + log.Infof("worker %s %s: %d free count", whl.info.Hostname, phaseTaskType, freeCount) + + if phaseTaskType == sealtasks.TTAddPiece || phaseTaskType == sealtasks.TTPreCommit1 { + if freeCount >= 0 { // 空闲数量不小于0,小于0也要校准为0 + return freeCount + } + return 0 + } + + if phaseTaskType == sealtasks.TTPreCommit2 || phaseTaskType == sealtasks.TTCommit1 { + c2runCount := sh.getTaskCount(wid, sealtasks.TTCommit2, "run") + if freeCount >= 0 && c2runCount <= 0 { // 需做的任务空闲数量不小于0,且没有c2任务在运行 + return freeCount + } + log.Infof("worker already doing C2 taskjob") + return 0 + } + + if phaseTaskType == sealtasks.TTCommit2 { + p2runCount := sh.getTaskCount(wid, sealtasks.TTPreCommit2, "run") + c1runCount := sh.getTaskCount(wid, sealtasks.TTCommit1, "run") + if freeCount >= 0 && p2runCount <= 0 && c1runCount <= 0 { // 需做的任务空闲数量不小于0,且没有p2\c1任务在运行 + return freeCount + } + log.Infof("worker already doing P2C1 taskjob") + return 0 + } + + if phaseTaskType == sealtasks.TTFetch || phaseTaskType == sealtasks.TTFinalize || + phaseTaskType == sealtasks.TTUnseal || phaseTaskType == sealtasks.TTReadUnsealed { // 不限制 + return 1 + } + + return 0 +} diff --git a/extern/sector-storage/sched_resources.go b/extern/sector-storage/sched_resources.go index 3e359c121..20be6076b 100644 --- a/extern/sector-storage/sched_resources.go +++ b/extern/sector-storage/sched_resources.go @@ -7,21 +7,21 @@ import ( ) func (a *activeResources) withResources(id WorkerID, wr storiface.WorkerResources, r Resources, locker sync.Locker, cb func() error) error { - for !a.canHandleRequest(r, id, "withResources", wr) { - if a.cond == nil { - a.cond = sync.NewCond(locker) - } - a.cond.Wait() - } + // for !a.canHandleRequest(r, id, "withResources", wr) { + // if a.cond == nil { + // a.cond = sync.NewCond(locker) + // } + // a.cond.Wait() + // } a.add(wr, r) err := cb() a.free(wr, r) - if a.cond != nil { - a.cond.Broadcast() - } + // if a.cond != nil { + // a.cond.Broadcast() + // } return err } diff --git a/extern/sector-storage/sched_worker.go b/extern/sector-storage/sched_worker.go index 573aa623b..7d8d30b49 100644 --- a/extern/sector-storage/sched_worker.go +++ b/extern/sector-storage/sched_worker.go @@ -45,8 +45,10 @@ func (sh *scheduler) runWorker(ctx context.Context, w Worker) error { active: &activeResources{}, enabled: true, - closingMgr: make(chan struct{}), - closedMgr: make(chan struct{}), + closingMgr: make(chan struct{}), + closedMgr: make(chan struct{}), + workerOnFree: make(chan struct{}), + todo: make([]*workerRequest, 0), } wid := WorkerID(sessID) @@ -109,63 +111,38 @@ func (sw *schedWorker) handleWorker() { enabled := worker.enabled sched.workersLk.Unlock() - // ask for more windows if we need them (non-blocking) - if enabled { - if !sw.requestWindows() { - return // graceful shutdown - } + if enabled { // ask for more windows if we need them (non-blocking) + sched.workerChange <- struct{}{} // worker空闲申请调度 } } - // wait for more windows to come in, or for tasks to get finished (blocking) - for { - // ping the worker and check session - if !sw.checkSession(ctx) { + for { // 循环等待woker做完任务返回或有调度窗口进来,// wait for more windows to come in, or for tasks to get finished (blocking) + if !sw.checkSession(ctx) { // ping the worker and check session 如果连接不上,禁用后一直试探;如果检查发现session id不一致则弃用 return // invalid session / exiting } - // session looks good - { + { // session looks good sched.workersLk.Lock() enabled := worker.enabled worker.enabled = true sched.workersLk.Unlock() if !enabled { - // go send window requests - break + break // go send window requests } } - // wait for more tasks to be assigned by the main scheduler or for the worker - // to finish precessing a task - update, pokeSched, ok := sw.waitForUpdates() - if !ok { - return - } - if pokeSched { - // a task has finished preparing, which can mean that we've freed some space on some worker - select { - case sched.workerChange <- struct{}{}: - default: // workerChange is buffered, and scheduling is global, so it's ok if we don't send here - } - } - if update { + select { + case <-sw.heartbeatTimer.C: + case <-worker.workerOnFree: + log.Debugw("task done", "workerid", sw.wid) break + case <-sched.closing: + return + case <-worker.closingMgr: + return } } - - // process assigned windows (non-blocking) - sched.workersLk.RLock() - worker.wndLk.Lock() - - sw.workerCompactWindows() - - // send tasks to the worker - sw.processAssignedWindows() - - worker.wndLk.Unlock() - sched.workersLk.RUnlock() } } @@ -175,6 +152,7 @@ func (sw *schedWorker) disable(ctx context.Context) error { // request cleanup in the main scheduler goroutine select { case sw.sched.workerDisable <- workerDisableReq{ + todo: sw.worker.todo, activeWindows: sw.worker.activeWindows, wid: sw.wid, done: func() { diff --git a/extern/sector-storage/selector_alloc.go b/extern/sector-storage/selector_alloc.go index 14724fbe8..385d31608 100644 --- a/extern/sector-storage/selector_alloc.go +++ b/extern/sector-storage/selector_alloc.go @@ -69,3 +69,51 @@ func (s *allocSelector) Cmp(ctx context.Context, task sealtasks.TaskType, a, b * } var _ WorkerSelector = &allocSelector{} + +func (s *allocSelector) FindDataWoker(ctx context.Context, task sealtasks.TaskType, sid abi.SectorID, spt abi.RegisteredSealProof, whnd *workerHandle) bool { + paths, err := whnd.workerRpc.Paths(ctx) + if err != nil { + return false + } + + have := map[stores.ID]struct{}{} + for _, path := range paths { + have[path.ID] = struct{}{} + } + + var ft storiface.SectorFileType + switch task { + case sealtasks.TTAddPiece: + ft = 0 + case sealtasks.TTPreCommit1: + ft = storiface.FTUnsealed + case sealtasks.TTPreCommit2: + ft = storiface.FTCache | storiface.FTSealed + case sealtasks.TTCommit1: + ft = storiface.FTCache | storiface.FTSealed + case sealtasks.TTCommit2: + ft = storiface.FTCache | storiface.FTSealed + case sealtasks.TTFetch: + ft = storiface.FTUnsealed | storiface.FTCache | storiface.FTSealed + case sealtasks.TTFinalize: + ft = storiface.FTCache | storiface.FTSealed + } + + ssize, err := spt.SectorSize() + if err != nil { + return false + } + + find, err := s.index.StorageFindSector(ctx, sid, ft, ssize, false) + if err != nil { + return false + } + + for _, info := range find { + if _, ok := have[info.ID]; ok { + return true + } + } + + return false +} diff --git a/extern/sector-storage/selector_existing.go b/extern/sector-storage/selector_existing.go index 0e3a41aeb..94425cc1f 100644 --- a/extern/sector-storage/selector_existing.go +++ b/extern/sector-storage/selector_existing.go @@ -71,3 +71,43 @@ func (s *existingSelector) Cmp(ctx context.Context, task sealtasks.TaskType, a, } var _ WorkerSelector = &existingSelector{} + +func (s *existingSelector) FindDataWoker(ctx context.Context, task sealtasks.TaskType, sid abi.SectorID, spt abi.RegisteredSealProof, whnd *workerHandle) bool { + tasks, err := whnd.workerRpc.TaskTypes(ctx) + if err != nil { + return false + } + if _, supported := tasks[task]; !supported { + return false + } + + paths, err := whnd.workerRpc.Paths(ctx) + if err != nil { + return false + } + + have := map[stores.ID]struct{}{} + for _, path := range paths { + have[path.ID] = struct{}{} + } + + ssize, err := spt.SectorSize() + if err != nil { + return false + } + + best, err := s.index.StorageFindSector(ctx, sid, s.alloc, ssize, false) + if err != nil { + return false + } + + for _, info := range best { + if info.Weight != 0 { // 为0的权重是fecth来的,不是本地的 + if _, ok := have[info.ID]; ok { + return true + } + } + } + + return false +} diff --git a/extern/sector-storage/selector_task.go b/extern/sector-storage/selector_task.go index e4d92757e..9e05395af 100644 --- a/extern/sector-storage/selector_task.go +++ b/extern/sector-storage/selector_task.go @@ -46,3 +46,33 @@ func (s *taskSelector) Cmp(ctx context.Context, _ sealtasks.TaskType, a, b *work } var _ WorkerSelector = &taskSelector{} + +func (s *taskSelector) FindDataWoker(ctx context.Context, task sealtasks.TaskType, sid abi.SectorID, spt abi.RegisteredSealProof, whnd *workerHandle) bool { + tasks, err := whnd.workerRpc.TaskTypes(ctx) + if err != nil { + return false + } + if _, supported := tasks[task]; !supported { + return false + } + + paths, err := whnd.workerRpc.Paths(ctx) + if err != nil { + return false + } + + have := map[stores.ID]struct{}{} + for _, path := range paths { + have[path.ID] = struct{}{} + } + + for _, info := range s.best { + if info.Weight != 0 { // 为0的权重是fecth来的,不是本地的 + if _, ok := have[info.ID]; ok { + return true + } + } + } + + return false +} diff --git a/extern/sector-storage/stats.go b/extern/sector-storage/stats.go index df3b4eed0..8cbd65804 100644 --- a/extern/sector-storage/stats.go +++ b/extern/sector-storage/stats.go @@ -38,25 +38,25 @@ func (m *Manager) WorkerJobs() map[uuid.UUID][]storiface.WorkerJob { calls[t.job.ID] = struct{}{} } - m.sched.workersLk.RLock() - - for id, handle := range m.sched.workers { - handle.wndLk.Lock() - for wi, window := range handle.activeWindows { - for _, request := range window.todo { - out[uuid.UUID(id)] = append(out[uuid.UUID(id)], storiface.WorkerJob{ - ID: storiface.UndefCall, - Sector: request.sector.ID, - Task: request.taskType, - RunWait: wi + 1, - Start: request.start, - }) - } - } - handle.wndLk.Unlock() - } - - m.sched.workersLk.RUnlock() + // m.sched.workersLk.RLock() + + // for id, handle := range m.sched.workers { + // handle.wndLk.Lock() + // for wi, window := range handle.activeWindows { + // for _, request := range window.todo { + // out[uuid.UUID(id)] = append(out[uuid.UUID(id)], storiface.WorkerJob{ + // ID: storiface.UndefCall, + // Sector: request.sector.ID, + // Task: request.taskType, + // RunWait: wi + 1, + // Start: request.start, + // }) + // } + // } + // handle.wndLk.Unlock() + // } + + // m.sched.workersLk.RUnlock() m.workLk.Lock() defer m.workLk.Unlock() diff --git a/extern/sector-storage/stores/local.go b/extern/sector-storage/stores/local.go index c39e76f18..b542cedf4 100644 --- a/extern/sector-storage/stores/local.go +++ b/extern/sector-storage/stores/local.go @@ -402,7 +402,7 @@ func (st *Local) AcquireSector(ctx context.Context, sid storage.SectorRef, exist continue } - si, err := st.index.StorageFindSector(ctx, sid.ID, fileType, ssize, false) + si, err := st.CheckDeclareSector(ctx, sid.ID, fileType, ssize, pathType) if err != nil { log.Warnf("finding existing sector %d(t:%d) failed: %+v", sid, fileType, err) continue @@ -661,3 +661,27 @@ func (st *Local) FsStat(ctx context.Context, id ID) (fsutil.FsStat, error) { } var _ Store = &Local{} + +func (st *Local) CheckDeclareSector(ctx context.Context, sid abi.SectorID, fileType storiface.SectorFileType, ssize abi.SectorSize, pathType storiface.PathType) ([]SectorStorageInfo, error) { + si0, err := st.index.StorageFindSector(ctx, sid, fileType, ssize, false) + if len(si0) > 0 || err != nil { + return si0, err + } + if pathType == storiface.PathStorage { + for id, path := range st.paths { + if sstInfo, err := st.index.StorageInfo(ctx, id); err == nil { + if sstInfo.CanStore { + p := filepath.Join(path.local, fileType.String(), storiface.SectorName(sid)) + _, err := os.Stat(p) + if os.IsNotExist(err) || err != nil { + continue + } + if err := st.index.StorageDeclareSector(ctx, id, sid, fileType, sstInfo.CanStore); err != nil { + continue + } + } + } + } + } + return st.index.StorageFindSector(ctx, sid, fileType, ssize, false) +} diff --git a/extern/sector-storage/storiface/worker.go b/extern/sector-storage/storiface/worker.go index 49d1de357..1af2c3cc3 100644 --- a/extern/sector-storage/storiface/worker.go +++ b/extern/sector-storage/storiface/worker.go @@ -5,6 +5,10 @@ import ( "errors" "fmt" "io" + "os" + "strconv" + "strings" + "sync" "time" "github.com/google/uuid" @@ -19,7 +23,9 @@ import ( type WorkerInfo struct { Hostname string - Resources WorkerResources + Resources WorkerResources + TaskResourcesLk sync.Mutex + TaskResources map[sealtasks.TaskType]*TaskConfig } type WorkerResources struct { @@ -144,3 +150,156 @@ type WorkerReturn interface { ReturnReadPiece(ctx context.Context, callID CallID, ok bool, err *CallError) error ReturnFetch(ctx context.Context, callID CallID, err *CallError) error } + +type TaskConfig struct { + LimitCount int + RunCount int +} + +type taskLimitConfig struct { + AddPiece int + PreCommit1 int + PreCommit2 int + Commit1 int + Commit2 int + Fetch int + Finalize int + Unseal int + ReadUnsealed int +} + +func NewTaskLimitConfig() map[sealtasks.TaskType]*TaskConfig { + config := &taskLimitConfig{ + AddPiece: 1, + PreCommit1: 1, + PreCommit2: 1, + Commit1: 1, + Commit2: 1, + Fetch: 1, + Finalize: 1, + Unseal: 1, + ReadUnsealed: 1, + } + + ability := "" + if env, ok := os.LookupEnv("ABILITY"); ok { + ability = strings.Replace(string(env), " ", "", -1) // 去除空格 + ability = strings.Replace(ability, "\n", "", -1) // 去除换行符 + } + splitArr := strings.Split(ability, ",") + for _, part := range splitArr { + if strings.Contains(part, "AP:") { + splitPart := strings.Split(part, ":") + if intCount, err := strconv.Atoi(splitPart[1]); err == nil { + config.AddPiece = intCount + } + } else if strings.Contains(part, "PC1:") { + splitPart := strings.Split(part, ":") + if intCount, err := strconv.Atoi(splitPart[1]); err == nil { + config.PreCommit1 = intCount + } + } else if strings.Contains(part, "PC2:") { + splitPart := strings.Split(part, ":") + if intCount, err := strconv.Atoi(splitPart[1]); err == nil { + config.PreCommit2 = intCount + } + } else if strings.Contains(part, "C1:") { + splitPart := strings.Split(part, ":") + if intCount, err := strconv.Atoi(splitPart[1]); err == nil { + config.Commit1 = intCount + } + } else if strings.Contains(part, "C2:") { + splitPart := strings.Split(part, ":") + if intCount, err := strconv.Atoi(splitPart[1]); err == nil { + config.Commit2 = intCount + } + } else if strings.Contains(part, "GET:") { + splitPart := strings.Split(part, ":") + if intCount, err := strconv.Atoi(splitPart[1]); err == nil { + config.Fetch = intCount + } + } else if strings.Contains(part, "FIN:") { + splitPart := strings.Split(part, ":") + if intCount, err := strconv.Atoi(splitPart[1]); err == nil { + config.Finalize = intCount + } + } else if strings.Contains(part, "UNS:") { + splitPart := strings.Split(part, ":") + if intCount, err := strconv.Atoi(splitPart[1]); err == nil { + config.Unseal = intCount + } + } else if strings.Contains(part, "RD:") { + splitPart := strings.Split(part, ":") + if intCount, err := strconv.Atoi(splitPart[1]); err == nil { + config.ReadUnsealed = intCount + } + } + } + + cfgResources := make(map[sealtasks.TaskType]*TaskConfig) + + if _, ok := cfgResources[sealtasks.TTAddPiece]; !ok { + cfgResources[sealtasks.TTAddPiece] = &TaskConfig{ + LimitCount: config.AddPiece, + RunCount: 0, + } + } + + if _, ok := cfgResources[sealtasks.TTPreCommit1]; !ok { + cfgResources[sealtasks.TTPreCommit1] = &TaskConfig{ + LimitCount: config.PreCommit1, + RunCount: 0, + } + } + + if _, ok := cfgResources[sealtasks.TTPreCommit2]; !ok { + cfgResources[sealtasks.TTPreCommit2] = &TaskConfig{ + LimitCount: config.PreCommit2, + RunCount: 0, + } + } + + if _, ok := cfgResources[sealtasks.TTCommit1]; !ok { + cfgResources[sealtasks.TTCommit1] = &TaskConfig{ + LimitCount: config.Commit1, + RunCount: 0, + } + } + + if _, ok := cfgResources[sealtasks.TTCommit2]; !ok { + cfgResources[sealtasks.TTCommit2] = &TaskConfig{ + LimitCount: config.Commit2, + RunCount: 0, + } + } + + if _, ok := cfgResources[sealtasks.TTFetch]; !ok { + cfgResources[sealtasks.TTFetch] = &TaskConfig{ + LimitCount: config.Fetch, + RunCount: 0, + } + } + + if _, ok := cfgResources[sealtasks.TTFinalize]; !ok { + cfgResources[sealtasks.TTFinalize] = &TaskConfig{ + LimitCount: config.Finalize, + RunCount: 0, + } + } + + if _, ok := cfgResources[sealtasks.TTUnseal]; !ok { + cfgResources[sealtasks.TTUnseal] = &TaskConfig{ + LimitCount: config.Unseal, + RunCount: 0, + } + } + + if _, ok := cfgResources[sealtasks.TTReadUnsealed]; !ok { + cfgResources[sealtasks.TTReadUnsealed] = &TaskConfig{ + LimitCount: config.ReadUnsealed, + RunCount: 0, + } + } + + return cfgResources +} diff --git a/extern/sector-storage/worker_local.go b/extern/sector-storage/worker_local.go index abbad4d9c..1166ec366 100644 --- a/extern/sector-storage/worker_local.go +++ b/extern/sector-storage/worker_local.go @@ -490,6 +490,10 @@ func (l *LocalWorker) Info(context.Context) (storiface.WorkerInfo, error) { panic(err) } + if env, ok := os.LookupEnv("WORKER_NAME"); ok { + hostname = hostname + "-" + env + } + gpus, err := ffi.GetGPUDevices() if err != nil { log.Errorf("getting gpu devices failed: %+v", err) @@ -511,7 +515,8 @@ func (l *LocalWorker) Info(context.Context) (storiface.WorkerInfo, error) { } return storiface.WorkerInfo{ - Hostname: hostname, + Hostname: hostname, + TaskResources: storiface.NewTaskLimitConfig(), Resources: storiface.WorkerResources{ MemPhysical: mem.Total, MemSwap: memSwap, diff --git a/extern/storage-sealing/garbage.go b/extern/storage-sealing/garbage.go index 185bebe35..340860c1a 100644 --- a/extern/storage-sealing/garbage.go +++ b/extern/storage-sealing/garbage.go @@ -2,6 +2,8 @@ package sealing import ( "context" + scClient "github.com/moran666666/sector-counter/client" + "os" "golang.org/x/xerrors" @@ -60,10 +62,21 @@ func (m *Sealing) PledgeSector() error { return } - sid, err := m.sc.Next() - if err != nil { - log.Errorf("%+v", err) - return + var sid abi.SectorNumber + if _, ok := os.LookupEnv("SC_TYPE"); ok { + sid0, err := scClient.NewClient().GetSectorID(context.Background(), "") + if err != nil { + log.Errorf("%+v", err) + return + } + sid = abi.SectorNumber(sid0) + } else { + sid0, err := m.sc.Next() + if err != nil { + log.Errorf("%+v", err) + return + } + sid = sid0 } sectorID := m.minerSector(spt, sid) err = m.sealer.NewSector(ctx, sectorID) diff --git a/extern/storage-sealing/sealing.go b/extern/storage-sealing/sealing.go index d0c8fd3c9..43301d003 100644 --- a/extern/storage-sealing/sealing.go +++ b/extern/storage-sealing/sealing.go @@ -3,8 +3,10 @@ package sealing import ( "context" "errors" + scClient "github.com/moran666666/sector-counter/client" "io" "math" + "os" "sync" "time" @@ -386,11 +388,20 @@ func (m *Sealing) newDealSector(ctx context.Context) (abi.SectorNumber, abi.Sect // Now actually create a new sector - sid, err := m.sc.Next() - if err != nil { - return 0, 0, xerrors.Errorf("getting sector number: %w", err) + var sid abi.SectorNumber + if _, ok := os.LookupEnv("SC_TYPE"); ok { + sid0, err := scClient.NewClient().GetSectorID(context.Background(), "") + if err != nil { + return 0, 0, xerrors.Errorf("getting sector number: %w", err) + } + sid = abi.SectorNumber(sid0) + } else { + sid0, err := m.sc.Next() + if err != nil { + return 0, 0, xerrors.Errorf("getting sector number: %w", err) + } + sid = sid0 } - err = m.sealer.NewSector(context.TODO(), m.minerSector(spt, sid)) if err != nil { return 0, 0, xerrors.Errorf("initializing sector: %w", err) diff --git a/go.mod b/go.mod index f99e44de4..aeed6fa18 100644 --- a/go.mod +++ b/go.mod @@ -148,6 +148,7 @@ require ( gopkg.in/cheggaaa/pb.v1 v1.0.28 gotest.tools v2.2.0+incompatible launchpad.net/gocheck v0.0.0-20140225173054-000000000087 // indirect + github.com/moran666666/sector-counter v0.0.0-20200819122504-72fe8e09bf44 ) replace github.com/filecoin-project/lotus => ./ @@ -159,3 +160,5 @@ replace github.com/filecoin-project/filecoin-ffi => ./extern/filecoin-ffi replace github.com/filecoin-project/test-vectors => ./extern/test-vectors replace github.com/supranational/blst => ./extern/blst + +replace github.com/moran666666/sector-counter => ./extern/sector-counter diff --git a/miner/miner.go b/miner/miner.go index 4075c8cc6..865520d0d 100644 --- a/miner/miner.go +++ b/miner/miner.go @@ -6,6 +6,7 @@ import ( "crypto/rand" "encoding/binary" "fmt" + "os" "sync" "time" @@ -115,7 +116,11 @@ func (m *Miner) Start(ctx context.Context) error { return fmt.Errorf("miner already started") } m.stop = make(chan struct{}) - go m.mine(context.TODO()) + if _, ok := os.LookupEnv("LOTUS_WNPOST"); ok { + go m.mine(context.TODO()) + } else { + log.Warnf("This miner will be disable minning block function.") + } return nil } diff --git a/node/modules/storageminer.go b/node/modules/storageminer.go index 30f84aeaf..c2fef777a 100644 --- a/node/modules/storageminer.go +++ b/node/modules/storageminer.go @@ -225,7 +225,11 @@ func StorageMiner(fc config.MinerFeeConfig) func(params StorageMinerParams) (*st lc.Append(fx.Hook{ OnStart: func(context.Context) error { - go fps.Run(ctx) + if _, ok := os.LookupEnv("LOTUS_WDPOST"); ok { + go fps.Run(ctx) + } else { + log.Warnf("This miner will be disable windowPoSt.") + } return sm.Run(ctx) }, OnStop: sm.Stop, From 20fba4f67921ca69e6cfa9c586355fecb606b8fb Mon Sep 17 00:00:00 2001 From: moran666666 <396124008@qq.com> Date: Mon, 21 Dec 2020 11:42:38 +0800 Subject: [PATCH 02/26] add extern c2 --- cmd/lotus-seal-worker/main.go | 8 ++ .../sector-storage/ffiwrapper/sealer_cgo.go | 84 +++++++++++++++++++ 2 files changed, 92 insertions(+) diff --git a/cmd/lotus-seal-worker/main.go b/cmd/lotus-seal-worker/main.go index 96cfbabb9..0b6278a5d 100644 --- a/cmd/lotus-seal-worker/main.go +++ b/cmd/lotus-seal-worker/main.go @@ -103,6 +103,11 @@ var runCmd = &cli.Command{ Name: "run", Usage: "Start lotus worker", Flags: []cli.Flag{ + &cli.StringFlag{ + Name: "c2address", + Usage: "extern c2 ip and port", + Value: "", + }, &cli.StringFlag{ Name: "rpc", Usage: "worker rpc ip and port", @@ -185,6 +190,9 @@ var runCmd = &cli.Command{ Action: func(cctx *cli.Context) error { log.Info("Starting lotus worker") + if cctx.String("c2address") != "" { + os.Setenv("C2_ADDRESS", cctx.String("c2address")) + } if cctx.String("workername") != "" { os.Setenv("WORKER_NAME", cctx.String("workername")) } diff --git a/extern/sector-storage/ffiwrapper/sealer_cgo.go b/extern/sector-storage/ffiwrapper/sealer_cgo.go index 1c8c7ee84..7c638b2d1 100644 --- a/extern/sector-storage/ffiwrapper/sealer_cgo.go +++ b/extern/sector-storage/ffiwrapper/sealer_cgo.go @@ -5,9 +5,14 @@ package ffiwrapper import ( "bufio" "bytes" + "compress/gzip" "context" + "encoding/json" + "fmt" "io" + "io/ioutil" "math/bits" + "net/http" "os" "runtime" @@ -520,6 +525,10 @@ func (sb *Sealer) SealCommit1(ctx context.Context, sector storage.SectorRef, tic } func (sb *Sealer) SealCommit2(ctx context.Context, sector storage.SectorRef, phase1Out storage.Commit1Out) (storage.Proof, error) { + if c2Address, ok := os.LookupEnv("C2_ADDRESS"); ok { + log.Warn("Seal extern commit2 .......................") + return RequestCommit2(sector.ID, phase1Out, c2Address) + } return ffi.SealCommitPhase2(phase1Out, sector.ID.Number, sector.ID.Miner) } @@ -673,3 +682,78 @@ func GenerateUnsealedCID(proofType abi.RegisteredSealProof, pieces []abi.PieceIn return ffi.GenerateUnsealedCID(proofType, allPieces) } + +type Commit2Request struct { + SectorID abi.SectorID + Commit1Out storage.Commit1Out +} +type Commit2Response struct { + SectorID abi.SectorID + Proof storage.Proof +} + +func RequestCommit2(sector abi.SectorID, phase1Out storage.Commit1Out, c2Address string) (storage.Proof, error) { + request := Commit2Request{} + request.SectorID = abi.SectorID{ + Miner: abi.ActorID(sector.Miner), + Number: abi.SectorNumber(sector.Number), + } + request.Commit1Out = phase1Out + + b, err := json.Marshal(request) + if err != nil { + log.Errorf("json format error: %+v", err) + return nil, err + } + + log.Info("send commit2 request to remote service") + + zBuf := new(bytes.Buffer) + zw := gzip.NewWriter(zBuf) + if _, err = zw.Write(b); err != nil { + log.Errorf("commit2 gzip failed, error: %+v", err) + } + + zw.Flush() + zw.Close() + + req, err := http.NewRequest("POST", fmt.Sprintf("http://%s/proxy/commit2", c2Address), zBuf) + if err != nil { + log.Errorf("http new request err: %+v", err) + return nil, err + } + + req.Header.Set("Content-Type", "application/json;charset=utf-8") + req.Header.Set("Content-Encoding", "gzip") + + log.Info("request commit2 from remote service ..................") + + resp, err := http.DefaultClient.Do(req) + if err != nil { + log.Error("do request err: ", err) + return nil, err + } + if resp.StatusCode != 200 { + log.Errorf("http client do code: %d err: %+v", resp.StatusCode, err) + return nil, err + } + log.Info("request commit2 ended") + defer resp.Body.Close() + + result, err := ioutil.ReadAll(resp.Body) + if err != nil { + log.Errorf("ioutil read all err: %+v", err) + return nil, err + } + + response := Commit2Response{} + err = json.Unmarshal(result, &response) + if err != nil { + log.Errorf("json format len: %d error: %+v", len(result), err) + return nil, err + } + + log.Info("response commit2 result: ", response) + + return response.Proof, nil +} From 51be23cc36d2c589fc2a5af0198d32b0863e987e Mon Sep 17 00:00:00 2001 From: moran666666 <396124008@qq.com> Date: Mon, 21 Dec 2020 12:00:15 +0800 Subject: [PATCH 03/26] add extern c2 cmd --- cmd/lotus-extern-commit2/scheduler/sched.go | 194 ++++++++++++++++++++ cmd/lotus-extern-commit2/server/c2server.go | 145 +++++++++++++++ 2 files changed, 339 insertions(+) create mode 100644 cmd/lotus-extern-commit2/scheduler/sched.go create mode 100644 cmd/lotus-extern-commit2/server/c2server.go diff --git a/cmd/lotus-extern-commit2/scheduler/sched.go b/cmd/lotus-extern-commit2/scheduler/sched.go new file mode 100644 index 000000000..52599df3f --- /dev/null +++ b/cmd/lotus-extern-commit2/scheduler/sched.go @@ -0,0 +1,194 @@ +package main + +import ( + "flag" + "fmt" + "io" + "io/ioutil" + "net/http" + "sync" + "time" + + logging "github.com/ipfs/go-log/v2" +) + +var log = logging.Logger("lotus-c2scheduler") + +// C2Proxy 代理主机清单结构体 +type C2Proxy struct { + HostListLk sync.RWMutex + HostList map[string]*HostInfo +} + +// HostInfo C2主机信息结构体 +type HostInfo struct { + Active bool + StatTime time.Time +} + +// GlobleProxy 全局变量 +var GlobleProxy C2Proxy + +// ProxyInit 初始化全局变量 +func (p *C2Proxy) ProxyInit() { + p.HostListLk.Lock() + p.HostList = make(map[string]*HostInfo) + p.HostListLk.Unlock() +} + +// AddHost 添加c2主机,存在则忽略 +func (p *C2Proxy) AddHost(key string) { + p.HostListLk.Lock() + defer p.HostListLk.Unlock() + if _, exist := p.HostList[key]; !exist { + p.HostList[key] = &HostInfo{ + Active: true, + StatTime: time.Now(), + } + fmt.Println("test==============", key, "接入注册成功") + } +} + +// DeleteHost 删除C2主机 +func (p *C2Proxy) DeleteHost(key string) { + p.HostListLk.Lock() + defer p.HostListLk.Unlock() + delete(p.HostList, key) +} + +// DisableHost 去使能C2主机 +func (p *C2Proxy) DisableHost(key string) { + p.HostListLk.Lock() + defer p.HostListLk.Unlock() + p.HostList[key] = &HostInfo{ + Active: false, + StatTime: time.Now(), + } +} + +// EnableHost 使能C2主机 +func (p *C2Proxy) EnableHost(key string) { + p.HostListLk.Lock() + defer p.HostListLk.Unlock() + p.HostList[key] = &HostInfo{ + Active: true, + StatTime: time.Now(), + } +} + +// GetFreeHost 获取空闲的C2主机 +func (p *C2Proxy) GetFreeHost() string { + p.HostListLk.Lock() + defer p.HostListLk.Unlock() + for host, hostInfo := range GlobleProxy.HostList { + if hostInfo.Active { + return host + } + } + return "" +} + +func main() { + localAddress := flag.String("local", "127.0.0.1:16800", "http listen address") + flag.Parse() + + GlobleProxy.ProxyInit() + go checkHeart() + + fmt.Println("调度器启动: ", *localAddress) + http.HandleFunc("/proxy/register", HandleRegister) + http.HandleFunc("/proxy/commit2", ProxyCommit2) + http.ListenAndServe(*localAddress, nil) +} + +func checkHeart() { + for { + hostList := make([]string, 0) + + GlobleProxy.HostListLk.Lock() + for k := range GlobleProxy.HostList { // 因为锁,先将主机清单copy出来 + hostList = append(hostList, k) + } + GlobleProxy.HostListLk.Unlock() + + for _, host := range hostList { // 检测c2主机是否存活 + resp, err := http.Get(fmt.Sprintf("http://%s/commit2/ping", host)) + if err != nil { + GlobleProxy.DeleteHost(host) + fmt.Println("test==============", host, "1心跳检测失败") + fmt.Println(err) + continue + } + respBody, err := ioutil.ReadAll(resp.Body) + if err != nil { + GlobleProxy.DeleteHost(host) + fmt.Println("test==============", host, "2心跳检测失败") + fmt.Println(err) + continue + } + if string(respBody) != "pong" { + GlobleProxy.DeleteHost(host) + fmt.Println("test==============", host, "3心跳检测失败") + fmt.Println("ping err: ", host) + } + resp.Body.Close() + fmt.Println("test==============", host, "心跳检测正常") + } + + time.Sleep(15 * time.Second) + } +} + +// HandleRegister c2主机向代理调度器接入注册(间隔10s一次) +func HandleRegister(w http.ResponseWriter, req *http.Request) { + reqBody, err := ioutil.ReadAll(req.Body) + if err != nil { + log.Errorf("HandleRegister request body err: %+v", err) + return + } + GlobleProxy.AddHost(string(reqBody)) // 添加主机记录,存在则不理会 + io.WriteString(w, "Register ok!") +} + +// ProxyCommit2 转发miner发过来的c2到c2计算机器上 +func ProxyCommit2(w http.ResponseWriter, r *http.Request) { + // body, err := ioutil.ReadAll(r.Body) + // if err != nil { + // fmt.Println("Proxy: ioutil.ReadAll(r.Body) ", err.Error()) + // } + + var host, hostURL string + for { // 一直找到可用c2主机为止 + host = GlobleProxy.GetFreeHost() + if host != "" { + GlobleProxy.DisableHost(host) // 找到可用c2主机后,去使能 + hostURL = fmt.Sprintf("http://%s/commit2/task", host) + break + } + time.Sleep(6 * time.Second) + } + + // req, err := http.NewRequest(r.Method, hostURL, strings.NewReader(string(body))) + request, err := http.NewRequest(r.Method, hostURL, r.Body) + if err != nil { + fmt.Print("Proxy: http.NewRequest ", err.Error()) + return + } + + for k, v := range r.Header { + request.Header.Set(k, v[0]) + } + fmt.Println("test============== 转发", r.URL.Host, "C2任务到", host) + resp, err := http.DefaultClient.Do(request) // 转发到c2主机(要等待,可能要很久) + GlobleProxy.EnableHost(host) // 做完c2任务后使能 + if err != nil { + fmt.Print("Proxy: http.DefaultClient.Do(request) ", err.Error()) + return + } + defer resp.Body.Close() + + for k, v := range resp.Header { + w.Header().Set(k, v[0]) + } + io.Copy(w, resp.Body) // 将c2主机的结果返回给miner +} diff --git a/cmd/lotus-extern-commit2/server/c2server.go b/cmd/lotus-extern-commit2/server/c2server.go new file mode 100644 index 000000000..c4acb939c --- /dev/null +++ b/cmd/lotus-extern-commit2/server/c2server.go @@ -0,0 +1,145 @@ +package main + +import ( + "compress/gzip" + "encoding/json" + "flag" + "fmt" + "io" + "io/ioutil" + "net/http" + "strings" + "time" + + "context" + + logging "github.com/ipfs/go-log/v2" + + "github.com/filecoin-project/go-state-types/abi" + "github.com/filecoin-project/lotus/extern/sector-storage/ffiwrapper" + "github.com/filecoin-project/lotus/extern/sector-storage/ffiwrapper/basicfs" + "github.com/filecoin-project/specs-storage/storage" + + "github.com/filecoin-project/lotus/build" + "github.com/filecoin-project/lotus/chain/actors/builtin/miner" + "github.com/filecoin-project/lotus/chain/actors/policy" +) + +var log = logging.Logger("lotus-c2server") + +func main() { + remoteAddress := flag.String("remote", "127.0.0.1:16800", "scheduler http listen address") + localAddress := flag.String("local", "127.0.0.1:26800", "c2 host http listen address") + flag.Parse() + + go Register(*remoteAddress, *localAddress) + + fmt.Println("C2 计算主机启动: ", *localAddress) + http.HandleFunc("/commit2/ping", Pong) + http.HandleFunc("/commit2/task", HandleCommit2) + http.ListenAndServe(*localAddress, nil) +} + +// Register C2主机向调度器注册 +func Register(remoteAddress string, localAddress string) { + for { + req, err := http.NewRequest("POST", fmt.Sprintf("http://%s/proxy/register", remoteAddress), strings.NewReader(localAddress)) + if err != nil { + fmt.Print("Register: http.NewRequest ", err.Error()) + } + + resp, err := http.DefaultClient.Do(req) + if err != nil { + fmt.Print(err) + } + resp.Body.Close() + time.Sleep(30 * time.Second) + } +} + +// Pong 回应调度器的存活请求 +func Pong(w http.ResponseWriter, req *http.Request) { + io.WriteString(w, "pong") +} + +// HandleCommit2 调用C2处理函数 +func HandleCommit2(w http.ResponseWriter, req *http.Request) { + // reqBody, err := ioutil.ReadAll(req.Body) + // if err != nil { + // log.Errorf("ioutil read c2 request body err: %+v", err) + // return + // } + fmt.Println("test============== 接收到C2任务") + reqBody, err := gzip.NewReader(req.Body) + if err != nil { + log.Errorf("gzip commit2 unzip failed, error: %+v", err) + } + defer reqBody.Close() + undatas, err := ioutil.ReadAll(reqBody) // 解压 + if err != nil { + log.Errorf("ioutil read c2 request body err: %+v", err) + return + } + fmt.Println("test============== 解压C2任务成功") + + request := Commit2Request{} + if err := json.Unmarshal(undatas, &request); err != nil { // 解析c1输出结果到request结构体变量中 + log.Errorf("request json unmarshel error: %+v", err) + return + } + fmt.Println("test============== 解析C2任务成功,开始做证明:", request) + + // log.Info("request commit2 : ", request) + + proof, err := doC2Job(34359738368, request) // 调用c2函数做任务 + if err != nil { + } + fmt.Println("test============== C2任务完成") + + response := Commit2Response{ // 返回结构体 + SectorID: request.SectorID, + Proof: proof, + } + + jsonResponse, err := json.Marshal(response) // 将返回结果json序列化 + if err != nil { + log.Errorf("response json marshel error: %+v", err) + return + } + io.WriteString(w, string(jsonResponse)) // io.Copy(w, string(jsonResponse)) + fmt.Println("test============== 返回C2任务:", jsonResponse) + // log.Info("response commit2 : ", jsonResponse) +} + +// Commit2Request C2请求结构体 +type Commit2Request struct { + SectorID abi.SectorID + Commit1Out storage.Commit1Out +} + +// Commit2Response C2结果响应结构体 +type Commit2Response struct { + SectorID abi.SectorID + Proof storage.Proof +} + +// doC2Job 做C2任务 +func doC2Job(sectorSize uint64, c2Req Commit2Request) (storage.Proof, error) { + policy.AddSupportedProofTypes(abi.RegisteredSealProof_StackedDrg2KiBV1) + + sb, err := ffiwrapper.New(&basicfs.Provider{Root: ""}) + if err != nil { + return nil, err + } + + spt, err := miner.SealProofTypeFromSectorSize(abi.SectorSize(sectorSize), build.NewestNetworkVersion) + if err != nil { + panic(err) + } + sid := storage.SectorRef{ + ID: c2Req.SectorID, + ProofType: spt, + } + + return sb.SealCommit2(context.TODO(), sid, c2Req.Commit1Out) +} From d08f5605ab4dc08a0f913da6e8c91eab6de82808 Mon Sep 17 00:00:00 2001 From: moran666666 <396124008@qq.com> Date: Tue, 22 Dec 2020 13:44:21 +0800 Subject: [PATCH 04/26] modify ap-p1 to local jobs --- extern/sector-storage/sched.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extern/sector-storage/sched.go b/extern/sector-storage/sched.go index 6d52bbf10..665ef2c09 100644 --- a/extern/sector-storage/sched.go +++ b/extern/sector-storage/sched.go @@ -301,7 +301,7 @@ func (sh *scheduler) trySched() { continue } - if task.taskType == sealtasks.TTPreCommit2 || task.taskType == sealtasks.TTCommit1 { + if task.taskType == sealtasks.TTPreCommit1 || task.taskType == sealtasks.TTPreCommit2 || task.taskType == sealtasks.TTCommit1 { if isExist := task.sel.FindDataWoker(task.ctx, task.taskType, task.sector.ID, task.sector.ProofType, worker); !isExist { continue } From 8050361d9439c13a92df546fa7a043323854650f Mon Sep 17 00:00:00 2001 From: moran666666 <396124008@qq.com> Date: Wed, 23 Dec 2020 21:46:07 +0800 Subject: [PATCH 05/26] modify c2server print --- cmd/lotus-extern-commit2/server/c2server.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cmd/lotus-extern-commit2/server/c2server.go b/cmd/lotus-extern-commit2/server/c2server.go index c4acb939c..691edfbea 100644 --- a/cmd/lotus-extern-commit2/server/c2server.go +++ b/cmd/lotus-extern-commit2/server/c2server.go @@ -87,7 +87,7 @@ func HandleCommit2(w http.ResponseWriter, req *http.Request) { log.Errorf("request json unmarshel error: %+v", err) return } - fmt.Println("test============== 解析C2任务成功,开始做证明:", request) + fmt.Println("test============== 解析C2任务成功,开始做证明......") // log.Info("request commit2 : ", request) @@ -107,7 +107,7 @@ func HandleCommit2(w http.ResponseWriter, req *http.Request) { return } io.WriteString(w, string(jsonResponse)) // io.Copy(w, string(jsonResponse)) - fmt.Println("test============== 返回C2任务:", jsonResponse) + fmt.Println("test============== 返回C2任务......") // log.Info("response commit2 : ", jsonResponse) } From 777d8edd3667bdf8d1adbe4149aacf771974332f Mon Sep 17 00:00:00 2001 From: moran666666 <396124008@qq.com> Date: Thu, 24 Dec 2020 01:06:26 +0800 Subject: [PATCH 06/26] modify c2server file --- cmd/lotus-extern-commit2/server/c2server.go | 35 +++++++++++---------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/cmd/lotus-extern-commit2/server/c2server.go b/cmd/lotus-extern-commit2/server/c2server.go index 691edfbea..5ad3fb702 100644 --- a/cmd/lotus-extern-commit2/server/c2server.go +++ b/cmd/lotus-extern-commit2/server/c2server.go @@ -8,21 +8,22 @@ import ( "io" "io/ioutil" "net/http" + "os" "strings" "time" "context" + "github.com/docker/go-units" logging "github.com/ipfs/go-log/v2" "github.com/filecoin-project/go-state-types/abi" + "github.com/filecoin-project/lotus/build" "github.com/filecoin-project/lotus/extern/sector-storage/ffiwrapper" "github.com/filecoin-project/lotus/extern/sector-storage/ffiwrapper/basicfs" "github.com/filecoin-project/specs-storage/storage" - "github.com/filecoin-project/lotus/build" "github.com/filecoin-project/lotus/chain/actors/builtin/miner" - "github.com/filecoin-project/lotus/chain/actors/policy" ) var log = logging.Logger("lotus-c2server") @@ -30,8 +31,10 @@ var log = logging.Logger("lotus-c2server") func main() { remoteAddress := flag.String("remote", "127.0.0.1:16800", "scheduler http listen address") localAddress := flag.String("local", "127.0.0.1:26800", "c2 host http listen address") + workPath := flag.String("workpath", "~/.c2path", "c2 work path") flag.Parse() + os.Setenv("C2_PATH", *workPath) go Register(*remoteAddress, *localAddress) fmt.Println("C2 计算主机启动: ", *localAddress) @@ -64,11 +67,6 @@ func Pong(w http.ResponseWriter, req *http.Request) { // HandleCommit2 调用C2处理函数 func HandleCommit2(w http.ResponseWriter, req *http.Request) { - // reqBody, err := ioutil.ReadAll(req.Body) - // if err != nil { - // log.Errorf("ioutil read c2 request body err: %+v", err) - // return - // } fmt.Println("test============== 接收到C2任务") reqBody, err := gzip.NewReader(req.Body) if err != nil { @@ -89,9 +87,7 @@ func HandleCommit2(w http.ResponseWriter, req *http.Request) { } fmt.Println("test============== 解析C2任务成功,开始做证明......") - // log.Info("request commit2 : ", request) - - proof, err := doC2Job(34359738368, request) // 调用c2函数做任务 + proof, err := doC2Job(request) // 调用c2函数做任务 if err != nil { } fmt.Println("test============== C2任务完成") @@ -108,7 +104,6 @@ func HandleCommit2(w http.ResponseWriter, req *http.Request) { } io.WriteString(w, string(jsonResponse)) // io.Copy(w, string(jsonResponse)) fmt.Println("test============== 返回C2任务......") - // log.Info("response commit2 : ", jsonResponse) } // Commit2Request C2请求结构体 @@ -124,15 +119,23 @@ type Commit2Response struct { } // doC2Job 做C2任务 -func doC2Job(sectorSize uint64, c2Req Commit2Request) (storage.Proof, error) { - policy.AddSupportedProofTypes(abi.RegisteredSealProof_StackedDrg2KiBV1) - - sb, err := ffiwrapper.New(&basicfs.Provider{Root: ""}) +func doC2Job(c2Req Commit2Request) (storage.Proof, error) { + rootPath, _ := os.LookupEnv("C2_PATH") + sbfs := &basicfs.Provider{ + Root: rootPath, + } + sb, err := ffiwrapper.New(sbfs) if err != nil { return nil, err } - spt, err := miner.SealProofTypeFromSectorSize(abi.SectorSize(sectorSize), build.NewestNetworkVersion) + sectorSizeInt, err := units.RAMInBytes("32GiB") + if err != nil { + return nil, err + } + sectorSize := abi.SectorSize(sectorSizeInt) + spt, err := miner.SealProofTypeFromSectorSize(sectorSize, build.NewestNetworkVersion) + // spt, err := miner.SealProofTypeFromSectorSize(abi.SectorSize(sectorSize), genesis.GenesisNetworkVersion) if err != nil { panic(err) } From 3ad993eae94ad90a7c18e3c0b7115eb647852ca0 Mon Sep 17 00:00:00 2001 From: moran666666 <396124008@qq.com> Date: Thu, 24 Dec 2020 18:33:42 +0800 Subject: [PATCH 07/26] modify jsonrpc --- extern/go-jsonrpc/.circleci/config.yml | 44 ++ extern/go-jsonrpc/LICENSE-APACHE | 5 + extern/go-jsonrpc/LICENSE-MIT | 19 + extern/go-jsonrpc/auth/auth.go | 79 ++ extern/go-jsonrpc/auth/handler.go | 48 ++ extern/go-jsonrpc/client.go | 579 ++++++++++++++ extern/go-jsonrpc/go.mod | 14 + extern/go-jsonrpc/go.sum | 102 +++ extern/go-jsonrpc/handler.go | 331 ++++++++ extern/go-jsonrpc/httpio/README | 2 + extern/go-jsonrpc/httpio/reader.go | 142 ++++ extern/go-jsonrpc/httpio/reader_test.go | 55 ++ extern/go-jsonrpc/metrics/metrics.go | 45 ++ extern/go-jsonrpc/options.go | 70 ++ extern/go-jsonrpc/options_server.go | 34 + extern/go-jsonrpc/rpc_test.go | 993 ++++++++++++++++++++++++ extern/go-jsonrpc/server.go | 135 ++++ extern/go-jsonrpc/util.go | 81 ++ extern/go-jsonrpc/websocket.go | 683 ++++++++++++++++ go.mod | 2 + 20 files changed, 3463 insertions(+) create mode 100755 extern/go-jsonrpc/.circleci/config.yml create mode 100755 extern/go-jsonrpc/LICENSE-APACHE create mode 100755 extern/go-jsonrpc/LICENSE-MIT create mode 100755 extern/go-jsonrpc/auth/auth.go create mode 100755 extern/go-jsonrpc/auth/handler.go create mode 100755 extern/go-jsonrpc/client.go create mode 100755 extern/go-jsonrpc/go.mod create mode 100755 extern/go-jsonrpc/go.sum create mode 100755 extern/go-jsonrpc/handler.go create mode 100755 extern/go-jsonrpc/httpio/README create mode 100755 extern/go-jsonrpc/httpio/reader.go create mode 100755 extern/go-jsonrpc/httpio/reader_test.go create mode 100755 extern/go-jsonrpc/metrics/metrics.go create mode 100755 extern/go-jsonrpc/options.go create mode 100755 extern/go-jsonrpc/options_server.go create mode 100755 extern/go-jsonrpc/rpc_test.go create mode 100755 extern/go-jsonrpc/server.go create mode 100755 extern/go-jsonrpc/util.go create mode 100755 extern/go-jsonrpc/websocket.go diff --git a/extern/go-jsonrpc/.circleci/config.yml b/extern/go-jsonrpc/.circleci/config.yml new file mode 100755 index 000000000..8ac3678bd --- /dev/null +++ b/extern/go-jsonrpc/.circleci/config.yml @@ -0,0 +1,44 @@ +version: 2.1 +orbs: + go: gotest/tools@0.0.9 +executors: + golang: + docker: + - image: circleci/golang:1.13 + resource_class: medium +jobs: + test: + executor: golang + steps: + - checkout + - run: go test -v -timeout 10m ./... + mod-tidy-check: + executor: golang + steps: + - checkout + - go/mod-download + - go/mod-tidy-check + gofmt-check: + executor: golang + steps: + - checkout + - go/mod-download + - run: "! go fmt ./... 2>&1 | read" + lint-check: + executor: golang + steps: + - checkout + - go/mod-download + - go/install-golangci-lint: + gobin: $HOME/.local/bin + version: 1.23.8 + - run: + command: $HOME/.local/bin/golangci-lint run -v --concurrency 2 +workflows: + version: 2.1 + build_and_test: + jobs: + - mod-tidy-check + - lint-check + - gofmt-check + - test diff --git a/extern/go-jsonrpc/LICENSE-APACHE b/extern/go-jsonrpc/LICENSE-APACHE new file mode 100755 index 000000000..14478a3b6 --- /dev/null +++ b/extern/go-jsonrpc/LICENSE-APACHE @@ -0,0 +1,5 @@ +Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at + +http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. diff --git a/extern/go-jsonrpc/LICENSE-MIT b/extern/go-jsonrpc/LICENSE-MIT new file mode 100755 index 000000000..72dc60d84 --- /dev/null +++ b/extern/go-jsonrpc/LICENSE-MIT @@ -0,0 +1,19 @@ +The MIT License (MIT) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/extern/go-jsonrpc/auth/auth.go b/extern/go-jsonrpc/auth/auth.go new file mode 100755 index 000000000..d0b07ed37 --- /dev/null +++ b/extern/go-jsonrpc/auth/auth.go @@ -0,0 +1,79 @@ +package auth + +import ( + "context" + "reflect" + + "golang.org/x/xerrors" +) + +type Permission string + +type permKey int + +var permCtxKey permKey + +func WithPerm(ctx context.Context, perms []Permission) context.Context { + return context.WithValue(ctx, permCtxKey, perms) +} + +func HasPerm(ctx context.Context, defaultPerms []Permission, perm Permission) bool { + callerPerms, ok := ctx.Value(permCtxKey).([]Permission) + if !ok { + callerPerms = defaultPerms + } + + for _, callerPerm := range callerPerms { + if callerPerm == perm { + return true + } + } + return false +} + +func PermissionedProxy(validPerms, defaultPerms []Permission, in interface{}, out interface{}) { + rint := reflect.ValueOf(out).Elem() + ra := reflect.ValueOf(in) + + for f := 0; f < rint.NumField(); f++ { + field := rint.Type().Field(f) + requiredPerm := Permission(field.Tag.Get("perm")) + if requiredPerm == "" { + panic("missing 'perm' tag on " + field.Name) // ok + } + + // Validate perm tag + ok := false + for _, perm := range validPerms { + if requiredPerm == perm { + ok = true + break + } + } + if !ok { + panic("unknown 'perm' tag on " + field.Name) // ok + } + + fn := ra.MethodByName(field.Name) + + rint.Field(f).Set(reflect.MakeFunc(field.Type, func(args []reflect.Value) (results []reflect.Value) { + ctx := args[0].Interface().(context.Context) + if HasPerm(ctx, defaultPerms, requiredPerm) { + return fn.Call(args) + } + + err := xerrors.Errorf("missing permission to invoke '%s' (need '%s')", field.Name, requiredPerm) + rerr := reflect.ValueOf(&err).Elem() + + if field.Type.NumOut() == 2 { + return []reflect.Value{ + reflect.Zero(field.Type.Out(0)), + rerr, + } + } else { + return []reflect.Value{rerr} + } + })) + + } +} diff --git a/extern/go-jsonrpc/auth/handler.go b/extern/go-jsonrpc/auth/handler.go new file mode 100755 index 000000000..63a1c60f9 --- /dev/null +++ b/extern/go-jsonrpc/auth/handler.go @@ -0,0 +1,48 @@ +package auth + +import ( + "context" + "net/http" + "strings" + + logging "github.com/ipfs/go-log/v2" +) + +var log = logging.Logger("auth") + +type Handler struct { + Verify func(ctx context.Context, token string) ([]Permission, error) + Next http.HandlerFunc +} + +func (h *Handler) ServeHTTP(w http.ResponseWriter, r *http.Request) { + ctx := r.Context() + + token := r.Header.Get("Authorization") + if token == "" { + token = r.FormValue("token") + if token != "" { + token = "Bearer " + token + } + } + + if token != "" { + if !strings.HasPrefix(token, "Bearer ") { + log.Warn("missing Bearer prefix in auth header") + w.WriteHeader(401) + return + } + token = strings.TrimPrefix(token, "Bearer ") + + allow, err := h.Verify(ctx, token) + if err != nil { + log.Warnf("JWT Verification failed (originating from %s): %s", r.RemoteAddr, err) + w.WriteHeader(401) + return + } + + ctx = WithPerm(ctx, allow) + } + + h.Next(w, r.WithContext(ctx)) +} diff --git a/extern/go-jsonrpc/client.go b/extern/go-jsonrpc/client.go new file mode 100755 index 000000000..2b2b688ba --- /dev/null +++ b/extern/go-jsonrpc/client.go @@ -0,0 +1,579 @@ +package jsonrpc + +import ( + "bytes" + "container/list" + "context" + "encoding/base64" + "encoding/json" + "fmt" + "net" + "net/http" + "net/url" + "reflect" + "sync/atomic" + "time" + + "github.com/gorilla/websocket" + logging "github.com/ipfs/go-log/v2" + "go.opencensus.io/trace" + "go.opencensus.io/trace/propagation" + "golang.org/x/xerrors" +) + +const ( + methodMinRetryDelay = 100 * time.Millisecond + methodMaxRetryDelay = 10 * time.Minute +) + +var ( + errorType = reflect.TypeOf(new(error)).Elem() + contextType = reflect.TypeOf(new(context.Context)).Elem() + + log = logging.Logger("rpc") + + _defaultHTTPClient = &http.Client{ + Transport: &http.Transport{ + Proxy: http.ProxyFromEnvironment, + DialContext: (&net.Dialer{ + Timeout: 30 * time.Second, + KeepAlive: 30 * time.Second, + DualStack: true, + }).DialContext, + ForceAttemptHTTP2: true, + MaxIdleConns: 100, + MaxIdleConnsPerHost: 100, + IdleConnTimeout: 90 * time.Second, + TLSHandshakeTimeout: 10 * time.Second, + ExpectContinueTimeout: 1 * time.Second, + }, + } +) + +// ErrClient is an error which occurred on the client side the library +type ErrClient struct { + err error +} + +func (e *ErrClient) Error() string { + return fmt.Sprintf("RPC client error: %s", e.err) +} + +// Unwrap unwraps the actual error +func (e *ErrClient) Unwrap(err error) error { + return e.err +} + +type clientResponse struct { + Jsonrpc string `json:"jsonrpc"` + Result json.RawMessage `json:"result"` + ID int64 `json:"id"` + Error *respError `json:"error,omitempty"` +} + +type makeChanSink func() (context.Context, func([]byte, bool)) + +type clientRequest struct { + req request + ready chan clientResponse + + // retCh provides a context and sink for handling incoming channel messages + retCh makeChanSink +} + +// ClientCloser is used to close Client from further use +type ClientCloser func() + +// NewClient creates new jsonrpc 2.0 client +// +// handler must be pointer to a struct with function fields +// Returned value closes the client connection +// TODO: Example +func NewClient(ctx context.Context, addr string, namespace string, handler interface{}, requestHeader http.Header) (ClientCloser, error) { + return NewMergeClient(ctx, addr, namespace, []interface{}{handler}, requestHeader) +} + +type client struct { + namespace string + paramEncoders map[reflect.Type]ParamEncoder + + doRequest func(context.Context, clientRequest) (clientResponse, error) + exiting <-chan struct{} + idCtr int64 +} + +// NewMergeClient is like NewClient, but allows to specify multiple structs +// to be filled in the same namespace, using one connection +func NewMergeClient(ctx context.Context, addr string, namespace string, outs []interface{}, requestHeader http.Header, opts ...Option) (ClientCloser, error) { + config := defaultConfig() + for _, o := range opts { + o(&config) + } + + u, err := url.Parse(addr) + if err != nil { + return nil, xerrors.Errorf("parsing address: %w", err) + } + + switch u.Scheme { + case "ws", "wss": + return websocketClient(ctx, addr, namespace, outs, requestHeader, config) + case "http", "https": + return httpClient(ctx, addr, namespace, outs, requestHeader, config) + default: + return nil, xerrors.Errorf("unknown url scheme '%s'", u.Scheme) + } + +} + +func httpClient(ctx context.Context, addr string, namespace string, outs []interface{}, requestHeader http.Header, config Config) (ClientCloser, error) { + c := client{ + namespace: namespace, + paramEncoders: config.paramEncoders, + } + + stop := make(chan struct{}) + c.exiting = stop + + if requestHeader == nil { + requestHeader = http.Header{} + } + + c.doRequest = func(ctx context.Context, cr clientRequest) (clientResponse, error) { + b, err := json.Marshal(&cr.req) + if err != nil { + return clientResponse{}, xerrors.Errorf("mershaling requset: %w", err) + } + + hreq, err := http.NewRequest("POST", addr, bytes.NewReader(b)) + if err != nil { + return clientResponse{}, err + } + + hreq.Header = requestHeader.Clone() + + if ctx != nil { + hreq = hreq.WithContext(ctx) + } + + hreq.Header.Set("Content-Type", "application/json") + + httpResp, err := _defaultHTTPClient.Do(hreq) + if err != nil { + return clientResponse{}, err + } + defer httpResp.Body.Close() + + var resp clientResponse + + if err := json.NewDecoder(httpResp.Body).Decode(&resp); err != nil { + return clientResponse{}, xerrors.Errorf("unmarshaling response: %w", err) + } + + if resp.ID != *cr.req.ID { + return clientResponse{}, xerrors.New("request and response id didn't match") + } + + return resp, nil + } + + if err := c.provide(outs); err != nil { + return nil, err + } + + return func() { + close(stop) + }, nil +} + +func websocketClient(ctx context.Context, addr string, namespace string, outs []interface{}, requestHeader http.Header, config Config) (ClientCloser, error) { + connFactory := func() (*websocket.Conn, error) { + conn, _, err := websocket.DefaultDialer.Dial(addr, requestHeader) + return conn, err + } + + if config.proxyConnFactory != nil { + // used in tests + connFactory = config.proxyConnFactory(connFactory) + } + + conn, err := connFactory() + if err != nil { + return nil, err + } + + if config.noReconnect { + connFactory = nil + } + + c := client{ + namespace: namespace, + paramEncoders: config.paramEncoders, + } + + requests := make(chan clientRequest) + + c.doRequest = func(ctx context.Context, cr clientRequest) (clientResponse, error) { + select { + case requests <- cr: + case <-c.exiting: + return clientResponse{}, fmt.Errorf("websocket routine exiting") + } + + var ctxDone <-chan struct{} + var resp clientResponse + + if ctx != nil { + ctxDone = ctx.Done() + } + + // wait for response, handle context cancellation + loop: + for { + select { + case resp = <-cr.ready: + break loop + case <-ctxDone: // send cancel request + ctxDone = nil + + cancelReq := clientRequest{ + req: request{ + Jsonrpc: "2.0", + Method: wsCancel, + Params: []param{{v: reflect.ValueOf(*cr.req.ID)}}, + }, + } + select { + case requests <- cancelReq: + case <-c.exiting: + log.Warn("failed to send request cancellation, websocket routing exited") + } + + } + } + + return resp, nil + } + + stop := make(chan struct{}) + exiting := make(chan struct{}) + c.exiting = exiting + + go (&wsConn{ + conn: conn, + connFactory: connFactory, + reconnectBackoff: config.reconnectBackoff, + pingInterval: config.pingInterval, + timeout: config.timeout, + handler: nil, + requests: requests, + stop: stop, + exiting: exiting, + }).handleWsConn(ctx) + + if err := c.provide(outs); err != nil { + return nil, err + } + + return func() { + close(stop) + <-exiting + }, nil +} + +func (c *client) provide(outs []interface{}) error { + for _, handler := range outs { + htyp := reflect.TypeOf(handler) + if htyp.Kind() != reflect.Ptr { + return xerrors.New("expected handler to be a pointer") + } + typ := htyp.Elem() + if typ.Kind() != reflect.Struct { + return xerrors.New("handler should be a struct") + } + + val := reflect.ValueOf(handler) + + for i := 0; i < typ.NumField(); i++ { + fn, err := c.makeRpcFunc(typ.Field(i)) + if err != nil { + return err + } + + val.Elem().Field(i).Set(fn) + } + } + + return nil +} + +func (c *client) makeOutChan(ctx context.Context, ftyp reflect.Type, valOut int) (func() reflect.Value, makeChanSink) { + retVal := reflect.Zero(ftyp.Out(valOut)) + + chCtor := func() (context.Context, func([]byte, bool)) { + // unpack chan type to make sure it's reflect.BothDir + ctyp := reflect.ChanOf(reflect.BothDir, ftyp.Out(valOut).Elem()) + ch := reflect.MakeChan(ctyp, 0) // todo: buffer? + retVal = ch.Convert(ftyp.Out(valOut)) + + incoming := make(chan reflect.Value, 32) + + // gorotuine to handle buffering of items + go func() { + buf := (&list.List{}).Init() + + for { + front := buf.Front() + + cases := []reflect.SelectCase{ + { + Dir: reflect.SelectRecv, + Chan: reflect.ValueOf(ctx.Done()), + }, + { + Dir: reflect.SelectRecv, + Chan: reflect.ValueOf(incoming), + }, + } + + if front != nil { + cases = append(cases, reflect.SelectCase{ + Dir: reflect.SelectSend, + Chan: ch, + Send: front.Value.(reflect.Value).Elem(), + }) + } + + chosen, val, ok := reflect.Select(cases) + + switch chosen { + case 0: + ch.Close() + return + case 1: + if ok { + vvval := val.Interface().(reflect.Value) + buf.PushBack(vvval) + if buf.Len() > 1 { + if buf.Len() > 10 { + log.Warnw("rpc output message buffer", "n", buf.Len()) + } else { + log.Debugw("rpc output message buffer", "n", buf.Len()) + } + } + } else { + incoming = nil + } + + case 2: + buf.Remove(front) + } + + if incoming == nil && buf.Len() == 0 { + ch.Close() + return + } + } + }() + + return ctx, func(result []byte, ok bool) { + if !ok { + close(incoming) + return + } + + val := reflect.New(ftyp.Out(valOut).Elem()) + if err := json.Unmarshal(result, val.Interface()); err != nil { + log.Errorf("error unmarshaling chan response: %s", err) + return + } + + if ctx.Err() != nil { + log.Errorf("got rpc message with cancelled context: %s", ctx.Err()) + return + } + + select { + case incoming <- val: + case <-ctx.Done(): + } + } + } + + return func() reflect.Value { return retVal }, chCtor +} + +func (c *client) sendRequest(ctx context.Context, req request, chCtor makeChanSink) (clientResponse, error) { + creq := clientRequest{ + req: req, + ready: make(chan clientResponse, 1), + + retCh: chCtor, + } + + return c.doRequest(ctx, creq) +} + +type rpcFunc struct { + client *client + + ftyp reflect.Type + name string + + nout int + valOut int + errOut int + + hasCtx int + returnValueIsChannel bool + + retry bool +} + +func (fn *rpcFunc) processResponse(resp clientResponse, rval reflect.Value) []reflect.Value { + out := make([]reflect.Value, fn.nout) + + if fn.valOut != -1 { + out[fn.valOut] = rval + } + if fn.errOut != -1 { + out[fn.errOut] = reflect.New(errorType).Elem() + if resp.Error != nil { + out[fn.errOut].Set(reflect.ValueOf(resp.Error)) + } + } + + return out +} + +func (fn *rpcFunc) processError(err error) []reflect.Value { + out := make([]reflect.Value, fn.nout) + + if fn.valOut != -1 { + out[fn.valOut] = reflect.New(fn.ftyp.Out(fn.valOut)).Elem() + } + if fn.errOut != -1 { + out[fn.errOut] = reflect.New(errorType).Elem() + out[fn.errOut].Set(reflect.ValueOf(&ErrClient{err})) + } + + return out +} + +func (fn *rpcFunc) handleRpcCall(args []reflect.Value) (results []reflect.Value) { + id := atomic.AddInt64(&fn.client.idCtr, 1) + params := make([]param, len(args)-fn.hasCtx) + for i, arg := range args[fn.hasCtx:] { + enc, found := fn.client.paramEncoders[arg.Type()] + if found { + // custom param encoder + var err error + arg, err = enc(arg) + if err != nil { + return fn.processError(fmt.Errorf("sendRequest failed: %w", err)) + } + } + + params[i] = param{ + v: arg, + } + } + + var ctx context.Context + var span *trace.Span + if fn.hasCtx == 1 { + ctx = args[0].Interface().(context.Context) + ctx, span = trace.StartSpan(ctx, "api.call") + defer span.End() + } + + retVal := func() reflect.Value { return reflect.Value{} } + + // if the function returns a channel, we need to provide a sink for the + // messages + var chCtor makeChanSink + if fn.returnValueIsChannel { + retVal, chCtor = fn.client.makeOutChan(ctx, fn.ftyp, fn.valOut) + } + + req := request{ + Jsonrpc: "2.0", + ID: &id, + Method: fn.client.namespace + "." + fn.name, + Params: params, + } + + if span != nil { + span.AddAttributes(trace.StringAttribute("method", req.Method)) + + eSC := base64.StdEncoding.EncodeToString( + propagation.Binary(span.SpanContext())) + req.Meta = map[string]string{ + "SpanContext": eSC, + } + } + + b := backoff{ + maxDelay: methodMaxRetryDelay, + minDelay: methodMinRetryDelay, + } + + var resp clientResponse + var err error + // keep retrying if got a forced closed websocket conn and calling method + // has retry annotation + for attempt := 0; true; attempt++ { + resp, err = fn.client.sendRequest(ctx, req, chCtor) + if err != nil { + return fn.processError(fmt.Errorf("sendRequest failed: %w", err)) + } + + if resp.ID != *req.ID { + return fn.processError(xerrors.New("request and response id didn't match")) + } + + if fn.valOut != -1 && !fn.returnValueIsChannel { + val := reflect.New(fn.ftyp.Out(fn.valOut)) + + if resp.Result != nil { + log.Debugw("rpc result", "type", fn.ftyp.Out(fn.valOut)) + if err := json.Unmarshal(resp.Result, val.Interface()); err != nil { + log.Warnw("unmarshaling failed", "message", string(resp.Result)) + return fn.processError(xerrors.Errorf("unmarshaling result: %w", err)) + } + } + + retVal = func() reflect.Value { return val.Elem() } + } + retry := resp.Error != nil && resp.Error.Code == 2 && fn.retry + if !retry { + break + } + + time.Sleep(b.next(attempt)) + } + + return fn.processResponse(resp, retVal()) +} + +func (c *client) makeRpcFunc(f reflect.StructField) (reflect.Value, error) { + ftyp := f.Type + if ftyp.Kind() != reflect.Func { + return reflect.Value{}, xerrors.New("handler field not a func") + } + + fun := &rpcFunc{ + client: c, + ftyp: ftyp, + name: f.Name, + retry: f.Tag.Get("retry") == "true", + } + fun.valOut, fun.errOut, fun.nout = processFuncOut(ftyp) + + if ftyp.NumIn() > 0 && ftyp.In(0) == contextType { + fun.hasCtx = 1 + } + fun.returnValueIsChannel = fun.valOut != -1 && ftyp.Out(fun.valOut).Kind() == reflect.Chan + + return reflect.MakeFunc(ftyp, fun.handleRpcCall), nil +} diff --git a/extern/go-jsonrpc/go.mod b/extern/go-jsonrpc/go.mod new file mode 100755 index 000000000..68825e6aa --- /dev/null +++ b/extern/go-jsonrpc/go.mod @@ -0,0 +1,14 @@ +module github.com/filecoin-project/go-jsonrpc + +go 1.14 + +require ( + github.com/google/uuid v1.1.1 + github.com/gorilla/mux v1.7.4 + github.com/gorilla/websocket v1.4.2 + github.com/ipfs/go-log/v2 v2.0.8 + github.com/stretchr/testify v1.5.1 + go.opencensus.io v0.22.3 + go.uber.org/zap v1.14.1 + golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 +) diff --git a/extern/go-jsonrpc/go.sum b/extern/go-jsonrpc/go.sum new file mode 100755 index 000000000..82ff66817 --- /dev/null +++ b/extern/go-jsonrpc/go.sum @@ -0,0 +1,102 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/BurntSushi/toml v0.3.1 h1:WXkYYl6Yr3qBf1K79EBnL4mak0OimBfB0XUf9Vl28OQ= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6 h1:ZgQEtGgCBiWRM39fZuwSd1LwSqqSW0hOdXCYYDX0R3I= +github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/google/go-cmp v0.3.0 h1:crn/baboCvb5fXaQ0IJ1SGTsTVrWpDsCWC8EGETZijY= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY= +github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/gorilla/mux v1.7.4 h1:VuZ8uybHlWmqV03+zRzdwKL4tUnIp1MAQtp1mIFE1bc= +github.com/gorilla/mux v1.7.4/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc= +github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/ipfs/go-log/v2 v2.0.8 h1:3b3YNopMHlj4AvyhWAx0pDxqSQWYi4/WuWO7yRV6/Qg= +github.com/ipfs/go-log/v2 v2.0.8/go.mod h1:eZs4Xt4ZUJQFM3DlanGhy7TkwwawCZcSByscwkWG+dw= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/kr/pretty v0.1.0 h1:L/CwN0zerZDmRFUapSPitk6f+Q3+0za1rQkzVuMiMFI= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1 h1:nOGnQDM7FYENwehXlg/kFVnos3rEvtKTjRvOWSzb6H4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +go.opencensus.io v0.22.3 h1:8sGtKOrtQqkN1bp2AtX+misvLIlOmsEsNd+9NIcPEm8= +go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.uber.org/atomic v1.6.0 h1:Ezj3JGmsOnG1MoRWQkPBsKLe9DwWD9QeXzTRzzldNVk= +go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/multierr v1.5.0 h1:KCa4XfM8CWFCpxXRGok+Q0SS/0XBhMDbHHGABQLvD2A= +go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee h1:0mgffUl7nfd+FpvXMVz4IDEaUSmT1ysygQC7qYo7sG4= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.14.1 h1:nYDKopTbvAPq/NrUVZwT15y2lpROBiLLyoRTbXOYWOo= +go.uber.org/zap v1.14.1/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de h1:5hukYrvBGR8/eNkX5mdUezrA6JiaEZDtJb9Ei+1LlBs= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5 h1:hKsoRgsbwY1NafxrwTs+k64bikrLBkAgPir1TNCj3Zs= +golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4= +golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= +gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127 h1:qIbj1fsPNlZgppZ+VLlY7N33q108Sa+fhmuc+sWQYwY= +gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= +gopkg.in/yaml.v2 v2.2.2 h1:ZCJp+EgiOT7lHqUV2J862kp8Qj64Jo6az82+3Td9dZw= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.1-2019.2.3 h1:3JgtbtFHMiCmsznwGVTUWbgGov+pVqnlf1dEJTNAXeM= +honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg= diff --git a/extern/go-jsonrpc/handler.go b/extern/go-jsonrpc/handler.go new file mode 100755 index 000000000..feb434217 --- /dev/null +++ b/extern/go-jsonrpc/handler.go @@ -0,0 +1,331 @@ +package jsonrpc + +import ( + "bytes" + "context" + "encoding/base64" + "encoding/json" + "fmt" + "io" + "reflect" + + "go.opencensus.io/stats" + "go.opencensus.io/tag" + "go.opencensus.io/trace" + "go.opencensus.io/trace/propagation" + "go.uber.org/zap" + "go.uber.org/zap/zapcore" + "golang.org/x/xerrors" + + "github.com/filecoin-project/go-jsonrpc/metrics" +) + +type rpcHandler struct { + paramReceivers []reflect.Type + nParams int + + receiver reflect.Value + handlerFunc reflect.Value + + hasCtx int + + errOut int + valOut int +} + +// Request / response + +type request struct { + Jsonrpc string `json:"jsonrpc"` + ID *int64 `json:"id,omitempty"` + Method string `json:"method"` + Params []param `json:"params"` + Meta map[string]string `json:"meta,omitempty"` +} + +// Limit request size. Ideally this limit should be specific for each field +// in the JSON request but as a simple defensive measure we just limit the +// entire HTTP body. +// Configured by WithMaxRequestSize. +const DEFAULT_MAX_REQUEST_SIZE = 100 << 20 // 100 MiB + +type respError struct { + Code int `json:"code"` + Message string `json:"message"` +} + +func (e *respError) Error() string { + if e.Code >= -32768 && e.Code <= -32000 { + return fmt.Sprintf("RPC error (%d): %s", e.Code, e.Message) + } + return e.Message +} + +type response struct { + Jsonrpc string `json:"jsonrpc"` + Result interface{} `json:"result,omitempty"` + ID int64 `json:"id"` + Error *respError `json:"error,omitempty"` +} + +// Register + +func (s *RPCServer) register(namespace string, r interface{}) { + val := reflect.ValueOf(r) + //TODO: expect ptr + + for i := 0; i < val.NumMethod(); i++ { + method := val.Type().Method(i) + + funcType := method.Func.Type() + hasCtx := 0 + if funcType.NumIn() >= 2 && funcType.In(1) == contextType { + hasCtx = 1 + } + + ins := funcType.NumIn() - 1 - hasCtx + recvs := make([]reflect.Type, ins) + for i := 0; i < ins; i++ { + recvs[i] = method.Type.In(i + 1 + hasCtx) + } + + valOut, errOut, _ := processFuncOut(funcType) + + s.methods[namespace+"."+method.Name] = rpcHandler{ + paramReceivers: recvs, + nParams: ins, + + handlerFunc: method.Func, + receiver: val, + + hasCtx: hasCtx, + + errOut: errOut, + valOut: valOut, + } + } +} + +// Handle + +type rpcErrFunc func(w func(func(io.Writer)), req *request, code int, err error) +type chanOut func(reflect.Value, int64) error + +func (s *RPCServer) handleReader(ctx context.Context, r io.Reader, w io.Writer, rpcError rpcErrFunc) { + wf := func(cb func(io.Writer)) { + cb(w) + } + + var req request + // We read the entire request upfront in a buffer to be able to tell if the + // client sent more than maxRequestSize and report it back as an explicit error, + // instead of just silently truncating it and reporting a more vague parsing + // error. + bufferedRequest := new(bytes.Buffer) + // We use LimitReader to enforce maxRequestSize. Since it won't return an + // EOF we can't actually know if the client sent more than the maximum or + // not, so we read one byte more over the limit to explicitly query that. + // FIXME: Maybe there's a cleaner way to do this. + reqSize, err := bufferedRequest.ReadFrom(io.LimitReader(r, s.maxRequestSize+1)) + if err != nil { + // ReadFrom will discard EOF so any error here is unexpected and should + // be reported. + rpcError(wf, &req, rpcParseError, xerrors.Errorf("reading request: %w", err)) + return + } + if reqSize > s.maxRequestSize { + rpcError(wf, &req, rpcParseError, + // rpcParseError is the closest we have from the standard errors defined + // in [jsonrpc spec](https://www.jsonrpc.org/specification#error_object) + // to report the maximum limit. + xerrors.Errorf("request bigger than maximum %d allowed", + s.maxRequestSize)) + return + } + + if err := json.NewDecoder(bufferedRequest).Decode(&req); err != nil { + rpcError(wf, &req, rpcParseError, xerrors.Errorf("unmarshaling request: %w", err)) + return + } + + s.handle(ctx, req, wf, rpcError, func(bool) {}, nil) +} + +func doCall(methodName string, f reflect.Value, params []reflect.Value) (out []reflect.Value, err error) { + defer func() { + if i := recover(); i != nil { + err = xerrors.Errorf("panic in rpc method '%s': %s", methodName, i) + log.Desugar().WithOptions(zap.AddStacktrace(zapcore.ErrorLevel)).Sugar().Error(err) + } + }() + + out = f.Call(params) + return out, nil +} + +func (s *RPCServer) getSpan(ctx context.Context, req request) (context.Context, *trace.Span) { + if req.Meta == nil { + return ctx, nil + } + if eSC, ok := req.Meta["SpanContext"]; ok { + bSC := make([]byte, base64.StdEncoding.DecodedLen(len(eSC))) + _, err := base64.StdEncoding.Decode(bSC, []byte(eSC)) + if err != nil { + log.Errorf("SpanContext: decode", "error", err) + return ctx, nil + } + sc, ok := propagation.FromBinary(bSC) + if !ok { + log.Errorf("SpanContext: could not create span", "data", bSC) + return ctx, nil + } + ctx, span := trace.StartSpanWithRemoteParent(ctx, "api.handle", sc) + span.AddAttributes(trace.StringAttribute("method", req.Method)) + return ctx, span + } + return ctx, nil +} + +func (s *RPCServer) handle(ctx context.Context, req request, w func(func(io.Writer)), rpcError rpcErrFunc, done func(keepCtx bool), chOut chanOut) { + // Not sure if we need to sanitize the incoming req.Method or not. + ctx, span := s.getSpan(ctx, req) + ctx, _ = tag.New(ctx, tag.Insert(metrics.RPCMethod, req.Method)) + defer span.End() + + handler, ok := s.methods[req.Method] + if !ok { + aliasTo, ok := s.aliasedMethods[req.Method] + if ok { + handler, ok = s.methods[aliasTo] + } + if !ok { + rpcError(w, &req, rpcMethodNotFound, fmt.Errorf("method '%s' not found", req.Method)) + stats.Record(ctx, metrics.RPCInvalidMethod.M(1)) + done(false) + return + } + } + + if len(req.Params) != handler.nParams { + rpcError(w, &req, rpcInvalidParams, fmt.Errorf("wrong param count (method '%s'): %d != %d", req.Method, len(req.Params), handler.nParams)) + stats.Record(ctx, metrics.RPCRequestError.M(1)) + done(false) + return + } + + outCh := handler.valOut != -1 && handler.handlerFunc.Type().Out(handler.valOut).Kind() == reflect.Chan + defer done(outCh) + + if chOut == nil && outCh { + rpcError(w, &req, rpcMethodNotFound, fmt.Errorf("method '%s' not supported in this mode (no out channel support)", req.Method)) + stats.Record(ctx, metrics.RPCRequestError.M(1)) + return + } + + callParams := make([]reflect.Value, 1+handler.hasCtx+handler.nParams) + callParams[0] = handler.receiver + if handler.hasCtx == 1 { + callParams[1] = reflect.ValueOf(ctx) + } + + for i := 0; i < handler.nParams; i++ { + var rp reflect.Value + + typ := handler.paramReceivers[i] + dec, found := s.paramDecoders[typ] + if !found { + rp = reflect.New(typ) + if err := json.NewDecoder(bytes.NewReader(req.Params[i].data)).Decode(rp.Interface()); err != nil { + rpcError(w, &req, rpcParseError, xerrors.Errorf("unmarshaling params for '%s' (param: %T): %w", req.Method, rp.Interface(), err)) + stats.Record(ctx, metrics.RPCRequestError.M(1)) + return + } + rp = rp.Elem() + } else { + var err error + rp, err = dec(ctx, req.Params[i].data) + if err != nil { + rpcError(w, &req, rpcParseError, xerrors.Errorf("decoding params for '%s' (param: %d; custom decoder): %w", req.Method, i, err)) + stats.Record(ctx, metrics.RPCRequestError.M(1)) + return + } + } + + callParams[i+1+handler.hasCtx] = reflect.ValueOf(rp.Interface()) + } + + /////////////////// + + callResult, err := doCall(req.Method, handler.handlerFunc, callParams) + if err != nil { + rpcError(w, &req, 0, xerrors.Errorf("fatal error calling '%s': %w", req.Method, err)) + stats.Record(ctx, metrics.RPCRequestError.M(1)) + return + } + if req.ID == nil { + return // notification + } + + /////////////////// + + resp := response{ + Jsonrpc: "2.0", + ID: *req.ID, + } + + if handler.errOut != -1 { + err := callResult[handler.errOut].Interface() + if err != nil { + log.Warnf("error in RPC call to '%s': %+v", req.Method, err) + stats.Record(ctx, metrics.RPCResponseError.M(1)) + resp.Error = &respError{ + Code: 1, + Message: err.(error).Error(), + } + } + } + + var kind reflect.Kind + var res interface{} + var nonZero bool + if handler.valOut != -1 { + res = callResult[handler.valOut].Interface() + kind = callResult[handler.valOut].Kind() + nonZero = !callResult[handler.valOut].IsZero() + } + + // check error as JSON-RPC spec prohibits error and value at the same time + if resp.Error == nil { + if res != nil && kind == reflect.Chan { + // Channel responses are sent from channel control goroutine. + // Sending responses here could cause deadlocks on writeLk, or allow + // sending channel messages before this rpc call returns + + //noinspection GoNilness // already checked above + err = chOut(callResult[handler.valOut], *req.ID) + if err == nil { + return // channel goroutine handles responding + } + + log.Warnf("failed to setup channel in RPC call to '%s': %+v", req.Method, err) + stats.Record(ctx, metrics.RPCResponseError.M(1)) + resp.Error = &respError{ + Code: 1, + Message: err.(error).Error(), + } + } else { + resp.Result = res + } + } + if resp.Error != nil && nonZero { + log.Errorw("error and res returned", "request", req, "r.err", resp.Error, "res", res) + } + + w(func(w io.Writer) { + if err := json.NewEncoder(w).Encode(resp); err != nil { + log.Error(err) + stats.Record(ctx, metrics.RPCResponseError.M(1)) + return + } + }) +} diff --git a/extern/go-jsonrpc/httpio/README b/extern/go-jsonrpc/httpio/README new file mode 100755 index 000000000..a44f5c6d8 --- /dev/null +++ b/extern/go-jsonrpc/httpio/README @@ -0,0 +1,2 @@ +This package provides param encoders / decoders for `io.Reader` which proxy +data over temporary http endpoints \ No newline at end of file diff --git a/extern/go-jsonrpc/httpio/reader.go b/extern/go-jsonrpc/httpio/reader.go new file mode 100755 index 000000000..4f378dbf7 --- /dev/null +++ b/extern/go-jsonrpc/httpio/reader.go @@ -0,0 +1,142 @@ +package httpio + +import ( + "context" + "encoding/json" + "fmt" + "io" + "net/http" + "net/url" + "path" + "reflect" + "sync" + + "github.com/google/uuid" + logging "github.com/ipfs/go-log/v2" + "golang.org/x/xerrors" + + "github.com/filecoin-project/go-jsonrpc" +) + +var log = logging.Logger("rpc") + +func ReaderParamEncoder(addr string) jsonrpc.Option { + return jsonrpc.WithParamEncoder(new(io.Reader), func(value reflect.Value) (reflect.Value, error) { + r := value.Interface().(io.Reader) + + reqID := uuid.New() + u, _ := url.Parse(addr) + u.Path = path.Join(u.Path, reqID.String()) + + go func() { + // TODO: figure out errors here + + resp, err := http.Post(u.String(), "application/octet-stream", r) + if err != nil { + log.Errorf("sending reader param: %+v", err) + return + } + + defer resp.Body.Close() + + if resp.StatusCode != 200 { + log.Errorf("sending reader param: non-200 status: ", resp.Status) + return + } + + }() + + return reflect.ValueOf(reqID), nil + }) +} + +type waitReadCloser struct { + io.ReadCloser + wait chan struct{} +} + +func (w *waitReadCloser) Read(p []byte) (int, error) { + n, err := w.ReadCloser.Read(p) + if err != nil { + close(w.wait) + } + return n, err +} + +func (w *waitReadCloser) Close() error { + close(w.wait) + return w.ReadCloser.Close() +} + +func ReaderParamDecoder() (http.HandlerFunc, jsonrpc.ServerOption) { + var readersLk sync.Mutex + readers := map[uuid.UUID]chan *waitReadCloser{} + + hnd := func(resp http.ResponseWriter, req *http.Request) { + strId := path.Base(req.URL.Path) + u, err := uuid.Parse(strId) + if err != nil { + http.Error(resp, fmt.Sprintf("parsing reader uuid: %s", err), 400) + } + + readersLk.Lock() + ch, found := readers[u] + if !found { + ch = make(chan *waitReadCloser) + readers[u] = ch + } + readersLk.Unlock() + + wr := &waitReadCloser{ + ReadCloser: req.Body, + wait: make(chan struct{}), + } + + select { + case ch <- wr: + case <-req.Context().Done(): + log.Error("context error in reader stream handler (1): %v", req.Context().Err()) + resp.WriteHeader(500) + return + } + + select { + case <-wr.wait: + case <-req.Context().Done(): + log.Error("context error in reader stream handler (2): %v", req.Context().Err()) + resp.WriteHeader(500) + return + } + + resp.WriteHeader(200) + } + + dec := jsonrpc.WithParamDecoder(new(io.Reader), func(ctx context.Context, b []byte) (reflect.Value, error) { + var strId string + if err := json.Unmarshal(b, &strId); err != nil { + return reflect.Value{}, xerrors.Errorf("unmarshaling reader id: %w", err) + } + + u, err := uuid.Parse(strId) + if err != nil { + return reflect.Value{}, xerrors.Errorf("parsing reader UUDD: %w", err) + } + + readersLk.Lock() + ch, found := readers[u] + if !found { + ch = make(chan *waitReadCloser) + readers[u] = ch + } + readersLk.Unlock() + + select { + case wr := <-ch: + return reflect.ValueOf(wr), nil + case <-ctx.Done(): + return reflect.Value{}, ctx.Err() + } + }) + + return hnd, dec +} diff --git a/extern/go-jsonrpc/httpio/reader_test.go b/extern/go-jsonrpc/httpio/reader_test.go new file mode 100755 index 000000000..1ee2544e8 --- /dev/null +++ b/extern/go-jsonrpc/httpio/reader_test.go @@ -0,0 +1,55 @@ +package httpio + +import ( + "context" + "io" + "io/ioutil" + "net/http/httptest" + "strings" + "testing" + + "github.com/gorilla/mux" + "github.com/stretchr/testify/require" + + "github.com/filecoin-project/go-jsonrpc" +) + +type ReaderHandler struct { +} + +func (h *ReaderHandler) ReadAll(ctx context.Context, r io.Reader) ([]byte, error) { + return ioutil.ReadAll(r) +} + +func (h *ReaderHandler) ReadUrl(ctx context.Context, u string) (string, error) { + return u, nil +} + +func TestReaderProxy(t *testing.T) { + var client struct { + ReadAll func(ctx context.Context, r io.Reader) ([]byte, error) + } + + serverHandler := &ReaderHandler{} + + readerHandler, readerServerOpt := ReaderParamDecoder() + rpcServer := jsonrpc.NewServer(readerServerOpt) + rpcServer.Register("ReaderHandler", serverHandler) + + mux := mux.NewRouter() + mux.Handle("/rpc/v0", rpcServer) + mux.Handle("/rpc/streams/v0/push/{uuid}", readerHandler) + + testServ := httptest.NewServer(mux) + defer testServ.Close() + + re := ReaderParamEncoder("http://" + testServ.Listener.Addr().String() + "/rpc/streams/v0/push") + closer, err := jsonrpc.NewMergeClient(context.Background(), "ws://"+testServ.Listener.Addr().String()+"/rpc/v0", "ReaderHandler", []interface{}{&client}, nil, re) + require.NoError(t, err) + + defer closer() + + read, err := client.ReadAll(context.TODO(), strings.NewReader("pooooootato")) + require.NoError(t, err) + require.Equal(t, "pooooootato", string(read), "potatos weren't equal") +} diff --git a/extern/go-jsonrpc/metrics/metrics.go b/extern/go-jsonrpc/metrics/metrics.go new file mode 100755 index 000000000..550f93671 --- /dev/null +++ b/extern/go-jsonrpc/metrics/metrics.go @@ -0,0 +1,45 @@ +package metrics + +import ( + "go.opencensus.io/stats" + "go.opencensus.io/stats/view" + "go.opencensus.io/tag" +) + +// Global Tags +var ( + RPCMethod, _ = tag.NewKey("method") +) + +// Measures +var ( + RPCInvalidMethod = stats.Int64("rpc/invalid_method", "Total number of invalid RPC methods called", stats.UnitDimensionless) + RPCRequestError = stats.Int64("rpc/request_error", "Total number of request errors handled", stats.UnitDimensionless) + RPCResponseError = stats.Int64("rpc/response_error", "Total number of responses errors handled", stats.UnitDimensionless) +) + +var ( + // All RPC related metrics should at the very least tag the RPCMethod + RPCInvalidMethodView = &view.View{ + Measure: RPCInvalidMethod, + Aggregation: view.Count(), + TagKeys: []tag.Key{RPCMethod}, + } + RPCRequestErrorView = &view.View{ + Measure: RPCRequestError, + Aggregation: view.Count(), + TagKeys: []tag.Key{RPCMethod}, + } + RPCResponseErrorView = &view.View{ + Measure: RPCResponseError, + Aggregation: view.Count(), + TagKeys: []tag.Key{RPCMethod}, + } +) + +// DefaultViews is an array of OpenCensus views for metric gathering purposes +var DefaultViews = []*view.View{ + RPCInvalidMethodView, + RPCRequestErrorView, + RPCResponseErrorView, +} diff --git a/extern/go-jsonrpc/options.go b/extern/go-jsonrpc/options.go new file mode 100755 index 000000000..3a2b4d6cc --- /dev/null +++ b/extern/go-jsonrpc/options.go @@ -0,0 +1,70 @@ +package jsonrpc + +import ( + "reflect" + "time" + + "github.com/gorilla/websocket" +) + +type ParamEncoder func(reflect.Value) (reflect.Value, error) + +type Config struct { + reconnectBackoff backoff + pingInterval time.Duration + timeout time.Duration + + paramEncoders map[reflect.Type]ParamEncoder + + noReconnect bool + proxyConnFactory func(func() (*websocket.Conn, error)) func() (*websocket.Conn, error) // for testing +} + +func defaultConfig() Config { + return Config{ + reconnectBackoff: backoff{ + minDelay: 100 * time.Millisecond, + maxDelay: 5 * time.Second, + }, + pingInterval: 5 * time.Second, + timeout: 30 * time.Second, + + paramEncoders: map[reflect.Type]ParamEncoder{}, + } +} + +type Option func(c *Config) + +func WithReconnectBackoff(minDelay, maxDelay time.Duration) func(c *Config) { + return func(c *Config) { + c.reconnectBackoff = backoff{ + minDelay: minDelay, + maxDelay: maxDelay, + } + } +} + +// Must be < Timeout/2 +func WithPingInterval(d time.Duration) func(c *Config) { + return func(c *Config) { + c.pingInterval = d + } +} + +func WithTimeout(d time.Duration) func(c *Config) { + return func(c *Config) { + c.timeout = d + } +} + +func WithNoReconnect() func(c *Config) { + return func(c *Config) { + c.noReconnect = true + } +} + +func WithParamEncoder(t interface{}, encoder ParamEncoder) func(c *Config) { + return func(c *Config) { + c.paramEncoders[reflect.TypeOf(t).Elem()] = encoder + } +} diff --git a/extern/go-jsonrpc/options_server.go b/extern/go-jsonrpc/options_server.go new file mode 100755 index 000000000..2da0f1ccc --- /dev/null +++ b/extern/go-jsonrpc/options_server.go @@ -0,0 +1,34 @@ +package jsonrpc + +import ( + "context" + "reflect" +) + +type ParamDecoder func(ctx context.Context, json []byte) (reflect.Value, error) + +type ServerConfig struct { + paramDecoders map[reflect.Type]ParamDecoder + maxRequestSize int64 +} + +type ServerOption func(c *ServerConfig) + +func defaultServerConfig() ServerConfig { + return ServerConfig{ + paramDecoders: map[reflect.Type]ParamDecoder{}, + maxRequestSize: DEFAULT_MAX_REQUEST_SIZE, + } +} + +func WithParamDecoder(t interface{}, decoder ParamDecoder) ServerOption { + return func(c *ServerConfig) { + c.paramDecoders[reflect.TypeOf(t).Elem()] = decoder + } +} + +func WithMaxRequestSize(max int64) ServerOption { + return func(c *ServerConfig) { + c.maxRequestSize = max + } +} diff --git a/extern/go-jsonrpc/rpc_test.go b/extern/go-jsonrpc/rpc_test.go new file mode 100755 index 000000000..370107933 --- /dev/null +++ b/extern/go-jsonrpc/rpc_test.go @@ -0,0 +1,993 @@ +package jsonrpc + +import ( + "context" + "encoding/json" + "errors" + "fmt" + "io" + "io/ioutil" + "net" + "net/http/httptest" + "reflect" + "strconv" + "strings" + "sync" + "testing" + "time" + + "github.com/gorilla/websocket" + logging "github.com/ipfs/go-log/v2" + "github.com/stretchr/testify/assert" + "github.com/stretchr/testify/require" +) + +func init() { + if err := logging.SetLogLevel("rpc", "DEBUG"); err != nil { + panic(err) + } +} + +type SimpleServerHandler struct { + n int +} + +type TestType struct { + S string + I int +} + +type TestOut struct { + TestType + Ok bool +} + +func (h *SimpleServerHandler) Add(in int) error { + if in == -3546 { + return errors.New("test") + } + + h.n += in + + return nil +} + +func (h *SimpleServerHandler) AddGet(in int) int { + h.n += in + return h.n +} + +func (h *SimpleServerHandler) StringMatch(t TestType, i2 int64) (out TestOut, err error) { + if strconv.FormatInt(i2, 10) == t.S { + out.Ok = true + } + if i2 != int64(t.I) { + return TestOut{}, errors.New(":(") + } + out.I = t.I + out.S = t.S + return +} + +func TestReconnection(t *testing.T) { + var rpcClient struct { + Add func(int) error + } + + rpcHandler := SimpleServerHandler{} + + rpcServer := NewServer() + rpcServer.Register("SimpleServerHandler", &rpcHandler) + + testServ := httptest.NewServer(rpcServer) + defer testServ.Close() + + // capture connection attempts for this duration + captureDuration := 3 * time.Second + + // run the test until the timer expires + timer := time.NewTimer(captureDuration) + + // record the number of connection attempts during this test + connectionAttempts := 1 + + closer, err := NewMergeClient(context.Background(), "ws://"+testServ.Listener.Addr().String(), "SimpleServerHandler", []interface{}{&rpcClient}, nil, func(c *Config) { + c.proxyConnFactory = func(f func() (*websocket.Conn, error)) func() (*websocket.Conn, error) { + return func() (*websocket.Conn, error) { + defer func() { + connectionAttempts++ + }() + + if connectionAttempts > 1 { + return nil, errors.New("simulates a failed reconnect attempt") + } + + c, err := f() + if err != nil { + return nil, err + } + + // closing the connection here triggers the reconnect logic + _ = c.Close() + + return c, nil + } + } + }) + require.NoError(t, err) + defer closer() + + // let the JSON-RPC library attempt to reconnect until the timer runs out + <-timer.C + + // do some math + attemptsPerSecond := int64(connectionAttempts) / int64(captureDuration/time.Second) + + assert.Less(t, attemptsPerSecond, int64(50)) +} + +func (h *SimpleServerHandler) ErrChanSub(ctx context.Context) (<-chan int, error) { + return nil, errors.New("expect to return an error") +} + +func TestRPC(t *testing.T) { + // setup server + + serverHandler := &SimpleServerHandler{} + + rpcServer := NewServer() + rpcServer.Register("SimpleServerHandler", serverHandler) + + // httptest stuff + testServ := httptest.NewServer(rpcServer) + defer testServ.Close() + // setup client + + var client struct { + Add func(int) error + AddGet func(int) int + StringMatch func(t TestType, i2 int64) (out TestOut, err error) + ErrChanSub func(context.Context) (<-chan int, error) + } + closer, err := NewClient(context.Background(), "ws://"+testServ.Listener.Addr().String(), "SimpleServerHandler", &client, nil) + require.NoError(t, err) + defer closer() + + // Add(int) error + + require.NoError(t, client.Add(2)) + require.Equal(t, 2, serverHandler.n) + + err = client.Add(-3546) + require.EqualError(t, err, "test") + + // AddGet(int) int + + n := client.AddGet(3) + require.Equal(t, 5, n) + require.Equal(t, 5, serverHandler.n) + + // StringMatch + + o, err := client.StringMatch(TestType{S: "0"}, 0) + require.NoError(t, err) + require.Equal(t, "0", o.S) + require.Equal(t, 0, o.I) + + _, err = client.StringMatch(TestType{S: "5"}, 5) + require.EqualError(t, err, ":(") + + o, err = client.StringMatch(TestType{S: "8", I: 8}, 8) + require.NoError(t, err) + require.Equal(t, "8", o.S) + require.Equal(t, 8, o.I) + + // ErrChanSub + ctx := context.TODO() + _, err = client.ErrChanSub(ctx) + if err == nil { + t.Fatal("expect an err return, but got nil") + } + + // Invalid client handlers + + var noret struct { + Add func(int) + } + closer, err = NewClient(context.Background(), "ws://"+testServ.Listener.Addr().String(), "SimpleServerHandler", &noret, nil) + require.NoError(t, err) + + // this one should actually work + noret.Add(4) + require.Equal(t, 9, serverHandler.n) + closer() + + var noparam struct { + Add func() + } + closer, err = NewClient(context.Background(), "ws://"+testServ.Listener.Addr().String(), "SimpleServerHandler", &noparam, nil) + require.NoError(t, err) + + // shouldn't panic + noparam.Add() + closer() + + var erronly struct { + AddGet func() (int, error) + } + closer, err = NewClient(context.Background(), "ws://"+testServ.Listener.Addr().String(), "SimpleServerHandler", &erronly, nil) + require.NoError(t, err) + + _, err = erronly.AddGet() + if err == nil || err.Error() != "RPC error (-32602): wrong param count (method 'SimpleServerHandler.AddGet'): 0 != 1" { + t.Error("wrong error:", err) + } + closer() + + var wrongtype struct { + Add func(string) error + } + closer, err = NewClient(context.Background(), "ws://"+testServ.Listener.Addr().String(), "SimpleServerHandler", &wrongtype, nil) + require.NoError(t, err) + + err = wrongtype.Add("not an int") + if err == nil || !strings.Contains(err.Error(), "RPC error (-32700):") || !strings.Contains(err.Error(), "json: cannot unmarshal string into Go value of type int") { + t.Error("wrong error:", err) + } + closer() + + var notfound struct { + NotThere func(string) error + } + closer, err = NewClient(context.Background(), "ws://"+testServ.Listener.Addr().String(), "SimpleServerHandler", ¬found, nil) + require.NoError(t, err) + + err = notfound.NotThere("hello?") + if err == nil || err.Error() != "RPC error (-32601): method 'SimpleServerHandler.NotThere' not found" { + t.Error("wrong error:", err) + } + closer() +} + +func TestRPCHttpClient(t *testing.T) { + // setup server + + serverHandler := &SimpleServerHandler{} + + rpcServer := NewServer() + rpcServer.Register("SimpleServerHandler", serverHandler) + + // httptest stuff + testServ := httptest.NewServer(rpcServer) + defer testServ.Close() + // setup client + + var client struct { + Add func(int) error + AddGet func(int) int + StringMatch func(t TestType, i2 int64) (out TestOut, err error) + } + closer, err := NewClient(context.Background(), "http://"+testServ.Listener.Addr().String(), "SimpleServerHandler", &client, nil) + require.NoError(t, err) + defer closer() + + // Add(int) error + + require.NoError(t, client.Add(2)) + require.Equal(t, 2, serverHandler.n) + + err = client.Add(-3546) + require.EqualError(t, err, "test") + + // AddGet(int) int + + n := client.AddGet(3) + require.Equal(t, 5, n) + require.Equal(t, 5, serverHandler.n) + + // StringMatch + + o, err := client.StringMatch(TestType{S: "0"}, 0) + require.NoError(t, err) + require.Equal(t, "0", o.S) + require.Equal(t, 0, o.I) + + _, err = client.StringMatch(TestType{S: "5"}, 5) + require.EqualError(t, err, ":(") + + o, err = client.StringMatch(TestType{S: "8", I: 8}, 8) + require.NoError(t, err) + require.Equal(t, "8", o.S) + require.Equal(t, 8, o.I) + + // Invalid client handlers + + var noret struct { + Add func(int) + } + closer, err = NewClient(context.Background(), "http://"+testServ.Listener.Addr().String(), "SimpleServerHandler", &noret, nil) + require.NoError(t, err) + + // this one should actually work + noret.Add(4) + require.Equal(t, 9, serverHandler.n) + closer() + + var noparam struct { + Add func() + } + closer, err = NewClient(context.Background(), "http://"+testServ.Listener.Addr().String(), "SimpleServerHandler", &noparam, nil) + require.NoError(t, err) + + // shouldn't panic + noparam.Add() + closer() + + var erronly struct { + AddGet func() (int, error) + } + closer, err = NewClient(context.Background(), "http://"+testServ.Listener.Addr().String(), "SimpleServerHandler", &erronly, nil) + require.NoError(t, err) + + _, err = erronly.AddGet() + if err == nil || err.Error() != "RPC error (-32602): wrong param count (method 'SimpleServerHandler.AddGet'): 0 != 1" { + t.Error("wrong error:", err) + } + closer() + + var wrongtype struct { + Add func(string) error + } + closer, err = NewClient(context.Background(), "http://"+testServ.Listener.Addr().String(), "SimpleServerHandler", &wrongtype, nil) + require.NoError(t, err) + + err = wrongtype.Add("not an int") + if err == nil || !strings.Contains(err.Error(), "RPC error (-32700):") || !strings.Contains(err.Error(), "json: cannot unmarshal string into Go value of type int") { + t.Error("wrong error:", err) + } + closer() + + var notfound struct { + NotThere func(string) error + } + closer, err = NewClient(context.Background(), "http://"+testServ.Listener.Addr().String(), "SimpleServerHandler", ¬found, nil) + require.NoError(t, err) + + err = notfound.NotThere("hello?") + if err == nil || err.Error() != "RPC error (-32601): method 'SimpleServerHandler.NotThere' not found" { + t.Error("wrong error:", err) + } + closer() +} + +type CtxHandler struct { + lk sync.Mutex + + cancelled bool + i int +} + +func (h *CtxHandler) Test(ctx context.Context) { + h.lk.Lock() + defer h.lk.Unlock() + timeout := time.After(300 * time.Millisecond) + h.i++ + + select { + case <-timeout: + case <-ctx.Done(): + h.cancelled = true + } +} + +func TestCtx(t *testing.T) { + // setup server + + serverHandler := &CtxHandler{} + + rpcServer := NewServer() + rpcServer.Register("CtxHandler", serverHandler) + + // httptest stuff + testServ := httptest.NewServer(rpcServer) + defer testServ.Close() + + // setup client + + var client struct { + Test func(ctx context.Context) + } + closer, err := NewClient(context.Background(), "ws://"+testServ.Listener.Addr().String(), "CtxHandler", &client, nil) + require.NoError(t, err) + + ctx, cancel := context.WithTimeout(context.Background(), 100*time.Millisecond) + defer cancel() + + client.Test(ctx) + serverHandler.lk.Lock() + + if !serverHandler.cancelled { + t.Error("expected cancellation on the server side") + } + + serverHandler.cancelled = false + + serverHandler.lk.Unlock() + closer() + + var noCtxClient struct { + Test func() + } + closer, err = NewClient(context.Background(), "ws://"+testServ.Listener.Addr().String(), "CtxHandler", &noCtxClient, nil) + if err != nil { + t.Fatal(err) + } + + noCtxClient.Test() + + serverHandler.lk.Lock() + + if serverHandler.cancelled || serverHandler.i != 2 { + t.Error("wrong serverHandler state") + } + + serverHandler.lk.Unlock() + closer() +} + +func TestCtxHttp(t *testing.T) { + // setup server + + serverHandler := &CtxHandler{} + + rpcServer := NewServer() + rpcServer.Register("CtxHandler", serverHandler) + + // httptest stuff + testServ := httptest.NewServer(rpcServer) + defer testServ.Close() + + // setup client + + var client struct { + Test func(ctx context.Context) + } + closer, err := NewClient(context.Background(), "http://"+testServ.Listener.Addr().String(), "CtxHandler", &client, nil) + require.NoError(t, err) + + ctx, cancel := context.WithTimeout(context.Background(), 100*time.Millisecond) + defer cancel() + + client.Test(ctx) + serverHandler.lk.Lock() + + if !serverHandler.cancelled { + t.Error("expected cancellation on the server side") + } + + serverHandler.cancelled = false + + serverHandler.lk.Unlock() + closer() + + var noCtxClient struct { + Test func() + } + closer, err = NewClient(context.Background(), "ws://"+testServ.Listener.Addr().String(), "CtxHandler", &noCtxClient, nil) + if err != nil { + t.Fatal(err) + } + + noCtxClient.Test() + + serverHandler.lk.Lock() + + if serverHandler.cancelled || serverHandler.i != 2 { + t.Error("wrong serverHandler state") + } + + serverHandler.lk.Unlock() + closer() +} + +type UnUnmarshalable int + +func (*UnUnmarshalable) UnmarshalJSON([]byte) error { + return errors.New("nope") +} + +type UnUnmarshalableHandler struct{} + +func (*UnUnmarshalableHandler) GetUnUnmarshalableStuff() (UnUnmarshalable, error) { + return UnUnmarshalable(5), nil +} + +func TestUnmarshalableResult(t *testing.T) { + var client struct { + GetUnUnmarshalableStuff func() (UnUnmarshalable, error) + } + + rpcServer := NewServer() + rpcServer.Register("Handler", &UnUnmarshalableHandler{}) + + testServ := httptest.NewServer(rpcServer) + defer testServ.Close() + + closer, err := NewClient(context.Background(), "ws://"+testServ.Listener.Addr().String(), "Handler", &client, nil) + require.NoError(t, err) + defer closer() + + _, err = client.GetUnUnmarshalableStuff() + require.EqualError(t, err, "RPC client error: unmarshaling result: nope") +} + +type ChanHandler struct { + wait chan struct{} + ctxdone <-chan struct{} +} + +func (h *ChanHandler) Sub(ctx context.Context, i int, eq int) (<-chan int, error) { + out := make(chan int) + h.ctxdone = ctx.Done() + + wait := h.wait + + log.Warnf("SERVER SUB!") + go func() { + defer close(out) + var n int + + for { + select { + case <-ctx.Done(): + fmt.Println("ctxdone1", i, eq) + return + case <-wait: + fmt.Println("CONSUMED WAIT: ", i) + } + + n += i + + if n == eq { + fmt.Println("eq") + return + } + + select { + case <-ctx.Done(): + fmt.Println("ctxdone2") + return + case out <- n: + } + } + }() + + return out, nil +} + +func TestChan(t *testing.T) { + var client struct { + Sub func(context.Context, int, int) (<-chan int, error) + } + + serverHandler := &ChanHandler{ + wait: make(chan struct{}, 5), + } + + rpcServer := NewServer() + rpcServer.Register("ChanHandler", serverHandler) + + testServ := httptest.NewServer(rpcServer) + defer testServ.Close() + + closer, err := NewClient(context.Background(), "ws://"+testServ.Listener.Addr().String(), "ChanHandler", &client, nil) + require.NoError(t, err) + + defer closer() + + serverHandler.wait <- struct{}{} + + ctx, cancel := context.WithCancel(context.Background()) + + // sub + + sub, err := client.Sub(ctx, 2, -1) + require.NoError(t, err) + + // recv one + + require.Equal(t, 2, <-sub) + + // recv many (order) + + serverHandler.wait <- struct{}{} + serverHandler.wait <- struct{}{} + serverHandler.wait <- struct{}{} + + require.Equal(t, 4, <-sub) + require.Equal(t, 6, <-sub) + require.Equal(t, 8, <-sub) + + // close (through ctx) + cancel() + + _, ok := <-sub + require.Equal(t, false, ok) + + // sub (again) + + serverHandler.wait = make(chan struct{}, 5) + serverHandler.wait <- struct{}{} + + ctx, cancel = context.WithCancel(context.Background()) + defer cancel() + + log.Warnf("last sub") + sub, err = client.Sub(ctx, 3, 6) + require.NoError(t, err) + + log.Warnf("waiting for value now") + require.Equal(t, 3, <-sub) + log.Warnf("not equal") + + // close (remote) + serverHandler.wait <- struct{}{} + _, ok = <-sub + require.Equal(t, false, ok) +} + +func TestChanClosing(t *testing.T) { + var client struct { + Sub func(context.Context, int, int) (<-chan int, error) + } + + serverHandler := &ChanHandler{ + wait: make(chan struct{}, 5), + } + + rpcServer := NewServer() + rpcServer.Register("ChanHandler", serverHandler) + + testServ := httptest.NewServer(rpcServer) + defer testServ.Close() + + closer, err := NewClient(context.Background(), "ws://"+testServ.Listener.Addr().String(), "ChanHandler", &client, nil) + require.NoError(t, err) + + defer closer() + + ctx1, cancel1 := context.WithCancel(context.Background()) + ctx2, cancel2 := context.WithCancel(context.Background()) + + // sub + + sub1, err := client.Sub(ctx1, 2, -1) + require.NoError(t, err) + + sub2, err := client.Sub(ctx2, 3, -1) + require.NoError(t, err) + + // recv one + + serverHandler.wait <- struct{}{} + serverHandler.wait <- struct{}{} + + require.Equal(t, 2, <-sub1) + require.Equal(t, 3, <-sub2) + + cancel1() + + require.Equal(t, 0, <-sub1) + time.Sleep(time.Millisecond * 50) // make sure the loop has exited (having a shared wait channel makes this annoying) + + serverHandler.wait <- struct{}{} + require.Equal(t, 6, <-sub2) + + cancel2() + require.Equal(t, 0, <-sub2) +} + +func TestChanServerClose(t *testing.T) { + var client struct { + Sub func(context.Context, int, int) (<-chan int, error) + } + + serverHandler := &ChanHandler{ + wait: make(chan struct{}, 5), + } + + rpcServer := NewServer() + rpcServer.Register("ChanHandler", serverHandler) + + tctx, tcancel := context.WithCancel(context.Background()) + + testServ := httptest.NewServer(rpcServer) + testServ.Config.ConnContext = func(ctx context.Context, c net.Conn) context.Context { + return tctx + } + + closer, err := NewClient(context.Background(), "ws://"+testServ.Listener.Addr().String(), "ChanHandler", &client, nil) + require.NoError(t, err) + + defer closer() + + serverHandler.wait <- struct{}{} + + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + // sub + + sub, err := client.Sub(ctx, 2, -1) + require.NoError(t, err) + + // recv one + + require.Equal(t, 2, <-sub) + + // make sure we're blocked + + select { + case <-time.After(200 * time.Millisecond): + case <-sub: + t.Fatal("didn't expect to get anything from sub") + } + + // close server + + tcancel() + testServ.Close() + + _, ok := <-sub + require.Equal(t, false, ok) +} + +func TestServerChanLockClose(t *testing.T) { + var client struct { + Sub func(context.Context, int, int) (<-chan int, error) + } + + serverHandler := &ChanHandler{ + wait: make(chan struct{}), + } + + rpcServer := NewServer() + rpcServer.Register("ChanHandler", serverHandler) + + testServ := httptest.NewServer(rpcServer) + + var closeConn func() error + + _, err := NewMergeClient(context.Background(), "ws://"+testServ.Listener.Addr().String(), + "ChanHandler", + []interface{}{&client}, nil, + func(c *Config) { + c.proxyConnFactory = func(f func() (*websocket.Conn, error)) func() (*websocket.Conn, error) { + return func() (*websocket.Conn, error) { + c, err := f() + if err != nil { + return nil, err + } + + closeConn = c.UnderlyingConn().Close + + return c, nil + } + } + }) + require.NoError(t, err) + + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + // sub + + sub, err := client.Sub(ctx, 2, -1) + require.NoError(t, err) + + // recv one + + go func() { + serverHandler.wait <- struct{}{} + }() + require.Equal(t, 2, <-sub) + + for i := 0; i < 100; i++ { + serverHandler.wait <- struct{}{} + } + + if err := closeConn(); err != nil { + t.Fatal(err) + } + + <-serverHandler.ctxdone +} + +type StreamingHandler struct { +} + +func (h *StreamingHandler) GetData(ctx context.Context, n int) (<-chan int, error) { + out := make(chan int) + + go func() { + defer close(out) + + for i := 0; i < n; i++ { + out <- i + } + }() + + return out, nil +} + +func TestChanClientReceiveAll(t *testing.T) { + var client struct { + GetData func(context.Context, int) (<-chan int, error) + } + + serverHandler := &StreamingHandler{} + + rpcServer := NewServer() + rpcServer.Register("ChanHandler", serverHandler) + + tctx, tcancel := context.WithCancel(context.Background()) + + testServ := httptest.NewServer(rpcServer) + testServ.Config.ConnContext = func(ctx context.Context, c net.Conn) context.Context { + return tctx + } + + closer, err := NewClient(context.Background(), "ws://"+testServ.Listener.Addr().String(), "ChanHandler", &client, nil) + require.NoError(t, err) + + defer closer() + + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + // sub + + sub, err := client.GetData(ctx, 100) + require.NoError(t, err) + + for i := 0; i < 100; i++ { + select { + case v, ok := <-sub: + if !ok { + t.Fatal("channel closed", i) + } + + if v != i { + t.Fatal("got wrong value", v, i) + } + case <-time.After(time.Second): + t.Fatal("timed out waiting for values") + } + } + + tcancel() + testServ.Close() + +} + +func TestControlChanDeadlock(t *testing.T) { + for r := 0; r < 20; r++ { + testControlChanDeadlock(t) + } +} + +func testControlChanDeadlock(t *testing.T) { + var client struct { + Sub func(context.Context, int, int) (<-chan int, error) + } + + n := 5000 + + serverHandler := &ChanHandler{ + wait: make(chan struct{}, n), + } + + rpcServer := NewServer() + rpcServer.Register("ChanHandler", serverHandler) + + testServ := httptest.NewServer(rpcServer) + defer testServ.Close() + + closer, err := NewClient(context.Background(), "ws://"+testServ.Listener.Addr().String(), "ChanHandler", &client, nil) + require.NoError(t, err) + + defer closer() + + for i := 0; i < n; i++ { + serverHandler.wait <- struct{}{} + } + + ctx, cancel := context.WithCancel(context.Background()) + defer cancel() + + sub, err := client.Sub(ctx, 1, -1) + require.NoError(t, err) + + done := make(chan struct{}) + + go func() { + defer close(done) + for i := 0; i < n; i++ { + if <-sub != i+1 { + panic("bad!") + //require.Equal(t, i+1, <-sub) + } + } + }() + + // reset this channel so its not shared between the sub requests... + serverHandler.wait = make(chan struct{}, n) + for i := 0; i < n; i++ { + serverHandler.wait <- struct{}{} + } + + _, err = client.Sub(ctx, 2, -1) + require.NoError(t, err) + <-done +} + +type InterfaceHandler struct { +} + +func (h *InterfaceHandler) ReadAll(ctx context.Context, r io.Reader) ([]byte, error) { + return ioutil.ReadAll(r) +} + +func TestInterfaceHandler(t *testing.T) { + var client struct { + ReadAll func(ctx context.Context, r io.Reader) ([]byte, error) + } + + serverHandler := &InterfaceHandler{} + + rpcServer := NewServer(WithParamDecoder(new(io.Reader), readerDec)) + rpcServer.Register("InterfaceHandler", serverHandler) + + testServ := httptest.NewServer(rpcServer) + defer testServ.Close() + + closer, err := NewMergeClient(context.Background(), "ws://"+testServ.Listener.Addr().String(), "InterfaceHandler", []interface{}{&client}, nil, WithParamEncoder(new(io.Reader), readerEnc)) + require.NoError(t, err) + + defer closer() + + read, err := client.ReadAll(context.TODO(), strings.NewReader("pooooootato")) + require.NoError(t, err) + require.Equal(t, "pooooootato", string(read), "potatos weren't equal") +} + +var ( + readerRegistery = map[int]io.Reader{} + readerRegisteryN = 31 + readerRegisteryLk sync.Mutex +) + +func readerEnc(rin reflect.Value) (reflect.Value, error) { + reader := rin.Interface().(io.Reader) + + readerRegisteryLk.Lock() + defer readerRegisteryLk.Unlock() + + n := readerRegisteryN + readerRegisteryN++ + + readerRegistery[n] = reader + return reflect.ValueOf(n), nil +} + +func readerDec(ctx context.Context, rin []byte) (reflect.Value, error) { + var id int + if err := json.Unmarshal(rin, &id); err != nil { + return reflect.Value{}, err + } + + readerRegisteryLk.Lock() + defer readerRegisteryLk.Unlock() + + return reflect.ValueOf(readerRegistery[id]), nil +} diff --git a/extern/go-jsonrpc/server.go b/extern/go-jsonrpc/server.go new file mode 100755 index 000000000..de1ffca05 --- /dev/null +++ b/extern/go-jsonrpc/server.go @@ -0,0 +1,135 @@ +package jsonrpc + +import ( + "context" + "encoding/json" + "io" + "net/http" + "reflect" + "strings" + + "github.com/gorilla/websocket" +) + +const ( + rpcParseError = -32700 + rpcMethodNotFound = -32601 + rpcInvalidParams = -32602 +) + +// RPCServer provides a jsonrpc 2.0 http server handler +type RPCServer struct { + methods map[string]rpcHandler + + // aliasedMethods contains a map of alias:original method names. + // These are used as fallbacks if a method is not found by the given method name. + aliasedMethods map[string]string + + paramDecoders map[reflect.Type]ParamDecoder + + maxRequestSize int64 +} + +// NewServer creates new RPCServer instance +func NewServer(opts ...ServerOption) *RPCServer { + config := defaultServerConfig() + for _, o := range opts { + o(&config) + } + + return &RPCServer{ + methods: map[string]rpcHandler{}, + aliasedMethods: map[string]string{}, + paramDecoders: config.paramDecoders, + maxRequestSize: config.maxRequestSize, + } +} + +var upgrader = websocket.Upgrader{ + CheckOrigin: func(r *http.Request) bool { + return true + }, +} + +func (s *RPCServer) handleWS(ctx context.Context, w http.ResponseWriter, r *http.Request) { + // TODO: allow setting + // (note that we still are mostly covered by jwt tokens) + w.Header().Set("Access-Control-Allow-Origin", "*") + if r.Header.Get("Sec-WebSocket-Protocol") != "" { + w.Header().Set("Sec-WebSocket-Protocol", r.Header.Get("Sec-WebSocket-Protocol")) + } + + c, err := upgrader.Upgrade(w, r, nil) + if err != nil { + log.Error(err) + w.WriteHeader(500) + return + } + + (&wsConn{ + conn: c, + handler: s, + exiting: make(chan struct{}), + }).handleWsConn(ctx) + + if err := c.Close(); err != nil { + log.Error(err) + return + } +} + +// TODO: return errors to clients per spec +func (s *RPCServer) ServeHTTP(w http.ResponseWriter, r *http.Request) { + ctx := r.Context() + + h := strings.ToLower(r.Header.Get("Connection")) + if strings.Contains(h, "upgrade") { + s.handleWS(ctx, w, r) + return + } + + s.handleReader(ctx, r.Body, w, rpcError) +} + +func rpcError(wf func(func(io.Writer)), req *request, code int, err error) { + log.Errorf("RPC Error: %s", err) + wf(func(w io.Writer) { + if hw, ok := w.(http.ResponseWriter); ok { + hw.WriteHeader(500) + } + + log.Warnf("rpc error: %s", err) + + if req.ID == nil { // notification + return + } + + resp := response{ + Jsonrpc: "2.0", + ID: *req.ID, + Error: &respError{ + Code: code, + Message: err.Error(), + }, + } + + err = json.NewEncoder(w).Encode(resp) + if err != nil { + log.Warnf("failed to write rpc error: %s", err) + return + } + }) +} + +// Register registers new RPC handler +// +// Handler is any value with methods defined +func (s *RPCServer) Register(namespace string, handler interface{}) { + s.register(namespace, handler) +} + +func (s *RPCServer) AliasMethod(alias, original string) { + s.aliasedMethods[alias] = original +} + +var _ error = &respError{} diff --git a/extern/go-jsonrpc/util.go b/extern/go-jsonrpc/util.go new file mode 100755 index 000000000..09fc39363 --- /dev/null +++ b/extern/go-jsonrpc/util.go @@ -0,0 +1,81 @@ +package jsonrpc + +import ( + "encoding/json" + "fmt" + "math" + "math/rand" + "reflect" + "time" +) + +type param struct { + data []byte // from unmarshal + + v reflect.Value // to marshal +} + +func (p *param) UnmarshalJSON(raw []byte) error { + p.data = make([]byte, len(raw)) + copy(p.data, raw) + return nil +} + +func (p *param) MarshalJSON() ([]byte, error) { + if p.v.Kind() == reflect.Invalid { + return p.data, nil + } + + return json.Marshal(p.v.Interface()) +} + +// processFuncOut finds value and error Outs in function +func processFuncOut(funcType reflect.Type) (valOut int, errOut int, n int) { + errOut = -1 // -1 if not found + valOut = -1 + n = funcType.NumOut() + + switch n { + case 0: + case 1: + if funcType.Out(0) == errorType { + errOut = 0 + } else { + valOut = 0 + } + case 2: + valOut = 0 + errOut = 1 + if funcType.Out(1) != errorType { + panic("expected error as second return value") + } + default: + errstr := fmt.Sprintf("too many return values: %s", funcType) + panic(errstr) + } + + return +} + +type backoff struct { + minDelay time.Duration + maxDelay time.Duration +} + +func (b *backoff) next(attempt int) time.Duration { + if attempt < 0 { + return b.minDelay + } + + minf := float64(b.minDelay) + durf := minf * math.Pow(1.5, float64(attempt)) + durf = durf + rand.Float64()*minf + + delay := time.Duration(durf) + + if delay > b.maxDelay { + return b.maxDelay + } + + return delay +} diff --git a/extern/go-jsonrpc/websocket.go b/extern/go-jsonrpc/websocket.go new file mode 100755 index 000000000..b569e9149 --- /dev/null +++ b/extern/go-jsonrpc/websocket.go @@ -0,0 +1,683 @@ +package jsonrpc + +import ( + "context" + "encoding/json" + "errors" + "io" + "io/ioutil" + "reflect" + "sync" + "sync/atomic" + "time" + + "github.com/gorilla/websocket" + "golang.org/x/xerrors" +) + +const wsCancel = "xrpc.cancel" +const chValue = "xrpc.ch.val" +const chClose = "xrpc.ch.close" + +type frame struct { + // common + Jsonrpc string `json:"jsonrpc"` + ID *int64 `json:"id,omitempty"` + Meta map[string]string `json:"meta,omitempty"` + + // request + Method string `json:"method,omitempty"` + Params []param `json:"params,omitempty"` + + // response + Result json.RawMessage `json:"result,omitempty"` + Error *respError `json:"error,omitempty"` +} + +type outChanReg struct { + reqID int64 + + chID uint64 + ch reflect.Value +} + +type wsConn struct { + // outside params + conn *websocket.Conn + connFactory func() (*websocket.Conn, error) + reconnectBackoff backoff + pingInterval time.Duration + timeout time.Duration + handler *RPCServer + requests <-chan clientRequest + pongs chan struct{} + stop <-chan struct{} + exiting chan struct{} + + // incoming messages + incoming chan io.Reader + incomingErr error + + // outgoing messages + writeLk sync.Mutex + + // //// + // Client related + + // inflight are requests we've sent to the remote + inflight map[int64]clientRequest + + // chanHandlers is a map of client-side channel handlers + chanHandlers map[uint64]func(m []byte, ok bool) + + // //// + // Server related + + // handling are the calls we handle + handling map[int64]context.CancelFunc + handlingLk sync.Mutex + + spawnOutChanHandlerOnce sync.Once + + // chanCtr is a counter used for identifying output channels on the server side + chanCtr uint64 + + registerCh chan outChanReg +} + +// // +// WebSocket Message utils // +// // + +// nextMessage wait for one message and puts it to the incoming channel +func (c *wsConn) nextMessage() { + if c.timeout > 0 { + if err := c.conn.SetReadDeadline(time.Now().Add(c.timeout)); err != nil { + log.Error("setting read deadline", err) + } + } + msgType, r, err := c.conn.NextReader() + if err != nil { + c.incomingErr = err + close(c.incoming) + return + } + if msgType != websocket.BinaryMessage && msgType != websocket.TextMessage { + c.incomingErr = errors.New("unsupported message type") + close(c.incoming) + return + } + c.incoming <- r +} + +// nextWriter waits for writeLk and invokes the cb callback with WS message +// writer when the lock is acquired +func (c *wsConn) nextWriter(cb func(io.Writer)) { + c.writeLk.Lock() + defer c.writeLk.Unlock() + + wcl, err := c.conn.NextWriter(websocket.TextMessage) + if err != nil { + log.Error("handle me:", err) + return + } + + cb(wcl) + + if err := wcl.Close(); err != nil { + log.Error("handle me:", err) + return + } +} + +func (c *wsConn) sendRequest(req request) error { + c.writeLk.Lock() + defer c.writeLk.Unlock() + + if err := c.conn.WriteJSON(req); err != nil { + return err + } + return nil +} + +// // +// Output channels // +// // + +// handleOutChans handles channel communication on the server side +// (forwards channel messages to client) +func (c *wsConn) handleOutChans() { + regV := reflect.ValueOf(c.registerCh) + exitV := reflect.ValueOf(c.exiting) + + cases := []reflect.SelectCase{ + { // registration chan always 0 + Dir: reflect.SelectRecv, + Chan: regV, + }, + { // exit chan always 1 + Dir: reflect.SelectRecv, + Chan: exitV, + }, + } + internal := len(cases) + var caseToID []uint64 + + for { + chosen, val, ok := reflect.Select(cases) + + switch chosen { + case 0: // registration channel + if !ok { + // control channel closed - signals closed connection + // This shouldn't happen, instead the exiting channel should get closed + log.Warn("control channel closed") + return + } + + registration := val.Interface().(outChanReg) + + caseToID = append(caseToID, registration.chID) + cases = append(cases, reflect.SelectCase{ + Dir: reflect.SelectRecv, + Chan: registration.ch, + }) + + c.nextWriter(func(w io.Writer) { + resp := &response{ + Jsonrpc: "2.0", + ID: registration.reqID, + Result: registration.chID, + } + + if err := json.NewEncoder(w).Encode(resp); err != nil { + log.Error(err) + return + } + }) + + continue + case 1: // exiting channel + if !ok { + // exiting channel closed - signals closed connection + // + // We're not closing any channels as we're on receiving end. + // Also, context cancellation below should take care of any running + // requests + return + } + log.Warn("exiting channel received a message") + continue + } + + if !ok { + // Output channel closed, cleanup, and tell remote that this happened + + id := caseToID[chosen-internal] + + n := len(cases) - 1 + if n > 0 { + cases[chosen] = cases[n] + caseToID[chosen-internal] = caseToID[n-internal] + } + + cases = cases[:n] + caseToID = caseToID[:n-internal] + + if err := c.sendRequest(request{ + Jsonrpc: "2.0", + ID: nil, // notification + Method: chClose, + Params: []param{{v: reflect.ValueOf(id)}}, + }); err != nil { + log.Warnf("closed out channel sendRequest failed: %s", err) + } + continue + } + + // forward message + if err := c.sendRequest(request{ + Jsonrpc: "2.0", + ID: nil, // notification + Method: chValue, + Params: []param{{v: reflect.ValueOf(caseToID[chosen-internal])}, {v: val}}, + }); err != nil { + log.Warnf("sendRequest failed: %s", err) + return + } + } +} + +// handleChanOut registers output channel for forwarding to client +func (c *wsConn) handleChanOut(ch reflect.Value, req int64) error { + c.spawnOutChanHandlerOnce.Do(func() { + go c.handleOutChans() + }) + id := atomic.AddUint64(&c.chanCtr, 1) + + select { + case c.registerCh <- outChanReg{ + reqID: req, + + chID: id, + ch: ch, + }: + return nil + case <-c.exiting: + return xerrors.New("connection closing") + } +} + +// // +// Context.Done propagation // +// // + +// handleCtxAsync handles context lifetimes for client +// TODO: this should be aware of events going through chanHandlers, and quit +// when the related channel is closed. +// This should also probably be a single goroutine, +// Note that not doing this should be fine for now as long as we are using +// contexts correctly (cancelling when async functions are no longer is use) +func (c *wsConn) handleCtxAsync(actx context.Context, id int64) { + <-actx.Done() + + if err := c.sendRequest(request{ + Jsonrpc: "2.0", + Method: wsCancel, + Params: []param{{v: reflect.ValueOf(id)}}, + }); err != nil { + log.Warnw("failed to send request", "method", wsCancel, "id", id, "error", err.Error()) + } +} + +// cancelCtx is a built-in rpc which handles context cancellation over rpc +func (c *wsConn) cancelCtx(req frame) { + if req.ID != nil { + log.Warnf("%s call with ID set, won't respond", wsCancel) + } + + var id int64 + if err := json.Unmarshal(req.Params[0].data, &id); err != nil { + log.Error("handle me:", err) + return + } + + c.handlingLk.Lock() + defer c.handlingLk.Unlock() + + cf, ok := c.handling[id] + if ok { + cf() + } +} + +// // +// Main Handling logic // +// // + +func (c *wsConn) handleChanMessage(frame frame) { + var chid uint64 + if err := json.Unmarshal(frame.Params[0].data, &chid); err != nil { + log.Error("failed to unmarshal channel id in xrpc.ch.val: %s", err) + return + } + + hnd, ok := c.chanHandlers[chid] + if !ok { + log.Errorf("xrpc.ch.val: handler %d not found", chid) + return + } + + hnd(frame.Params[1].data, true) +} + +func (c *wsConn) handleChanClose(frame frame) { + var chid uint64 + if err := json.Unmarshal(frame.Params[0].data, &chid); err != nil { + log.Error("failed to unmarshal channel id in xrpc.ch.val: %s", err) + return + } + + hnd, ok := c.chanHandlers[chid] + if !ok { + log.Errorf("xrpc.ch.val: handler %d not found", chid) + return + } + + delete(c.chanHandlers, chid) + + hnd(nil, false) +} + +func (c *wsConn) handleResponse(frame frame) { + req, ok := c.inflight[*frame.ID] + if !ok { + log.Error("client got unknown ID in response") + return + } + + if req.retCh != nil && frame.Result != nil { + // output is channel + var chid uint64 + if err := json.Unmarshal(frame.Result, &chid); err != nil { + log.Errorf("failed to unmarshal channel id response: %s, data '%s'", err, string(frame.Result)) + return + } + + var chanCtx context.Context + chanCtx, c.chanHandlers[chid] = req.retCh() + go c.handleCtxAsync(chanCtx, *frame.ID) + } + + req.ready <- clientResponse{ + Jsonrpc: frame.Jsonrpc, + Result: frame.Result, + ID: *frame.ID, + Error: frame.Error, + } + delete(c.inflight, *frame.ID) +} + +func (c *wsConn) handleCall(ctx context.Context, frame frame) { + if c.handler == nil { + log.Error("handleCall on client") + return + } + + req := request{ + Jsonrpc: frame.Jsonrpc, + ID: frame.ID, + Meta: frame.Meta, + Method: frame.Method, + Params: frame.Params, + } + + ctx, cancel := context.WithCancel(ctx) + + nextWriter := func(cb func(io.Writer)) { + cb(ioutil.Discard) + } + done := func(keepCtx bool) { + if !keepCtx { + cancel() + } + } + if frame.ID != nil { + nextWriter = c.nextWriter + + c.handlingLk.Lock() + c.handling[*frame.ID] = cancel + c.handlingLk.Unlock() + + done = func(keepctx bool) { + c.handlingLk.Lock() + defer c.handlingLk.Unlock() + + if !keepctx { + cancel() + delete(c.handling, *frame.ID) + } + } + } + + go c.handler.handle(ctx, req, nextWriter, rpcError, done, c.handleChanOut) +} + +// handleFrame handles all incoming messages (calls and responses) +func (c *wsConn) handleFrame(ctx context.Context, frame frame) { + // Get message type by method name: + // "" - response + // "xrpc.*" - builtin + // anything else - incoming remote call + switch frame.Method { + case "": // Response to our call + c.handleResponse(frame) + case wsCancel: + c.cancelCtx(frame) + case chValue: + c.handleChanMessage(frame) + case chClose: + c.handleChanClose(frame) + default: // Remote call + c.handleCall(ctx, frame) + } +} + +func (c *wsConn) closeInFlight() { + for id, req := range c.inflight { + req.ready <- clientResponse{ + Jsonrpc: "2.0", + ID: id, + Error: &respError{ + Message: "handler: websocket connection closed", + Code: 2, + }, + } + } + + c.handlingLk.Lock() + for _, cancel := range c.handling { + cancel() + } + c.handlingLk.Unlock() + + c.inflight = map[int64]clientRequest{} + c.handling = map[int64]context.CancelFunc{} +} + +func (c *wsConn) closeChans() { + for chid := range c.chanHandlers { + hnd := c.chanHandlers[chid] + delete(c.chanHandlers, chid) + hnd(nil, false) + } +} + +func (c *wsConn) setupPings() func() { + if c.pingInterval == 0 { + return func() {} + } + + c.conn.SetPongHandler(func(appData string) error { + select { + case c.pongs <- struct{}{}: + default: + } + return nil + }) + + stop := make(chan struct{}) + + go func() { + for { + select { + case <-time.After(c.pingInterval): + c.writeLk.Lock() + if err := c.conn.WriteMessage(websocket.PingMessage, []byte{}); err != nil { + log.Errorf("sending ping message: %+v", err) + } + c.writeLk.Unlock() + case <-stop: + return + } + } + }() + + var o sync.Once + return func() { + o.Do(func() { + close(stop) + }) + } +} + +func (c *wsConn) handleWsConn(ctx context.Context) { + c.incoming = make(chan io.Reader) + c.inflight = map[int64]clientRequest{} + c.handling = map[int64]context.CancelFunc{} + c.chanHandlers = map[uint64]func(m []byte, ok bool){} + c.pongs = make(chan struct{}, 1) + + c.registerCh = make(chan outChanReg) + defer close(c.exiting) + + // //// + + // on close, make sure to return from all pending calls, and cancel context + // on all calls we handle + defer c.closeInFlight() + defer c.closeChans() + + // setup pings + + stopPings := c.setupPings() + defer stopPings() + + var timeoutTimer *time.Timer + if c.timeout != 0 { + timeoutTimer = time.NewTimer(c.timeout) + defer timeoutTimer.Stop() + } + + // wait for the first message + go c.nextMessage() + for { + var timeoutCh <-chan time.Time + if timeoutTimer != nil { + if !timeoutTimer.Stop() { + //<-timeoutTimer.C + select { + case <-timeoutTimer.C: + default: + } + } + timeoutTimer.Reset(c.timeout) + + timeoutCh = timeoutTimer.C + } + + select { + case r, ok := <-c.incoming: + if !ok { + if c.incomingErr != nil { + //if !websocket.IsCloseError(c.incomingErr, websocket.CloseNormalClosure) { + //log.Debugw("websocket error", "error", c.incomingErr) + + log.Debugw("websocket error", "error", c.incomingErr) + // only client needs to reconnect + if c.connFactory != nil { + // connection dropped unexpectedly, do our best to recover it + c.closeInFlight() + c.closeChans() + c.incoming = make(chan io.Reader) // listen again for responses + go func() { + //if c.connFactory == nil { // likely the server side, don't try to reconnect + // return + //} + + stopPings() + + attempts := 0 + var conn *websocket.Conn + for conn == nil { + time.Sleep(c.reconnectBackoff.next(attempts)) + var err error + if conn, err = c.connFactory(); err != nil { + log.Debugw("websocket connection retry failed", "error", err) + } + select { + case <-ctx.Done(): + break + default: + continue + } + attempts++ + } + + c.writeLk.Lock() + c.conn = conn + c.incomingErr = nil + + stopPings = c.setupPings() + + c.writeLk.Unlock() + + go c.nextMessage() + }() + continue + } + } + return // remote closed + } + + // debug util - dump all messages to stderr + // r = io.TeeReader(r, os.Stderr) + + var frame frame + if err := json.NewDecoder(r).Decode(&frame); err != nil { + log.Error("handle me:", err) + return + } + + c.handleFrame(ctx, frame) + go c.nextMessage() + case req := <-c.requests: + c.writeLk.Lock() + if req.req.ID != nil { + if c.incomingErr != nil { // No conn?, immediate fail + req.ready <- clientResponse{ + Jsonrpc: "2.0", + ID: *req.req.ID, + Error: &respError{ + Message: "handler: websocket connection closed", + Code: 2, + }, + } + c.writeLk.Unlock() + break + } + c.inflight[*req.req.ID] = req + } + c.writeLk.Unlock() + if err := c.sendRequest(req.req); err != nil { + log.Errorf("sendReqest failed (Handle me): %s", err) + } + case <-c.pongs: + if c.timeout > 0 { + if err := c.conn.SetReadDeadline(time.Now().Add(c.timeout)); err != nil { + log.Error("setting read deadline", err) + } + } + case <-timeoutCh: + if c.pingInterval == 0 { + // pings not running, this is perfectly normal + continue + } + + c.writeLk.Lock() + if err := c.conn.Close(); err != nil { + log.Warnw("timed-out websocket close error", "error", err) + } + c.writeLk.Unlock() + log.Errorw("Connection timeout", "remote", c.conn.RemoteAddr()) + //return + // The server side does not perform the reconnect operation, so need to exit + if c.connFactory == nil { + return + } + // The client performs the reconnect operation, and if it exits it cannot start a handleWsConn again, so it does not need to exit + continue + case <-c.stop: + c.writeLk.Lock() + cmsg := websocket.FormatCloseMessage(websocket.CloseNormalClosure, "") + if err := c.conn.WriteMessage(websocket.CloseMessage, cmsg); err != nil { + log.Warn("failed to write close message: ", err) + } + if err := c.conn.Close(); err != nil { + log.Warnw("websocket close error", "error", err) + } + c.writeLk.Unlock() + return + } + } +} diff --git a/go.mod b/go.mod index aeed6fa18..1218dfb72 100644 --- a/go.mod +++ b/go.mod @@ -162,3 +162,5 @@ replace github.com/filecoin-project/test-vectors => ./extern/test-vectors replace github.com/supranational/blst => ./extern/blst replace github.com/moran666666/sector-counter => ./extern/sector-counter + +replace github.com/filecoin-project/go-jsonrpc => ./extern/go-jsonrpc From 32cb4cdf69d6a4716e1317b043b2a3f87ade7a1a Mon Sep 17 00:00:00 2001 From: moran666666 <396124008@qq.com> Date: Fri, 25 Dec 2020 14:49:56 +0800 Subject: [PATCH 08/26] modify extern c2 disply info --- extern/sector-storage/ffiwrapper/sealer_cgo.go | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/extern/sector-storage/ffiwrapper/sealer_cgo.go b/extern/sector-storage/ffiwrapper/sealer_cgo.go index 7c638b2d1..9665b10df 100644 --- a/extern/sector-storage/ffiwrapper/sealer_cgo.go +++ b/extern/sector-storage/ffiwrapper/sealer_cgo.go @@ -526,7 +526,7 @@ func (sb *Sealer) SealCommit1(ctx context.Context, sector storage.SectorRef, tic func (sb *Sealer) SealCommit2(ctx context.Context, sector storage.SectorRef, phase1Out storage.Commit1Out) (storage.Proof, error) { if c2Address, ok := os.LookupEnv("C2_ADDRESS"); ok { - log.Warn("Seal extern commit2 .......................") + log.Warn("Do the extern commit2 task ......") return RequestCommit2(sector.ID, phase1Out, c2Address) } return ffi.SealCommitPhase2(phase1Out, sector.ID.Number, sector.ID.Miner) @@ -706,8 +706,6 @@ func RequestCommit2(sector abi.SectorID, phase1Out storage.Commit1Out, c2Address return nil, err } - log.Info("send commit2 request to remote service") - zBuf := new(bytes.Buffer) zw := gzip.NewWriter(zBuf) if _, err = zw.Write(b); err != nil { @@ -726,8 +724,7 @@ func RequestCommit2(sector abi.SectorID, phase1Out storage.Commit1Out, c2Address req.Header.Set("Content-Type", "application/json;charset=utf-8") req.Header.Set("Content-Encoding", "gzip") - log.Info("request commit2 from remote service ..................") - + log.Info("Send commit2 task to remote service ......") resp, err := http.DefaultClient.Do(req) if err != nil { log.Error("do request err: ", err) @@ -737,7 +734,6 @@ func RequestCommit2(sector abi.SectorID, phase1Out storage.Commit1Out, c2Address log.Errorf("http client do code: %d err: %+v", resp.StatusCode, err) return nil, err } - log.Info("request commit2 ended") defer resp.Body.Close() result, err := ioutil.ReadAll(resp.Body) @@ -753,7 +749,7 @@ func RequestCommit2(sector abi.SectorID, phase1Out storage.Commit1Out, c2Address return nil, err } - log.Info("response commit2 result: ", response) + log.Info("Receive commit2 result success......") return response.Proof, nil } From 0f3f3d47204780ec5bc86c0cde236cad3aae64fd Mon Sep 17 00:00:00 2001 From: moran666666 <396124008@qq.com> Date: Fri, 25 Dec 2020 14:55:49 +0800 Subject: [PATCH 09/26] modify extern c2 display info 2 --- extern/sector-storage/ffiwrapper/sealer_cgo.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/extern/sector-storage/ffiwrapper/sealer_cgo.go b/extern/sector-storage/ffiwrapper/sealer_cgo.go index 9665b10df..3db3af4f2 100644 --- a/extern/sector-storage/ffiwrapper/sealer_cgo.go +++ b/extern/sector-storage/ffiwrapper/sealer_cgo.go @@ -724,12 +724,13 @@ func RequestCommit2(sector abi.SectorID, phase1Out storage.Commit1Out, c2Address req.Header.Set("Content-Type", "application/json;charset=utf-8") req.Header.Set("Content-Encoding", "gzip") - log.Info("Send commit2 task to remote service ......") + log.Info("Send commit2 task to extern server and wait for response ......") resp, err := http.DefaultClient.Do(req) if err != nil { log.Error("do request err: ", err) return nil, err } + if resp.StatusCode != 200 { log.Errorf("http client do code: %d err: %+v", resp.StatusCode, err) return nil, err From 6bb83f345e9b96c735cd90e6ec3148aaa02a6723 Mon Sep 17 00:00:00 2001 From: moran666666 <396124008@qq.com> Date: Fri, 25 Dec 2020 15:24:17 +0800 Subject: [PATCH 10/26] modify extern c2 display info 3 --- cmd/lotus-extern-commit2/server/c2server.go | 2 +- extern/sector-storage/ffiwrapper/sealer_cgo.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/cmd/lotus-extern-commit2/server/c2server.go b/cmd/lotus-extern-commit2/server/c2server.go index 5ad3fb702..0181ab9c5 100644 --- a/cmd/lotus-extern-commit2/server/c2server.go +++ b/cmd/lotus-extern-commit2/server/c2server.go @@ -85,7 +85,7 @@ func HandleCommit2(w http.ResponseWriter, req *http.Request) { log.Errorf("request json unmarshel error: %+v", err) return } - fmt.Println("test============== 解析C2任务成功,开始做证明......") + fmt.Println("test============== 解析扇区 ", request.SectorID.Number, " C2任务成功,开始做证明......") proof, err := doC2Job(request) // 调用c2函数做任务 if err != nil { diff --git a/extern/sector-storage/ffiwrapper/sealer_cgo.go b/extern/sector-storage/ffiwrapper/sealer_cgo.go index 3db3af4f2..ee03e3fc6 100644 --- a/extern/sector-storage/ffiwrapper/sealer_cgo.go +++ b/extern/sector-storage/ffiwrapper/sealer_cgo.go @@ -526,7 +526,7 @@ func (sb *Sealer) SealCommit1(ctx context.Context, sector storage.SectorRef, tic func (sb *Sealer) SealCommit2(ctx context.Context, sector storage.SectorRef, phase1Out storage.Commit1Out) (storage.Proof, error) { if c2Address, ok := os.LookupEnv("C2_ADDRESS"); ok { - log.Warn("Do the extern commit2 task ......") + log.Warnf("Sector %d do the extern commit2 task ......", sector.ID.Number) return RequestCommit2(sector.ID, phase1Out, c2Address) } return ffi.SealCommitPhase2(phase1Out, sector.ID.Number, sector.ID.Miner) From d8e752a563aa3945bc7aafca6d65aa43dae418fb Mon Sep 17 00:00:00 2001 From: moran666666 <396124008@qq.com> Date: Fri, 25 Dec 2020 16:25:46 +0800 Subject: [PATCH 11/26] modify c2 scheduler go checkHeart --- cmd/lotus-extern-commit2/scheduler/sched.go | 51 +++++++++++++++++++-- 1 file changed, 48 insertions(+), 3 deletions(-) diff --git a/cmd/lotus-extern-commit2/scheduler/sched.go b/cmd/lotus-extern-commit2/scheduler/sched.go index 52599df3f..06651449b 100644 --- a/cmd/lotus-extern-commit2/scheduler/sched.go +++ b/cmd/lotus-extern-commit2/scheduler/sched.go @@ -76,8 +76,8 @@ func (p *C2Proxy) EnableHost(key string) { } } -// GetFreeHost 获取空闲的C2主机 -func (p *C2Proxy) GetFreeHost() string { +// GetFreeHost0 获取空闲的C2主机 +func (p *C2Proxy) GetFreeHost0() string { p.HostListLk.Lock() defer p.HostListLk.Unlock() for host, hostInfo := range GlobleProxy.HostList { @@ -88,12 +88,57 @@ func (p *C2Proxy) GetFreeHost() string { return "" } +// GetFreeHost 获取空闲的C2主机 +func (p *C2Proxy) GetFreeHost() string { + p.HostListLk.Lock() + defer p.HostListLk.Unlock() + hostList := make([]string, 0) + for k := range p.HostList { //先将主机清单copy出来 + hostList = append(hostList, k) + } + + for _, host := range hostList { // 检测c2主机是否存活 + hostInfo := p.HostList[host] + if checkHostHeart(host) && hostInfo.Active { + return host + } + } + + return "" +} + +func checkHostHeart(host string) bool { + resp, err := http.Get(fmt.Sprintf("http://%s/commit2/ping", host)) + if err != nil { + GlobleProxy.DeleteHost(host) + fmt.Println("test==============", host, "1心跳检测失败") + fmt.Println(err) + return false + } + respBody, err := ioutil.ReadAll(resp.Body) + if err != nil { + GlobleProxy.DeleteHost(host) + fmt.Println("test==============", host, "2心跳检测失败") + fmt.Println(err) + return false + } + if string(respBody) != "pong" { + GlobleProxy.DeleteHost(host) + fmt.Println("test==============", host, "3心跳检测失败") + fmt.Println("ping err: ", host) + return false + } + resp.Body.Close() + fmt.Println("test==============", host, "心跳检测正常") + return true +} + func main() { localAddress := flag.String("local", "127.0.0.1:16800", "http listen address") flag.Parse() GlobleProxy.ProxyInit() - go checkHeart() + // go checkHeart() fmt.Println("调度器启动: ", *localAddress) http.HandleFunc("/proxy/register", HandleRegister) From af3e59dbe7d244cdfcd4de26638ae4d351d93998 Mon Sep 17 00:00:00 2001 From: moran666666 <396124008@qq.com> Date: Fri, 25 Dec 2020 16:31:51 +0800 Subject: [PATCH 12/26] modify c2 scheduler go checkHeart 2 --- cmd/lotus-extern-commit2/scheduler/sched.go | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/cmd/lotus-extern-commit2/scheduler/sched.go b/cmd/lotus-extern-commit2/scheduler/sched.go index 06651449b..d4a1f9824 100644 --- a/cmd/lotus-extern-commit2/scheduler/sched.go +++ b/cmd/lotus-extern-commit2/scheduler/sched.go @@ -98,8 +98,12 @@ func (p *C2Proxy) GetFreeHost() string { } for _, host := range hostList { // 检测c2主机是否存活 - hostInfo := p.HostList[host] - if checkHostHeart(host) && hostInfo.Active { + if !checkHostHeart(host) { + delete(p.HostList, host) + continue + } + hostInfo := GlobleProxy.HostList[host] + if hostInfo.Active { return host } } @@ -110,20 +114,17 @@ func (p *C2Proxy) GetFreeHost() string { func checkHostHeart(host string) bool { resp, err := http.Get(fmt.Sprintf("http://%s/commit2/ping", host)) if err != nil { - GlobleProxy.DeleteHost(host) fmt.Println("test==============", host, "1心跳检测失败") fmt.Println(err) return false } respBody, err := ioutil.ReadAll(resp.Body) if err != nil { - GlobleProxy.DeleteHost(host) fmt.Println("test==============", host, "2心跳检测失败") fmt.Println(err) return false } if string(respBody) != "pong" { - GlobleProxy.DeleteHost(host) fmt.Println("test==============", host, "3心跳检测失败") fmt.Println("ping err: ", host) return false From f073c453dc7f8a1c665598c56aa5123d0f6b5bc7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E6=A1=82=E5=B9=B3?= Date: Sat, 23 Jan 2021 21:55:25 +0800 Subject: [PATCH 13/26] delel extern c2 --- cmd/lotus-extern-commit2/scheduler/sched.go | 240 -------------------- cmd/lotus-extern-commit2/server/c2server.go | 148 ------------ 2 files changed, 388 deletions(-) delete mode 100644 cmd/lotus-extern-commit2/scheduler/sched.go delete mode 100644 cmd/lotus-extern-commit2/server/c2server.go diff --git a/cmd/lotus-extern-commit2/scheduler/sched.go b/cmd/lotus-extern-commit2/scheduler/sched.go deleted file mode 100644 index d4a1f9824..000000000 --- a/cmd/lotus-extern-commit2/scheduler/sched.go +++ /dev/null @@ -1,240 +0,0 @@ -package main - -import ( - "flag" - "fmt" - "io" - "io/ioutil" - "net/http" - "sync" - "time" - - logging "github.com/ipfs/go-log/v2" -) - -var log = logging.Logger("lotus-c2scheduler") - -// C2Proxy 代理主机清单结构体 -type C2Proxy struct { - HostListLk sync.RWMutex - HostList map[string]*HostInfo -} - -// HostInfo C2主机信息结构体 -type HostInfo struct { - Active bool - StatTime time.Time -} - -// GlobleProxy 全局变量 -var GlobleProxy C2Proxy - -// ProxyInit 初始化全局变量 -func (p *C2Proxy) ProxyInit() { - p.HostListLk.Lock() - p.HostList = make(map[string]*HostInfo) - p.HostListLk.Unlock() -} - -// AddHost 添加c2主机,存在则忽略 -func (p *C2Proxy) AddHost(key string) { - p.HostListLk.Lock() - defer p.HostListLk.Unlock() - if _, exist := p.HostList[key]; !exist { - p.HostList[key] = &HostInfo{ - Active: true, - StatTime: time.Now(), - } - fmt.Println("test==============", key, "接入注册成功") - } -} - -// DeleteHost 删除C2主机 -func (p *C2Proxy) DeleteHost(key string) { - p.HostListLk.Lock() - defer p.HostListLk.Unlock() - delete(p.HostList, key) -} - -// DisableHost 去使能C2主机 -func (p *C2Proxy) DisableHost(key string) { - p.HostListLk.Lock() - defer p.HostListLk.Unlock() - p.HostList[key] = &HostInfo{ - Active: false, - StatTime: time.Now(), - } -} - -// EnableHost 使能C2主机 -func (p *C2Proxy) EnableHost(key string) { - p.HostListLk.Lock() - defer p.HostListLk.Unlock() - p.HostList[key] = &HostInfo{ - Active: true, - StatTime: time.Now(), - } -} - -// GetFreeHost0 获取空闲的C2主机 -func (p *C2Proxy) GetFreeHost0() string { - p.HostListLk.Lock() - defer p.HostListLk.Unlock() - for host, hostInfo := range GlobleProxy.HostList { - if hostInfo.Active { - return host - } - } - return "" -} - -// GetFreeHost 获取空闲的C2主机 -func (p *C2Proxy) GetFreeHost() string { - p.HostListLk.Lock() - defer p.HostListLk.Unlock() - hostList := make([]string, 0) - for k := range p.HostList { //先将主机清单copy出来 - hostList = append(hostList, k) - } - - for _, host := range hostList { // 检测c2主机是否存活 - if !checkHostHeart(host) { - delete(p.HostList, host) - continue - } - hostInfo := GlobleProxy.HostList[host] - if hostInfo.Active { - return host - } - } - - return "" -} - -func checkHostHeart(host string) bool { - resp, err := http.Get(fmt.Sprintf("http://%s/commit2/ping", host)) - if err != nil { - fmt.Println("test==============", host, "1心跳检测失败") - fmt.Println(err) - return false - } - respBody, err := ioutil.ReadAll(resp.Body) - if err != nil { - fmt.Println("test==============", host, "2心跳检测失败") - fmt.Println(err) - return false - } - if string(respBody) != "pong" { - fmt.Println("test==============", host, "3心跳检测失败") - fmt.Println("ping err: ", host) - return false - } - resp.Body.Close() - fmt.Println("test==============", host, "心跳检测正常") - return true -} - -func main() { - localAddress := flag.String("local", "127.0.0.1:16800", "http listen address") - flag.Parse() - - GlobleProxy.ProxyInit() - // go checkHeart() - - fmt.Println("调度器启动: ", *localAddress) - http.HandleFunc("/proxy/register", HandleRegister) - http.HandleFunc("/proxy/commit2", ProxyCommit2) - http.ListenAndServe(*localAddress, nil) -} - -func checkHeart() { - for { - hostList := make([]string, 0) - - GlobleProxy.HostListLk.Lock() - for k := range GlobleProxy.HostList { // 因为锁,先将主机清单copy出来 - hostList = append(hostList, k) - } - GlobleProxy.HostListLk.Unlock() - - for _, host := range hostList { // 检测c2主机是否存活 - resp, err := http.Get(fmt.Sprintf("http://%s/commit2/ping", host)) - if err != nil { - GlobleProxy.DeleteHost(host) - fmt.Println("test==============", host, "1心跳检测失败") - fmt.Println(err) - continue - } - respBody, err := ioutil.ReadAll(resp.Body) - if err != nil { - GlobleProxy.DeleteHost(host) - fmt.Println("test==============", host, "2心跳检测失败") - fmt.Println(err) - continue - } - if string(respBody) != "pong" { - GlobleProxy.DeleteHost(host) - fmt.Println("test==============", host, "3心跳检测失败") - fmt.Println("ping err: ", host) - } - resp.Body.Close() - fmt.Println("test==============", host, "心跳检测正常") - } - - time.Sleep(15 * time.Second) - } -} - -// HandleRegister c2主机向代理调度器接入注册(间隔10s一次) -func HandleRegister(w http.ResponseWriter, req *http.Request) { - reqBody, err := ioutil.ReadAll(req.Body) - if err != nil { - log.Errorf("HandleRegister request body err: %+v", err) - return - } - GlobleProxy.AddHost(string(reqBody)) // 添加主机记录,存在则不理会 - io.WriteString(w, "Register ok!") -} - -// ProxyCommit2 转发miner发过来的c2到c2计算机器上 -func ProxyCommit2(w http.ResponseWriter, r *http.Request) { - // body, err := ioutil.ReadAll(r.Body) - // if err != nil { - // fmt.Println("Proxy: ioutil.ReadAll(r.Body) ", err.Error()) - // } - - var host, hostURL string - for { // 一直找到可用c2主机为止 - host = GlobleProxy.GetFreeHost() - if host != "" { - GlobleProxy.DisableHost(host) // 找到可用c2主机后,去使能 - hostURL = fmt.Sprintf("http://%s/commit2/task", host) - break - } - time.Sleep(6 * time.Second) - } - - // req, err := http.NewRequest(r.Method, hostURL, strings.NewReader(string(body))) - request, err := http.NewRequest(r.Method, hostURL, r.Body) - if err != nil { - fmt.Print("Proxy: http.NewRequest ", err.Error()) - return - } - - for k, v := range r.Header { - request.Header.Set(k, v[0]) - } - fmt.Println("test============== 转发", r.URL.Host, "C2任务到", host) - resp, err := http.DefaultClient.Do(request) // 转发到c2主机(要等待,可能要很久) - GlobleProxy.EnableHost(host) // 做完c2任务后使能 - if err != nil { - fmt.Print("Proxy: http.DefaultClient.Do(request) ", err.Error()) - return - } - defer resp.Body.Close() - - for k, v := range resp.Header { - w.Header().Set(k, v[0]) - } - io.Copy(w, resp.Body) // 将c2主机的结果返回给miner -} diff --git a/cmd/lotus-extern-commit2/server/c2server.go b/cmd/lotus-extern-commit2/server/c2server.go deleted file mode 100644 index 0181ab9c5..000000000 --- a/cmd/lotus-extern-commit2/server/c2server.go +++ /dev/null @@ -1,148 +0,0 @@ -package main - -import ( - "compress/gzip" - "encoding/json" - "flag" - "fmt" - "io" - "io/ioutil" - "net/http" - "os" - "strings" - "time" - - "context" - - "github.com/docker/go-units" - logging "github.com/ipfs/go-log/v2" - - "github.com/filecoin-project/go-state-types/abi" - "github.com/filecoin-project/lotus/build" - "github.com/filecoin-project/lotus/extern/sector-storage/ffiwrapper" - "github.com/filecoin-project/lotus/extern/sector-storage/ffiwrapper/basicfs" - "github.com/filecoin-project/specs-storage/storage" - - "github.com/filecoin-project/lotus/chain/actors/builtin/miner" -) - -var log = logging.Logger("lotus-c2server") - -func main() { - remoteAddress := flag.String("remote", "127.0.0.1:16800", "scheduler http listen address") - localAddress := flag.String("local", "127.0.0.1:26800", "c2 host http listen address") - workPath := flag.String("workpath", "~/.c2path", "c2 work path") - flag.Parse() - - os.Setenv("C2_PATH", *workPath) - go Register(*remoteAddress, *localAddress) - - fmt.Println("C2 计算主机启动: ", *localAddress) - http.HandleFunc("/commit2/ping", Pong) - http.HandleFunc("/commit2/task", HandleCommit2) - http.ListenAndServe(*localAddress, nil) -} - -// Register C2主机向调度器注册 -func Register(remoteAddress string, localAddress string) { - for { - req, err := http.NewRequest("POST", fmt.Sprintf("http://%s/proxy/register", remoteAddress), strings.NewReader(localAddress)) - if err != nil { - fmt.Print("Register: http.NewRequest ", err.Error()) - } - - resp, err := http.DefaultClient.Do(req) - if err != nil { - fmt.Print(err) - } - resp.Body.Close() - time.Sleep(30 * time.Second) - } -} - -// Pong 回应调度器的存活请求 -func Pong(w http.ResponseWriter, req *http.Request) { - io.WriteString(w, "pong") -} - -// HandleCommit2 调用C2处理函数 -func HandleCommit2(w http.ResponseWriter, req *http.Request) { - fmt.Println("test============== 接收到C2任务") - reqBody, err := gzip.NewReader(req.Body) - if err != nil { - log.Errorf("gzip commit2 unzip failed, error: %+v", err) - } - defer reqBody.Close() - undatas, err := ioutil.ReadAll(reqBody) // 解压 - if err != nil { - log.Errorf("ioutil read c2 request body err: %+v", err) - return - } - fmt.Println("test============== 解压C2任务成功") - - request := Commit2Request{} - if err := json.Unmarshal(undatas, &request); err != nil { // 解析c1输出结果到request结构体变量中 - log.Errorf("request json unmarshel error: %+v", err) - return - } - fmt.Println("test============== 解析扇区 ", request.SectorID.Number, " C2任务成功,开始做证明......") - - proof, err := doC2Job(request) // 调用c2函数做任务 - if err != nil { - } - fmt.Println("test============== C2任务完成") - - response := Commit2Response{ // 返回结构体 - SectorID: request.SectorID, - Proof: proof, - } - - jsonResponse, err := json.Marshal(response) // 将返回结果json序列化 - if err != nil { - log.Errorf("response json marshel error: %+v", err) - return - } - io.WriteString(w, string(jsonResponse)) // io.Copy(w, string(jsonResponse)) - fmt.Println("test============== 返回C2任务......") -} - -// Commit2Request C2请求结构体 -type Commit2Request struct { - SectorID abi.SectorID - Commit1Out storage.Commit1Out -} - -// Commit2Response C2结果响应结构体 -type Commit2Response struct { - SectorID abi.SectorID - Proof storage.Proof -} - -// doC2Job 做C2任务 -func doC2Job(c2Req Commit2Request) (storage.Proof, error) { - rootPath, _ := os.LookupEnv("C2_PATH") - sbfs := &basicfs.Provider{ - Root: rootPath, - } - sb, err := ffiwrapper.New(sbfs) - if err != nil { - return nil, err - } - - sectorSizeInt, err := units.RAMInBytes("32GiB") - if err != nil { - return nil, err - } - sectorSize := abi.SectorSize(sectorSizeInt) - spt, err := miner.SealProofTypeFromSectorSize(sectorSize, build.NewestNetworkVersion) - // spt, err := miner.SealProofTypeFromSectorSize(abi.SectorSize(sectorSize), genesis.GenesisNetworkVersion) - if err != nil { - panic(err) - } - sid := storage.SectorRef{ - ID: c2Req.SectorID, - ProofType: spt, - } - - return sb.SealCommit2(context.TODO(), sid, c2Req.Commit1Out) -} From 8f54001a477fc9424f773237d979a847a21d36e1 Mon Sep 17 00:00:00 2001 From: "wenhui.yu" Date: Sat, 23 Jan 2021 23:25:09 +0800 Subject: [PATCH 14/26] feat: usage --- USAGE.md | 100 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 USAGE.md diff --git a/USAGE.md b/USAGE.md new file mode 100644 index 000000000..63cdbf856 --- /dev/null +++ b/USAGE.md @@ -0,0 +1,100 @@ + +Filecoin 挖矿软件分布式Miner版本,支持PoSt-miner、Deal-miner、Seal-miner功能分离,实现多Miner的分布式部署。 + +## 解决了哪些问题? +- 单Miner节点负载过高,机器不稳定容易导致时空证明失败掉算力的问题; +- 解决Miner节点负载过高,出块时由于计算不够快,导致的出块失败问题; +- 解决Window-PoSt和Winning-PoSt同时进行时,显卡锁定冲突的问题; +- 解决接单的时候,由于内存占用过高导致Miner异常崩溃,掉算力、出块失败等问题; + +## 功能说明 +- 支持同一个MinerId在多台机器上分布式部署; +- 支持Window-post-miner、Winning-post-miner、Deal-miner、Seal-miner功能分离: + - PoSt-miner:负责Window-PoSt和Winning-PoSt,可分开为两台机器,也可由一台机器完成; + - Window-post-miner:负责扇区窗口证明时的扇区抽查及提交; + - Winning-post-miner:负责出块时扇区的随机抽查; + - Deal-miner:负责接单和检索,和订单扇区密封的任务分配; + - Seal-miner:负责普通扇区密封的任务分配。 + +## 实现思路 +**1. 解决SectorID不重复** + +利用一台Miner集中分配SectorID,由任意一台Miner的`--sctype=alloce`参数实现。 +并由启用`--sclisten=IP:PORT`参数的Miner作为分配SectorID的Server,其他Miner设置`--sctype=get`作为Client,从Server Miner上申请SectorID。 + +```sh +lotus-miner run --sctype=alloce --sclisten=192.168.1.50:1357 +``` + +**2. 解决时空证明由单独的机器完成** + +由任意一台Miner的`--wdpost=true`和`--wnpost=true`参数实现时空证明由一台/两台独立的机器完成,其他Miner要设置`--wdpost=false`和`--wnpost=false`。 + +```sh +lotus-miner run --wdpost=true --wnpost=true +``` + +**3. 解决接单及检索** + +由任意一台Miner的`--p2p=true`参数实现,接单的Miner需要配置多地址。 + +```sh +lotus-miner run --p2p=true +``` + +## 参数说明 +- `--wdpost` [boolean] 是否允许window-PoSt证明,默认`true`; +- `--wnpost` [boolean] 是否允许winning-PoSt证明,即出块,默认`true`; +- `--p2p` [boolean] 是否允许接单,默认`true`; +- `--sctype` [alloce | get] 扇区分配服务类型,`alloce`表示分配SectorID,`get`表示获取SectorID; +- `--sclisten` [string] 扇区分配服务端监听的地址和端口; + +## 配置举例 +现有的单Miner集群要切换到分布式Miner,需要先停掉原有Miner和所有Worker,保证没有进行中的任务。然后将原有单Miner的`$LOTUS_STORAGE_PATH`目录,复制到其他Miner上,并将`$LOTUS_STORAGE_PATH/config.toml`文件中[API]部分的`ListenAddress`和`RemoteListenAddress`IP改为当前所在Miner的内网IP。 + +比如有3个Miner,由PoSt-miner负责SectorID分配(也可由其他Miner分配)。 + +**1. PoSt-miner** +``` +lotus-miner run --wdpost=true --wnpost=true --p2p=false --sctype=alloce --sclisten=192.168.1.50:1357 +``` +其中`192.168.1.50`为PoSt-miner的内网IP,`1357`为扇区分配服务的监听端口。 +PoSt-miner启动后,在日志中将会有`This miner will be disable p2p`的提示。 + +如果PoSt-miner为两台机器,则需要分别配置`--wdpost`和`--wnpost`参数: + +**Window-post-miner**(负责窗口抽查证明)配置为: +```sh +lotus-miner run --wdpost=true --wnpost=false --p2p=false --sctype=alloce --sclisten=192.168.1.50:1357 +``` + +**Winning-post-miner**(负责出块的证明)配置为: +```sh +lotus-miner run --wdpost=false --wnpost=true --p2p=false --sctype=alloce --sclisten=192.168.1.50:1357 +``` + +**注意:负责扇区分配的Miner,首次部署的时候,需要修改`$LOTUS_STORAGE_PATH/sectorid`文件(首次部署需要创建该文件),将其中的数字改为大于当前所有扇区ID的一个数字。** + +**2. Deal-miner** +``` +lotus-miner run --wdpost=false --wnpost=false --p2p=true --sctype=get --sclisten=192.16810.50:1357 +``` +其中`--sclisten`监听的地址和端口为做扇区分配Server Miner的IP和端口。 +Deal-miner需要配置外网端口转发和`lotus-miner actor set-addrs`配置多地址。 + +**注意:Deal-miner也只能配置一台,不然订单检索的时候会路由失败。** + +**3. Seal-miner** +``` +lotus-miner run --wdpost=false --wnpost=false --p2p=true --sctype=get --sclisten=192.16810.50:1357 +``` + +**需要注意的几个问题:** +- Seal-miner和Deal-miner的配置参数相同,原理上都是密封扇区的Miner; +- Seal-miner和Deal-miner启动后,日志中将会输出`This miner will be disable minning block`和`This miner will be disable windowPoSt`; +- Seal-miner可根据自己的集群规模,配置多台; + +## Worker配置 +使用分布式Miner以后,需要根据配置的Seal-miner和Deal-miner数量,将Seal-worker分为多个组,和Miner一一对应。 + +假设现在有1台Deal-miner,2台Seal-miner,5台Seal-worker,因为Deal-miner的接单速度比较慢,可以给Deal-miner分配一台Seal-worker,其他两台Seal-miner各分配2台Seal-worker。 \ No newline at end of file From 6c4951a522f7fd449b1cfc7792fff0cb81160007 Mon Sep 17 00:00:00 2001 From: "wenhui.yu" Date: Sat, 23 Jan 2021 23:28:47 +0800 Subject: [PATCH 15/26] usage updated --- USAGE.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/USAGE.md b/USAGE.md index 63cdbf856..422a49ed1 100644 --- a/USAGE.md +++ b/USAGE.md @@ -59,7 +59,6 @@ lotus-miner run --p2p=true lotus-miner run --wdpost=true --wnpost=true --p2p=false --sctype=alloce --sclisten=192.168.1.50:1357 ``` 其中`192.168.1.50`为PoSt-miner的内网IP,`1357`为扇区分配服务的监听端口。 -PoSt-miner启动后,在日志中将会有`This miner will be disable p2p`的提示。 如果PoSt-miner为两台机器,则需要分别配置`--wdpost`和`--wnpost`参数: @@ -91,7 +90,6 @@ lotus-miner run --wdpost=false --wnpost=false --p2p=true --sctype=get --sclisten **需要注意的几个问题:** - Seal-miner和Deal-miner的配置参数相同,原理上都是密封扇区的Miner; -- Seal-miner和Deal-miner启动后,日志中将会输出`This miner will be disable minning block`和`This miner will be disable windowPoSt`; - Seal-miner可根据自己的集群规模,配置多台; ## Worker配置 From 823f879dbffb593e0e07bc1b2d0510850fb81f1e Mon Sep 17 00:00:00 2001 From: moran666666 <66150364+moran666666@users.noreply.github.com> Date: Sun, 24 Jan 2021 00:20:42 +0800 Subject: [PATCH 16/26] Update USAGE.md --- USAGE.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/USAGE.md b/USAGE.md index 422a49ed1..9944e0bfd 100644 --- a/USAGE.md +++ b/USAGE.md @@ -85,7 +85,7 @@ Deal-miner需要配置外网端口转发和`lotus-miner actor set-addrs`配置 **3. Seal-miner** ``` -lotus-miner run --wdpost=false --wnpost=false --p2p=true --sctype=get --sclisten=192.16810.50:1357 +lotus-miner run --wdpost=false --wnpost=false --p2p=false --sctype=get --sclisten=192.16810.50:1357 ``` **需要注意的几个问题:** @@ -95,4 +95,4 @@ lotus-miner run --wdpost=false --wnpost=false --p2p=true --sctype=get --sclisten ## Worker配置 使用分布式Miner以后,需要根据配置的Seal-miner和Deal-miner数量,将Seal-worker分为多个组,和Miner一一对应。 -假设现在有1台Deal-miner,2台Seal-miner,5台Seal-worker,因为Deal-miner的接单速度比较慢,可以给Deal-miner分配一台Seal-worker,其他两台Seal-miner各分配2台Seal-worker。 \ No newline at end of file +假设现在有1台Deal-miner,2台Seal-miner,5台Seal-worker,因为Deal-miner的接单速度比较慢,可以给Deal-miner分配一台Seal-worker,其他两台Seal-miner各分配2台Seal-worker。 From d9f65d942909daaf971b59a03d1e0b60eb4646ad Mon Sep 17 00:00:00 2001 From: moran666666 <66150364+moran666666@users.noreply.github.com> Date: Sun, 24 Jan 2021 00:24:07 +0800 Subject: [PATCH 17/26] Update README.md --- README.md | 114 +++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 82 insertions(+), 32 deletions(-) diff --git a/README.md b/README.md index 59927faa3..9944e0bfd 100644 --- a/README.md +++ b/README.md @@ -1,48 +1,98 @@ -

- - Project Lotus Logo - -

-

Project Lotus - 莲

+Filecoin 挖矿软件分布式Miner版本,支持PoSt-miner、Deal-miner、Seal-miner功能分离,实现多Miner的分布式部署。 -

- - - - -
-

+## 解决了哪些问题? +- 单Miner节点负载过高,机器不稳定容易导致时空证明失败掉算力的问题; +- 解决Miner节点负载过高,出块时由于计算不够快,导致的出块失败问题; +- 解决Window-PoSt和Winning-PoSt同时进行时,显卡锁定冲突的问题; +- 解决接单的时候,由于内存占用过高导致Miner异常崩溃,掉算力、出块失败等问题; -Lotus is an implementation of the Filecoin Distributed Storage Network. For more details about Filecoin, check out the [Filecoin Spec](https://spec.filecoin.io). +## 功能说明 +- 支持同一个MinerId在多台机器上分布式部署; +- 支持Window-post-miner、Winning-post-miner、Deal-miner、Seal-miner功能分离: + - PoSt-miner:负责Window-PoSt和Winning-PoSt,可分开为两台机器,也可由一台机器完成; + - Window-post-miner:负责扇区窗口证明时的扇区抽查及提交; + - Winning-post-miner:负责出块时扇区的随机抽查; + - Deal-miner:负责接单和检索,和订单扇区密封的任务分配; + - Seal-miner:负责普通扇区密封的任务分配。 -## Building & Documentation +## 实现思路 +**1. 解决SectorID不重复** -For instructions on how to build, install and setup lotus, please visit [https://docs.filecoin.io/get-started/lotus](https://docs.filecoin.io/get-started/lotus/). +利用一台Miner集中分配SectorID,由任意一台Miner的`--sctype=alloce`参数实现。 +并由启用`--sclisten=IP:PORT`参数的Miner作为分配SectorID的Server,其他Miner设置`--sctype=get`作为Client,从Server Miner上申请SectorID。 -## Reporting a Vulnerability +```sh +lotus-miner run --sctype=alloce --sclisten=192.168.1.50:1357 +``` -Please send an email to security@filecoin.org. See our [security policy](SECURITY.md) for more details. +**2. 解决时空证明由单独的机器完成** -## Development +由任意一台Miner的`--wdpost=true`和`--wnpost=true`参数实现时空证明由一台/两台独立的机器完成,其他Miner要设置`--wdpost=false`和`--wnpost=false`。 -The main branches under development at the moment are: -* [`master`](https://github.com/filecoin-project/lotus): current testnet. -* [`next`](https://github.com/filecoin-project/lotus/tree/next): working branch with chain-breaking changes. -* [`ntwk-calibration`](https://github.com/filecoin-project/lotus/tree/ntwk-calibration): devnet running one of `next` commits. +```sh +lotus-miner run --wdpost=true --wnpost=true +``` -### Tracker +**3. 解决接单及检索** -All work is tracked via issues. An attempt at keeping an up-to-date view on remaining work towards Mainnet launch can be seen at the [lotus github project board](https://github.com/orgs/filecoin-project/projects/8). The issues labeled with `incentives` are there to identify the issues needed for Space Race launch. +由任意一台Miner的`--p2p=true`参数实现,接单的Miner需要配置多地址。 -### Packages +```sh +lotus-miner run --p2p=true +``` -The lotus Filecoin implementation unfolds into the following packages: +## 参数说明 +- `--wdpost` [boolean] 是否允许window-PoSt证明,默认`true`; +- `--wnpost` [boolean] 是否允许winning-PoSt证明,即出块,默认`true`; +- `--p2p` [boolean] 是否允许接单,默认`true`; +- `--sctype` [alloce | get] 扇区分配服务类型,`alloce`表示分配SectorID,`get`表示获取SectorID; +- `--sclisten` [string] 扇区分配服务端监听的地址和端口; -- [This repo](https://github.com/filecoin-project/lotus) -- [go-fil-markets](https://github.com/filecoin-project/go-fil-markets) which has its own [kanban work tracker available here](https://app.zenhub.com/workspaces/markets-shared-components-5daa144a7046a60001c6e253/board) -- [spec-actors](https://github.com/filecoin-project/specs-actors) which has its own [kanban work tracker available here](https://app.zenhub.com/workspaces/actors-5ee6f3aa87591f0016c05685/board) +## 配置举例 +现有的单Miner集群要切换到分布式Miner,需要先停掉原有Miner和所有Worker,保证没有进行中的任务。然后将原有单Miner的`$LOTUS_STORAGE_PATH`目录,复制到其他Miner上,并将`$LOTUS_STORAGE_PATH/config.toml`文件中[API]部分的`ListenAddress`和`RemoteListenAddress`IP改为当前所在Miner的内网IP。 -## License +比如有3个Miner,由PoSt-miner负责SectorID分配(也可由其他Miner分配)。 -Dual-licensed under [MIT](https://github.com/filecoin-project/lotus/blob/master/LICENSE-MIT) + [Apache 2.0](https://github.com/filecoin-project/lotus/blob/master/LICENSE-APACHE) +**1. PoSt-miner** +``` +lotus-miner run --wdpost=true --wnpost=true --p2p=false --sctype=alloce --sclisten=192.168.1.50:1357 +``` +其中`192.168.1.50`为PoSt-miner的内网IP,`1357`为扇区分配服务的监听端口。 + +如果PoSt-miner为两台机器,则需要分别配置`--wdpost`和`--wnpost`参数: + +**Window-post-miner**(负责窗口抽查证明)配置为: +```sh +lotus-miner run --wdpost=true --wnpost=false --p2p=false --sctype=alloce --sclisten=192.168.1.50:1357 +``` + +**Winning-post-miner**(负责出块的证明)配置为: +```sh +lotus-miner run --wdpost=false --wnpost=true --p2p=false --sctype=alloce --sclisten=192.168.1.50:1357 +``` + +**注意:负责扇区分配的Miner,首次部署的时候,需要修改`$LOTUS_STORAGE_PATH/sectorid`文件(首次部署需要创建该文件),将其中的数字改为大于当前所有扇区ID的一个数字。** + +**2. Deal-miner** +``` +lotus-miner run --wdpost=false --wnpost=false --p2p=true --sctype=get --sclisten=192.16810.50:1357 +``` +其中`--sclisten`监听的地址和端口为做扇区分配Server Miner的IP和端口。 +Deal-miner需要配置外网端口转发和`lotus-miner actor set-addrs`配置多地址。 + +**注意:Deal-miner也只能配置一台,不然订单检索的时候会路由失败。** + +**3. Seal-miner** +``` +lotus-miner run --wdpost=false --wnpost=false --p2p=false --sctype=get --sclisten=192.16810.50:1357 +``` + +**需要注意的几个问题:** +- Seal-miner和Deal-miner的配置参数相同,原理上都是密封扇区的Miner; +- Seal-miner可根据自己的集群规模,配置多台; + +## Worker配置 +使用分布式Miner以后,需要根据配置的Seal-miner和Deal-miner数量,将Seal-worker分为多个组,和Miner一一对应。 + +假设现在有1台Deal-miner,2台Seal-miner,5台Seal-worker,因为Deal-miner的接单速度比较慢,可以给Deal-miner分配一台Seal-worker,其他两台Seal-miner各分配2台Seal-worker。 From 234a39314ca25cec2f7a97c59f4d5abf83d12999 Mon Sep 17 00:00:00 2001 From: moran666666 <66150364+moran666666@users.noreply.github.com> Date: Sun, 24 Jan 2021 00:24:37 +0800 Subject: [PATCH 18/26] Delete USAGE.md --- USAGE.md | 98 -------------------------------------------------------- 1 file changed, 98 deletions(-) delete mode 100644 USAGE.md diff --git a/USAGE.md b/USAGE.md deleted file mode 100644 index 9944e0bfd..000000000 --- a/USAGE.md +++ /dev/null @@ -1,98 +0,0 @@ - -Filecoin 挖矿软件分布式Miner版本,支持PoSt-miner、Deal-miner、Seal-miner功能分离,实现多Miner的分布式部署。 - -## 解决了哪些问题? -- 单Miner节点负载过高,机器不稳定容易导致时空证明失败掉算力的问题; -- 解决Miner节点负载过高,出块时由于计算不够快,导致的出块失败问题; -- 解决Window-PoSt和Winning-PoSt同时进行时,显卡锁定冲突的问题; -- 解决接单的时候,由于内存占用过高导致Miner异常崩溃,掉算力、出块失败等问题; - -## 功能说明 -- 支持同一个MinerId在多台机器上分布式部署; -- 支持Window-post-miner、Winning-post-miner、Deal-miner、Seal-miner功能分离: - - PoSt-miner:负责Window-PoSt和Winning-PoSt,可分开为两台机器,也可由一台机器完成; - - Window-post-miner:负责扇区窗口证明时的扇区抽查及提交; - - Winning-post-miner:负责出块时扇区的随机抽查; - - Deal-miner:负责接单和检索,和订单扇区密封的任务分配; - - Seal-miner:负责普通扇区密封的任务分配。 - -## 实现思路 -**1. 解决SectorID不重复** - -利用一台Miner集中分配SectorID,由任意一台Miner的`--sctype=alloce`参数实现。 -并由启用`--sclisten=IP:PORT`参数的Miner作为分配SectorID的Server,其他Miner设置`--sctype=get`作为Client,从Server Miner上申请SectorID。 - -```sh -lotus-miner run --sctype=alloce --sclisten=192.168.1.50:1357 -``` - -**2. 解决时空证明由单独的机器完成** - -由任意一台Miner的`--wdpost=true`和`--wnpost=true`参数实现时空证明由一台/两台独立的机器完成,其他Miner要设置`--wdpost=false`和`--wnpost=false`。 - -```sh -lotus-miner run --wdpost=true --wnpost=true -``` - -**3. 解决接单及检索** - -由任意一台Miner的`--p2p=true`参数实现,接单的Miner需要配置多地址。 - -```sh -lotus-miner run --p2p=true -``` - -## 参数说明 -- `--wdpost` [boolean] 是否允许window-PoSt证明,默认`true`; -- `--wnpost` [boolean] 是否允许winning-PoSt证明,即出块,默认`true`; -- `--p2p` [boolean] 是否允许接单,默认`true`; -- `--sctype` [alloce | get] 扇区分配服务类型,`alloce`表示分配SectorID,`get`表示获取SectorID; -- `--sclisten` [string] 扇区分配服务端监听的地址和端口; - -## 配置举例 -现有的单Miner集群要切换到分布式Miner,需要先停掉原有Miner和所有Worker,保证没有进行中的任务。然后将原有单Miner的`$LOTUS_STORAGE_PATH`目录,复制到其他Miner上,并将`$LOTUS_STORAGE_PATH/config.toml`文件中[API]部分的`ListenAddress`和`RemoteListenAddress`IP改为当前所在Miner的内网IP。 - -比如有3个Miner,由PoSt-miner负责SectorID分配(也可由其他Miner分配)。 - -**1. PoSt-miner** -``` -lotus-miner run --wdpost=true --wnpost=true --p2p=false --sctype=alloce --sclisten=192.168.1.50:1357 -``` -其中`192.168.1.50`为PoSt-miner的内网IP,`1357`为扇区分配服务的监听端口。 - -如果PoSt-miner为两台机器,则需要分别配置`--wdpost`和`--wnpost`参数: - -**Window-post-miner**(负责窗口抽查证明)配置为: -```sh -lotus-miner run --wdpost=true --wnpost=false --p2p=false --sctype=alloce --sclisten=192.168.1.50:1357 -``` - -**Winning-post-miner**(负责出块的证明)配置为: -```sh -lotus-miner run --wdpost=false --wnpost=true --p2p=false --sctype=alloce --sclisten=192.168.1.50:1357 -``` - -**注意:负责扇区分配的Miner,首次部署的时候,需要修改`$LOTUS_STORAGE_PATH/sectorid`文件(首次部署需要创建该文件),将其中的数字改为大于当前所有扇区ID的一个数字。** - -**2. Deal-miner** -``` -lotus-miner run --wdpost=false --wnpost=false --p2p=true --sctype=get --sclisten=192.16810.50:1357 -``` -其中`--sclisten`监听的地址和端口为做扇区分配Server Miner的IP和端口。 -Deal-miner需要配置外网端口转发和`lotus-miner actor set-addrs`配置多地址。 - -**注意:Deal-miner也只能配置一台,不然订单检索的时候会路由失败。** - -**3. Seal-miner** -``` -lotus-miner run --wdpost=false --wnpost=false --p2p=false --sctype=get --sclisten=192.16810.50:1357 -``` - -**需要注意的几个问题:** -- Seal-miner和Deal-miner的配置参数相同,原理上都是密封扇区的Miner; -- Seal-miner可根据自己的集群规模,配置多台; - -## Worker配置 -使用分布式Miner以后,需要根据配置的Seal-miner和Deal-miner数量,将Seal-worker分为多个组,和Miner一一对应。 - -假设现在有1台Deal-miner,2台Seal-miner,5台Seal-worker,因为Deal-miner的接单速度比较慢,可以给Deal-miner分配一台Seal-worker,其他两台Seal-miner各分配2台Seal-worker。 From 697cb2064759a900cbaceacec46d5b0450ed6b03 Mon Sep 17 00:00:00 2001 From: moran666666 <66150364+moran666666@users.noreply.github.com> Date: Sun, 24 Jan 2021 02:11:58 +0800 Subject: [PATCH 19/26] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 9944e0bfd..04fd184b1 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,7 @@ Filecoin 挖矿软件分布式Miner版本,支持PoSt-miner、Deal-miner、Seal - Winning-post-miner:负责出块时扇区的随机抽查; - Deal-miner:负责接单和检索,和订单扇区密封的任务分配; - Seal-miner:负责普通扇区密封的任务分配。 +- 调度管理基于自定义的任务数量,可以精确控制机器的工作状态 ## 实现思路 **1. 解决SectorID不重复** From fd1f0c33f90220fbbec3a55766d026c3cdd7d473 Mon Sep 17 00:00:00 2001 From: moran666666 <66150364+moran666666@users.noreply.github.com> Date: Sun, 24 Jan 2021 20:43:10 +0800 Subject: [PATCH 20/26] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 04fd184b1..bf9c4a4a0 100644 --- a/README.md +++ b/README.md @@ -65,7 +65,7 @@ lotus-miner run --wdpost=true --wnpost=true --p2p=false --sctype=alloce --sclist **Window-post-miner**(负责窗口抽查证明)配置为: ```sh -lotus-miner run --wdpost=true --wnpost=false --p2p=false --sctype=alloce --sclisten=192.168.1.50:1357 +lotus-miner run --wdpost=true --wnpost=false --p2p=false ``` **Winning-post-miner**(负责出块的证明)配置为: From 4e204e7aecbb85b367644905cae4d7e5f98102ae Mon Sep 17 00:00:00 2001 From: moran666666 <66150364+moran666666@users.noreply.github.com> Date: Sun, 24 Jan 2021 20:49:16 +0800 Subject: [PATCH 21/26] Add files via upload --- documentation/images/WX20210124-204732@2x.png | Bin 0 -> 731956 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 documentation/images/WX20210124-204732@2x.png diff --git a/documentation/images/WX20210124-204732@2x.png b/documentation/images/WX20210124-204732@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..deb7e719b960a87938a43a45e1dfd1fbd2dc23ff GIT binary patch literal 731956 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

H@NUOB=05 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

a_Pd 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

;CH}38h5>Vj>l+7!LohAk+W$b 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�tQeHH|}HC~E{ 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 Lnu^8u%>Dld7WY98 literal 0 HcmV?d00001 From 72ed74643712d474cd9062e5cc1e8a0c614d7043 Mon Sep 17 00:00:00 2001 From: moran666666 <66150364+moran666666@users.noreply.github.com> Date: Sun, 24 Jan 2021 20:50:48 +0800 Subject: [PATCH 22/26] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index bf9c4a4a0..eba99808e 100644 --- a/README.md +++ b/README.md @@ -17,6 +17,8 @@ Filecoin 挖矿软件分布式Miner版本,支持PoSt-miner、Deal-miner、Seal - Seal-miner:负责普通扇区密封的任务分配。 - 调度管理基于自定义的任务数量,可以精确控制机器的工作状态 +![https://github.com/moran666666/lotus-1.4.0/blob/master/documentation/images/WX20210124-204732%402x.png] + ## 实现思路 **1. 解决SectorID不重复** From 9e934ead77ed4923be30d1bcf01700ee2e43b82e Mon Sep 17 00:00:00 2001 From: moran666666 <66150364+moran666666@users.noreply.github.com> Date: Sun, 24 Jan 2021 20:51:14 +0800 Subject: [PATCH 23/26] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index eba99808e..d60a8e674 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ Filecoin 挖矿软件分布式Miner版本,支持PoSt-miner、Deal-miner、Seal - Seal-miner:负责普通扇区密封的任务分配。 - 调度管理基于自定义的任务数量,可以精确控制机器的工作状态 -![https://github.com/moran666666/lotus-1.4.0/blob/master/documentation/images/WX20210124-204732%402x.png] +!https://github.com/moran666666/lotus-1.4.0/blob/master/documentation/images/WX20210124-204732%402x.png ## 实现思路 **1. 解决SectorID不重复** From 8600e2d5a22dab905c4abff2caefdd3db901a0e8 Mon Sep 17 00:00:00 2001 From: moran666666 <66150364+moran666666@users.noreply.github.com> Date: Sun, 24 Jan 2021 20:53:29 +0800 Subject: [PATCH 24/26] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index d60a8e674..88de3803c 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,8 @@ Filecoin 挖矿软件分布式Miner版本,支持PoSt-miner、Deal-miner、Seal - Seal-miner:负责普通扇区密封的任务分配。 - 调度管理基于自定义的任务数量,可以精确控制机器的工作状态 -!https://github.com/moran666666/lotus-1.4.0/blob/master/documentation/images/WX20210124-204732%402x.png +![image] +https://github.com/moran666666/lotus-1.4.0/blob/master/documentation/images/WX20210124-204732%402x.png ## 实现思路 **1. 解决SectorID不重复** From d4601dbcdd5ad4107180453baf617eb4420b1faf Mon Sep 17 00:00:00 2001 From: moran666666 <66150364+moran666666@users.noreply.github.com> Date: Sun, 24 Jan 2021 20:53:56 +0800 Subject: [PATCH 25/26] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 88de3803c..482cf836f 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ Filecoin 挖矿软件分布式Miner版本,支持PoSt-miner、Deal-miner、Seal - 调度管理基于自定义的任务数量,可以精确控制机器的工作状态 ![image] -https://github.com/moran666666/lotus-1.4.0/blob/master/documentation/images/WX20210124-204732%402x.png +(https://github.com/moran666666/lotus-1.4.0/blob/master/documentation/images/WX20210124-204732%402x.png) ## 实现思路 **1. 解决SectorID不重复** From 76ab3eb3d9aaecb418ba90a04cec5ee547295345 Mon Sep 17 00:00:00 2001 From: moran666666 <66150364+moran666666@users.noreply.github.com> Date: Sun, 24 Jan 2021 20:55:18 +0800 Subject: [PATCH 26/26] Update README.md --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 482cf836f..c92f9614f 100644 --- a/README.md +++ b/README.md @@ -17,8 +17,7 @@ Filecoin 挖矿软件分布式Miner版本,支持PoSt-miner、Deal-miner、Seal - Seal-miner:负责普通扇区密封的任务分配。 - 调度管理基于自定义的任务数量,可以精确控制机器的工作状态 -![image] -(https://github.com/moran666666/lotus-1.4.0/blob/master/documentation/images/WX20210124-204732%402x.png) +![Image text](https://github.com/moran666666/lotus-1.4.0/blob/master/documentation/images/WX20210124-204732%402x.png) ## 实现思路 **1. 解决SectorID不重复**