mirror of
https://github.com/luxfi/evm.git
synced 2026-09-24 00:27:44 +00:00
prepare release v0.5.10 (#1019)
* bump versions
* change p2p network code
* Revert "change p2p network code"
This reverts commit 7960d9e524.
* Use `p2p.Network` (#384)
---------
Co-authored-by: Joshua Kim <[email protected]>
This commit is contained in:
committed by
GitHub
co-authored by
Joshua Kim
parent
fe4dd6e49f
commit
315cf93071
@@ -53,7 +53,8 @@ The Subnet EVM runs in a separate process from the main AvalancheGo process and
|
||||
[v0.5.6] [email protected] (Protocol Version: 28)
|
||||
[v0.5.7] [email protected] (Protocol Version: 29)
|
||||
[v0.5.8] [email protected] (Protocol Version: 29)
|
||||
[v0.5.9] [email protected] (Protocol Version: 30)
|
||||
[v0.5.9] [email protected]-v1.10.17 (Protocol Version: 30)
|
||||
[v0.5.10] [email protected] (Protocol Version: 30)
|
||||
```
|
||||
|
||||
## API
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
{
|
||||
"rpcChainVMProtocolVersion": {
|
||||
"v0.5.10": 30,
|
||||
"v0.5.9": 30,
|
||||
"v0.5.8": 29,
|
||||
"v0.5.7": 29,
|
||||
|
||||
@@ -5,7 +5,7 @@ go 1.20
|
||||
require (
|
||||
github.com/VictoriaMetrics/fastcache v1.10.0
|
||||
github.com/ava-labs/avalanche-network-runner v1.7.4-0.20231127162258-2f3ceed8ae4b
|
||||
github.com/ava-labs/avalanchego v1.10.17-rc.14
|
||||
github.com/ava-labs/avalanchego v1.10.17
|
||||
github.com/cespare/cp v0.1.0
|
||||
github.com/cockroachdb/pebble v0.0.0-20230209160836-829675f94811
|
||||
github.com/davecgh/go-spew v1.1.1
|
||||
@@ -57,7 +57,7 @@ require (
|
||||
github.com/DataDog/zstd v1.5.2 // indirect
|
||||
github.com/Microsoft/go-winio v0.5.2 // indirect
|
||||
github.com/NYTimes/gziphandler v1.1.1 // indirect
|
||||
github.com/ava-labs/coreth v0.12.9-rc.6 // indirect
|
||||
github.com/ava-labs/coreth v0.12.9-rc.9 // indirect
|
||||
github.com/beorn7/perks v1.0.1 // indirect
|
||||
github.com/bits-and-blooms/bitset v1.7.0 // indirect
|
||||
github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect
|
||||
|
||||
@@ -61,10 +61,10 @@ github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kd
|
||||
github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
|
||||
github.com/ava-labs/avalanche-network-runner v1.7.4-0.20231127162258-2f3ceed8ae4b h1:iH6q+S7dmBOYCXrZx+nNlS1HBp72L2msiVCLs39Ls5A=
|
||||
github.com/ava-labs/avalanche-network-runner v1.7.4-0.20231127162258-2f3ceed8ae4b/go.mod h1:aeAm8dgJ1xucQKlYoRDMgYjA0UWGwmaICG9wL0WvseU=
|
||||
github.com/ava-labs/avalanchego v1.10.17-rc.14 h1:d/FqLg1imOxw+g4FnsWA1OjxBJxKkHbu945BTDoMtiQ=
|
||||
github.com/ava-labs/avalanchego v1.10.17-rc.14/go.mod h1:jSoodApNsJJCMAdUhzVXFrzq8QyBdVHJAwx5A46yd8w=
|
||||
github.com/ava-labs/coreth v0.12.9-rc.6 h1:GD+slRi9FrGDB8H9TNEIXAs8BnFVd2IrgrNonFnV+Dk=
|
||||
github.com/ava-labs/coreth v0.12.9-rc.6/go.mod h1:rECKQfGFDeodrwGPlJSvFUJDbVr30jSMIVjQLi6pNX4=
|
||||
github.com/ava-labs/avalanchego v1.10.17 h1:Ri01nU5ukKC38ZCkCh3namaMZtJkSuv1X/vC13uJguc=
|
||||
github.com/ava-labs/avalanchego v1.10.17/go.mod h1:A6f3877qlq7bePjCU4T0D60bZGecRMCk15pMpJGOb4Q=
|
||||
github.com/ava-labs/coreth v0.12.9-rc.9 h1:mvYxABdyPByXwwwIxnTBCiNO23dsE1Kfnd5H106lric=
|
||||
github.com/ava-labs/coreth v0.12.9-rc.9/go.mod h1:yrf2vEah4Fgj6sJ4UpHewo4DLolwdpf2bJuLRT80PGw=
|
||||
github.com/aymerick/raymond v2.0.3-0.20180322193309-b565731e1464+incompatible/go.mod h1:osfaiScAUVup+UC9Nfq76eWqDhXlp+4UYaA8uhTBO6g=
|
||||
github.com/beorn7/perks v1.0.1 h1:VlbKKnNfV8bJzeqoa4cOKqO6bYr3WgKZxO8Z16+hsOM=
|
||||
github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw=
|
||||
|
||||
+30
-22
@@ -77,6 +77,10 @@ type Network interface {
|
||||
// TrackBandwidth should be called for each valid request with the bandwidth
|
||||
// (length of response divided by request time), and with 0 if the response is invalid.
|
||||
TrackBandwidth(nodeID ids.NodeID, bandwidth float64)
|
||||
|
||||
// NewAppProtocol reserves a protocol identifier and returns a corresponding
|
||||
// client to send messages with
|
||||
NewAppProtocol(protocol uint64, handler p2p.Handler, options ...p2p.ClientOption) (*p2p.Client, error)
|
||||
}
|
||||
|
||||
// network is an implementation of Network that processes message requests for
|
||||
@@ -88,16 +92,16 @@ type network struct {
|
||||
outstandingRequestHandlers map[uint32]message.ResponseHandler // maps avalanchego requestID => message.ResponseHandler
|
||||
activeAppRequests *semaphore.Weighted // controls maximum number of active outbound requests
|
||||
activeCrossChainRequests *semaphore.Weighted // controls maximum number of active outbound cross chain requests
|
||||
router *p2p.Router // handles messages being sent to the generic networking SDK
|
||||
appSender common.AppSender // avalanchego AppSender for sending messages
|
||||
codec codec.Manager // Codec used for parsing messages
|
||||
crossChainCodec codec.Manager // Codec used for parsing cross chain messages
|
||||
appRequestHandler message.RequestHandler // maps request type => handler
|
||||
crossChainRequestHandler message.CrossChainRequestHandler // maps cross chain request type => handler
|
||||
gossipHandler message.GossipHandler // maps gossip type => handler
|
||||
peers *peerTracker // tracking of peers & bandwidth
|
||||
appStats stats.RequestHandlerStats // Provide request handler metrics
|
||||
crossChainStats stats.RequestHandlerStats // Provide cross chain request handler metrics
|
||||
network *p2p.Network
|
||||
appSender common.AppSender // avalanchego AppSender for sending messages
|
||||
codec codec.Manager // Codec used for parsing messages
|
||||
crossChainCodec codec.Manager // Codec used for parsing cross chain messages
|
||||
appRequestHandler message.RequestHandler // maps request type => handler
|
||||
crossChainRequestHandler message.CrossChainRequestHandler // maps cross chain request type => handler
|
||||
gossipHandler message.GossipHandler // maps gossip type => handler
|
||||
peers *peerTracker // tracking of peers & bandwidth
|
||||
appStats stats.RequestHandlerStats // Provide request handler metrics
|
||||
crossChainStats stats.RequestHandlerStats // Provide cross chain request handler metrics
|
||||
|
||||
// Set to true when Shutdown is called, after which all operations on this
|
||||
// struct are no-ops.
|
||||
@@ -110,9 +114,8 @@ type network struct {
|
||||
closed utils.Atomic[bool]
|
||||
}
|
||||
|
||||
func NewNetwork(router *p2p.Router, appSender common.AppSender, codec codec.Manager, crossChainCodec codec.Manager, self ids.NodeID, maxActiveAppRequests int64, maxActiveCrossChainRequests int64) Network {
|
||||
func NewNetwork(p2pNetwork *p2p.Network, appSender common.AppSender, codec codec.Manager, crossChainCodec codec.Manager, self ids.NodeID, maxActiveAppRequests int64, maxActiveCrossChainRequests int64) Network {
|
||||
return &network{
|
||||
router: router,
|
||||
appSender: appSender,
|
||||
codec: codec,
|
||||
crossChainCodec: crossChainCodec,
|
||||
@@ -120,6 +123,7 @@ func NewNetwork(router *p2p.Router, appSender common.AppSender, codec codec.Mana
|
||||
outstandingRequestHandlers: make(map[uint32]message.ResponseHandler),
|
||||
activeAppRequests: semaphore.NewWeighted(maxActiveAppRequests),
|
||||
activeCrossChainRequests: semaphore.NewWeighted(maxActiveCrossChainRequests),
|
||||
network: p2pNetwork,
|
||||
gossipHandler: message.NoopMempoolGossipHandler{},
|
||||
appRequestHandler: message.NoopRequestHandler{},
|
||||
crossChainRequestHandler: message.NoopCrossChainRequestHandler{},
|
||||
@@ -326,8 +330,8 @@ func (n *network) AppRequest(ctx context.Context, nodeID ids.NodeID, requestID u
|
||||
|
||||
var req message.Request
|
||||
if _, err := n.codec.Unmarshal(request, &req); err != nil {
|
||||
log.Trace("forwarding AppRequest to SDK router", "nodeID", nodeID, "requestID", requestID, "requestLen", len(request), "err", err)
|
||||
return n.router.AppRequest(ctx, nodeID, requestID, deadline, request)
|
||||
log.Trace("forwarding AppRequest to SDK network", "nodeID", nodeID, "requestID", requestID, "requestLen", len(request), "err", err)
|
||||
return n.network.AppRequest(ctx, nodeID, requestID, deadline, request)
|
||||
}
|
||||
|
||||
bufferedDeadline, err := calculateTimeUntilDeadline(deadline, n.appStats)
|
||||
@@ -362,8 +366,8 @@ func (n *network) AppResponse(ctx context.Context, nodeID ids.NodeID, requestID
|
||||
|
||||
handler, exists := n.markRequestFulfilled(requestID)
|
||||
if !exists {
|
||||
log.Trace("forwarding AppResponse to SDK router", "nodeID", nodeID, "requestID", requestID, "responseLen", len(response))
|
||||
return n.router.AppResponse(ctx, nodeID, requestID, response)
|
||||
log.Trace("forwarding AppResponse to SDK network", "nodeID", nodeID, "requestID", requestID, "responseLen", len(response))
|
||||
return n.network.AppResponse(ctx, nodeID, requestID, response)
|
||||
}
|
||||
|
||||
// We must release the slot
|
||||
@@ -383,8 +387,8 @@ func (n *network) AppRequestFailed(ctx context.Context, nodeID ids.NodeID, reque
|
||||
|
||||
handler, exists := n.markRequestFulfilled(requestID)
|
||||
if !exists {
|
||||
log.Trace("forwarding AppRequestFailed to SDK router", "nodeID", nodeID, "requestID", requestID)
|
||||
return n.router.AppRequestFailed(ctx, nodeID, requestID)
|
||||
log.Trace("forwarding AppRequestFailed to SDK network", "nodeID", nodeID, "requestID", requestID)
|
||||
return n.network.AppRequestFailed(ctx, nodeID, requestID)
|
||||
}
|
||||
|
||||
// We must release the slot
|
||||
@@ -456,7 +460,7 @@ func (n *network) AppGossip(_ context.Context, nodeID ids.NodeID, gossipBytes []
|
||||
}
|
||||
|
||||
// Connected adds the given nodeID to the peer list so that it can receive messages
|
||||
func (n *network) Connected(_ context.Context, nodeID ids.NodeID, nodeVersion *version.Application) error {
|
||||
func (n *network) Connected(ctx context.Context, nodeID ids.NodeID, nodeVersion *version.Application) error {
|
||||
n.lock.Lock()
|
||||
defer n.lock.Unlock()
|
||||
|
||||
@@ -469,11 +473,11 @@ func (n *network) Connected(_ context.Context, nodeID ids.NodeID, nodeVersion *v
|
||||
}
|
||||
|
||||
n.peers.Connected(nodeID, nodeVersion)
|
||||
return nil
|
||||
return n.network.Connected(ctx, nodeID, nodeVersion)
|
||||
}
|
||||
|
||||
// Disconnected removes given [nodeID] from the peer list
|
||||
func (n *network) Disconnected(_ context.Context, nodeID ids.NodeID) error {
|
||||
func (n *network) Disconnected(ctx context.Context, nodeID ids.NodeID) error {
|
||||
n.lock.Lock()
|
||||
defer n.lock.Unlock()
|
||||
|
||||
@@ -482,7 +486,7 @@ func (n *network) Disconnected(_ context.Context, nodeID ids.NodeID) error {
|
||||
}
|
||||
|
||||
n.peers.Disconnected(nodeID)
|
||||
return nil
|
||||
return n.network.Disconnected(ctx, nodeID)
|
||||
}
|
||||
|
||||
// Shutdown disconnects all peers
|
||||
@@ -535,6 +539,10 @@ func (n *network) TrackBandwidth(nodeID ids.NodeID, bandwidth float64) {
|
||||
n.peers.TrackBandwidth(nodeID, bandwidth)
|
||||
}
|
||||
|
||||
func (n *network) NewAppProtocol(protocol uint64, handler p2p.Handler, options ...p2p.ClientOption) (*p2p.Client, error) {
|
||||
return n.network.NewAppProtocol(protocol, handler, options...)
|
||||
}
|
||||
|
||||
// invariant: peer/network must use explicitly even request ids.
|
||||
// for this reason, [n.requestID] is initialized as zero and incremented by 2.
|
||||
// This is for backwards-compatibility while the SDK router exists with the
|
||||
|
||||
+19
-19
@@ -57,7 +57,7 @@ var (
|
||||
|
||||
func TestNetworkDoesNotConnectToItself(t *testing.T) {
|
||||
selfNodeID := ids.GenerateTestNodeID()
|
||||
n := NewNetwork(p2p.NewRouter(logging.NoLog{}, nil, prometheus.NewRegistry(), ""), nil, nil, nil, selfNodeID, 1, 1)
|
||||
n := NewNetwork(p2p.NewNetwork(logging.NoLog{}, nil, prometheus.NewRegistry(), ""), nil, nil, nil, selfNodeID, 1, 1)
|
||||
assert.NoError(t, n.Connected(context.Background(), selfNodeID, defaultPeerVersion))
|
||||
assert.EqualValues(t, 0, n.Size())
|
||||
}
|
||||
@@ -93,7 +93,7 @@ func TestRequestAnyRequestsRoutingAndResponse(t *testing.T) {
|
||||
|
||||
codecManager := buildCodec(t, HelloRequest{}, HelloResponse{})
|
||||
crossChainCodecManager := buildCodec(t, ExampleCrossChainRequest{}, ExampleCrossChainResponse{})
|
||||
net = NewNetwork(p2p.NewRouter(logging.NoLog{}, nil, prometheus.NewRegistry(), ""), sender, codecManager, crossChainCodecManager, ids.EmptyNodeID, 16, 16)
|
||||
net = NewNetwork(p2p.NewNetwork(logging.NoLog{}, nil, prometheus.NewRegistry(), ""), sender, codecManager, crossChainCodecManager, ids.EmptyNodeID, 16, 16)
|
||||
net.SetRequestHandler(&HelloGreetingRequestHandler{codec: codecManager})
|
||||
client := NewNetworkClient(net)
|
||||
nodeID := ids.GenerateTestNodeID()
|
||||
@@ -145,7 +145,7 @@ func TestAppRequestOnCtxCancellation(t *testing.T) {
|
||||
},
|
||||
}
|
||||
|
||||
net := NewNetwork(p2p.NewRouter(logging.NoLog{}, nil, prometheus.NewRegistry(), ""), sender, codecManager, crossChainCodecManager, ids.EmptyNodeID, 1, 1)
|
||||
net := NewNetwork(p2p.NewNetwork(logging.NoLog{}, nil, prometheus.NewRegistry(), ""), sender, codecManager, crossChainCodecManager, ids.EmptyNodeID, 1, 1)
|
||||
net.SetRequestHandler(&HelloGreetingRequestHandler{codec: codecManager})
|
||||
|
||||
requestMessage := HelloRequest{Message: "this is a request"}
|
||||
@@ -197,7 +197,7 @@ func TestRequestRequestsRoutingAndResponse(t *testing.T) {
|
||||
|
||||
codecManager := buildCodec(t, HelloRequest{}, HelloResponse{})
|
||||
crossChainCodecManager := buildCodec(t, ExampleCrossChainRequest{}, ExampleCrossChainResponse{})
|
||||
net = NewNetwork(p2p.NewRouter(logging.NoLog{}, nil, prometheus.NewRegistry(), ""), sender, codecManager, crossChainCodecManager, ids.EmptyNodeID, 16, 16)
|
||||
net = NewNetwork(p2p.NewNetwork(logging.NoLog{}, nil, prometheus.NewRegistry(), ""), sender, codecManager, crossChainCodecManager, ids.EmptyNodeID, 16, 16)
|
||||
net.SetRequestHandler(&HelloGreetingRequestHandler{codec: codecManager})
|
||||
client := NewNetworkClient(net)
|
||||
|
||||
@@ -277,7 +277,7 @@ func TestAppRequestOnShutdown(t *testing.T) {
|
||||
|
||||
codecManager := buildCodec(t, HelloRequest{}, HelloResponse{})
|
||||
crossChainCodecManager := buildCodec(t, ExampleCrossChainRequest{}, ExampleCrossChainResponse{})
|
||||
net = NewNetwork(p2p.NewRouter(logging.NoLog{}, nil, prometheus.NewRegistry(), ""), sender, codecManager, crossChainCodecManager, ids.EmptyNodeID, 1, 1)
|
||||
net = NewNetwork(p2p.NewNetwork(logging.NoLog{}, nil, prometheus.NewRegistry(), ""), sender, codecManager, crossChainCodecManager, ids.EmptyNodeID, 1, 1)
|
||||
client := NewNetworkClient(net)
|
||||
nodeID := ids.GenerateTestNodeID()
|
||||
require.NoError(t, net.Connected(context.Background(), nodeID, defaultPeerVersion))
|
||||
@@ -326,7 +326,7 @@ func TestAppRequestAnyOnCtxCancellation(t *testing.T) {
|
||||
},
|
||||
}
|
||||
|
||||
net := NewNetwork(p2p.NewRouter(logging.NoLog{}, nil, prometheus.NewRegistry(), ""), sender, codecManager, crossChainCodecManager, ids.EmptyNodeID, 1, 1)
|
||||
net := NewNetwork(p2p.NewNetwork(logging.NoLog{}, nil, prometheus.NewRegistry(), ""), sender, codecManager, crossChainCodecManager, ids.EmptyNodeID, 1, 1)
|
||||
net.SetRequestHandler(&HelloGreetingRequestHandler{codec: codecManager})
|
||||
assert.NoError(t,
|
||||
net.Connected(
|
||||
@@ -403,7 +403,7 @@ func TestRequestMinVersion(t *testing.T) {
|
||||
|
||||
// passing nil as codec works because the net.AppRequest is never called
|
||||
crossChainCodecManager := buildCodec(t, ExampleCrossChainRequest{}, ExampleCrossChainResponse{})
|
||||
net = NewNetwork(p2p.NewRouter(logging.NoLog{}, nil, prometheus.NewRegistry(), ""), sender, codecManager, crossChainCodecManager, ids.EmptyNodeID, 1, 16)
|
||||
net = NewNetwork(p2p.NewNetwork(logging.NoLog{}, nil, prometheus.NewRegistry(), ""), sender, codecManager, crossChainCodecManager, ids.EmptyNodeID, 1, 16)
|
||||
client := NewNetworkClient(net)
|
||||
requestMessage := TestMessage{Message: "this is a request"}
|
||||
requestBytes, err := message.RequestToBytes(codecManager, requestMessage)
|
||||
@@ -467,7 +467,7 @@ func TestOnRequestHonoursDeadline(t *testing.T) {
|
||||
processingDuration: 500 * time.Millisecond,
|
||||
}
|
||||
|
||||
net = NewNetwork(p2p.NewRouter(logging.NoLog{}, nil, prometheus.NewRegistry(), ""), sender, codecManager, crossChainCodecManager, ids.EmptyNodeID, 1, 1)
|
||||
net = NewNetwork(p2p.NewNetwork(logging.NoLog{}, nil, prometheus.NewRegistry(), ""), sender, codecManager, crossChainCodecManager, ids.EmptyNodeID, 1, 1)
|
||||
net.SetRequestHandler(requestHandler)
|
||||
nodeID := ids.GenerateTestNodeID()
|
||||
|
||||
@@ -507,7 +507,7 @@ func TestGossip(t *testing.T) {
|
||||
}
|
||||
|
||||
gossipHandler := &testGossipHandler{}
|
||||
clientNetwork = NewNetwork(p2p.NewRouter(logging.NoLog{}, nil, prometheus.NewRegistry(), ""), sender, codecManager, crossChainCodecManager, ids.EmptyNodeID, 1, 1)
|
||||
clientNetwork = NewNetwork(p2p.NewNetwork(logging.NoLog{}, nil, prometheus.NewRegistry(), ""), sender, codecManager, crossChainCodecManager, ids.EmptyNodeID, 1, 1)
|
||||
clientNetwork.SetGossipHandler(gossipHandler)
|
||||
|
||||
assert.NoError(t, clientNetwork.Connected(context.Background(), nodeID, defaultPeerVersion))
|
||||
@@ -534,7 +534,7 @@ func TestHandleInvalidMessages(t *testing.T) {
|
||||
requestID := uint32(1)
|
||||
sender := testAppSender{}
|
||||
|
||||
clientNetwork := NewNetwork(p2p.NewRouter(logging.NoLog{}, nil, prometheus.NewRegistry(), ""), sender, codecManager, crossChainCodecManager, ids.EmptyNodeID, 1, 1)
|
||||
clientNetwork := NewNetwork(p2p.NewNetwork(logging.NoLog{}, nil, prometheus.NewRegistry(), ""), sender, codecManager, crossChainCodecManager, ids.EmptyNodeID, 1, 1)
|
||||
clientNetwork.SetGossipHandler(message.NoopMempoolGossipHandler{})
|
||||
clientNetwork.SetRequestHandler(&testRequestHandler{})
|
||||
|
||||
@@ -583,7 +583,7 @@ func TestNetworkPropagatesRequestHandlerError(t *testing.T) {
|
||||
requestID := uint32(1)
|
||||
sender := testAppSender{}
|
||||
|
||||
clientNetwork := NewNetwork(p2p.NewRouter(logging.NoLog{}, nil, prometheus.NewRegistry(), ""), sender, codecManager, crossChainCodecManager, ids.EmptyNodeID, 1, 1)
|
||||
clientNetwork := NewNetwork(p2p.NewNetwork(logging.NoLog{}, nil, prometheus.NewRegistry(), ""), sender, codecManager, crossChainCodecManager, ids.EmptyNodeID, 1, 1)
|
||||
clientNetwork.SetGossipHandler(message.NoopMempoolGossipHandler{})
|
||||
clientNetwork.SetRequestHandler(&testRequestHandler{err: errors.New("fail")}) // Return an error from the request handler
|
||||
|
||||
@@ -623,7 +623,7 @@ func TestCrossChainAppRequest(t *testing.T) {
|
||||
},
|
||||
}
|
||||
|
||||
net = NewNetwork(p2p.NewRouter(logging.NoLog{}, nil, prometheus.NewRegistry(), ""), sender, codecManager, crossChainCodecManager, ids.EmptyNodeID, 1, 1)
|
||||
net = NewNetwork(p2p.NewNetwork(logging.NoLog{}, nil, prometheus.NewRegistry(), ""), sender, codecManager, crossChainCodecManager, ids.EmptyNodeID, 1, 1)
|
||||
net.SetCrossChainRequestHandler(&testCrossChainHandler{codec: crossChainCodecManager})
|
||||
client := NewNetworkClient(net)
|
||||
|
||||
@@ -658,7 +658,7 @@ func TestCrossChainAppRequestOnCtxCancellation(t *testing.T) {
|
||||
},
|
||||
}
|
||||
|
||||
net := NewNetwork(p2p.NewRouter(logging.NoLog{}, nil, prometheus.NewRegistry(), ""), sender, codecManager, crossChainCodecManager, ids.EmptyNodeID, 1, 1)
|
||||
net := NewNetwork(p2p.NewNetwork(logging.NoLog{}, nil, prometheus.NewRegistry(), ""), sender, codecManager, crossChainCodecManager, ids.EmptyNodeID, 1, 1)
|
||||
net.SetCrossChainRequestHandler(&testCrossChainHandler{codec: crossChainCodecManager})
|
||||
|
||||
exampleCrossChainRequest := ExampleCrossChainRequest{
|
||||
@@ -710,7 +710,7 @@ func TestCrossChainRequestRequestsRoutingAndResponse(t *testing.T) {
|
||||
|
||||
codecManager := buildCodec(t, TestMessage{})
|
||||
crossChainCodecManager := buildCodec(t, ExampleCrossChainRequest{}, ExampleCrossChainResponse{})
|
||||
net = NewNetwork(p2p.NewRouter(logging.NoLog{}, nil, prometheus.NewRegistry(), ""), sender, codecManager, crossChainCodecManager, ids.EmptyNodeID, 1, 1)
|
||||
net = NewNetwork(p2p.NewNetwork(logging.NoLog{}, nil, prometheus.NewRegistry(), ""), sender, codecManager, crossChainCodecManager, ids.EmptyNodeID, 1, 1)
|
||||
net.SetCrossChainRequestHandler(&testCrossChainHandler{codec: crossChainCodecManager})
|
||||
client := NewNetworkClient(net)
|
||||
|
||||
@@ -770,7 +770,7 @@ func TestCrossChainRequestOnShutdown(t *testing.T) {
|
||||
}
|
||||
codecManager := buildCodec(t, TestMessage{})
|
||||
crossChainCodecManager := buildCodec(t, ExampleCrossChainRequest{}, ExampleCrossChainResponse{})
|
||||
net = NewNetwork(p2p.NewRouter(logging.NoLog{}, nil, prometheus.NewRegistry(), ""), sender, codecManager, crossChainCodecManager, ids.EmptyNodeID, 1, 1)
|
||||
net = NewNetwork(p2p.NewNetwork(logging.NoLog{}, nil, prometheus.NewRegistry(), ""), sender, codecManager, crossChainCodecManager, ids.EmptyNodeID, 1, 1)
|
||||
client := NewNetworkClient(net)
|
||||
|
||||
exampleCrossChainRequest := ExampleCrossChainRequest{
|
||||
@@ -811,7 +811,7 @@ func TestNetworkCrossChainAppRequestAfterShutdown(t *testing.T) {
|
||||
require.NoError(net.SendCrossChainRequest(context.Background(), ids.GenerateTestID(), nil, nil))
|
||||
}
|
||||
|
||||
func TestSDKRouting(t *testing.T) {
|
||||
func TestNetworkRouting(t *testing.T) {
|
||||
require := require.New(t)
|
||||
sender := &testAppSender{
|
||||
sendAppRequestFn: func(_ context.Context, s set.Set[ids.NodeID], u uint32, bytes []byte) error {
|
||||
@@ -823,15 +823,15 @@ func TestSDKRouting(t *testing.T) {
|
||||
}
|
||||
protocol := 0
|
||||
handler := &testSDKHandler{}
|
||||
router := p2p.NewRouter(logging.NoLog{}, sender, prometheus.NewRegistry(), "")
|
||||
_, err := router.RegisterAppProtocol(uint64(protocol), handler, nil)
|
||||
p2pNetwork := p2p.NewNetwork(logging.NoLog{}, sender, prometheus.NewRegistry(), "")
|
||||
_, err := p2pNetwork.NewAppProtocol(uint64(protocol), handler)
|
||||
require.NoError(err)
|
||||
|
||||
networkCodec := codec.NewManager(0)
|
||||
crossChainCodec := codec.NewManager(0)
|
||||
|
||||
network := NewNetwork(
|
||||
router,
|
||||
p2pNetwork,
|
||||
nil,
|
||||
networkCodec,
|
||||
crossChainCodec,
|
||||
|
||||
@@ -22,8 +22,6 @@ import (
|
||||
"github.com/prometheus/client_golang/prometheus"
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"go.uber.org/mock/gomock"
|
||||
|
||||
"google.golang.org/protobuf/proto"
|
||||
|
||||
"github.com/ava-labs/subnet-evm/core/types"
|
||||
@@ -39,12 +37,11 @@ func TestTxGossip(t *testing.T) {
|
||||
}()
|
||||
|
||||
// sender for the peer requesting gossip from [vm]
|
||||
ctrl := gomock.NewController(t)
|
||||
peerSender := common.NewMockSender(ctrl)
|
||||
router := p2p.NewRouter(logging.NoLog{}, peerSender, prometheus.NewRegistry(), "")
|
||||
peerSender := &common.SenderTest{}
|
||||
router := p2p.NewNetwork(logging.NoLog{}, peerSender, prometheus.NewRegistry(), "")
|
||||
|
||||
// we're only making client requests, so we don't need a server handler
|
||||
client, err := router.RegisterAppProtocol(txGossipProtocol, nil, nil)
|
||||
client, err := router.NewAppProtocol(txGossipProtocol, nil)
|
||||
require.NoError(err)
|
||||
|
||||
emptyBloomFilter, err := gossip.NewBloomFilter(txGossipBloomMaxItems, txGossipBloomFalsePositiveRate)
|
||||
@@ -62,11 +59,12 @@ func TestTxGossip(t *testing.T) {
|
||||
wg := &sync.WaitGroup{}
|
||||
|
||||
requestingNodeID := ids.GenerateTestNodeID()
|
||||
peerSender.EXPECT().SendAppRequest(gomock.Any(), gomock.Any(), gomock.Any(), gomock.Any()).Do(func(ctx context.Context, nodeIDs set.Set[ids.NodeID], requestID uint32, appRequestBytes []byte) {
|
||||
peerSender.SendAppRequestF = func(ctx context.Context, nodeIDs set.Set[ids.NodeID], requestID uint32, appRequestBytes []byte) error {
|
||||
go func() {
|
||||
require.NoError(vm.AppRequest(ctx, requestingNodeID, requestID, time.Time{}, appRequestBytes))
|
||||
}()
|
||||
}).AnyTimes()
|
||||
return nil
|
||||
}
|
||||
|
||||
sender.SendAppResponseF = func(ctx context.Context, nodeID ids.NodeID, requestID uint32, appResponseBytes []byte) error {
|
||||
go func() {
|
||||
@@ -76,6 +74,7 @@ func TestTxGossip(t *testing.T) {
|
||||
}
|
||||
|
||||
// we only accept gossip requests from validators
|
||||
require.NoError(vm.Network.Connected(context.Background(), requestingNodeID, nil))
|
||||
mockValidatorSet, ok := vm.ctx.ValidatorState.(*validators.TestState)
|
||||
require.True(ok)
|
||||
mockValidatorSet.GetCurrentHeightF = func(context.Context) (uint64, error) {
|
||||
|
||||
@@ -11,7 +11,7 @@ var (
|
||||
// GitCommit is set by the build script
|
||||
GitCommit string
|
||||
// Version is the version of Subnet EVM
|
||||
Version string = "v0.5.9"
|
||||
Version string = "v0.5.10"
|
||||
)
|
||||
|
||||
func init() {
|
||||
|
||||
+4
-5
@@ -233,7 +233,6 @@ type VM struct {
|
||||
networkCodec codec.Manager
|
||||
|
||||
validators *p2p.Validators
|
||||
router *p2p.Router
|
||||
|
||||
// Metrics
|
||||
multiGatherer avalanchegoMetrics.MultiGatherer
|
||||
@@ -460,10 +459,10 @@ func (vm *VM) Initialize(
|
||||
}
|
||||
|
||||
// initialize peer network
|
||||
vm.validators = p2p.NewValidators(vm.ctx.Log, vm.ctx.SubnetID, vm.ctx.ValidatorState, maxValidatorSetStaleness)
|
||||
vm.router = p2p.NewRouter(vm.ctx.Log, appSender, vm.sdkMetrics, "p2p")
|
||||
p2pNetwork := p2p.NewNetwork(vm.ctx.Log, appSender, vm.sdkMetrics, "p2p")
|
||||
vm.validators = p2p.NewValidators(p2pNetwork.Peers, vm.ctx.Log, vm.ctx.SubnetID, vm.ctx.ValidatorState, maxValidatorSetStaleness)
|
||||
vm.networkCodec = message.Codec
|
||||
vm.Network = peer.NewNetwork(vm.router, appSender, vm.networkCodec, message.CrossChainCodec, chainCtx.NodeID, vm.config.MaxOutboundActiveRequests, vm.config.MaxOutboundActiveCrossChainRequests)
|
||||
vm.Network = peer.NewNetwork(p2pNetwork, appSender, vm.networkCodec, message.CrossChainCodec, chainCtx.NodeID, vm.config.MaxOutboundActiveRequests, vm.config.MaxOutboundActiveCrossChainRequests)
|
||||
vm.client = peer.NewNetworkClient(vm.Network)
|
||||
|
||||
// initialize warp backend
|
||||
@@ -687,7 +686,7 @@ func (vm *VM) initBlockBuilding() error {
|
||||
Handler: txGossipHandler,
|
||||
},
|
||||
}
|
||||
txGossipClient, err := vm.router.RegisterAppProtocol(txGossipProtocol, txGossipHandler, vm.validators)
|
||||
txGossipClient, err := vm.Network.NewAppProtocol(txGossipProtocol, txGossipHandler, p2p.WithValidatorSampling(vm.validators))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
|
||||
# Don't export them as they're used in the context of other calls
|
||||
AVALANCHE_VERSION=${AVALANCHE_VERSION:-'v1.10.17-rc.14'}
|
||||
AVALANCHE_VERSION=${AVALANCHE_VERSION:-'v1.10.17'}
|
||||
GINKGO_VERSION=${GINKGO_VERSION:-'v2.2.0'}
|
||||
|
||||
# This won't be used, but it's here to make code syncs easier
|
||||
|
||||
Reference in New Issue
Block a user