Skip to content

Commit 9712e8c

Browse files
author
Artem
committed
config: Add parquetProcessingMode to Savepoints configuration
Introduce ParquetProcessingMode enum with two variants: - Parallel: Process all Parquet files at once (default, no savepoints) - Sequential: Process files one by one with savepoint support Add parquetProcessingMode field to Savepoints configuration with appropriate Circe encoders/decoders. The mode defaults to Parallel to maintain backward compatibility with existing configurations. This lays the foundation for implementing savepoint support for Parquet migrations, allowing users to resume interrupted migrations without reprocessing already-migrated files.
1 parent f09f96c commit 9712e8c

File tree

1 file changed

+31
-1
lines changed

1 file changed

+31
-1
lines changed

migrator/src/main/scala/com/scylladb/migrator/config/Savepoints.scala

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,37 @@ package com.scylladb.migrator.config
33
import io.circe.{ Decoder, Encoder }
44
import io.circe.generic.semiauto.{ deriveDecoder, deriveEncoder }
55

6-
case class Savepoints(intervalSeconds: Int, path: String)
6+
sealed trait ParquetProcessingMode
7+
object ParquetProcessingMode {
8+
case object Parallel extends ParquetProcessingMode
9+
case object Sequential extends ParquetProcessingMode
10+
11+
implicit val encoder: Encoder[ParquetProcessingMode] = Encoder.encodeString.contramap {
12+
case Parallel => "parallel"
13+
case Sequential => "sequential"
14+
}
15+
16+
implicit val decoder: Decoder[ParquetProcessingMode] = Decoder.decodeString.emap {
17+
case "parallel" => Right(Parallel)
18+
case "sequential" => Right(Sequential)
19+
case other =>
20+
Left(s"Unknown parquet processing mode: $other. Valid values: parallel, sequential")
21+
}
22+
}
23+
24+
case class Savepoints(intervalSeconds: Int,
25+
path: String,
26+
parquetProcessingMode: Option[ParquetProcessingMode]) {
27+
28+
/**
29+
* Returns the configured Parquet processing mode.
30+
* Defaults to [[ParquetProcessingMode.Parallel]] if not specified.
31+
* This default affects migration semantics.
32+
*/
33+
def getParquetProcessingMode: ParquetProcessingMode =
34+
parquetProcessingMode.getOrElse(ParquetProcessingMode.Parallel)
35+
}
36+
737
object Savepoints {
838
implicit val encoder: Encoder[Savepoints] = deriveEncoder[Savepoints]
939
implicit val decoder: Decoder[Savepoints] = deriveDecoder[Savepoints]

0 commit comments

Comments
 (0)