[branch-2.1] Pick "[Fix](autoinc) try fix concurrent load problem with auto inc column #36421" (#37027)
## Proposed changes pick https://github.com/apache/doris/pull/36421
This commit is contained in:
@ -40,7 +40,7 @@ public class AutoIncrementGenerator implements Writable, GsonPostProcessable {
|
||||
|
||||
public static final long NEXT_ID_INIT_VALUE = 1;
|
||||
// _MIN_BATCH_SIZE = 4064 in load task
|
||||
private static final long BATCH_ID_INTERVAL = 50000;
|
||||
private static final long BATCH_ID_INTERVAL = 500000;
|
||||
|
||||
@SerializedName(value = "dbId")
|
||||
private Long dbId;
|
||||
@ -48,7 +48,6 @@ public class AutoIncrementGenerator implements Writable, GsonPostProcessable {
|
||||
private Long tableId;
|
||||
@SerializedName(value = "columnId")
|
||||
private Long columnId;
|
||||
@SerializedName(value = "nextId")
|
||||
private long nextId;
|
||||
@SerializedName(value = "batchEndId")
|
||||
private long batchEndId;
|
||||
@ -86,10 +85,10 @@ public class AutoIncrementGenerator implements Writable, GsonPostProcessable {
|
||||
long endId = startId + length;
|
||||
nextId = startId + length;
|
||||
if (endId > batchEndId) {
|
||||
batchEndId = (endId / BATCH_ID_INTERVAL + 1) * BATCH_ID_INTERVAL;
|
||||
Preconditions.checkState(editLog != null);
|
||||
AutoIncrementIdUpdateLog info = new AutoIncrementIdUpdateLog(dbId, tableId, columnId, batchEndId);
|
||||
editLog.logUpdateAutoIncrementId(info);
|
||||
batchEndId = (endId / BATCH_ID_INTERVAL + 1) * BATCH_ID_INTERVAL;
|
||||
}
|
||||
LOG.info("[getAutoIncrementRange result][{}, {}]", startId, length);
|
||||
return Pair.of(startId, length);
|
||||
|
||||
@ -2769,6 +2769,16 @@ public class FrontendServiceImpl implements FrontendService.Iface {
|
||||
TAutoIncrementRangeResult result = new TAutoIncrementRangeResult();
|
||||
TStatus status = new TStatus(TStatusCode.OK);
|
||||
result.setStatus(status);
|
||||
|
||||
if (!Env.getCurrentEnv().isMaster()) {
|
||||
status.setStatusCode(TStatusCode.NOT_MASTER);
|
||||
status.addToErrorMsgs(NOT_MASTER_ERR_MSG);
|
||||
result.setMasterAddress(getMasterAddress());
|
||||
LOG.error("failed to getAutoIncrementRange:{}, request:{}, backend:{}",
|
||||
NOT_MASTER_ERR_MSG, request, getClientAddrAsString());
|
||||
return result;
|
||||
}
|
||||
|
||||
try {
|
||||
Env env = Env.getCurrentEnv();
|
||||
Database db = env.getInternalCatalog().getDbOrMetaException(request.getDbId());
|
||||
|
||||
Reference in New Issue
Block a user