in benchmarks/src/gatling/scala/org/apache/polaris/benchmarks/RetryOnHttpCodes.scala [32:46]
def saveHttpStatusCode(): HttpRequestBuilder =
httpRequestBuilder.check(status.saveAs("lastHttpStatusCode"))
}
def retryOnHttpStatus(maxRetries: Int, statusCodes: Set[Int], counterName: String = "httpRetry")(
httpRequestBuilder: HttpRequestBuilder
): ChainBuilder =
exec(session => session.set(counterName, 0))
.exec(session => session.set("lastHttpStatusCode", -1))
.asLongAs(session =>
session(counterName).as[Int] == 0 || (
session(counterName).as[Int] < maxRetries &&
statusCodes.contains(session("lastHttpStatusCode").as[Int])
)
) {