Skip to content

Commit 2f672ad

Browse files
authored
Fix lateinit property not initialzed issue (#3512)
1 parent eb2dda7 commit 2f672ad

File tree

4 files changed

+29
-11
lines changed

4 files changed

+29
-11
lines changed

PluginsAndFeatures/azure-toolkit-for-intellij/src/com/microsoft/azure/hdinsight/spark/run/ArcadiaSparkBatchRunner.kt

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ package com.microsoft.azure.hdinsight.spark.run
2424

2525
import com.intellij.execution.ExecutionException
2626
import com.intellij.execution.configurations.RunProfile
27+
import com.intellij.execution.configurations.RuntimeConfigurationError
2728
import com.microsoft.azure.hdinsight.common.MessageInfoType
2829
import com.microsoft.azure.hdinsight.common.WasbUri
2930
import com.microsoft.azure.hdinsight.spark.common.*
@@ -32,10 +33,10 @@ import com.microsoft.azure.hdinsight.spark.run.configuration.ArcadiaSparkSubmitM
3233
import com.microsoft.azure.projectarcadia.common.ArcadiaSparkComputeManager
3334
import com.microsoft.azuretools.securestore.SecureStore
3435
import com.microsoft.azuretools.service.ServiceManager
36+
import org.apache.commons.lang3.exception.ExceptionUtils
3537
import rx.Observer
3638
import java.net.URI
37-
import java.util.AbstractMap
38-
import java.util.NoSuchElementException
39+
import java.util.*
3940

4041
class ArcadiaSparkBatchRunner : SparkBatchJobRunner() {
4142
override fun canRun(executorId: String, profile: RunProfile): Boolean {
@@ -50,7 +51,13 @@ class ArcadiaSparkBatchRunner : SparkBatchJobRunner() {
5051

5152
@Throws(ExecutionException::class)
5253
override fun buildSparkBatchJob(submitModel: SparkSubmitModel, ctrlSubject: Observer<AbstractMap.SimpleImmutableEntry<MessageInfoType, String>>): ISparkBatchJob {
53-
val arcadiaModel = submitModel as ArcadiaSparkSubmitModel
54+
val arcadiaModel = (submitModel as ArcadiaSparkSubmitModel).apply {
55+
if (sparkCompute == null || tenantId == null || sparkWorkspace == null) {
56+
log().warn("Arcadia Spark Compute is not selected. " +
57+
"spark compute: $sparkCompute, tenant id: $tenantId, spark workspace: $sparkWorkspace")
58+
throw ExecutionException("Arcadia Spark Compute is not selected")
59+
}
60+
}
5461
val submission = SparkBatchArcadiaSubmission(
5562
arcadiaModel.tenantId, arcadiaModel.sparkWorkspace, URI.create(arcadiaModel.livyUri))
5663

@@ -66,7 +73,7 @@ class ArcadiaSparkBatchRunner : SparkBatchJobRunner() {
6673
.first()
6774
} catch (ex: NoSuchElementException) {
6875
throw ExecutionException(
69-
"Can't find Arcadia spark compute (${arcadiaModel.sparkWorkspace}:${arcadiaModel.sparkCompute})"
76+
"Can't find Arcadia Spark Compute (${arcadiaModel.sparkWorkspace}:${arcadiaModel.sparkCompute})"
7077
+ " at tenant ${arcadiaModel.tenantId}.")
7178
}
7279

PluginsAndFeatures/azure-toolkit-for-intellij/src/com/microsoft/azure/hdinsight/spark/run/configuration/ArcadiaSparkConfiguration.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,4 +38,8 @@ class ArcadiaSparkConfiguration (name: String, val module: ArcadiaSparkConfigura
3838
override fun getSuggestedNamePrefix(): String {
3939
return "[Spark on Arcadia]"
4040
}
41+
42+
override fun getErrorMessageClusterNull(): String {
43+
return "The Spark Compute should be selected as the target for Spark application submission"
44+
}
4145
}

PluginsAndFeatures/azure-toolkit-for-intellij/src/com/microsoft/azure/hdinsight/spark/run/configuration/ArcadiaSparkSubmitModel.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,13 @@ import com.microsoft.azure.hdinsight.spark.common.SparkSubmitModel
2828

2929
class ArcadiaSparkSubmitModel(project: Project) : SparkSubmitModel(project) {
3030
@Attribute("livy_uri")
31-
lateinit var livyUri: String
31+
var livyUri: String? = null
3232
@Attribute("spark_workspace")
33-
lateinit var sparkWorkspace: String
33+
var sparkWorkspace: String? = null
3434
@Attribute("spark_compute")
35-
lateinit var sparkCompute: String
35+
var sparkCompute: String? = null
3636
@Attribute("tenant_id")
37-
lateinit var tenantId: String
37+
var tenantId: String? = null
3838

3939
override fun getSparkClusterTypeDisplayName(): String = "Arcadia Spark cluster"
4040
}

PluginsAndFeatures/azure-toolkit-for-intellij/src/com/microsoft/azure/projectarcadia/spark/console/ArcadiaSparkScalaLivyConsoleRunConfiguration.kt

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ import com.intellij.execution.runners.ExecutionEnvironment
3232
import com.intellij.execution.runners.ProgramRunner
3333
import com.intellij.openapi.project.Project
3434
import com.microsoft.azure.arcadia.sdk.common.livy.interactive.ArcadiaSparkSession
35+
import com.microsoft.azure.hdinsight.common.logger.ILogger
3536
import com.microsoft.azure.hdinsight.spark.console.SparkScalaConsoleBuilder
3637
import com.microsoft.azure.hdinsight.spark.console.SparkScalaLivyConsoleRunConfiguration
3738
import com.microsoft.azure.hdinsight.spark.console.SparkScalaLivyConsoleRunConfigurationFactory
@@ -48,7 +49,7 @@ class ArcadiaSparkScalaLivyConsoleRunConfiguration(project: Project,
4849
batchRunConfiguration: LivySparkBatchJobRunConfiguration?,
4950
name: String)
5051
: SparkScalaLivyConsoleRunConfiguration(
51-
project, configurationFactory, batchRunConfiguration, name) {
52+
project, configurationFactory, batchRunConfiguration, name), ILogger {
5253
override val runConfigurationTypeName: String = "Arcadia Spark Run Configuration"
5354

5455
override fun getState(executor: Executor, env: ExecutionEnvironment): RunProfileState? {
@@ -63,8 +64,14 @@ class ArcadiaSparkScalaLivyConsoleRunConfiguration(project: Project,
6364
}
6465

6566
override fun checkRunnerSettings(runner: ProgramRunner<*>, runnerSettings: RunnerSettings?, configurationPerRunnerSettings: ConfigurationPerRunnerSettings?) {
66-
val arcadiaModel = (submitModel as? ArcadiaSparkSubmitModel)
67-
?: throw RuntimeConfigurationError("Can't cast submitModel to ArcadiaSparkSubmitModel")
67+
val arcadiaModel = (submitModel as? ArcadiaSparkSubmitModel)?.apply {
68+
if (sparkCompute == null || tenantId == null || sparkWorkspace == null) {
69+
log().warn("Arcadia Spark Compute is not selected. " +
70+
"spark compute: $sparkCompute, tenant id: $tenantId, spark workspace: $sparkWorkspace")
71+
throw RuntimeConfigurationError("Arcadia Spark Compute is not selected")
72+
}
73+
}
74+
?: throw RuntimeConfigurationError("Can't cast submitModel to ArcadiaSparkSubmitModel")
6875

6976
cluster = try {
7077
ArcadiaSparkComputeManager.getInstance()

0 commit comments

Comments
 (0)