Code review comment: OK. I didn't notice the `TableProperty`,  Thanks for your reminder.

Code under review:
public void readFields(DataInput in) throws IOException {
        super.readFields(in);

        this.state = OlapTableState.valueOf(Text.readString(in));

        
        int counter = in.readInt();
        for (int i = 0; i < counter; i++) {
            String indexName = Text.readString(in);
            long indexId = in.readLong();
            this.indexNameToId.put(indexName, indexId);

            
            int colCount = in.readInt();
            List<Column> schema = new LinkedList<Column>();
            for (int j = 0; j < colCount; j++) {
                Column column = Column.read(in);
                schema.add(column);
            }
            this.indexIdToSchema.put(indexId, schema);

            
            TStorageType type = TStorageType.valueOf(Text.readString(in));
            this.indexIdToStorageType.put(indexId, type);

            
            this.indexIdToSchemaVersion.put(indexId, in.readInt());

            
            this.indexIdToSchemaHash.put(indexId, in.readInt());

            
            this.indexIdToShortKeyColumnCount.put(indexId, in.readShort());
        }

        
        if (Catalog.getCurrentCatalogJournalVersion() >= FeMetaVersion.VERSION_30) {
            keysType = KeysType.valueOf(Text.readString(in));
        } else {
            keysType = KeysType.AGG_KEYS;
        }

        PartitionType partType = PartitionType.valueOf(Text.readString(in));
        if (partType == PartitionType.UNPARTITIONED) {
            partitionInfo = SinglePartitionInfo.read(in);
        } else if (partType == PartitionType.RANGE) {
            partitionInfo = RangePartitionInfo.read(in);
        } else {
            throw new IOException("invalid partition type: " + partType);
        }

        DistributionInfoType distriType = DistributionInfoType.valueOf(Text.readString(in));
        if (distriType == DistributionInfoType.HASH) {
            defaultDistributionInfo = HashDistributionInfo.read(in);
        } else if (distriType == DistributionInfoType.RANDOM) {
            defaultDistributionInfo = RandomDistributionInfo.read(in);
        } else {
            throw new IOException("invalid distribution type: " + distriType);
        }

        int partitionCount = in.readInt();
        for (int i = 0; i < partitionCount; ++i) {
            Partition partition = Partition.read(in);
            idToPartition.put(partition.getId(), partition);
            nameToPartition.put(partition.getName(), partition);
        }

        if (Catalog.getCurrentCatalogJournalVersion() >= FeMetaVersion.VERSION_9) {
            if (in.readBoolean()) {
                int bfColumnCount = in.readInt();
                bfColumns = Sets.newHashSet();
                for (int i = 0; i < bfColumnCount; i++) {
                    bfColumns.add(Text.readString(in));
                }

                bfFpp = in.readDouble();
            }
        }

        if (Catalog.getCurrentCatalogJournalVersion() >= FeMetaVersion.VERSION_46) {
            if (in.readBoolean()) {
                colocateGroup = Text.readString(in);
            }
        }

        if (Catalog.getCurrentCatalogJournalVersion() >= FeMetaVersion.VERSION_57) {
            baseIndexId = in.readLong();
        } else {
            
            baseIndexId = id;
        }

        
        if (Catalog.getCurrentCatalogJournalVersion() >= FeMetaVersion.VERSION_70) {
            if (in.readBoolean()) {
                this.indexes = TableIndexes.read(in);
            }
        }
        
        if (Catalog.getCurrentCatalogJournalVersion() >= FeMetaVersion.VERSION_71) {
            if (in.readBoolean()) {
                tableProperty = TableProperty.read(in);
            }
        }
        
        if (Catalog.getCurrentCatalogJournalVersion() >= FeMetaVersion.VERSION_72) {
            isInMemory = in.readBoolean();
        }
    }

Line commented on: isInMemory = in.readBoolean();

Revised code:
public void readFields(DataInput in) throws IOException {
        super.readFields(in);

        this.state = OlapTableState.valueOf(Text.readString(in));

        
        int counter = in.readInt();
        for (int i = 0; i < counter; i++) {
            String indexName = Text.readString(in);
            long indexId = in.readLong();
            this.indexNameToId.put(indexName, indexId);

            
            int colCount = in.readInt();
            List<Column> schema = new LinkedList<Column>();
            for (int j = 0; j < colCount; j++) {
                Column column = Column.read(in);
                schema.add(column);
            }
            this.indexIdToSchema.put(indexId, schema);

            
            TStorageType type = TStorageType.valueOf(Text.readString(in));
            this.indexIdToStorageType.put(indexId, type);

            
            this.indexIdToSchemaVersion.put(indexId, in.readInt());

            
            this.indexIdToSchemaHash.put(indexId, in.readInt());

            
            this.indexIdToShortKeyColumnCount.put(indexId, in.readShort());
        }

        
        if (Catalog.getCurrentCatalogJournalVersion() >= FeMetaVersion.VERSION_30) {
            keysType = KeysType.valueOf(Text.readString(in));
        } else {
            keysType = KeysType.AGG_KEYS;
        }

        PartitionType partType = PartitionType.valueOf(Text.readString(in));
        if (partType == PartitionType.UNPARTITIONED) {
            partitionInfo = SinglePartitionInfo.read(in);
        } else if (partType == PartitionType.RANGE) {
            partitionInfo = RangePartitionInfo.read(in);
        } else {
            throw new IOException("invalid partition type: " + partType);
        }

        DistributionInfoType distriType = DistributionInfoType.valueOf(Text.readString(in));
        if (distriType == DistributionInfoType.HASH) {
            defaultDistributionInfo = HashDistributionInfo.read(in);
        } else if (distriType == DistributionInfoType.RANDOM) {
            defaultDistributionInfo = RandomDistributionInfo.read(in);
        } else {
            throw new IOException("invalid distribution type: " + distriType);
        }

        int partitionCount = in.readInt();
        for (int i = 0; i < partitionCount; ++i) {
            Partition partition = Partition.read(in);
            idToPartition.put(partition.getId(), partition);
            nameToPartition.put(partition.getName(), partition);
        }

        if (Catalog.getCurrentCatalogJournalVersion() >= FeMetaVersion.VERSION_9) {
            if (in.readBoolean()) {
                int bfColumnCount = in.readInt();
                bfColumns = Sets.newHashSet();
                for (int i = 0; i < bfColumnCount; i++) {
                    bfColumns.add(Text.readString(in));
                }

                bfFpp = in.readDouble();
            }
        }

        if (Catalog.getCurrentCatalogJournalVersion() >= FeMetaVersion.VERSION_46) {
            if (in.readBoolean()) {
                colocateGroup = Text.readString(in);
            }
        }

        if (Catalog.getCurrentCatalogJournalVersion() >= FeMetaVersion.VERSION_57) {
            baseIndexId = in.readLong();
        } else {
            
            baseIndexId = id;
        }

        
        if (Catalog.getCurrentCatalogJournalVersion() >= FeMetaVersion.VERSION_70) {
            if (in.readBoolean()) {
                this.indexes = TableIndexes.read(in);
            }
        }
        
        if (Catalog.getCurrentCatalogJournalVersion() >= FeMetaVersion.VERSION_71) {
            if (in.readBoolean()) {
                tableProperty = TableProperty.read(in);
            }
        }
    }