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
Original file line number Diff line number Diff line change
Expand Up @@ -797,8 +797,8 @@ func (c *Chain) processBlocks(ctx context.Context) {
}
// Return all stashed blocks to pending channel
c.logEntryWithHeadState().WithFields(log.Fields{
"height": h,
"stashs": len(stash),
"height": h,
"stashes": len(stash),
}).Debug("read new height from channel")
if stash != nil {
wg.Add(1)
Expand Down Expand Up @@ -853,7 +853,7 @@ func (c *Chain) Stop() (err error) {
le.Debug("chain service and workers stopped")
// Close state
var ierr error
if ierr = c.st.Close(false); ierr != nil && err == nil {
if ierr = c.st.Close(false); ierr != nil {
err = ierr
}
le.WithError(ierr).Debug("chain state storage closed")
Expand Down Expand Up @@ -998,11 +998,6 @@ func (c *Chain) VerifyAndPushAckedQuery(ack *types.SignedAckHeader) (err error)
return c.pushAckedQuery(ack)
}

// UpdatePeers updates peer list of the sql-chain.
func (c *Chain) UpdatePeers(peers *proto.Peers) error {
return c.rt.updatePeers(peers)
}

// Query queries req from local chain state and returns the query results in resp.
func (c *Chain) Query(
req *types.Request, isLeader bool) (tracker *x.QueryTracker, resp *types.Response, err error,
Expand Down
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
Original file line number Diff line number Diff line change
Expand Up @@ -134,8 +134,6 @@ func (rpc *DBMSRPCService) Deploy(req *types.UpdateService, _ *types.UpdateServi
switch req.Header.Op {
case types.CreateDB:
err = rpc.dbms.Create(&req.Header.Instance, true)
case types.UpdateDB:
err = rpc.dbms.Update(&req.Header.Instance)
case types.DropDB:
err = rpc.dbms.Drop(req.Header.Instance.DatabaseID)
}
Expand Down