in core/src/main/scala/org/apache/pekko/persistence/cassandra/PluginSettings.scala [64:96]
def getReplicationStrategy(
strategy: String,
replicationFactor: Int,
dataCenterReplicationFactors: Seq[String]): String = {
def getDataCenterReplicationFactorList(dcrfList: Seq[String]): String = {
val result: Seq[String] = dcrfList match {
case null | Nil =>
throw new IllegalArgumentException(
"data-center-replication-factors cannot be empty when using NetworkTopologyStrategy.")
case dcrfs =>
dcrfs.map { dataCenterWithReplicationFactor =>
dataCenterWithReplicationFactor.split(":") match {
case Array(dataCenter, replicationFactor) =>
s"'$dataCenter':$replicationFactor"
case msg =>
throw new IllegalArgumentException(
s"A data-center-replication-factor must have the form [dataCenterName:replicationFactor] but was: $msg.")
}
}
}
result.mkString(",")
}
strategy.toLowerCase() match {
case "simplestrategy" =>
s"'SimpleStrategy','replication_factor':$replicationFactor"
case "networktopologystrategy" =>
s"'NetworkTopologyStrategy',${getDataCenterReplicationFactorList(dataCenterReplicationFactors)}"
case unknownStrategy =>
throw new IllegalArgumentException(s"$unknownStrategy as replication strategy is unknown and not supported.")
}
}