[CARBONDATA-2119] Fixed deserialization issues for carbonLoadModel Problem: Load model was not getting de-serialized in the executor due to which 2 different carbon table objects were being created. Solution: Reconstruct carbonTable from tableInfo if not already created.
This closes #1911 Project: http://git-wip-us.apache.org/repos/asf/carbondata/repo Commit: http://git-wip-us.apache.org/repos/asf/carbondata/commit/54b7db51 Tree: http://git-wip-us.apache.org/repos/asf/carbondata/tree/54b7db51 Diff: http://git-wip-us.apache.org/repos/asf/carbondata/diff/54b7db51 Branch: refs/heads/branch-1.3 Commit: 54b7db51906340d6d7b417058f9665731fa51a21 Parents: a7bcc76 Author: kunal642 <[email protected]> Authored: Fri Feb 2 17:37:51 2018 +0530 Committer: ravipesala <[email protected]> Committed: Sat Feb 3 22:02:54 2018 +0530 ---------------------------------------------------------------------- .../core/metadata/schema/table/CarbonTable.java | 2 +- .../processing/loading/model/CarbonDataLoadSchema.java | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/carbondata/blob/54b7db51/core/src/main/java/org/apache/carbondata/core/metadata/schema/table/CarbonTable.java ---------------------------------------------------------------------- diff --git a/core/src/main/java/org/apache/carbondata/core/metadata/schema/table/CarbonTable.java b/core/src/main/java/org/apache/carbondata/core/metadata/schema/table/CarbonTable.java index 4bb0d20..09ff440 100644 --- a/core/src/main/java/org/apache/carbondata/core/metadata/schema/table/CarbonTable.java +++ b/core/src/main/java/org/apache/carbondata/core/metadata/schema/table/CarbonTable.java @@ -141,7 +141,7 @@ public class CarbonTable implements Serializable { * * @param tableInfo */ - private static void updateTableInfo(TableInfo tableInfo) { + public static void updateTableInfo(TableInfo tableInfo) { List<DataMapSchema> dataMapSchemas = new ArrayList<>(); for (DataMapSchema dataMapSchema : tableInfo.getDataMapSchemaList()) { DataMapSchema newDataMapSchema = DataMapSchemaFactory.INSTANCE http://git-wip-us.apache.org/repos/asf/carbondata/blob/54b7db51/processing/src/main/java/org/apache/carbondata/processing/loading/model/CarbonDataLoadSchema.java ---------------------------------------------------------------------- diff --git a/processing/src/main/java/org/apache/carbondata/processing/loading/model/CarbonDataLoadSchema.java b/processing/src/main/java/org/apache/carbondata/processing/loading/model/CarbonDataLoadSchema.java index d7aa103..a9d7bd8 100644 --- a/processing/src/main/java/org/apache/carbondata/processing/loading/model/CarbonDataLoadSchema.java +++ b/processing/src/main/java/org/apache/carbondata/processing/loading/model/CarbonDataLoadSchema.java @@ -37,6 +37,11 @@ public class CarbonDataLoadSchema implements Serializable { private CarbonTable carbonTable; /** + * Used to determine if the dataTypes have already been updated or not. + */ + private transient boolean updatedDataTypes; + + /** * CarbonDataLoadSchema constructor which takes CarbonTable * * @param carbonTable @@ -51,7 +56,11 @@ public class CarbonDataLoadSchema implements Serializable { * @return carbonTable */ public CarbonTable getCarbonTable() { + if (!updatedDataTypes) { + CarbonTable.updateTableInfo(carbonTable.getTableInfo()); + updatedDataTypes = true; + } return carbonTable; } -} +} \ No newline at end of file
