in core/src/main/scala/org/apache/pekko/persistence/cassandra/snapshot/CassandraSnapshotStatements.scala [121:151]
def executeCreateKeyspaceAndTables(session: CqlSession, log: LoggingAdapter)(
implicit ec: ExecutionContext): Future[Done] = {
def keyspace: Future[Done] =
if (snapshotSettings.keyspaceAutoCreate)
session.executeAsync(createKeyspace).asScala.map(_ => Done)
else FutureDone
if (snapshotSettings.tablesAutoCreate) {
// reason for setSchemaMetadataEnabled is that it speed up tests by multiple factors
session.setSchemaMetadataEnabled(false)
val result = for {
_ <- keyspace
_ <- session.executeAsync(createTable).asScala
} yield {
session.setSchemaMetadataEnabled(null)
Done
}
result.recoverWith {
case e =>
log.warning("Failed to create snapshot keyspace and tables: {}", e)
session.setSchemaMetadataEnabled(null)
FutureDone
}
} else {
keyspace.recoverWith {
case e =>
log.warning("Failed to create snapshot keyspace: {}", e)
FutureDone
}
}
}