[WIP] Fix ChainRPCService.FetchBlock permissionless by auxten · Pull Request #360 · CovenantSQL/CovenantSQL · GitHub
Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 3 additions & 8 deletions sqlchain/chain.go
5 changes: 4 additions & 1 deletion sqlchain/mux.go
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,10 @@ func (s *MuxService) FetchBlock(req *MuxFetchBlockReq, resp *MuxFetchBlockResp)
if v, ok := s.serviceMap.Load(req.DatabaseID); ok {
resp.Envelope = req.Envelope
resp.DatabaseID = req.DatabaseID
return v.(*ChainRPCService).FetchBlock(&req.FetchBlockReq, &resp.FetchBlockResp)
innerReq := &FetchBlockReq{
node: req.NodeID.ToNodeID(),
}
return v.(*ChainRPCService).FetchBlock(innerReq, &resp.FetchBlockResp)
}

return ErrUnknownMuxRequest
Expand Down
8 changes: 8 additions & 0 deletions sqlchain/rpc.go
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,9 @@
package sqlchain

import (
"fmt"

"github.com/CovenantSQL/CovenantSQL/proto"
"github.com/CovenantSQL/CovenantSQL/types"
)

Expand All @@ -38,6 +41,7 @@ type AdviseNewBlockResp struct {
// FetchBlockReq defines a request of the FetchBlock RPC method.
type FetchBlockReq struct {
Height int32
node proto.NodeID
}

// FetchBlockResp defines a response of the FetchBlock RPC method.
Expand All @@ -56,6 +60,10 @@ func (s *ChainRPCService) AdviseNewBlock(req *AdviseNewBlockReq, resp *AdviseNew
// FetchBlock is the RPC method to fetch a known block from the target server.
func (s *ChainRPCService) FetchBlock(req *FetchBlockReq, resp *FetchBlockResp) (err error) {
resp.Height = req.Height
if _, found := s.chain.rt.getPeers().Find(req.node); !found {
err = fmt.Errorf("node %s not in miner list", req.node)
return
}
resp.Block, err = s.chain.FetchBlock(req.Height)
return
}
22 changes: 1 addition & 21 deletions sqlchain/runtime.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,7 +56,7 @@ type runtime struct {
queryTTL int32
// blockCacheTTL sets the cached block numbers.
blockCacheTTL int32
// muxServer is the multiplexing service of sql-chain PRC.
// muxServer is the multiplexing service of sql-chain RPC.
muxService *MuxService

// peersMutex protects following peers-relative fields.
Expand Down Expand Up @@ -231,26 +231,6 @@ func (r *runtime) nextTick() (t time.Time, d time.Duration) {
return
}

func (r *runtime) updatePeers(peers *proto.Peers) (err error) {
r.peersMutex.Lock()
defer r.peersMutex.Unlock()
index, found := peers.Find(r.server)

if found {
r.index = index
r.total = int32(len(peers.Servers))
r.peers = peers
r.server = peers.Servers[index]
} else {
// Just clear the server list, and the database instance should call chain.Stop() later
r.index = -1
r.total = 0
r.peers.Servers = r.peers.Servers[:0]
}

return
}

func (r *runtime) getIndex() int32 {
r.peersMutex.Lock()
defer r.peersMutex.Unlock()
Expand Down
9 changes: 0 additions & 9 deletions worker/db.go
Original file line number Diff line number Diff line change
Expand Up @@ -220,15 +220,6 @@ func NewDatabase(cfg *DBConfig, peers *proto.Peers,
return
}

// UpdatePeers defines peers update query interface.
func (db *Database) UpdatePeers(peers *proto.Peers) (err error) {
if err = db.kayakRuntime.UpdatePeers(peers); err != nil {
return
}

return db.chain.UpdatePeers(peers)
}

// Query defines database query interface.
func (db *Database) Query(request *types.Request) (response *types.Response, err error) {
// Just need to verify signature in db.saveAck
Expand Down
2 changes: 0 additions & 2 deletions worker/db_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -367,8 +367,6 @@ func TestSingleDatabase(t *testing.T) {
// test update peers
peers, err = getPeers(2)
So(err, ShouldBeNil)
err = db.UpdatePeers(peers)
So(err, ShouldBeNil)
})

Reset(func() {
Expand Down
13 changes: 0 additions & 13 deletions worker/dbms.go
Original file line number Diff line number Diff line change
Expand Up @@ -504,19 +504,6 @@ func (dbms *DBMS) Drop(dbID proto.DatabaseID) (err error) {
return dbms.removeMeta(dbID)
}

// Update apply the new peers config to dbms.
func (dbms *DBMS) Update(instance *types.ServiceInstance) (err error) {
var db *Database
var exists bool

if db, exists = dbms.getMeta(instance.DatabaseID); !exists {
return ErrNotExists
}

// update peers
return db.UpdatePeers(instance.Peers)
}

// Query handles query request in dbms.
func (dbms *DBMS) Query(req *types.Request) (res *types.Response, err error) {
var db *Database
Expand Down
2 changes: 0 additions & 2 deletions worker/dbms_rpc.go