Commit implements kayak.types.Handler.Commit.
(rawReq interface{}, isLeader bool)
| 108 | |
| 109 | // Commit implements kayak.types.Handler.Commit. |
| 110 | func (db *Database) Commit(rawReq interface{}, isLeader bool) (result interface{}, err error) { |
| 111 | // convert query and check syntax |
| 112 | var ( |
| 113 | req *types.Request |
| 114 | response *types.Response |
| 115 | tracker *x.QueryTracker |
| 116 | ok bool |
| 117 | ) |
| 118 | if req, ok = rawReq.(*types.Request); !ok || req == nil { |
| 119 | err = errors.Wrap(ErrInvalidRequest, "invalid request payload") |
| 120 | return |
| 121 | } |
| 122 | |
| 123 | // reset context, commit should never be canceled |
| 124 | req.SetContext(context.Background()) |
| 125 | |
| 126 | // execute |
| 127 | if tracker, response, err = db.chain.Query(req, isLeader); err != nil { |
| 128 | return |
| 129 | } |
| 130 | result = &TrackerAndResponse{ |
| 131 | Tracker: tracker, |
| 132 | Response: response, |
| 133 | } |
| 134 | return |
| 135 | } |
| 136 | |
| 137 | func (db *Database) recordSequence(connID uint64, seqNo uint64) { |
| 138 | db.connSeqs.Store(connID, seqNo) |
nothing calls this directly
no test coverage detected