Skip to content

Commit 8b3a581

Browse files
committed
Retry adapter - isRetryable exposed
1 parent de9f099 commit 8b3a581

File tree

3 files changed

+13
-6
lines changed

3 files changed

+13
-6
lines changed

build.sbt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ val scala3 = "3.2.2"
77

88
ThisBuild / organization := "io.cequence"
99
ThisBuild / scalaVersion := scala212
10-
ThisBuild / version := "1.1.1.RC.9"
10+
ThisBuild / version := "1.1.1.RC.11"
1111
ThisBuild / isSnapshot := false
1212

1313
lazy val commonSettings = Seq(

openai-core/src/main/scala/io/cequence/openaiscala/service/adapter/OpenAIServiceAdapters.scala

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package io.cequence.openaiscala.service.adapter
33
import akka.actor.Scheduler
44
import akka.stream.Materializer
55
import io.cequence.openaiscala.RetryHelpers.RetrySettings
6+
import io.cequence.openaiscala.Retryable
67
import io.cequence.openaiscala.domain.BaseMessage
78
import io.cequence.openaiscala.domain.settings.CreateChatCompletionSettings
89
import io.cequence.openaiscala.service._
@@ -44,13 +45,17 @@ trait OpenAIServiceAdapters[S <: CloseableService] {
4445

4546
def retry(
4647
underlying: S,
47-
log: Option[String => Unit] = None
48+
log: Option[String => Unit] = None,
49+
isRetryable: Throwable => Boolean = {
50+
case Retryable(_) => true
51+
case _ => false
52+
}
4853
)(
4954
implicit ec: ExecutionContext,
5055
retrySettings: RetrySettings,
5156
scheduler: Scheduler
5257
): S =
53-
wrapAndDelegate(new RetryServiceAdapter(underlying, log))
58+
wrapAndDelegate(new RetryServiceAdapter(underlying, log, isRetryable))
5459

5560
def log(
5661
underlying: S,

openai-core/src/main/scala/io/cequence/openaiscala/service/adapter/RetryServiceAdapter.scala

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,16 @@
11
package io.cequence.openaiscala.service.adapter
22

33
import akka.actor.Scheduler
4-
import io.cequence.openaiscala.RetryHelpers
4+
import io.cequence.openaiscala.{RetryHelpers, Retryable}
55
import io.cequence.openaiscala.RetryHelpers.RetrySettings
66
import io.cequence.wsclient.service.CloseableService
77

88
import scala.concurrent.{ExecutionContext, Future}
99

1010
private class RetryServiceAdapter[+S <: CloseableService](
1111
underlying: S,
12-
log: Option[String => Unit] = None
12+
log: Option[String => Unit] = None,
13+
isRetryable: Throwable => Boolean
1314
)(
1415
implicit ec: ExecutionContext,
1516
retrySettings: RetrySettings,
@@ -24,7 +25,8 @@ private class RetryServiceAdapter[+S <: CloseableService](
2425
): Future[T] =
2526
fun(underlying).retryOnFailure(
2627
Some(s"${getFunctionName().capitalize} call failed"),
27-
log
28+
log,
29+
isRetryable
2830
)
2931

3032
override def close(): Unit =

0 commit comments

Comments
 (0)