All Downloads are FREE. Search and download functionalities are using the official Maven repository.

main.misk.exceptions.dynamodb.ClientExecutionTimeoutExceptionMapper.kt Maven / Gradle / Ivy

There is a newer version: 2024.09.23.154653-e3b43cd
Show newest version
package misk.exceptions.dynamodb

import com.amazonaws.http.timers.client.ClientExecutionTimeoutException
import misk.web.Response
import misk.web.ResponseBody
import misk.web.exceptions.ExceptionMapper
import misk.web.mediatype.MediaTypes
import misk.web.toResponseBody
import okhttp3.Headers
import okhttp3.Headers.Companion.toHeaders
import java.net.HttpURLConnection.HTTP_UNAVAILABLE
import jakarta.inject.Inject

/** Maps ClientExecutionTimeoutException to 503 responses because the exception is concurrency related */
class ClientExecutionTimeoutExceptionMapper @Inject constructor() :
  ExceptionMapper {
  override fun toResponse(th: ClientExecutionTimeoutException): Response = Response(
    body = "DynamoDB Resource Contention Exception: $th".toResponseBody(),
    headers = HEADERS,
    statusCode = HTTP_UNAVAILABLE
  )

  private companion object {
    val HEADERS: Headers = listOf(
      "Content-Type" to MediaTypes.TEXT_PLAIN_UTF8
    ).toMap().toHeaders()
  }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy