[ 
https://issues.apache.org/jira/browse/FLINK-15740?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17030433#comment-17030433
 ] 

Aljoscha Krettek commented on FLINK-15740:
------------------------------------------

Turns out this is not as easy, {{Thread.join()}} has this Javadoc:
{code:java}
/**
 * Waits at most {@code millis} milliseconds for this thread to
 * die. A timeout of {@code 0} means to wait forever.
 *
 * <p> This implementation uses a loop of {@code this.wait} calls
 * conditioned on {@code this.isAlive}. As a thread terminates the
 * {@code this.notifyAll} method is invoked. It is recommended that
 * applications not use {@code wait}, {@code notify}, or
 * {@code notifyAll} on {@code Thread} instances.
 *
 * @param  millis
 *         the time to wait in milliseconds
 *
 * @throws  IllegalArgumentException
 *          if the value of {@code millis} is negative
 *
 * @throws  InterruptedException
 *          if any thread has interrupted the current thread. The
 *          <i>interrupted status</i> of the current thread is
 *          cleared when this exception is thrown.
 */
public final synchronized void join(long millis)
{code}

meaning if we pass a timeout of zero here it will wait for ever, which is not 
the intended purpose of the deadline.

> Remove Deadline#timeLeft()
> --------------------------
>
>                 Key: FLINK-15740
>                 URL: https://issues.apache.org/jira/browse/FLINK-15740
>             Project: Flink
>          Issue Type: Improvement
>          Components: API / DataStream, Tests
>            Reporter: Chesnay Schepler
>            Priority: Major
>              Labels: pull-request-available
>             Fix For: 1.11.0
>
>          Time Spent: 0.5h
>  Remaining Estimate: 0h
>
> As shown in FLINK-13662, {{Deadline#timeLeft()}} is conceptually broken since 
> there is no reliable way to call said method while ensuring that
>  a) the value is non-negative (desired since most time-based APIs reject 
> negative values)
>  b) the value sign (+,-) corresponds to preceding calls to {{#hasTimeLeft()}}
>  
> As a result any usage of the following form is unreliable and obfuscating 
> error messages.
> {code:java}
> while (deadline.hasTimeLeft()) {
>       doSomething(deadline.timeLeft());
> } {code}
>  
> All existing usage should be migrate to either
> {code:java}
> while (deadline.hasTimeLeft()) {
>       doSomething();
> } {code}
> or
> {code:java}
> while (true) {
>       doSomething(deadline.timeLeftIfAny());
> }
> {code}



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

Reply via email to