Что означает Retry в контексте Java Couchbase SDK? - PullRequest
1 голос
/ 28 апреля 2020

Я использую Java Couchbase SDK в моем приложении. При настройке DefaultCouchbaseEnvironment я наткнулся на свойство RetryStrategy . Теперь я использую конфигурацию по умолчанию, для которой стратегия повтора BestEffortRetryStrategy . Согласно документации

BestEffortRetryStrategy will retry the operation until it either succeeds or the maximum request lifetime is reached

По умолчанию максимальное время жизни запроса составляет 75 секунд.

Теперь я хочу понять, что здесь означает повтор. Означает ли повторная попытка повторения запроса при возникновении исключения или означает, что он попытается выделить этот запрос какому-либо узлу для обработки запроса, если он не может и будет повторяться в течение 75 секунд?

I Я просматриваю журналы моего приложения для различных исключений, чтобы понять это, и я мог видеть, что TemporaryFailureException не был повторен, и я также мог видеть, что в некоторых случаях RequestCancelledException выбрасывалось через 75 секунд , Справедливо ли предположить, что couchbase повторяет запрос, чтобы назначить его узлу для его обработки, и на самом деле не повторяет попытку какого-либо исключения, как только оно попадает в узел, который обработает этот запрос?

StackTrace for TemporaryFailureException-

stackTrace: com.couchbase.client.java.error.TemporaryFailureException: null
    at com.couchbase.client.java.bucket.api.Mutate$2$1.call(Mutate.java:246)
    at com.couchbase.client.java.bucket.api.Mutate$2$1.call(Mutate.java:220)
    at rx.internal.operators.OnSubscribeMap$MapSubscriber.onNext(OnSubscribeMap.java:69)
    at rx.observers.Subscribers$5.onNext(Subscribers.java:235)
    at rx.internal.operators.OnSubscribeDoOnEach$DoOnEachSubscriber.onNext(OnSubscribeDoOnEach.java:101)
    at rx.internal.producers.SingleProducer.request(SingleProducer.java:65)
    at rx.Subscriber.setProducer(Subscriber.java:211)
    at rx.internal.operators.OnSubscribeMap$MapSubscriber.setProducer(OnSubscribeMap.java:102)
    at rx.Subscriber.setProducer(Subscriber.java:205)
    at rx.internal.operators.OnSubscribeMap$MapSubscriber.setProducer(OnSubscribeMap.java:102)
    at rx.Subscriber.setProducer(Subscriber.java:205)
    at rx.Subscriber.setProducer(Subscriber.java:205)
    at rx.subjects.AsyncSubject.onCompleted(AsyncSubject.java:103)
    at com.couchbase.client.core.endpoint.AbstractGenericHandler.completeResponse(AbstractGenericHandler.java:508)
    at com.couchbase.client.core.endpoint.AbstractGenericHandler.access$000(AbstractGenericHandler.java:86)
    at com.couchbase.client.core.endpoint.AbstractGenericHandler$1.call(AbstractGenericHandler.java:526)
    at rx.internal.schedulers.ScheduledAction.run(ScheduledAction.java:55)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:180)
    at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java)
    at java.lang.Thread.run(Thread.java:748)
Caused by: rx.exceptions.OnErrorThrowable$OnNextValue: OnError while emitting onNext value: com.couchbase.client.core.message.kv.UpsertResponse.class
    at rx.exceptions.OnErrorThrowable.addValueAsLastCause(OnErrorThrowable.java:118)
    at rx.internal.operators.OnSubscribeMap$MapSubscriber.onNext(OnSubscribeMap.java:73)
    ... 21 common frames omitted```

1 Ответ

0 голосов
/ 28 апреля 2020

BestEffortRetryStrategy должен повторяться до тех пор, пока запрос не будет отменен тайм-аутом. FailFastRetryStrategy не должна повторяться. Это должно произойти сразу же.

Если у вас есть исключение TemporaryFailureException и BestEffortRetryStrategy, это следует повторить. Если у вас был тот, который не был повторен, вы можете поделиться трассировкой стека?

  • Майк
...