Skip to content
Closed
Show file tree
Hide file tree
Changes from 114 commits
Commits
Show all changes
115 commits
Select commit Hold shift + click to select a range
4b398d0
expose UI data as json in new endpoints
squito Feb 6, 2015
d1a8c92
add sbt-revolved plugin, to make it easier to start & stop http serve…
squito Feb 6, 2015
b252e7a
small cleanup of accidental changes
squito Feb 6, 2015
e0356b6
put new test expectation files in rat excludes (is this OK?)
squito Feb 6, 2015
bceb3a9
set http response code on error, some testing
squito Feb 6, 2015
f0264a7
switch to using jersey for metrics json
squito Feb 9, 2015
cba1ef6
add security (maybe?) for metrics json
squito Feb 11, 2015
4fdc39f
refactor case insensitive enum parsing
squito Feb 17, 2015
a4ab5aa
add in explicit dependency on jersey 1.9 -- maven wasn't happy before
squito Feb 19, 2015
cd37845
switch to using java.util.Dates for times
squito Feb 23, 2015
b6a96a8
compare json by AST, not string
squito Feb 23, 2015
0c12b50
Merge branch 'master' into SPARK-3454_w_jersey
squito Mar 10, 2015
c7d884f
fix merge conflicts
squito Mar 10, 2015
0dc3ea7
if app isnt found, reload apps from FS before giving up
squito Mar 10, 2015
1b78cb7
fix some import ordering
squito Mar 10, 2015
017c755
add in metrics now available
squito Mar 10, 2015
56edce0
style
squito Mar 10, 2015
5598f19
delete some unnecessary code, more to go
squito Mar 11, 2015
18a8c45
Merge branch 'master' into SPARK-3454_w_jersey
squito Mar 16, 2015
b86e2b0
style
squito Mar 16, 2015
654cecf
move all the status api POJOs to one file
squito Mar 16, 2015
d05f7a9
dont use case classes for status api POJOs, since they have binary co…
squito Mar 16, 2015
3377e61
scaladoc
squito Mar 16, 2015
00e9cc5
more style
squito Mar 16, 2015
9c0c125
add accumulableInfo
squito Mar 16, 2015
f7df095
add test for accumulables, and discover that I need update after all
squito Mar 16, 2015
56d2fc7
jersey needs asm for SPARK_PREPEND_CLASSES to work
squito Mar 16, 2015
e91750a
Merge branch 'master' into SPARK-3454_w_jersey
squito Mar 17, 2015
b4c75ed
fix merge conflicts; need to widen visibility in a few cases
squito Mar 17, 2015
36e4062
SparkUI needs to know about startTime, so it can list its own applica…
squito Mar 18, 2015
84cd497
AllJobsPage should still report correct completed & failed job count,…
squito Mar 19, 2015
190c17a
StagePage should distinguish no task data, from unknown stage
squito Mar 19, 2015
dddbd29
stages have attempt; jobs are sorted; resource for all attempts for o…
squito Mar 19, 2015
0c96147
better error msgs for bad stageId vs bad attemptId
squito Mar 19, 2015
97d411f
json endpoint for one job
squito Mar 19, 2015
73f1378
test json; also add test cases for cleaned stages & jobs
squito Mar 19, 2015
7fd156a
refactor jsonDiff to avoid code duplication
squito Mar 19, 2015
5f9df24
style
squito Mar 20, 2015
b86bcb0
update test to look at one stage attempt
squito Mar 20, 2015
dbfc7bf
style
squito Mar 20, 2015
fef6605
some utils for working w/ new "enum" format
squito Mar 20, 2015
2382bef
switch to using new "enum"
squito Mar 20, 2015
0be5120
Merge branch 'master' into SPARK-3454_w_jersey
squito Mar 23, 2015
1f361c8
update rat-excludes
squito Mar 23, 2015
a066055
set visibility on a lot of classes
squito Mar 23, 2015
a61a43c
oops, remove accidental checkin
squito Mar 23, 2015
99764e1
Merge branch 'SPARK-3454_w_jersey' into SPARK-3454
squito Mar 23, 2015
9f28b7e
ack, more cleanup
squito Mar 23, 2015
51eaedb
more visibility fixes
squito Mar 23, 2015
25cd894
if only given day, assume GMT
squito Mar 23, 2015
eaf3bbb
style
squito Mar 25, 2015
e48ba32
rename
squito Mar 25, 2015
a4b1397
stage metric distributions
squito Mar 31, 2015
aaba896
wire up task summary
squito Mar 31, 2015
b2efcaf
cleanup, combine stage-related paths into one resource
squito Mar 31, 2015
ad27de8
error handling on quantile values
squito Apr 1, 2015
63eb4a6
tests for taskSummary
squito Apr 1, 2015
fdfc181
stage/taskList
squito Apr 1, 2015
db61211
get JobProgressListener directly from UI
squito Apr 1, 2015
f5a5196
undo removal of renderJson from MasterPage, since there is no substit…
squito Apr 1, 2015
9922be0
Merge branch 'master' into stage_distributions
squito Apr 1, 2015
674f8dc
more explicit about total numbers of jobs & stages vs. number retained
squito Apr 1, 2015
1578a4a
doc
squito Apr 1, 2015
2c8b7ee
rats
squito Apr 1, 2015
b4a7863
fix compile error
squito Apr 1, 2015
1f53a66
style
squito Apr 1, 2015
e031719
fixes from review
squito Apr 8, 2015
b136e39
Revert "add sbt-revolved plugin, to make it easier to start & stop ht…
squito Apr 8, 2015
d2ef58d
revert changes that had HistoryServer refresh the application listing…
squito Apr 8, 2015
101a698
style
squito Apr 8, 2015
f05ae89
add in ExecutorSummaryInfo for MiMa :(
squito Apr 13, 2015
d493b38
Merge branch 'master' into SPARK-3454
squito Apr 13, 2015
cf86175
style
squito Apr 13, 2015
9ea682c
go back to good ol' java enums
squito Apr 15, 2015
c22b11f
fix compile error
squito Apr 15, 2015
f2e63ad
Merge branch 'master' into SPARK-3454
squito Apr 23, 2015
4c92af6
style
squito Apr 23, 2015
1ed0d07
Merge branch 'master' into SPARK-3454
squito Apr 27, 2015
0c6f968
update deps
squito Apr 27, 2015
a9c5cf1
undo changes superceeded by master
squito Apr 27, 2015
a325563
style
squito Apr 27, 2015
7bd4d15
delete security test, since it doesnt do anything
squito Apr 27, 2015
a157a2f
style
squito Apr 27, 2015
4a234d3
avoid jersey-media-json-jackson b/c of potential version conflicts
squito Apr 27, 2015
d2bde77
update error handling & scoping
squito Apr 27, 2015
39ac29c
move EnumUtil
squito Apr 27, 2015
ba3d9d2
upper case enums
squito Apr 27, 2015
2e19be2
lazily convert ApplicationInfo to avoid memory overhead
squito Apr 27, 2015
b2f8b91
@DeveloperApi
squito Apr 27, 2015
31c79ce
asm no longer needed for SPARK_PREPEND_CLASSES
squito Apr 27, 2015
52bbae8
StorageListener & StorageStatusListener needs to synchronize internal…
squito Apr 27, 2015
f48a7b0
docs
squito Apr 28, 2015
9d889d6
undo some unnecessary changes
squito Apr 28, 2015
7bf1811
move MetricHelper so mima doesnt think its exposed; comments
squito Apr 28, 2015
acb7ef6
fix indentation
squito Apr 28, 2015
dc8a7fe
style, fix errant comments
squito Apr 28, 2015
f90680e
Merge branch 'master' into SPARK-3454
squito Apr 28, 2015
14ac3ed
jersey-core needs to be explicit; move version & scope to parent pom.xml
squito Apr 28, 2015
befff0c
review feedback
squito Apr 28, 2015
2af11e5
Merge branch 'master' into SPARK-3454
squito May 1, 2015
188762c
multi-attempt
squito May 1, 2015
b87cd63
add sbt-revolved plugin, to make it easier to start & stop http serve…
squito Feb 6, 2015
c9bae1c
handle multiple attempts per app
squito May 1, 2015
9e51400
style
squito May 1, 2015
67008b4
rats
squito May 1, 2015
7f3bc4e
Revert "add sbt-revolved plugin, to make it easier to start & stop ht…
squito May 1, 2015
56db31e
update tests for mulit-attempt
squito May 1, 2015
cbaf287
Merge branch 'master' into SPARK-3454
squito May 1, 2015
cc1febf
add docs on the metrics-as-json api
squito May 5, 2015
ec140a2
create @Private
squito May 5, 2015
3347b72
mark EnumUtil as @Private
squito May 5, 2015
f016182
change all constructors json-pojo class constructors to be private[sp…
squito May 5, 2015
5ae02ad
Merge branch 'master' into SPARK-3454
squito May 5, 2015
5e78b4f
fix rendering problems
squito May 5, 2015
da1e35f
typos etc.
squito May 5, 2015
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
7 changes: 7 additions & 0 deletions .rat-excludes
Original file line number Diff line number Diff line change
Expand Up @@ -74,5 +74,12 @@ logs
.*scalastyle-output.xml
.*dependency-reduced-pom.xml
known_translations
json_expectation
local-1422981759269/*
local-1422981780767/*
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is this OK? or should the apache header go in the test resource files as well?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the header shouldn't go into those files

local-1425081759269/*
local-1426533911241/*
local-1426633911242/*
local-1427397477963/*
DESCRIPTION
NAMESPACE
8 changes: 8 additions & 0 deletions core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -228,6 +228,14 @@
<artifactId>json4s-jackson_${scala.binary.version}</artifactId>
<version>3.2.10</version>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-server</artifactId>
</dependency>
<dependency>
<groupId>com.sun.jersey</groupId>
<artifactId>jersey-core</artifactId>
</dependency>
<dependency>
<groupId>org.apache.mesos</groupId>
<artifactId>mesos</artifactId>
Expand Down
8 changes: 7 additions & 1 deletion core/src/main/java/org/apache/spark/JobExecutionStatus.java
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,15 @@

package org.apache.spark;

import org.apache.spark.util.EnumUtil;

public enum JobExecutionStatus {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this be private?

RUNNING,
SUCCEEDED,
FAILED,
UNKNOWN
UNKNOWN;

public static JobExecutionStatus fromString(String str) {
return EnumUtil.parseIgnoreCase(JobExecutionStatus.class, str);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
/*
* 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.spark.status.api.v1;

import org.apache.spark.util.EnumUtil;

public enum ApplicationStatus {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Private?

COMPLETED,
RUNNING;

public static ApplicationStatus fromString(String str) {
return EnumUtil.parseIgnoreCase(ApplicationStatus.class, str);
}

}
31 changes: 31 additions & 0 deletions core/src/main/java/org/apache/spark/status/api/v1/StageStatus.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
/*
* 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.spark.status.api.v1;

import org.apache.spark.util.EnumUtil;

public enum StageStatus {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Private?

ACTIVE,
COMPLETE,
FAILED,
PENDING;

public static StageStatus fromString(String str) {
return EnumUtil.parseIgnoreCase(StageStatus.class, str);
}
}
48 changes: 48 additions & 0 deletions core/src/main/java/org/apache/spark/status/api/v1/TaskSorting.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
/*
* 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.spark.status.api.v1;

import org.apache.spark.util.EnumUtil;

import java.util.HashSet;
import java.util.Set;

public enum TaskSorting {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

These enums don't seem to be used outside of this package; could we get away with making them package-private, or will jackson/jersey complain?

If that's not possible, we should probably tag them with @DeveloperApi, at least until we decide to make the non-REST API public also.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

unfortunately jersey requires them to be public -- I'll tag w/ @DeveloperApi

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually I think we need a new annotation here - we just want this to be totally private (@DeveloperAPI suggests we see a use case for end users). Mind adding a new @Private annotation?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should we tag this one as Private?

ID,
INCREASING_RUNTIME("runtime"),
DECREASING_RUNTIME("-runtime");

private final Set<String> alternateNames;
private TaskSorting(String... names) {
alternateNames = new HashSet<String>();
for (String n: names) {
alternateNames.add(n);
}
}

public static TaskSorting fromString(String str) {
String lower = str.toLowerCase();
for (TaskSorting t: values()) {
if (t.alternateNames.contains(lower)) {
return t;
}
}
return EnumUtil.parseIgnoreCase(TaskSorting.class, str);
}

}
38 changes: 38 additions & 0 deletions core/src/main/java/org/apache/spark/util/EnumUtil.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
/*
* 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.spark.util;

import com.google.common.base.Joiner;
import org.apache.spark.annotation.Private;

@Private
public class EnumUtil {
public static <E extends Enum<E>> E parseIgnoreCase(Class<E> clz, String str) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this one is also just an internal API, if I'm understanding correctly.

E[] constants = clz.getEnumConstants();
if (str == null) {
return null;
}
for (E e : constants) {
if (e.name().equalsIgnoreCase(str)) {
return e;
}
}
throw new IllegalArgumentException(
String.format("Illegal type='%s'. Supported type values: %s",
str, Joiner.on(", ").join(constants)));
}
}
2 changes: 1 addition & 1 deletion core/src/main/scala/org/apache/spark/SparkContext.scala
Original file line number Diff line number Diff line change
Expand Up @@ -428,7 +428,7 @@ class SparkContext(config: SparkConf) extends Logging with ExecutorAllocationCli
_ui =
if (conf.getBoolean("spark.ui.enabled", true)) {
Some(SparkUI.createLiveUI(this, _conf, listenerBus, _jobProgressListener,
_env.securityManager,appName))
_env.securityManager,appName, startTime = startTime))
} else {
// For tests, do not enable the UI
None
Expand Down
41 changes: 41 additions & 0 deletions core/src/main/scala/org/apache/spark/annotation/Private.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
/*
* 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.spark.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
* A class that is considered private to the internals of Spark -- there is a high-likelihood
* they will be changed in future versions of Spark.
*
* This should be used only when the standard Scala / Java means of protecting classes are
* insufficient. In particular, Java has no equivalent of private[spark], so we use this annotation
* in its place.
*
* NOTE: If there exists a Scaladoc comment that immediately precedes this annotation, the first
* line of the comment must be ":: Private ::" with no trailing blank line. This is because
* of the known issue that Scaladoc displays only either the annotation or the comment, whichever
* comes first.
*/
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.TYPE, ElementType.FIELD, ElementType.METHOD, ElementType.PARAMETER,
ElementType.CONSTRUCTOR, ElementType.LOCAL_VARIABLE, ElementType.PACKAGE})
public @interface Private {}
Original file line number Diff line number Diff line change
Expand Up @@ -19,15 +19,15 @@ package org.apache.spark.deploy.history

import org.apache.spark.ui.SparkUI

private[history] case class ApplicationAttemptInfo(
private[spark] case class ApplicationAttemptInfo(
attemptId: Option[String],
startTime: Long,
endTime: Long,
lastUpdated: Long,
sparkUser: String,
completed: Boolean = false)

private[history] case class ApplicationHistoryInfo(
private[spark] case class ApplicationHistoryInfo(
id: String,
name: String,
attempts: List[ApplicationAttemptInfo])
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,23 +17,21 @@

package org.apache.spark.deploy.history

import java.io.{IOException, BufferedInputStream, FileNotFoundException, InputStream}
import java.io.{BufferedInputStream, FileNotFoundException, IOException, InputStream}
import java.util.concurrent.{ExecutorService, Executors, TimeUnit}

import scala.collection.mutable
import scala.concurrent.duration.Duration

import com.google.common.util.concurrent.ThreadFactoryBuilder

import com.google.common.util.concurrent.MoreExecutors
import org.apache.hadoop.fs.permission.AccessControlException
import com.google.common.util.concurrent.{MoreExecutors, ThreadFactoryBuilder}
import org.apache.hadoop.fs.{FileStatus, Path}
import org.apache.hadoop.fs.permission.AccessControlException

import org.apache.spark.{Logging, SecurityManager, SparkConf}
import org.apache.spark.deploy.SparkHadoopUtil
import org.apache.spark.io.CompressionCodec
import org.apache.spark.scheduler._
import org.apache.spark.ui.SparkUI
import org.apache.spark.util.{Clock, SystemClock, ThreadUtils, Utils}
import org.apache.spark.{Logging, SecurityManager, SparkConf}

/**
* A class that provides application history from event logs stored in the file system.
Expand Down Expand Up @@ -151,7 +149,7 @@ private[history] class FsHistoryProvider(conf: SparkConf, clock: Clock)
val conf = this.conf.clone()
val appSecManager = new SecurityManager(conf)
SparkUI.createHistoryUI(conf, replayBus, appSecManager, appId,
HistoryServer.getAttemptURI(appId, attempt.attemptId))
HistoryServer.getAttemptURI(appId, attempt.attemptId), attempt.startTime)
// Do not call ui.bind() to avoid creating a new server for each application
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import org.eclipse.jetty.servlet.{ServletContextHandler, ServletHolder}

import org.apache.spark.{Logging, SecurityManager, SparkConf}
import org.apache.spark.deploy.SparkHadoopUtil
import org.apache.spark.status.api.v1.{ApplicationInfo, ApplicationsListResource, JsonRootResource, UIRoot}
import org.apache.spark.ui.{SparkUI, UIUtils, WebUI}
import org.apache.spark.ui.JettyUtils._
import org.apache.spark.util.{SignalLogger, Utils}
Expand All @@ -45,7 +46,7 @@ class HistoryServer(
provider: ApplicationHistoryProvider,
securityManager: SecurityManager,
port: Int)
extends WebUI(securityManager, port, conf) with Logging {
extends WebUI(securityManager, port, conf) with Logging with UIRoot {

// How many applications to retain
private val retainedApplications = conf.getInt("spark.history.retainedApplications", 50)
Expand All @@ -56,7 +57,7 @@ class HistoryServer(
require(parts.length == 1 || parts.length == 2, s"Invalid app key $key")
val ui = provider
.getAppUI(parts(0), if (parts.length > 1) Some(parts(1)) else None)
.getOrElse(throw new NoSuchElementException())
.getOrElse(throw new NoSuchElementException(s"no app with key $key"))
attachSparkUI(ui)
ui
}
Expand Down Expand Up @@ -113,6 +114,10 @@ class HistoryServer(
}
}

def getSparkUI(appKey: String): Option[SparkUI] = {
Option(appCache.get(appKey))
}

initialize()

/**
Expand All @@ -123,6 +128,9 @@ class HistoryServer(
*/
def initialize() {
attachPage(new HistoryPage(this))

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: delete

attachHandler(JsonRootResource.getJsonServlet(this))

attachHandler(createStaticHandler(SparkUI.STATIC_RESOURCE_DIR, "/static"))

val contextHandler = new ServletContextHandler
Expand Down Expand Up @@ -160,7 +168,13 @@ class HistoryServer(
*
* @return List of all known applications.
*/
def getApplicationList(): Iterable[ApplicationHistoryInfo] = provider.getListing()
def getApplicationList(): Iterable[ApplicationHistoryInfo] = {
provider.getListing()
}

def getApplicationInfoList: Iterator[ApplicationInfo] = {
getApplicationList().iterator.map(ApplicationsListResource.appHistoryInfoToPublicAppInfo)
}

/**
* Returns the provider configuration to show in the listing page.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ import org.apache.spark.annotation.DeveloperApi
import org.apache.spark.deploy.ApplicationDescription
import org.apache.spark.util.Utils

private[deploy] class ApplicationInfo(
private[spark] class ApplicationInfo(
val startTime: Long,
val id: String,
val desc: ApplicationDescription,
Expand Down
Loading