MCPcopy Index your code
hub / github.com/CovenantSQL/CovenantSQL / doLeaderPrepare

Method doLeaderPrepare

kayak/processes.go:30–79  ·  view source on GitHub ↗
(ctx context.Context, tm *timer.Timer, req interface{})

Source from the content-addressed store, hash-verified

28)
29
30func (r *Runtime) doLeaderPrepare(ctx context.Context, tm *timer.Timer, req interface{}) (prepareLog *kt.Log, err error) {
31 defer trace.StartRegion(ctx, "doLeaderPrepare").End()
32
33 // check prepare in leader
34 if err = r.doCheck(ctx, req); err != nil {
35 err = errors.Wrap(err, "leader verify log")
36 return
37 }
38
39 tm.Add("leader_check")
40
41 // encode request
42 var encBuf []byte
43 if encBuf, err = r.doEncodePayload(ctx, req); err != nil {
44 err = errors.Wrap(err, "encode kayak payload failed")
45 return
46 }
47
48 tm.Add("leader_encode_payload")
49
50 // create prepare request
51 if prepareLog, err = r.leaderLogPrepare(ctx, tm, encBuf); err != nil {
52 // serve error, leader could not write logs, change leader in block producer
53 // TODO(): CHANGE LEADER
54 return
55 }
56
57 // Leader pending map handling.
58 r.markPendingPrepare(ctx, prepareLog.Index)
59
60 tm.Add("leader_prepare")
61
62 // send prepare to all nodes
63 prepareTracker := r.applyRPC(prepareLog, r.minPreparedFollowers)
64 prepareCtx, prepareCtxCancelFunc := context.WithTimeout(ctx, r.prepareTimeout)
65 defer prepareCtxCancelFunc()
66 prepareErrors, prepareDone, _ := prepareTracker.get(prepareCtx)
67 if !prepareDone {
68 // timeout, rollback
69 err = kt.ErrPrepareTimeout
70 return
71 }
72
73 tm.Add("follower_prepare")
74
75 // collect errors
76 err = r.errorSummary(prepareErrors)
77
78 return
79}
80
81func (r *Runtime) doLeaderCommit(ctx context.Context, tm *timer.Timer, prepareLog *kt.Log, req interface{}) (
82 result interface{}, logIndex uint64, err error) {

Callers 1

ApplyMethod · 0.95

Calls 10

doCheckMethod · 0.95
doEncodePayloadMethod · 0.95
leaderLogPrepareMethod · 0.95
markPendingPrepareMethod · 0.95
applyRPCMethod · 0.95
errorSummaryMethod · 0.95
StartRegionFunction · 0.92
EndMethod · 0.45
AddMethod · 0.45
getMethod · 0.45

Tested by

no test coverage detected