|
|
@@ -23,6 +23,7 @@ import (
|
|
|
"io/ioutil"
|
|
|
"math/rand"
|
|
|
"os"
|
|
|
+ "strings"
|
|
|
"sync"
|
|
|
"time"
|
|
|
|
|
|
@@ -75,10 +76,17 @@ func trackChunks(testData []byte) error {
|
|
|
}
|
|
|
log.Trace("All references retrieved")
|
|
|
|
|
|
+ for i, ref := range addrs {
|
|
|
+ log.Trace(fmt.Sprintf("ref %d", i), "ref", ref)
|
|
|
+ }
|
|
|
+
|
|
|
// has-chunks
|
|
|
for _, host := range hosts {
|
|
|
httpHost := fmt.Sprintf("ws://%s:%d", host, 8546)
|
|
|
log.Trace("Calling `Has` on host", "httpHost", httpHost)
|
|
|
+
|
|
|
+ hostChunks := []string{}
|
|
|
+
|
|
|
rpcClient, err := rpc.Dial(httpHost)
|
|
|
if err != nil {
|
|
|
log.Trace("Error dialing host", "err", err)
|
|
|
@@ -93,15 +101,27 @@ func trackChunks(testData []byte) error {
|
|
|
}
|
|
|
log.Trace("rpc call ok")
|
|
|
count := 0
|
|
|
- for _, info := range hasInfo {
|
|
|
- if !info.Has {
|
|
|
+ for i, info := range hasInfo {
|
|
|
+ if i == 0 {
|
|
|
+ log.Trace("first hasInfo", "addr", info.Addr, "host", host, "i", i)
|
|
|
+ }
|
|
|
+ if i == len(hasInfo)-1 {
|
|
|
+ log.Trace("last hasInfo", "addr", info.Addr, "host", host, "i", i)
|
|
|
+ }
|
|
|
+
|
|
|
+ if info.Has {
|
|
|
+ hostChunks = append(hostChunks, "1")
|
|
|
+ } else {
|
|
|
+ hostChunks = append(hostChunks, "0")
|
|
|
count++
|
|
|
- log.Error("Host does not have chunk", "host", httpHost, "chunk", info.Addr)
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
if count == 0 {
|
|
|
- log.Info("Host reported to have all chunks", "host", httpHost)
|
|
|
+ log.Info("host reported to have all chunks", "host", host)
|
|
|
}
|
|
|
+
|
|
|
+ log.Trace("chunks", "chunks", strings.Join(hostChunks, ""), "host", host)
|
|
|
}
|
|
|
return nil
|
|
|
}
|