Skip to content

Commit ef99401

Browse files
add initial delay on retry-after, after activation, before 1st get (#694)
1 parent 3fbfd3e commit ef99401

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

azure-client-runtime/src/main/java/com/microsoft/azure/AzureClient.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,17 @@ public <T, THeader> ServiceResponseWithHeaders<T, THeader> getPutOrPatchResultWi
126126
public <T> Observable<ServiceResponse<T>> getPutOrPatchResultAsync(Observable<Response<ResponseBody>> observable, final Type resourceType) {
127127
return this.<T>beginPutOrPatchAsync(observable, resourceType)
128128
.toObservable()
129+
.flatMap(new Func1<PollingState<T>, Observable<PollingState<T>>>() {
130+
@Override
131+
public Observable<PollingState<T>> call(PollingState<T> pollingState) {
132+
if (pollingState.isStatusTerminal()) {
133+
return Observable.just(pollingState);
134+
} else {
135+
// initial delay
136+
return Observable.just(pollingState).delaySubscription(pollingState.delayInMilliseconds(), TimeUnit.MILLISECONDS);
137+
}
138+
}
139+
})
129140
.flatMap(new Func1<PollingState<T>, Observable<PollingState<T>>>() {
130141
@Override
131142
public Observable<PollingState<T>> call(PollingState<T> pollingState) {
@@ -369,6 +380,17 @@ public <T> Observable<ServiceResponse<T>> getPostOrDeleteResultAsync(Observable<
369380
public <T> Observable<ServiceResponse<T>> getPostOrDeleteResultAsync(Observable<Response<ResponseBody>> observable, final LongRunningOperationOptions lroOptions, final Type resourceType) {
370381
return this.<T>beginPostOrDeleteAsync(observable, lroOptions, resourceType)
371382
.toObservable()
383+
.flatMap(new Func1<PollingState<T>, Observable<PollingState<T>>>() {
384+
@Override
385+
public Observable<PollingState<T>> call(PollingState<T> pollingState) {
386+
if (pollingState.isStatusTerminal()) {
387+
return Observable.just(pollingState);
388+
} else {
389+
// initial delay
390+
return Observable.just(pollingState).delaySubscription(pollingState.delayInMilliseconds(), TimeUnit.MILLISECONDS);
391+
}
392+
}
393+
})
372394
.flatMap(new Func1<PollingState<T>, Observable<PollingState<T>>>() {
373395
@Override
374396
public Observable<PollingState<T>> call(PollingState<T> pollingState) {

0 commit comments

Comments
 (0)