(boolean isMove, SplitPut r, RocksIterator it, long serialNo)
| 650 | } |
| 651 | |
| 652 | public long splitPutNext(boolean isMove, SplitPut r, RocksIterator it, long serialNo) { |
| 653 | try { |
| 654 | var hasError = r.getResultCode() != 0; |
| 655 | if (!raft.isLeader() || dbh2Splitting == null || serialNo != splitSerialNo) { |
| 656 | it.close(); |
| 657 | if (hasError) |
| 658 | startSplit(isMove); |
| 659 | return 0; |
| 660 | } |
| 661 | |
| 662 | if (hasError) { |
| 663 | startSplit(isMove); |
| 664 | return 0; |
| 665 | } |
| 666 | |
| 667 | var puts = buildSplitPut(it); |
| 668 | if (puts.Argument.getPuts().isEmpty()) { |
| 669 | it.close(); |
| 670 | |
| 671 | blockPrepareUntilNoTransaction(isMove); |
| 672 | return 0; // split done. |
| 673 | } |
| 674 | |
| 675 | dbh2Splitting.getRaftAgent().send(puts, (p) -> splitPutNext(isMove, (SplitPut)p, it, serialNo)); |
| 676 | } catch (Exception ex) { |
| 677 | logger.error("isMove={}", isMove, ex); |
| 678 | } |
| 679 | return 0; |
| 680 | } |
| 681 | |
| 682 | private void blockPrepareUntilNoTransaction(boolean isMove) { |
| 683 | var meta = stateMachine.getBucket().getBucketMeta(); |
no test coverage detected