diff --git a/core/commands/bitswap.go b/core/commands/bitswap.go index f89f38d7f3d6cb593c85e8516707836dc96d98e0..cfc522bae8aef878696fa015282b04a4ba1b9633 100644 --- a/core/commands/bitswap.go +++ b/core/commands/bitswap.go @@ -101,6 +101,8 @@ var bitswapStatCmd = &cmds.Command{ buf := new(bytes.Buffer) fmt.Fprintln(buf, "bitswap status") fmt.Fprintf(buf, "\tprovides buffer: %d / %d\n", out.ProvideBufLen, bitswap.HasBlockBufferSize) + fmt.Fprintf(buf, "\tblocks received: %d\n", out.BlocksReceived) + fmt.Fprintf(buf, "\tdup blocks received: %d\n", out.DupBlksReceived) fmt.Fprintf(buf, "\twantlist [%d keys]\n", len(out.Wantlist)) for _, k := range out.Wantlist { fmt.Fprintf(buf, "\t\t%s\n", k.B58String()) diff --git a/exchange/bitswap/bitswap.go b/exchange/bitswap/bitswap.go index 937ee131e5fc56f834377028f5d9aff7ee0c6819..8b12a4727788a1ecd72610f06b6c17db39feaae2 100644 --- a/exchange/bitswap/bitswap.go +++ b/exchange/bitswap/bitswap.go @@ -127,6 +127,9 @@ type Bitswap struct { newBlocks chan *blocks.Block provideKeys chan u.Key + + blocksRecvd int + dupBlocksRecvd int } type blockRequest struct { @@ -219,14 +222,6 @@ func (bs *Bitswap) HasBlock(ctx context.Context, blk *blocks.Block) error { return errors.New("bitswap is closed") default: } - has, err := bs.blockstore.Has(blk.Key()) - if err != nil { - return err - } - - if has { - log.Error(bs.self, "Dup Block! ", blk.Key()) - } if err := bs.blockstore.Put(blk); err != nil { return err @@ -351,6 +346,10 @@ func (bs *Bitswap) ReceiveMessage(ctx context.Context, p peer.ID, incoming bsmsg // Should only track *useful* messages in ledger for _, block := range incoming.Blocks() { + bs.blocksRecvd++ + if has, err := bs.blockstore.Has(block.Key()); err == nil && has { + bs.dupBlocksRecvd++ + } hasBlockCtx, cancel := context.WithTimeout(ctx, hasBlockTimeout) if err := bs.HasBlock(hasBlockCtx, block); err != nil { log.Debug(err) diff --git a/exchange/bitswap/stat.go b/exchange/bitswap/stat.go index 1c5fec62b98569be1dfed44aeaac1cca85bf4652..ceab4b2ee2aef994b51bd4c6ccdeca734f8da6c8 100644 --- a/exchange/bitswap/stat.go +++ b/exchange/bitswap/stat.go @@ -6,15 +6,19 @@ import ( ) type Stat struct { - ProvideBufLen int - Wantlist []u.Key - Peers []string + ProvideBufLen int + Wantlist []u.Key + Peers []string + BlocksReceived int + DupBlksReceived int } func (bs *Bitswap) Stat() (*Stat, error) { st := new(Stat) st.ProvideBufLen = len(bs.newBlocks) st.Wantlist = bs.GetWantlist() + st.BlocksReceived = bs.blocksRecvd + st.DupBlksReceived = bs.dupBlocksRecvd for _, p := range bs.engine.Peers() { st.Peers = append(st.Peers, p.Pretty())