Repository: carbondata
Updated Branches:
  refs/heads/master 6fd778ab1 -> 44e70d08e


[CARBONDATA-2117]Fixed Syncronization issue in CarbonEnv

Problem: When creating multiple session (100) session initialisation is failing 
with below error

java.lang.IllegalArgumentException: requirement failed: Config entry 
enable.unsafe.sort already registered!

Solution: Currently in CarbonEnv we are updating global configuration(shared) 
and location configuration in class level synchronized block. In case of 
multiple session class level lock will not work , need to add global level lock 
so only one thread will update the global configuration

This closes #1908


Project: http://git-wip-us.apache.org/repos/asf/carbondata/repo
Commit: http://git-wip-us.apache.org/repos/asf/carbondata/commit/44e70d08
Tree: http://git-wip-us.apache.org/repos/asf/carbondata/tree/44e70d08
Diff: http://git-wip-us.apache.org/repos/asf/carbondata/diff/44e70d08

Branch: refs/heads/master
Commit: 44e70d08e0c73e2c65e9a0d147cbbbe965aaf9f7
Parents: 6fd778a
Author: kumarvishal <kumarvishal.1...@gmail.com>
Authored: Thu Feb 1 23:13:54 2018 +0530
Committer: Jacky Li <jacky.li...@qq.com>
Committed: Sat Feb 3 17:36:40 2018 +0800

----------------------------------------------------------------------
 .../spark2/src/main/scala/org/apache/spark/sql/CarbonEnv.scala    | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/carbondata/blob/44e70d08/integration/spark2/src/main/scala/org/apache/spark/sql/CarbonEnv.scala
----------------------------------------------------------------------
diff --git 
a/integration/spark2/src/main/scala/org/apache/spark/sql/CarbonEnv.scala 
b/integration/spark2/src/main/scala/org/apache/spark/sql/CarbonEnv.scala
index 40035ce..6b12008 100644
--- a/integration/spark2/src/main/scala/org/apache/spark/sql/CarbonEnv.scala
+++ b/integration/spark2/src/main/scala/org/apache/spark/sql/CarbonEnv.scala
@@ -68,7 +68,8 @@ class CarbonEnv {
 
     // added for handling timeseries function like hour, minute, day , month , 
year
     sparkSession.udf.register("timeseries", new TimeSeriesFunction)
-    synchronized {
+    // acquiring global level lock so global configuration will be updated by 
only one thread
+    CarbonEnv.carbonEnvMap.synchronized {
       if (!initialized) {
         // update carbon session parameters , preserve thread parameters
         val currentThreadSesssionInfo = 
ThreadLocalSessionInfo.getCarbonSessionInfo

Reply via email to