[ https://issues.apache.org/jira/browse/FLINK-8344?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16334100#comment-16334100 ]
ASF GitHub Bot commented on FLINK-8344: --------------------------------------- Github user GJL commented on a diff in the pull request: https://github.com/apache/flink/pull/5312#discussion_r162893190 --- Diff: flink-clients/src/main/java/org/apache/flink/client/program/rest/LeaderHolder.java --- @@ -0,0 +1,74 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.flink.client.program.rest; + +import javax.annotation.Nullable; + +import static org.apache.flink.util.Preconditions.checkArgument; + +class LeaderHolder<T> { + + private final String leaderType; + + private final long awaitLeaderTimeoutMs; + + private volatile T leaderAddress; + + LeaderHolder(final String leaderType, final long awaitLeaderTimeoutMs) { + checkArgument(awaitLeaderTimeoutMs >= 0, "awaitLeaderTimeoutMs must be greater than or equal to 0"); + this.leaderType = leaderType; + this.awaitLeaderTimeoutMs = awaitLeaderTimeoutMs; + } + + public T getLeaderAddress() throws LeaderNotAvailableException { + final long startTime = System.nanoTime(); + T result; + synchronized (this) { + long sleptTimeMs = 0; + while (leaderAddress == null && sleptTimeMs < awaitLeaderTimeoutMs) { + try { + wait(awaitLeaderTimeoutMs - sleptTimeMs); + } catch (InterruptedException e) { + Thread.currentThread().interrupt(); + } + sleptTimeMs = (System.nanoTime() - startTime) / 1000000; --- End diff -- That's better but I am going to remove this class and use `LeaderRetriever` instead. > Add support for HA to RestClusterClient > --------------------------------------- > > Key: FLINK-8344 > URL: https://issues.apache.org/jira/browse/FLINK-8344 > Project: Flink > Issue Type: Improvement > Components: Client > Affects Versions: 1.5.0 > Reporter: Till Rohrmann > Assignee: Gary Yao > Priority: Major > Labels: flip-6 > Fix For: 1.5.0 > > > The {{RestClusterClient}} must be able to deal with changing JobMasters in > case of HA. We have to add functionality to reconnect to a newly elected > leader in case of HA. -- This message was sent by Atlassian JIRA (v7.6.3#76005)