forked from cerc-io/plugeth
all: more linters (#24783)
This enables the following linters - typecheck - unused - staticcheck - bidichk - durationcheck - exportloopref - gosec WIth a few exceptions. - We use a deprecated protobuf in trezor. I didn't want to mess with that, since I cannot meaningfully test any changes there. - The deprecated TypeMux is used in a few places still, so the warning for it is silenced for now. - Using string type in context.WithValue is apparently wrong, one should use a custom type, to prevent collisions between different places in the hierarchy of callers. That should be fixed at some point, but may require some attention. - The warnings for using weak random generator are squashed, since we use a lot of random without need for cryptographic guarantees.
This commit is contained in:
@@ -608,7 +608,7 @@ func (s *stateSync) updateStats(written, duplicate, unexpected int, duration tim
|
||||
if written > 0 || duplicate > 0 || unexpected > 0 {
|
||||
log.Info("Imported new state entries", "count", written, "elapsed", common.PrettyDuration(duration), "processed", s.d.syncStatsState.processed, "pending", s.d.syncStatsState.pending, "trieretry", len(s.trieTasks), "coderetry", len(s.codeTasks), "duplicate", s.d.syncStatsState.duplicate, "unexpected", s.d.syncStatsState.unexpected)
|
||||
}
|
||||
if written > 0 {
|
||||
//rawdb.WriteFastTrieProgress(s.d.stateDB, s.d.syncStatsState.processed)
|
||||
}
|
||||
//if written > 0 {
|
||||
//rawdb.WriteFastTrieProgress(s.d.stateDB, s.d.syncStatsState.processed)
|
||||
//}
|
||||
}
|
||||
|
||||
+1
-3
@@ -160,7 +160,6 @@ func testTrustedAnnouncement(t *testing.T, protocol int) {
|
||||
nodes []*enode.Node
|
||||
ids []string
|
||||
cpeers []*clientPeer
|
||||
speers []*serverPeer
|
||||
|
||||
config = light.TestServerIndexerConfig
|
||||
waitIndexers = func(cIndexer, bIndexer, btIndexer *core.ChainIndexer) {
|
||||
@@ -213,12 +212,11 @@ func testTrustedAnnouncement(t *testing.T, protocol int) {
|
||||
|
||||
// Connect all server instances.
|
||||
for i := 0; i < len(servers); i++ {
|
||||
sp, cp, err := connect(servers[i].handler, nodes[i].ID(), c.handler, protocol, true)
|
||||
_, cp, err := connect(servers[i].handler, nodes[i].ID(), c.handler, protocol, true)
|
||||
if err != nil {
|
||||
t.Fatalf("connect server and client failed, err %s", err)
|
||||
}
|
||||
cpeers = append(cpeers, cp)
|
||||
speers = append(speers, sp)
|
||||
}
|
||||
newHead := make(chan *types.Header, 1)
|
||||
c.handler.fetcher.newHeadHook = func(header *types.Header) { newHead <- header }
|
||||
|
||||
@@ -58,10 +58,9 @@ var (
|
||||
// corrigated buffer value and usually allows a higher remaining buffer value
|
||||
// to be returned with each reply.
|
||||
type ClientManager struct {
|
||||
clock mclock.Clock
|
||||
lock sync.Mutex
|
||||
enabledCh chan struct{}
|
||||
stop chan chan struct{}
|
||||
clock mclock.Clock
|
||||
lock sync.Mutex
|
||||
stop chan chan struct{}
|
||||
|
||||
curve PieceWiseLinear
|
||||
sumRecharge, totalRecharge, totalConnected uint64
|
||||
|
||||
+1
-3
@@ -392,12 +392,10 @@ func testGetTxStatusFromUnindexedPeers(t *testing.T, protocol int) {
|
||||
for _, testspec := range testspecs {
|
||||
// Create a bunch of server peers with different tx history
|
||||
var (
|
||||
serverPeers []*testPeer
|
||||
closeFns []func()
|
||||
closeFns []func()
|
||||
)
|
||||
for i := 0; i < testspec.peers; i++ {
|
||||
peer, closePeer, _ := client.newRawPeer(t, fmt.Sprintf("server-%d", i), protocol, testspec.txLookups[i])
|
||||
serverPeers = append(serverPeers, peer)
|
||||
closeFns = append(closeFns, closePeer)
|
||||
|
||||
// Create a one-time routine for serving message
|
||||
|
||||
-74
@@ -995,40 +995,6 @@ func (p *clientPeer) sendLastAnnounce() {
|
||||
}
|
||||
}
|
||||
|
||||
// freezeClient temporarily puts the client in a frozen state which means all
|
||||
// unprocessed and subsequent requests are dropped. Unfreezing happens automatically
|
||||
// after a short time if the client's buffer value is at least in the slightly positive
|
||||
// region. The client is also notified about being frozen/unfrozen with a Stop/Resume
|
||||
// message.
|
||||
func (p *clientPeer) freezeClient() {
|
||||
if p.version < lpv3 {
|
||||
// if Stop/Resume is not supported then just drop the peer after setting
|
||||
// its frozen status permanently
|
||||
atomic.StoreUint32(&p.frozen, 1)
|
||||
p.Peer.Disconnect(p2p.DiscUselessPeer)
|
||||
return
|
||||
}
|
||||
if atomic.SwapUint32(&p.frozen, 1) == 0 {
|
||||
go func() {
|
||||
p.sendStop()
|
||||
time.Sleep(freezeTimeBase + time.Duration(rand.Int63n(int64(freezeTimeRandom))))
|
||||
for {
|
||||
bufValue, bufLimit := p.fcClient.BufferStatus()
|
||||
if bufLimit == 0 {
|
||||
return
|
||||
}
|
||||
if bufValue <= bufLimit/8 {
|
||||
time.Sleep(freezeCheckPeriod)
|
||||
} else {
|
||||
atomic.StoreUint32(&p.frozen, 0)
|
||||
p.sendResume(bufValue)
|
||||
break
|
||||
}
|
||||
}
|
||||
}()
|
||||
}
|
||||
}
|
||||
|
||||
// Handshake executes the les protocol handshake, negotiating version number,
|
||||
// network IDs, difficulties, head and genesis blocks.
|
||||
func (p *clientPeer) Handshake(td *big.Int, head common.Hash, headNum uint64, genesis common.Hash, forkID forkid.ID, forkFilter forkid.Filter, server *LesServer) error {
|
||||
@@ -1157,19 +1123,6 @@ func (ps *serverPeerSet) subscribe(sub serverPeerSubscriber) {
|
||||
}
|
||||
}
|
||||
|
||||
// unSubscribe removes the specified service from the subscriber pool.
|
||||
func (ps *serverPeerSet) unSubscribe(sub serverPeerSubscriber) {
|
||||
ps.lock.Lock()
|
||||
defer ps.lock.Unlock()
|
||||
|
||||
for i, s := range ps.subscribers {
|
||||
if s == sub {
|
||||
ps.subscribers = append(ps.subscribers[:i], ps.subscribers[i+1:]...)
|
||||
return
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// register adds a new server peer into the set, or returns an error if the
|
||||
// peer is already known.
|
||||
func (ps *serverPeerSet) register(peer *serverPeer) error {
|
||||
@@ -1236,25 +1189,6 @@ func (ps *serverPeerSet) len() int {
|
||||
return len(ps.peers)
|
||||
}
|
||||
|
||||
// bestPeer retrieves the known peer with the currently highest total difficulty.
|
||||
// If the peerset is "client peer set", then nothing meaningful will return. The
|
||||
// reason is client peer never send back their latest status to server.
|
||||
func (ps *serverPeerSet) bestPeer() *serverPeer {
|
||||
ps.lock.RLock()
|
||||
defer ps.lock.RUnlock()
|
||||
|
||||
var (
|
||||
bestPeer *serverPeer
|
||||
bestTd *big.Int
|
||||
)
|
||||
for _, p := range ps.peers {
|
||||
if td := p.Td(); bestTd == nil || td.Cmp(bestTd) > 0 {
|
||||
bestPeer, bestTd = p, td
|
||||
}
|
||||
}
|
||||
return bestPeer
|
||||
}
|
||||
|
||||
// allServerPeers returns all server peers in a list.
|
||||
func (ps *serverPeerSet) allPeers() []*serverPeer {
|
||||
ps.lock.RLock()
|
||||
@@ -1348,14 +1282,6 @@ func (ps *clientPeerSet) peer(id enode.ID) *clientPeer {
|
||||
return ps.peers[id]
|
||||
}
|
||||
|
||||
// len returns if the current number of peers in the set.
|
||||
func (ps *clientPeerSet) len() int {
|
||||
ps.lock.RLock()
|
||||
defer ps.lock.RUnlock()
|
||||
|
||||
return len(ps.peers)
|
||||
}
|
||||
|
||||
// setSignerKey sets the signer key for signed announcements. Should be called before
|
||||
// starting the protocol handler.
|
||||
func (ps *clientPeerSet) setSignerKey(privateKey *ecdsa.PrivateKey) {
|
||||
|
||||
+13
-12
@@ -35,6 +35,19 @@ func TestULCAnnounceThresholdLes3(t *testing.T) { testULCAnnounceThreshold(t, 3)
|
||||
func testULCAnnounceThreshold(t *testing.T, protocol int) {
|
||||
// todo figure out why it takes fetcher so longer to fetcher the announced header.
|
||||
t.Skip("Sometimes it can failed")
|
||||
|
||||
// newTestLightPeer creates node with light sync mode
|
||||
newTestLightPeer := func(t *testing.T, protocol int, ulcServers []string, ulcFraction int) (*testClient, func()) {
|
||||
netconfig := testnetConfig{
|
||||
protocol: protocol,
|
||||
ulcServers: ulcServers,
|
||||
ulcFraction: ulcFraction,
|
||||
nopruning: true,
|
||||
}
|
||||
_, c, teardown := newClientServerEnv(t, netconfig)
|
||||
return c, teardown
|
||||
}
|
||||
|
||||
var cases = []struct {
|
||||
height []int
|
||||
threshold int
|
||||
@@ -148,15 +161,3 @@ func newTestServerPeer(t *testing.T, blocks int, protocol int, indexFn indexerCa
|
||||
n := enode.NewV4(&key.PublicKey, net.ParseIP("127.0.0.1"), 35000, 35000)
|
||||
return s, n, teardown
|
||||
}
|
||||
|
||||
// newTestLightPeer creates node with light sync mode
|
||||
func newTestLightPeer(t *testing.T, protocol int, ulcServers []string, ulcFraction int) (*testClient, func()) {
|
||||
netconfig := testnetConfig{
|
||||
protocol: protocol,
|
||||
ulcServers: ulcServers,
|
||||
ulcFraction: ulcFraction,
|
||||
nopruning: true,
|
||||
}
|
||||
_, c, teardown := newClientServerEnv(t, netconfig)
|
||||
return c, teardown
|
||||
}
|
||||
|
||||
@@ -55,7 +55,6 @@ type ServerPoolTest struct {
|
||||
clock *mclock.Simulated
|
||||
quit chan chan struct{}
|
||||
preNeg, preNegFail bool
|
||||
vt *ValueTracker
|
||||
sp *ServerPool
|
||||
spi enode.Iterator
|
||||
input enode.Iterator
|
||||
|
||||
@@ -61,7 +61,6 @@ type ClientPool struct {
|
||||
|
||||
setup *serverSetup
|
||||
clock mclock.Clock
|
||||
closed bool
|
||||
ns *nodestate.NodeStateMachine
|
||||
synced func() bool
|
||||
|
||||
|
||||
Reference in New Issue
Block a user