(ctx context.Context, tm *timer.Timer, prepareLog *kt.Log)
| 100 | } |
| 101 | |
| 102 | func (r *Runtime) doLeaderRollback(ctx context.Context, tm *timer.Timer, prepareLog *kt.Log) { |
| 103 | defer trace.StartRegion(ctx, "doLeaderRollback").End() |
| 104 | // rollback local |
| 105 | var rollbackLog *kt.Log |
| 106 | var logErr error |
| 107 | if rollbackLog, logErr = r.leaderLogRollback(ctx, tm, prepareLog.Index); logErr != nil { |
| 108 | // serve error, construct rollback log failed, internal error |
| 109 | // TODO(): CHANGE LEADER |
| 110 | return |
| 111 | } |
| 112 | |
| 113 | defer trace.StartRegion(ctx, "followerRollback").End() |
| 114 | |
| 115 | // async send rollback to all nodes |
| 116 | r.applyRPC(rollbackLog, 0) |
| 117 | |
| 118 | tm.Add("follower_rollback") |
| 119 | } |
| 120 | |
| 121 | func (r *Runtime) leaderLogPrepare(ctx context.Context, tm *timer.Timer, data []byte) (*kt.Log, error) { |
| 122 | defer trace.StartRegion(ctx, "leaderLogPrepare").End() |
no test coverage detected