[SPARK-18953][CORE][WEB UI] Do now show the link to a dead worker on the master page

## What changes were proposed in this pull request?

For a dead worker, we will not be able to see its worker page anyway. This PR removes the links to dead workers from the master page.

## How was this patch tested?

Since this is UI change, please do the following steps manually.

**1. Start a master and a slave**

```
sbin/start-master.sh
sbin/start-slave.sh spark://10.22.16.140:7077
```

![1_live_worker_a](https://cloud.githubusercontent.com/assets/9700541/21373572/d7e187d6-c6d4-11e6-9110-f4371d215dec.png)

**2. Stop the slave**
```
sbin/stop-slave.sh
```

![2_dead_worker_a](https://cloud.githubusercontent.com/assets/9700541/21373579/dd9e9704-c6d4-11e6-9047-a22cb0aa83ed.png)

**3. Start a slave**

```
sbin/start-slave.sh spark://10.22.16.140:7077
```

![3_dead_worder_a_and_live_worker_b](https://cloud.githubusercontent.com/assets/9700541/21373582/e1b207f4-c6d4-11e6-89cb-6d8970175a5e.png)

**4. Stop the slave**

```
sbin/stop-slave.sh
```

![4_dead_worker_a_and_b](https://cloud.githubusercontent.com/assets/9700541/21373584/e5fecb4e-c6d4-11e6-95d3-49defe366946.png)

**5. Driver list testing**

Do the followings and stop the slave in a minute by `sbin/stop-slave.sh`.

```
sbin/start-master.sh
sbin/start-slave.sh spark://10.22.16.140:7077
bin/spark-submit --master=spark://10.22.16.140:7077 --deploy-mode=cluster --class org.apache.spark.examples.SparkPi examples/target/scala-2.11/jars/spark-examples_2.11-2.2.0-SNAPSHOT.jar 10000
```

![5_dead_worker_in_driver_list](https://cloud.githubusercontent.com/assets/9700541/21401320/be6cc9fc-c768-11e6-8de7-6512961296a5.png)

Author: Dongjoon Hyun <dongjoon@apache.org>

Closes #16366 from dongjoon-hyun/SPARK-18953.
This commit is contained in:
Dongjoon Hyun 2016-12-22 09:43:46 +00:00 committed by Sean Owen
parent 2e861df96e
commit f489339c75
No known key found for this signature in database
GPG key ID: BEB3956D6717BDDC

View file

@ -176,8 +176,15 @@ private[ui] class MasterPage(parent: MasterWebUI) extends WebUIPage("") {
private def workerRow(worker: WorkerInfo): Seq[Node] = {
<tr>
<td>
<a href={UIUtils.makeHref(parent.master.reverseProxy,
worker.id, worker.webUiAddress)}>{worker.id}</a>
{
if (worker.isAlive()) {
<a href={UIUtils.makeHref(parent.master.reverseProxy, worker.id, worker.webUiAddress)}>
{worker.id}
</a>
} else {
worker.id
}
}
</td>
<td>{worker.host}:{worker.port}</td>
<td>{worker.state}</td>
@ -247,10 +254,13 @@ private[ui] class MasterPage(parent: MasterWebUI) extends WebUIPage("") {
<td>{driver.id} {killLink}</td>
<td>{driver.submitDate}</td>
<td>{driver.worker.map(w =>
<a href=
{UIUtils.makeHref(parent.master.reverseProxy, w.id, w.webUiAddress)}>
{w.id.toString}</a>
).getOrElse("None")}
if (w.isAlive()) {
<a href={UIUtils.makeHref(parent.master.reverseProxy, w.id, w.webUiAddress)}>
{w.id.toString}
</a>
} else {
w.id.toString
}).getOrElse("None")}
</td>
<td>{driver.state}</td>
<td sorttable_customkey={driver.desc.cores.toString}>