This is an automated email from the ASF dual-hosted git repository. yiguolei pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/doris.git
The following commit(s) were added to refs/heads/master by this push: new 49395390be [bugfix](metareader) meta reader could not load image (#16148) 49395390be is described below commit 49395390be58bbfeed862f2dc5735fb45de08dbb Author: yiguolei <676222...@qq.com> AuthorDate: Sat Jan 28 14:22:18 2023 +0800 [bugfix](metareader) meta reader could not load image (#16148) This bug is introduced by PR #16009. Co-authored-by: yiguolei <yiguo...@gmail.com> --- .../main/java/org/apache/doris/catalog/Env.java | 57 ++++++++++++++++++++++ .../doris/persist/meta/MetaPersistMethod.java | 6 +++ .../doris/persist/meta/PersistMetaModules.java | 2 +- 3 files changed, 64 insertions(+), 1 deletion(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java index 0a238e9dbd..94b809d00d 100755 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/Env.java @@ -149,6 +149,7 @@ import org.apache.doris.load.ExportChecker; import org.apache.doris.load.ExportJob; import org.apache.doris.load.ExportMgr; import org.apache.doris.load.Load; +import org.apache.doris.load.LoadErrorHub; import org.apache.doris.load.StreamLoadRecordMgr; import org.apache.doris.load.loadv2.LoadEtlChecker; import org.apache.doris.load.loadv2.LoadJobScheduler; @@ -1711,6 +1712,62 @@ public class Env { return getInternalCatalog().loadDb(dis, checksum); } + public long saveLoadJob(CountingDataOutputStream dos, long checksum) throws IOException { + // 1. save load.dbToLoadJob, force set to 0 since there should be none load jobs + int jobSize = 0; + checksum ^= jobSize; + dos.writeInt(jobSize); + + // 2. save delete jobs + // delete jobs are moved to DeleteHandler. So here we just set job size as 0. + jobSize = 0; + checksum ^= jobSize; + dos.writeInt(jobSize); + + // 3. load error hub info + LoadErrorHub.Param param = load.getLoadErrorHubInfo(); + param.write(dos); + + // 4. save delete load job info + // delete jobs are moved to DeleteHandler. So here we just set job size as 0. + int deleteJobSize = 0; + checksum ^= deleteJobSize; + dos.writeInt(deleteJobSize); + return checksum; + } + + public long loadLoadJob(DataInputStream dis, long checksum) throws IOException, DdlException { + // load jobs + int jobSize = dis.readInt(); + long newChecksum = checksum ^ jobSize; + + if (jobSize > 0) { + LOG.warn("there should be no load jobs, please rollback to 1.2.x and check if there are hadoop load jobs"); + throw new RuntimeException("there should be no load jobs, please rollback to 1.2.x " + + "and check if there are hadoop load jobs"); + } + + // delete jobs + // Delete job has been moved to DeleteHandler. Here the jobSize is always 0, we need do nothing. + jobSize = dis.readInt(); + Preconditions.checkState(jobSize == 0, jobSize); + newChecksum ^= jobSize; + + // load error hub info + LoadErrorHub.Param param = new LoadErrorHub.Param(); + param.readFields(dis); + load.setLoadErrorHubInfo(param); + + // 4. load delete jobs + // Delete job has been moved to DeleteHandler. Here the jobSize is always 0, we need do nothing. + int deleteJobSize = dis.readInt(); + Preconditions.checkState(deleteJobSize == 0, deleteJobSize); + newChecksum ^= deleteJobSize; + + LOG.info("finished replay loadJob from image"); + return newChecksum; + } + public long loadExportJob(DataInputStream dis, long checksum) throws IOException, DdlException { long curTime = System.currentTimeMillis(); long newChecksum = checksum; diff --git a/fe/fe-core/src/main/java/org/apache/doris/persist/meta/MetaPersistMethod.java b/fe/fe-core/src/main/java/org/apache/doris/persist/meta/MetaPersistMethod.java index 0198a6b20f..896aaae698 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/persist/meta/MetaPersistMethod.java +++ b/fe/fe-core/src/main/java/org/apache/doris/persist/meta/MetaPersistMethod.java @@ -71,6 +71,12 @@ public class MetaPersistMethod { metaPersistMethod.writeMethod = Env.class.getDeclaredMethod("saveDb", CountingDataOutputStream.class, long.class); break; + case "loadJob": + metaPersistMethod.readMethod = + Env.class.getDeclaredMethod("loadLoadJob", DataInputStream.class, long.class); + metaPersistMethod.writeMethod = + Env.class.getDeclaredMethod("saveLoadJob", CountingDataOutputStream.class, long.class); + break; case "alterJob": metaPersistMethod.readMethod = Env.class.getDeclaredMethod("loadAlterJob", DataInputStream.class, long.class); diff --git a/fe/fe-core/src/main/java/org/apache/doris/persist/meta/PersistMetaModules.java b/fe/fe-core/src/main/java/org/apache/doris/persist/meta/PersistMetaModules.java index 2074ffe539..e4db00bc8e 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/persist/meta/PersistMetaModules.java +++ b/fe/fe-core/src/main/java/org/apache/doris/persist/meta/PersistMetaModules.java @@ -35,7 +35,7 @@ public class PersistMetaModules { public static final List<MetaPersistMethod> MODULES_IN_ORDER; public static final ImmutableList<String> MODULE_NAMES = ImmutableList.of( - "masterInfo", "frontends", "backends", "datasource", "db", "alterJob", "recycleBin", + "masterInfo", "frontends", "backends", "datasource", "db", "loadJob", "alterJob", "recycleBin", "globalVariable", "cluster", "broker", "resources", "exportJob", "syncJob", "backupHandler", "paloAuth", "transactionState", "colocateTableIndex", "routineLoadJobs", "loadJobV2", "smallFiles", "plugins", "deleteHandler", "sqlBlockRule", "policy", "mtmvJobManager", "cooldownJob"); --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org