(ctx context.Context, wb twopc.WriteBatch)
| 323 | } |
| 324 | |
| 325 | func (r *RaftNode) Rollback(ctx context.Context, wb twopc.WriteBatch) (err error) { |
| 326 | log.Debugf("executing 2pc: addr = %s, phase = rollback", r.addr) |
| 327 | defer log.Debugf("2pc result: addr = %s, phase = rollback, result = %v", r.addr, err) |
| 328 | |
| 329 | rwb, ok := wb.(*RaftWriteBatchReq) |
| 330 | |
| 331 | if !ok { |
| 332 | err = errors.New("unexpected WriteBatch type") |
| 333 | return err |
| 334 | } |
| 335 | |
| 336 | cipher := etls.NewCipher([]byte(pass)) |
| 337 | conn, err := etls.Dial("tcp", r.addr, cipher) |
| 338 | |
| 339 | if err != nil { |
| 340 | return err |
| 341 | } |
| 342 | |
| 343 | muxconn, err := mux.NewOneOffMuxConn(conn) |
| 344 | if err != nil { |
| 345 | return |
| 346 | } |
| 347 | |
| 348 | client := rpc.NewClient(muxconn) |
| 349 | d, ok := ctx.Deadline() |
| 350 | |
| 351 | if ok { |
| 352 | err = muxconn.SetDeadline(d) |
| 353 | |
| 354 | if err != nil { |
| 355 | return err |
| 356 | } |
| 357 | } |
| 358 | |
| 359 | resp := new(RaftRollbackResp) |
| 360 | err = client.Call("Raft.RPCRollback", &RaftRollbackReq{TxID: rwb.TxID}, resp) |
| 361 | |
| 362 | if err != nil { |
| 363 | return err |
| 364 | } |
| 365 | |
| 366 | if resp.ErrCode > 0 { |
| 367 | err = fmt.Errorf(resp.ErrString) |
| 368 | } |
| 369 | |
| 370 | return err |
| 371 | } |
| 372 | |
| 373 | func testSetup() (err error) { |
| 374 | log.SetLevel(log.DebugLevel) |
nothing calls this directly
no test coverage detected