Skip to content

Commit 4319de2

Browse files
authored
Merge pull request #1265 from datastax/SPARKC-615-2.5
SPARKC-615 temp workaround for inconsistent C* versioning
2 parents bea1119 + b101aa9 commit 4319de2

File tree

3 files changed

+25
-6
lines changed

3 files changed

+25
-6
lines changed

connector/src/main/scala/com/datastax/spark/connector/cql/CassandraConnector.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import com.datastax.spark.connector.types.TypeAdapters.{ValueByNameAdapter, Valu
1010
import com.datastax.spark.connector.types.{NullableTypeConverter, TypeConverter}
1111
import com.datastax.spark.connector.util.ConfigCheck.ConnectorConfigurationException
1212
import com.datastax.spark.connector.util.DriverUtil.toAddress
13-
import com.datastax.spark.connector.util.{Logging, SerialShutdownHooks}
13+
import com.datastax.spark.connector.util.{DriverUtil, Logging, SerialShutdownHooks}
1414
import org.apache.spark.sql.catalyst.expressions.GenericRowWithSchema
1515
import org.apache.spark.{SparkConf, SparkContext, SparkFiles}
1616

@@ -71,7 +71,7 @@ class CassandraConnector(val conf: CassandraConnectorConf)
7171
.values
7272
.asScala
7373
.filter(_.getDistance == NodeDistance.LOCAL)
74-
.flatMap(node => Option(node.getBroadcastAddress.orElse(null)))
74+
.flatMap(DriverUtil.toAddress)
7575
.toSet
7676
}
7777

test-support/src/main/scala/com/datastax/spark/connector/ccm/CcmConfig.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -163,9 +163,9 @@ object CcmConfig {
163163
/** Stores the given resource in `/tmp/ccm_resources` directory. Stored file name is prefixed with the given prefix */
164164
def storeResource(prefix: String, resource: String): String = {
165165
val resourceName = Paths.get(resource).getFileName.toString
166-
var file = Paths.get("/tmp/ccm_resources").resolve(s"${prefix}_${resourceName}").toFile
166+
val file = Paths.get("/tmp/ccm_resources").resolve(s"${prefix}_${resourceName}").toFile
167167
file.getParentFile.mkdirs()
168168

169-
store(resource, file).getAbsolutePath.toString
169+
store(resource, file).getAbsolutePath
170170
}
171171
}

test-support/src/main/scala/com/datastax/spark/connector/ccm/mode/StandardModeExecutor.scala

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,12 +37,26 @@ private[mode] trait DefaultExecutor extends ClusterModeExecutor {
3737
throw new IllegalStateException(s"Unable to complete function in $timeoutInSeconds: $hint")
3838
}
3939

40+
/**
41+
* Remove this once C* 4.0.0 is released.
42+
*
43+
* This is a workaround that allows running it:test against 4.0.0-beta1. This version of C* is published as
44+
* 4.0-beta1 which breaks versioning convention used in integration tests.
45+
*/
46+
private def adjustCassandraBetaVersion(version: String): String = {
47+
val beta = "4.0.0-beta(\\d+)".r
48+
version match {
49+
case beta(betaNo) => s"4.0-beta$betaNo"
50+
case other => other
51+
}
52+
}
53+
4054
override def create(clusterName: String): Unit = {
4155
if (created.compareAndSet(false, true)) {
4256
val options = config.installDirectory
4357
.map(dir => config.createOptions :+ s"--install-dir=${new File(dir).getAbsolutePath}")
4458
.orElse(config.installBranch.map(branch => config.createOptions :+ s"-v git:${branch.trim().replaceAll("\"", "")}"))
45-
.getOrElse(config.createOptions :+ s"-v ${config.version}")
59+
.getOrElse(config.createOptions :+ s"-v ${adjustCassandraBetaVersion(config.version.toString)}")
4660

4761
val dseFlag = if (config.dseEnabled) Some("--dse") else None
4862

@@ -53,7 +67,7 @@ private[mode] trait DefaultExecutor extends ClusterModeExecutor {
5367
sys.props.get("user.home").get,
5468
".ccm",
5569
"repository",
56-
config.getDseVersion.getOrElse(config.getCassandraVersion).toString)
70+
adjustCassandraBetaVersion(config.getDseVersion.getOrElse(config.getCassandraVersion).toString))
5771

5872
if (Files.exists(repositoryDir)) {
5973
logger.info(s"Found cached repository dir: $repositoryDir")
@@ -95,6 +109,11 @@ private[mode] trait DefaultExecutor extends ClusterModeExecutor {
95109
if (config.dseWorkloads.nonEmpty) {
96110
execute("setworkload", config.dseWorkloads.mkString(","))
97111
}
112+
} else {
113+
// C* 4.0.0 has materialized views disabled by default
114+
if (config.getCassandraVersion.compareTo(Version.parse("4.0-beta1")) >= 0) {
115+
execute("updateconf", "enable_materialized_views:true")
116+
}
98117
}
99118
}
100119
}

0 commit comments

Comments
 (0)