mirror of
https://github.com/didi/KnowStreaming.git
synced 2026-01-08 07:32:11 +08:00
[fix]Repair that preferredReplicaElection is not called as expected
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
package com.xiaojukeji.know.streaming.km.common.bean.entity.reassign;
|
package com.xiaojukeji.know.streaming.km.common.bean.entity.reassign;
|
||||||
|
|
||||||
|
import com.xiaojukeji.know.streaming.km.common.utils.CommonUtils;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import org.apache.kafka.common.TopicPartition;
|
import org.apache.kafka.common.TopicPartition;
|
||||||
|
|
||||||
@@ -19,4 +20,10 @@ public class ReassignResult {
|
|||||||
|
|
||||||
return state.isDone();
|
return state.isDone();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean checkPreferredReplicaElectionUnNeed(String reassignBrokerIds, String originalBrokerIds) {
|
||||||
|
Integer targetLeader = CommonUtils.string2IntList(reassignBrokerIds).get(0);
|
||||||
|
Integer originalLeader = CommonUtils.string2IntList(originalBrokerIds).get(0);
|
||||||
|
return originalLeader.equals(targetLeader);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -384,18 +384,20 @@ public class ReassignJobServiceImpl implements ReassignJobService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// 更新任务状态
|
// 更新任务状态
|
||||||
Result<Void> result = this.checkAndSetSuccessIfFinished(jobPO, rrr.getData());
|
rv = this.checkAndSetSuccessIfFinished(jobPO, rrr.getData());
|
||||||
if (!result.hasData()){
|
if (rv.successful()){
|
||||||
return Result.buildFromIgnoreData(result);
|
return Result.buildFromIgnoreData(rv);
|
||||||
}
|
}
|
||||||
|
|
||||||
//已完成
|
//已完成
|
||||||
rv = this.preferredReplicaElection(jobId);
|
rv = this.preferredReplicaElection(jobId);
|
||||||
|
|
||||||
|
|
||||||
if (rv.failed()){
|
if (rv.failed()){
|
||||||
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
TransactionAspectSupport.currentTransactionStatus().setRollbackOnly();
|
||||||
}
|
}
|
||||||
|
|
||||||
return Result.buildSuc();
|
return Result.buildFromIgnoreData(rv);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -562,8 +564,14 @@ public class ReassignJobServiceImpl implements ReassignJobService {
|
|||||||
long now = System.currentTimeMillis();
|
long now = System.currentTimeMillis();
|
||||||
|
|
||||||
boolean existNotFinished = false;
|
boolean existNotFinished = false;
|
||||||
|
boolean unNeedPreferredReplicaElection = true;
|
||||||
List<ReassignSubJobPO> subJobPOList = this.getSubJobsByJobId(jobPO.getId());
|
List<ReassignSubJobPO> subJobPOList = this.getSubJobsByJobId(jobPO.getId());
|
||||||
|
|
||||||
for (ReassignSubJobPO subJobPO: subJobPOList) {
|
for (ReassignSubJobPO subJobPO: subJobPOList) {
|
||||||
|
if (!reassignmentResult.checkPreferredReplicaElectionUnNeed(subJobPO.getReassignBrokerIds(),subJobPO.getOriginalBrokerIds())) {
|
||||||
|
unNeedPreferredReplicaElection = false;
|
||||||
|
}
|
||||||
|
|
||||||
if (!reassignmentResult.checkPartitionFinished(subJobPO.getTopicName(), subJobPO.getPartitionId())) {
|
if (!reassignmentResult.checkPartitionFinished(subJobPO.getTopicName(), subJobPO.getPartitionId())) {
|
||||||
existNotFinished = true;
|
existNotFinished = true;
|
||||||
continue;
|
continue;
|
||||||
@@ -587,7 +595,7 @@ public class ReassignJobServiceImpl implements ReassignJobService {
|
|||||||
reassignJobDAO.updateById(newJobPO);
|
reassignJobDAO.updateById(newJobPO);
|
||||||
}
|
}
|
||||||
|
|
||||||
return Result.buildSuc();
|
return Result.build(unNeedPreferredReplicaElection);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Result<List<ReassignSubJobPO>> setJobInRunning(ReassignJobPO jobPO) {
|
private Result<List<ReassignSubJobPO>> setJobInRunning(ReassignJobPO jobPO) {
|
||||||
|
|||||||
Reference in New Issue
Block a user