This is an automated email from the ASF dual-hosted git repository. yiguolei pushed a commit to branch branch-2.1 in repository https://gitbox.apache.org/repos/asf/doris.git
commit c8a92b82ccd71ad8a60b98bac0b04c13a1f0282c Author: walter <w41te...@gmail.com> AuthorDate: Thu Apr 18 17:06:31 2024 +0800 [fix](restore) Reset index id for MaterializedIndexMeta (#33831) --- .../org/apache/doris/catalog/MaterializedIndexMeta.java | 4 ++++ .../src/main/java/org/apache/doris/catalog/OlapTable.java | 14 +++++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/MaterializedIndexMeta.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/MaterializedIndexMeta.java index df682eee921..1e6f4fa695a 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/MaterializedIndexMeta.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/MaterializedIndexMeta.java @@ -122,6 +122,10 @@ public class MaterializedIndexMeta implements Writable, GsonPostProcessable { return indexId; } + public void resetIndexIdForRestore(long id) { + indexId = id; + } + public KeysType getKeysType() { return keysType; } diff --git a/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java b/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java index 73cbbf84aa3..a38c749e109 100644 --- a/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java +++ b/fe/fe-core/src/main/java/org/apache/doris/catalog/OlapTable.java @@ -591,7 +591,9 @@ public class OlapTable extends Table implements MTMVRelatedTableIf { // base index baseIndexId = newIdxId; } - indexIdToMeta.put(newIdxId, origIdxIdToMeta.get(entry.getKey())); + MaterializedIndexMeta indexMeta = origIdxIdToMeta.get(entry.getKey()); + indexMeta.resetIndexIdForRestore(newIdxId); + indexIdToMeta.put(newIdxId, indexMeta); indexNameToId.put(entry.getValue(), newIdxId); } @@ -1530,6 +1532,16 @@ public class OlapTable extends Table implements MTMVRelatedTableIf { this.indexNameToId.put(indexName, indexId); MaterializedIndexMeta indexMeta = MaterializedIndexMeta.read(in); indexIdToMeta.put(indexId, indexMeta); + + // HACK: the index id in MaterializedIndexMeta is not equals to the index id + // saved in OlapTable, because the table restore from snapshot is not reset + // the MaterializedIndexMeta correctly. + if (indexMeta.getIndexId() != indexId) { + LOG.warn("HACK: the index id {} in materialized index meta of {} is not equals" + + " to the index saved in table {} ({}), reset it to {}", + indexMeta.getIndexId(), indexName, name, id, indexId); + indexMeta.resetIndexIdForRestore(indexId); + } } // partition and distribution info --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@doris.apache.org For additional commands, e-mail: commits-h...@doris.apache.org