[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

Reply via email to