Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions delayedqueue-jvm/api/delayedqueue-jvm.api
Original file line number Diff line number Diff line change
Expand Up @@ -335,6 +335,7 @@ public final class org/funfix/delayedqueue/jvm/JdbcDatabasePoolConfig : java/lan
public final class org/funfix/delayedqueue/jvm/JdbcDriver : java/lang/Enum {
public static final field Companion Lorg/funfix/delayedqueue/jvm/JdbcDriver$Companion;
public static final field HSQLDB Lorg/funfix/delayedqueue/jvm/JdbcDriver;
public static final field MariaDB Lorg/funfix/delayedqueue/jvm/JdbcDriver;
public static final field MsSqlServer Lorg/funfix/delayedqueue/jvm/JdbcDriver;
public static final field Sqlite Lorg/funfix/delayedqueue/jvm/JdbcDriver;
public final fun getClassName ()Ljava/lang/String;
Expand Down
2 changes: 2 additions & 0 deletions delayedqueue-jvm/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,13 @@ dependencies {
testImplementation(libs.jdbc.hsqldb)
testImplementation(libs.jdbc.sqlite)
testImplementation(libs.jdbc.mssql)
testImplementation(libs.jdbc.mariadb)
testImplementation(platform(libs.junit.bom))
testImplementation(libs.junit.jupiter)
testImplementation(platform(libs.testcontainers.bom))
testImplementation(libs.testcontainers.junit.jupiter)
testImplementation(libs.testcontainers.mssqlserver)
testImplementation(libs.testcontainers.mariadb)
testRuntimeOnly(libs.junit.platform.launcher)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,14 @@ import org.funfix.delayedqueue.jvm.internals.CronServiceImpl
import org.funfix.delayedqueue.jvm.internals.PollResult
import org.funfix.delayedqueue.jvm.internals.jdbc.DBTableRow
import org.funfix.delayedqueue.jvm.internals.jdbc.DBTableRowWithId
import org.funfix.delayedqueue.jvm.internals.jdbc.HSQLDBMigrations
import org.funfix.delayedqueue.jvm.internals.jdbc.MigrationRunner
import org.funfix.delayedqueue.jvm.internals.jdbc.MsSqlServerMigrations
import org.funfix.delayedqueue.jvm.internals.jdbc.RdbmsExceptionFilters
import org.funfix.delayedqueue.jvm.internals.jdbc.SQLVendorAdapter
import org.funfix.delayedqueue.jvm.internals.jdbc.SqliteMigrations
import org.funfix.delayedqueue.jvm.internals.jdbc.filtersForDriver
import org.funfix.delayedqueue.jvm.internals.jdbc.hsqldb.HSQLDBMigrations
import org.funfix.delayedqueue.jvm.internals.jdbc.mariadb.MariaDBMigrations
import org.funfix.delayedqueue.jvm.internals.jdbc.mssql.MsSqlServerMigrations
import org.funfix.delayedqueue.jvm.internals.jdbc.sqlite.SqliteMigrations
import org.funfix.delayedqueue.jvm.internals.jdbc.withDbRetries
import org.funfix.delayedqueue.jvm.internals.utils.Database
import org.funfix.delayedqueue.jvm.internals.utils.Raise
Expand Down Expand Up @@ -267,7 +268,8 @@ private constructor(
}
}
} catch (e: Exception) {
// On duplicate key, return empty map to trigger one-by-one fallback
// On duplicate key or transient failure (e.g., concurrent modification),
// return empty map to trigger one-by-one fallback.
// This matches: recover { case SQLExceptionExtractors.DuplicateKey(_) =>
// Map.empty }
when {
Expand All @@ -278,6 +280,13 @@ private constructor(
)
emptyMap() // Trigger fallback
}
filters.transientFailure.matches(e) -> {
logger.debug(
"Batch insert failed due to transient failure (concurrent modification), " +
"falling back to one-by-one offers"
)
emptyMap() // Trigger fallback
}
else -> throw e // Other exceptions propagate
}
}
Expand Down Expand Up @@ -613,6 +622,7 @@ private constructor(
JdbcDriver.Sqlite -> SqliteMigrations.getMigrations(config.tableName)
JdbcDriver.MsSqlServer ->
MsSqlServerMigrations.getMigrations(config.tableName)
JdbcDriver.MariaDB -> MariaDBMigrations.getMigrations(config.tableName)
}

val executed = MigrationRunner.runMigrations(connection.underlying, migrations)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,10 @@ public enum class JdbcDriver(public val className: String) {
MsSqlServer("com.microsoft.sqlserver.jdbc.SQLServerDriver"),

/** SQLite driver. */
Sqlite("org.sqlite.JDBC");
Sqlite("org.sqlite.JDBC"),

/** MariaDB driver. */
MariaDB("org.mariadb.jdbc.Driver");

public companion object {
/**
Expand Down
Loading