Skip to content

Commit

Permalink
lazily convert ApplicationInfo to avoid memory overhead
Browse files Browse the repository at this point in the history
  • Loading branch information
squito committed Apr 27, 2015
1 parent ba3d9d2 commit 2e19be2
Show file tree
Hide file tree
Showing 5 changed files with 9 additions and 9 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -162,8 +162,8 @@ class HistoryServer(
provider.getListing()
}

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

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,12 +66,12 @@ class MasterWebUI(val master: Master, requestedPort: Int)
ui.getHandlers.foreach(detachHandler)
}

def getApplicationInfoList: Seq[ApplicationInfo] = {
def getApplicationInfoList: Iterator[ApplicationInfo] = {
val state = masterPage.getMasterState
val activeApps = state.activeApps.sortBy(_.startTime).reverse
val completedApps = state.completedApps.sortBy(_.endTime).reverse
activeApps.map { ApplicationsListResource.convertApplicationInfo(_, false) } ++
completedApps.map { ApplicationsListResource.convertApplicationInfo(_, true) }
activeApps.iterator.map { ApplicationsListResource.convertApplicationInfo(_, false) } ++
completedApps.iterator.map { ApplicationsListResource.convertApplicationInfo(_, true) }
}

def getSparkUI(appId: String): Option[SparkUI] = {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ private[v1] class ApplicationListResource(uiRoot: UIRoot) {
@QueryParam("status") status: JList[ApplicationStatus],
@DefaultValue("2010-01-01") @QueryParam("minDate") minDate: SimpleDateParam,
@DefaultValue("3000-01-01") @QueryParam("maxDate") maxDate: SimpleDateParam
): Seq[ApplicationInfo] = {
): Iterator[ApplicationInfo] = {
val allApps = uiRoot.getApplicationInfoList
val adjStatus = {
if (status.isEmpty) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -103,7 +103,7 @@ private[spark] object JsonRootResource {
*/
private[spark] trait UIRoot {
def getSparkUI(appKey: String): Option[SparkUI]
def getApplicationInfoList: Seq[ApplicationInfo]
def getApplicationInfoList: Iterator[ApplicationInfo]

/**
* Get the spark UI with the given appID, and apply a function
Expand Down
4 changes: 2 additions & 2 deletions core/src/main/scala/org/apache/spark/ui/SparkUI.scala
Original file line number Diff line number Diff line change
Expand Up @@ -92,8 +92,8 @@ private[spark] class SparkUI private (
if (appId == appName) Some(this) else None
}

def getApplicationInfoList: Seq[ApplicationInfo] = {
Seq(new ApplicationInfo(
def getApplicationInfoList: Iterator[ApplicationInfo] = {
Iterator(new ApplicationInfo(
id = appName,
name = appName,
startTime = new Date(startTime),
Expand Down

0 comments on commit 2e19be2

Please sign in to comment.