This is an automated email from the ASF dual-hosted git repository.

indhumuthumurugesh pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/carbondata.git


The following commit(s) were added to refs/heads/master by this push:
     new 1cab165  [CARBONDATA-3962] Fixed concurrent load failure with flat 
folder structure.
1cab165 is described below

commit 1cab165deb94a8ea1b2009442de92fb7b6bf05f3
Author: Nihal ojha <[email protected]>
AuthorDate: Tue Feb 16 13:01:34 2021 +0530

    [CARBONDATA-3962] Fixed concurrent load failure with flat folder structure.
    
    Why is this PR needed?
    PR #3904 has added the code to remove fact directory and because of this 
concurrent
    load fails with file not found exception.
    
    What changes were proposed in this PR?
    Reverted PR 3904.
    
    This closes #4905
---
 .../org/apache/carbondata/core/metadata/SegmentFileStore.java  | 10 +---------
 .../testsuite/flatfolder/FlatFolderTableLoadingTestCase.scala  |  8 +++-----
 2 files changed, 4 insertions(+), 14 deletions(-)

diff --git 
a/core/src/main/java/org/apache/carbondata/core/metadata/SegmentFileStore.java 
b/core/src/main/java/org/apache/carbondata/core/metadata/SegmentFileStore.java
index 9e8be0a..0a26b5e 100644
--- 
a/core/src/main/java/org/apache/carbondata/core/metadata/SegmentFileStore.java
+++ 
b/core/src/main/java/org/apache/carbondata/core/metadata/SegmentFileStore.java
@@ -443,22 +443,14 @@ public class SegmentFileStore {
   /**
    * Move the loaded data from source folder to destination folder.
    */
-  private static void moveFromTempFolder(String source, String dest) throws 
IOException {
+  private static void moveFromTempFolder(String source, String dest) {
 
     CarbonFile oldFolder = FileFactory.getCarbonFile(source);
     CarbonFile[] oldFiles = oldFolder.listFiles();
     for (CarbonFile file : oldFiles) {
       file.renameForce(dest + CarbonCommonConstants.FILE_SEPARATOR + 
file.getName());
     }
-    // delete the segment path at any cost at first, we we dont want to delete 
fact directory in
-    // case of multiple load scenario or update, delete scenario
     oldFolder.delete();
-    CarbonFile partDir = 
FileFactory.getCarbonFile(CarbonTablePath.getPartitionDir(dest));
-    // once last segment is processed(in case of update delete), delete the 
main fact directory
-    if (partDir.listFiles(false).size() == 0) {
-      CarbonFile oldFactDirPath = 
FileFactory.getCarbonFile(CarbonTablePath.getFactDir(dest));
-      oldFactDirPath.delete();
-    }
   }
 
   /**
diff --git 
a/integration/spark/src/test/scala/org/apache/carbondata/spark/testsuite/flatfolder/FlatFolderTableLoadingTestCase.scala
 
b/integration/spark/src/test/scala/org/apache/carbondata/spark/testsuite/flatfolder/FlatFolderTableLoadingTestCase.scala
index c6306c0..cde2f88 100644
--- 
a/integration/spark/src/test/scala/org/apache/carbondata/spark/testsuite/flatfolder/FlatFolderTableLoadingTestCase.scala
+++ 
b/integration/spark/src/test/scala/org/apache/carbondata/spark/testsuite/flatfolder/FlatFolderTableLoadingTestCase.scala
@@ -46,12 +46,10 @@ class FlatFolderTableLoadingTestCase extends QueryTest with 
BeforeAndAfterAll {
 
   }
 
-  def validateDataFiles(tableUniqueName: String): Unit = {
+  def validateDataFiles(tableUniqueName: String, segmentId: String): Unit = {
     val carbonTable = 
CarbonMetadata.getInstance().getCarbonTable(tableUniqueName)
     val files = FileFactory.getCarbonFile(carbonTable.getTablePath).listFiles()
-    val factPath = 
FileFactory.getCarbonFile(CarbonTablePath.getFactDir(carbonTable.getTablePath))
     assert(files.exists(_.getName.endsWith(CarbonTablePath.CARBON_DATA_EXT)))
-    assert(!factPath.exists())
   }
 
   test("data loading for flat folder with global sort") {
@@ -65,7 +63,7 @@ class FlatFolderTableLoadingTestCase extends QueryTest with 
BeforeAndAfterAll {
       """.stripMargin)
     sql(s"""LOAD DATA local inpath '$resourcesPath/data.csv' INTO TABLE 
flatfolder_gs OPTIONS('DELIMITER'= ',', 'QUOTECHAR'= '"')""")
 
-    validateDataFiles("default_flatfolder_gs")
+    validateDataFiles("default_flatfolder_gs", "0")
 
     checkAnswer(sql("select empno, empname, designation, doj, 
workgroupcategory, workgroupcategoryname, deptno, deptname, projectcode, 
projectjoindate, projectenddate, attendance, utilization, salary from 
flatfolder_gs order by empno"),
       sql("select  empno, empname, designation, doj, workgroupcategory, 
workgroupcategoryname, deptno, deptname, projectcode, projectjoindate, 
projectenddate, attendance, utilization, salary from originTable order by 
empno"))
@@ -83,7 +81,7 @@ class FlatFolderTableLoadingTestCase extends QueryTest with 
BeforeAndAfterAll {
       """.stripMargin)
     sql(s"""LOAD DATA local inpath '$resourcesPath/data.csv' INTO TABLE 
flatfolder OPTIONS('DELIMITER'= ',', 'QUOTECHAR'= '"')""")
 
-    validateDataFiles("default_flatfolder")
+    validateDataFiles("default_flatfolder", "0")
 
     checkAnswer(sql("select empno, empname, designation, doj, 
workgroupcategory, workgroupcategoryname, deptno, deptname, projectcode, 
projectjoindate, projectenddate, attendance, utilization, salary from 
flatfolder order by empno"),
       sql("select  empno, empname, designation, doj, workgroupcategory, 
workgroupcategoryname, deptno, deptname, projectcode, projectjoindate, 
projectenddate, attendance, utilization, salary from originTable order by 
empno"))

Reply via email to