IdempotentConflictException.kt
package io.github.lishangbu.avalon.idempotent.exception
/**
* Raised when a duplicate idempotent request is detected.
*/
class IdempotentConflictException(
val state: IdempotentConflictState,
val key: String,
) : RuntimeException(
when (state) {
IdempotentConflictState.PROCESSING -> "Idempotent request is already being processed for key '$key'."
IdempotentConflictState.COMPLETED -> "Idempotent request has already completed for key '$key'."
},
)
enum class IdempotentConflictState {
PROCESSING,
COMPLETED,
}