Drastically reduced memory usage, mostly using deduplication.

This commit is contained in:
Šesták Vít
2016-02-26 17:03:41 +01:00
parent d8ca15d367
commit 228456c349
9 changed files with 143 additions and 23 deletions

View File

@@ -11,7 +11,7 @@ import play.api.data.Forms._
import play.api.data._
import play.api.db.slick.{DatabaseConfigProvider, HasDatabaseConfigProvider}
import play.api.http.ContentTypes
import play.api.i18n.{I18nSupport, MessagesApi}
import play.api.i18n.MessagesApi
import play.api.libs.json._
import play.api.mvc._
import play.api.routing.JavaScriptReverseRouter
@@ -62,7 +62,6 @@ class Application @Inject() (
import dbConfig.driver.api._
import models.tables.snoozesTable
import reportsProcessor.processResults
import secureRequestConversion._
val dateFormatter = DateTimeFormat.forPattern("dd-MM-yyyy")
@@ -126,6 +125,11 @@ class Application @Inject() (
lastRefreshTime <- lastRefreshTimeFuture
} yield {
Logger.debug("indexPage: Got all ingredients")
/*val (global, classes) = ObjectGraphDuplicityMeasurer.measureUnique((vulnerableDependencies, allWarnings, groupedDependencies))
Logger.debug("(all,unique): "+global)
Logger.debug(classes.toIndexedSeq.sortBy(x => (x._2, x._1.getName)).mkString("\n"))
Logger.debug("footprint: "+ObjectGraphMeasurer.measure((vulnerableDependencies, allWarnings, groupedDependencies)))
//Logger.debug("footprint: "+ObjectGraphMeasurer.measure(Array((vulnerableDependencies, allWarnings, groupedDependencies))))*/
Ok(views.html.index(
vulnerableDependencies = vulnerableDependencies,
warnings = allWarnings,

View File

@@ -96,7 +96,7 @@ final class DependencyCheckReportsProcessor @Inject() (
// TODO: log analysis
// TODO: related dependencies
(vulnerableDependencies, allWarnings, groupedDependencies)
(vulnerableDependencies, allWarnings.map(_.optimize), groupedDependencies)
}
}finally{
Logger.debug("Reports processed")

View File

@@ -12,10 +12,13 @@ object WarningSeverity extends Enumeration {
}
sealed abstract class Warning {
def optimize: Warning
def html: Html
def id: String
def allowSnoozes = true
def severity: WarningSeverity
}
final case class IdentifiedWarning(id: String, html: Html, severity: WarningSeverity) extends Warning
final case class IdentifiedWarning(id: String, html: Html, severity: WarningSeverity) extends Warning{
def optimize = copy(html = Html(html.body))
}