Repository: carbondata Updated Branches: refs/heads/master 3ea2a1dd5 -> 0f4ced9fd
[CARBONDATA-2394] Setting segments in thread local space but was not getting reflected in the driver is fixed Problem : from multiple thread if we are setting any property to thread level. It is affecting other also. Analysis : information in carbonSessionInfo object is being corrupted inside CarbonEnv. so if new thread may be impacted by prev one. Solution : create a new object and in set the user specified values in thread/session params to new object. This closes #2223 Project: http://git-wip-us.apache.org/repos/asf/carbondata/repo Commit: http://git-wip-us.apache.org/repos/asf/carbondata/commit/0f4ced9f Tree: http://git-wip-us.apache.org/repos/asf/carbondata/tree/0f4ced9f Diff: http://git-wip-us.apache.org/repos/asf/carbondata/diff/0f4ced9f Branch: refs/heads/master Commit: 0f4ced9fd539be62e5eb3daccf9d1da90a34f567 Parents: 3ea2a1d Author: rahulforallp <[email protected]> Authored: Tue Apr 24 18:08:41 2018 +0530 Committer: kunal642 <[email protected]> Committed: Mon Apr 30 18:38:40 2018 +0530 ---------------------------------------------------------------------- .../src/main/scala/org/apache/spark/sql/CarbonEnv.scala | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/carbondata/blob/0f4ced9f/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 977322b..2f23d77 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 @@ -91,10 +91,14 @@ class CarbonEnv { // update carbon session parameters , preserve thread parameters val currentThreadSesssionInfo = ThreadLocalSessionInfo.getCarbonSessionInfo carbonSessionInfo = new CarbonSessionInfo() + // We should not corrupt the information in carbonSessionInfo object which is at the + // session level. Instead create a new object and in that set the user specified values in + // thread/session params + val threadLevelCarbonSessionInfo = new CarbonSessionInfo() if (currentThreadSesssionInfo != null) { - carbonSessionInfo.setThreadParams(currentThreadSesssionInfo.getThreadParams) + threadLevelCarbonSessionInfo.setThreadParams(currentThreadSesssionInfo.getThreadParams) } - ThreadLocalSessionInfo.setCarbonSessionInfo(carbonSessionInfo) + ThreadLocalSessionInfo.setCarbonSessionInfo(threadLevelCarbonSessionInfo) val config = new CarbonSQLConf(sparkSession) if (sparkSession.conf.getOption(CarbonCommonConstants.ENABLE_UNSAFE_SORT).isEmpty) { config.addDefaultCarbonParams()
