Skip to content

5409 duration timeout #5709

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 16 commits into from
Dec 23, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2020, 2021 Oracle and/or its affiliates.
* Copyright (c) 2020, 2022 Oracle and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -63,7 +63,9 @@ default T await() {
* @throws java.util.concurrent.CancellationException if this future was cancelled
* @throws java.util.concurrent.CompletionException if this future completed exceptionally,
* was interrupted while waiting or the wait timed out
* @deprecated use {@link #await(Duration)} instead
*/
@Deprecated(since = "4.0.0")
default T await(long timeout, TimeUnit unit) {
try {
return this.toCompletableFuture().get(timeout, unit);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2020, 2021 Oracle and/or its affiliates.
* Copyright (c) 2020, 2022 Oracle and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -446,12 +446,26 @@ private OutputStreamMultiBuilder() {
* @param timeout the maximum time to block
* @param unit the time unit of the timeout argument
* @return this builder
* @deprecated use {@link #timeout(Duration)} instead
*/
@Deprecated(since = "4.0.0")
public OutputStreamMultiBuilder timeout(long timeout, TimeUnit unit) {
this.timeout = Duration.of(timeout, unit.toChronoUnit());
return this;
}

/**
* Set max timeout for which is allowed to block write methods,
* in case there is no demand from downstream.
*
* @param timeout the maximum time to block
* @return this builder
*/
public OutputStreamMultiBuilder timeout(Duration timeout) {
this.timeout = timeout;
return this;
}

/**
* Callback executed when request signal from downstream arrive.
* <ul>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
import java.nio.file.WatchEvent;
import java.nio.file.WatchKey;
import java.nio.file.WatchService;
import java.time.Duration;
import java.util.Arrays;
import java.util.Collections;
import java.util.LinkedList;
Expand Down Expand Up @@ -413,15 +414,41 @@ public Builder executor(ScheduledExecutorService executor) {
* @param initialDelay initial delay before regular scheduling starts
* @param delay delay between schedules
* @param timeUnit time unit of the delays
* @return updated builer instance
* @return updated builder instance
* @deprecated use {@link #initialDelay(Duration)} and {@link #delay(Duration)} instead
*/
@Deprecated(since = "4.0.0")
public Builder schedule(long initialDelay, long delay, TimeUnit timeUnit) {
this.initialDelay = initialDelay;
this.delay = delay;
this.timeUnit = timeUnit;
return this;
}

/**
* Configure an initial delay before regular scheduling starts.
*
* @param initialDelay initial delay
* @return updated builder instance
*/
public Builder initialDelay(Duration initialDelay) {
this.initialDelay = initialDelay.toMillis();
this.timeUnit = TimeUnit.MILLISECONDS;
return this;
}

/**
* Configure a delay between schedules.
*
* @param delay delay between schedules
* @return updated builder instance
*/
public Builder delay(Duration delay) {
this.delay = delay.toMillis();
this.timeUnit = TimeUnit.MILLISECONDS;
return this;
}

/**
* Add a modifier of the watch service.
* Currently only implementation specific modifier are available, such as
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2021 Oracle and/or its affiliates.
* Copyright (c) 2021, 2022 Oracle and/or its affiliates.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand All @@ -16,6 +16,7 @@

package io.helidon.integrations.microstream.health;

import java.time.Duration;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.TimeUnit;

Expand Down Expand Up @@ -129,11 +130,26 @@ public Builder name(String name) {
* @param duration the maximum time to wait for statement execution response
* @param timeUnit the time unit of the timeout argument
* @return updated builder instance
* @deprecated use {@link #timeout(Duration)} instead
*/
@Deprecated(since = "4.0.0")
public Builder timeout(long duration, TimeUnit timeUnit) {
this.timeoutDuration = duration;
this.timeoutUnit = timeUnit;
return this;
}

/**
* Set custom timeout to wait for statement execution response. Default value is
* 10 seconds.
*
* @param duration the maximum time to wait for statement execution response
* @return updated builder instance
*/
public Builder timeout(Duration duration) {
this.timeoutDuration = duration.toNanos();
this.timeoutUnit = TimeUnit.NANOSECONDS;
return this;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,6 @@
import java.util.List;
import java.util.Map;
import java.util.Optional;
import java.util.concurrent.TimeUnit;
import java.util.function.Function;
import java.util.function.Supplier;
import java.util.logging.Level;
Expand Down Expand Up @@ -61,17 +60,15 @@ public class NarayanaClient implements CoordinatorClient {
private static final Pattern LRA_ID_PATTERN = Pattern.compile("(.*)/([^/?]+).*");

private Supplier<URI> coordinatorUriSupplier;
private Long coordinatorTimeout;
private TimeUnit coordinatorTimeoutUnit;
private Duration coordinatorTimeout;
private Retry retry;

@Override
public void init(Supplier<URI> coordinatorUriSupplier, long timeout, TimeUnit timeoutUnit) {
public void init(Supplier<URI> coordinatorUriSupplier, Duration timeout) {
this.coordinatorUriSupplier = coordinatorUriSupplier;
this.coordinatorTimeout = timeout;
this.coordinatorTimeoutUnit = timeoutUnit;
this.retry = Retry.builder()
.overallTimeout(Duration.ofMillis(timeoutUnit.toMillis(timeout)))
.overallTimeout(timeout)
.retryPolicy(Retry.JitterRetryPolicy.builder()
.calls(RETRY_ATTEMPTS)
.build())
Expand Down Expand Up @@ -289,8 +286,8 @@ private WebClient prepareWebClient(URI uri) {
.baseUri(uri)
// Workaround for #3242
.keepAlive(false)
.connectTimeout(coordinatorTimeout, coordinatorTimeoutUnit)
.readTimeout(coordinatorTimeout, coordinatorTimeoutUnit)
.connectTimeout(coordinatorTimeout)
.readTimeout(coordinatorTimeout)
.addReader(new LraStatusReader())
.build();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
package io.helidon.lra.coordinator.client;

import java.net.URI;
import java.time.Duration;
import java.util.Optional;
import java.util.concurrent.TimeUnit;
import java.util.function.Supplier;
Expand Down Expand Up @@ -59,8 +60,20 @@ public interface CoordinatorClient {
* @param coordinatorUriSupplier url of the coordinator
* @param timeout general timeout for coordinator calls
* @param timeoutUnit timeout unit for coordinator calls
* @deprecated use {@link #init(Supplier, Duration)} instead
*/
void init(Supplier<URI> coordinatorUriSupplier, long timeout, TimeUnit timeoutUnit);
@Deprecated(forRemoval = true, since = "4.0.0")
default void init(Supplier<URI> coordinatorUriSupplier, long timeout, TimeUnit timeoutUnit){
init(coordinatorUriSupplier, Duration.ofMillis(timeoutUnit.toMillis(timeout)));
}

/**
* Initialization of the properties provided by LRA client.
*
* @param coordinatorUriSupplier url of the coordinator
* @param timeout general timeout for coordinator calls
*/
void init(Supplier<URI> coordinatorUriSupplier, Duration timeout);

/**
* Ask coordinator to start new LRA and return its id.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -483,13 +483,28 @@ public Builder statement(final String statement) {
* @param duration the maximum time to wait for statement execution response
* @param timeUnit the time unit of the timeout argument
* @return updated builder instance
* @deprecated use {@link #timeout(Duration)} instead
*/
@Deprecated(since = "4.0.0")
public Builder timeout(final long duration, final TimeUnit timeUnit) {
this.timeoutDuration = duration;
this.timeoutUnit = timeUnit;
return this;
}

/**
* Set custom timeout to wait for statement execution response.
* Default value is {@code 10} seconds.
*
* @param timeout the maximum time to wait for statement execution response
* @return updated builder instance
*/
public Builder timeout(final Duration timeout) {
this.timeoutDuration = timeout.toNanos();
this.timeoutUnit = TimeUnit.NANOSECONDS;
return this;
}

// Getters for local usage and jUnit tests

String name() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,7 @@ private HealthSupport(Builder builder) {
}

// Lazy values to prevent early init of maybe-not-yet-configured FT thread pools
this.timeout = LazyValue.create(() -> Timeout.create(Duration.ofMillis(builder.timeoutMillis)));
this.timeout = LazyValue.create(() -> Timeout.create(builder.timeout));
this.async = LazyValue.create(Async::create);
}

Expand Down Expand Up @@ -369,7 +369,7 @@ public static final class Builder extends HelidonRestServiceSupport.Builder<Buil
private final Set<String> excludedHealthChecks = new HashSet<>();
private boolean details = true;
private boolean enabled = true;
private long timeoutMillis = DEFAULT_TIMEOUT_MILLIS;
private Duration timeout = Duration.ofMillis(DEFAULT_TIMEOUT_MILLIS);

private Builder() {
super(DEFAULT_WEB_CONTEXT);
Expand Down Expand Up @@ -454,7 +454,7 @@ public Builder config(Config config) {
}

private void timeoutMillis(long aLong) {
this.timeoutMillis = aLong;
this.timeout = Duration.ofMillis(aLong);
}

/**
Expand All @@ -463,16 +463,29 @@ private void timeoutMillis(long aLong) {
* @param timeout timeout value
* @param unit timeout time unit
* @return updated builder instance
* @deprecated use {@link #timeout(Duration)} instead
*/
@ConfiguredOption(key = TIMEOUT_CONFIG_KEY,
description = "health endpoint timeout (ms)",
type = Long.class,
value = "10000")
@Deprecated(since = "4.0.0")
public Builder timeout(long timeout, TimeUnit unit) {
timeoutMillis(unit.toMillis(timeout));
return this;
}

/**
* Configure overall timeout of health check call.
*
* @param timeout timeout value
* @return updated builder instance
*/
public Builder timeout(Duration timeout) {
this.timeout = timeout;
return this;
}

/**
* A class may be excluded from invoking health checks on it.
* This allows configurable approach to disabling broken health-checks.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -269,7 +269,9 @@ public Builder config(Config config) {
* @param amount amount of time
* @param unit time unit
* @return updated builder instance
* @deprecated use {@link #connectTimeout(Duration)} instead
*/
@Deprecated(since = "4.0.0")
public Builder connectTimeout(long amount, TimeUnit unit) {
return connectTimeout(Duration.of(amount, unit.toChronoUnit()));
}
Expand All @@ -291,7 +293,9 @@ public Builder connectTimeout(Duration timeout) {
* @param amount amount of time
* @param unit time unit
* @return updated builder instance
* @deprecated use {@link #readTimeout(Duration)} instead
*/
@Deprecated(since = "4.0.0")
public Builder readTimeout(long amount, TimeUnit unit) {
return readTimeout(Duration.of(amount, unit.toChronoUnit()));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@

import java.net.URI;
import java.net.URL;
import java.time.Duration;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletionStage;
Expand Down Expand Up @@ -270,18 +271,38 @@ default WebClientRequestBuilder addHeaders(Headers parameters){
* @param amount amount of time
* @param unit time unit
* @return updated builder instance
* @deprecated use {@link #connectTimeout(Duration)} instead
*/
@Deprecated(since = "4.0.0")
WebClientRequestBuilder connectTimeout(long amount, TimeUnit unit);

/**
* Sets new connection timeout for this request.
*
* @param connectionTimeout amount of time
* @return updated builder instance
*/
WebClientRequestBuilder connectTimeout(Duration connectionTimeout);

/**
* Sets new read timeout for this request.
*
* @param amount amount of time
* @param unit time unit
* @return updated builder instance
* @deprecated use {@link #readTimeout(Duration)} instead
*/
@Deprecated(since = "4.0.0")
WebClientRequestBuilder readTimeout(long amount, TimeUnit unit);

/**
* Sets new read timeout for this request.
*
* @param readTimeout amount of time
* @return updated builder instance
*/
WebClientRequestBuilder readTimeout(Duration readTimeout);

/**
* Fragment of the request.
*
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -342,12 +342,24 @@ public WebClientRequestBuilder connectTimeout(long amount, TimeUnit unit) {
return this;
}

@Override
public WebClientRequestBuilder connectTimeout(Duration connectTimeout) {
this.connectTimeout = connectTimeout;
return this;
}

@Override
public WebClientRequestBuilder readTimeout(long amount, TimeUnit unit) {
this.readTimeout = Duration.of(amount, unit.toChronoUnit());
return this;
}

@Override
public WebClientRequestBuilder readTimeout(Duration readTimeout) {
this.readTimeout = readTimeout;
return this;
}

@Override
public WebClientRequestBuilder fragment(String fragment) {
this.fragment = fragment;
Expand Down