29 lines
907 B
Kotlin
29 lines
907 B
Kotlin
package fr.dcproject.common.utils
|
|
|
|
import org.elasticsearch.client.Request
|
|
import org.elasticsearch.client.RestClient
|
|
import org.slf4j.Logger
|
|
import org.slf4j.LoggerFactory
|
|
|
|
fun RestClient.waitElasticsearchIsUp() {
|
|
val logger: Logger = LoggerFactory.getLogger("fr.dcproject.elasticsearch")
|
|
val request = Request("GET", "/_cluster/health")
|
|
repeat(5 * 60 / 2) { // 5 minutes
|
|
runCatching {
|
|
performRequest(request).statusLine.statusCode
|
|
}.onSuccess {
|
|
if (it == 200) {
|
|
logger.debug("Elasticsearch is Ready! Continue...")
|
|
return
|
|
} else {
|
|
logger.debug("sleep 2s and retry...")
|
|
Thread.sleep(2000)
|
|
}
|
|
}.onFailure {
|
|
logger.debug("${it.message}, sleep 2s and retry...")
|
|
Thread.sleep(2000)
|
|
}
|
|
}
|
|
error("Elasticsearch is not ready")
|
|
}
|