Skip to content

Commit

Permalink
Update code to compile with Play-2.3
Browse files Browse the repository at this point in the history
  • Loading branch information
Nils Kübler committed Sep 10, 2014
1 parent d452be4 commit 3069e33
Show file tree
Hide file tree
Showing 7 changed files with 40 additions and 28 deletions.
15 changes: 7 additions & 8 deletions app/controllers/Api.scala
Original file line number Diff line number Diff line change
Expand Up @@ -4,25 +4,24 @@
package controllers

import play.api.mvc._
import play.api.libs.json.Json._
import models.{MetricDef, Table}
import com.codahale.jerkson.Json._
import play.libs.Json._
import java.util.concurrent.TimeUnit
import play.api.Play

object Api extends Controller {

def heartbeat() = Action { implicit request =>
val heartBeatOk = toJson(Map("status" -> "OK"))
Ok(heartBeatOk).as(JSON)
Ok(stringify(heartBeatOk)).as(JSON)
}

def tables() = Action { implicit request =>
Ok(generate(Table.all())).as(JSON)
Ok(stringify(toJson(Table.all()))).as(JSON) // TODO: toJson really required ???
}

def regions() = Action { implicit request =>
val tables = request.queryString.get("table").flatten.toSet
val tables = request.queryString.get("table").get

val regions = if(tables.isEmpty) {
models.Region.all()
Expand All @@ -32,7 +31,7 @@ object Api extends Controller {
} flatten
}

Ok(generate(regions)).as(JSON)
Ok(stringify(toJson(regions))).as(JSON)
}

def metrics() = Action { implicit request =>
Expand All @@ -44,7 +43,7 @@ object Api extends Controller {
metricDef.metric(since, until)
}
}
Ok(generate(metrics.flatten)).as(JSON)
Ok(stringify(toJson(metrics.flatten))).as(JSON)
}

def metricsByTarget(target: String) = Action { implicit request =>
Expand All @@ -55,7 +54,7 @@ object Api extends Controller {
MetricDef.findRegionMetricDef(target, metricName).metric(since, until)
}

Ok(generate(metrics)).as(JSON)
Ok(stringify(toJson(metrics))).as(JSON)
}

def parseMetricNames(implicit request: Request[_]) =
Expand Down
35 changes: 20 additions & 15 deletions app/models/LogFile.scala
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,19 @@

package models

import org.apache.commons.lang3.StringUtils

import collection.mutable
import play.api.{Configuration, Logger}
import play.api.libs.ws.{Response, WS}
import play.api.libs.concurrent.NotWaiting
import org.apache.commons.lang.StringUtils
import play.api.Play.current
import play.api.libs.ws._
import scala.concurrent.{Await, Future}
import models.LogFile._
import collection.mutable.ListBuffer
import scala.util.control.Breaks._
import java.util.regex._
import java.text.SimpleDateFormat
import scala.concurrent.duration._
import globals.hBaseContext
import models.hbase.RegionServer

Expand All @@ -23,14 +26,15 @@ case class LogFile(regionServer:RegionServer) {
val url = logFileUrl(regionServer)

if (!logOffsets.contains(regionServer.serverName)) {
val headValue: NotWaiting[Response] = WS.url(url).head().value
val logLength = headValue.get.header("Content-Length").get.toLong
val holder: WSRequestHolder = WS.url(url)
val headValue = WS.url(url).head().value
val logLength = headValue.get.get.header("Content-Length").get.toLong
val offset = scala.math.max(0, logLength - initialLogLookBehindSizeInKBs * 1024)
Logger.info("Initializing log offset to [%d] for log file at %s with content-length [%d]".format(offset, url, logLength))
logOffsets(regionServer.serverName) = offset
}

var response: Response = recentLogContent(url, logOffsets(regionServer.serverName))
var response: WSResponse = recentLogContent(url, logOffsets(regionServer.serverName))

if(wasRotated(response)) {
logOffsets(regionServer.serverName) = 0l
Expand All @@ -52,22 +56,23 @@ case class LogFile(regionServer:RegionServer) {

def recentLogContent(url: String, offset: Long) = {
Logger.debug("... fetching Logfile from %s with range [%d-]".format(url, offset))
val response = WS.url(url).withHeaders(("Range", "bytes=%d-".format(offset))).get().await(logFetchTimeout * 1000).get
val statusCode = response.ahcResponse.getStatusCode
if (!List(200, 206, 416).contains(response.ahcResponse.getStatusCode)) {
val future = WS.url(url).withHeaders(("Range", "bytes=%d-".format(offset))).get()
val response = Await.result(future, (logFetchTimeout * 1000) nanos)
val statusCode = response.status
if (!List(200, 206, 416).contains(statusCode)) {
throw new Exception("couldn't load Compaction Metrics from URL: '" +
url + " (statusCode was: "+statusCode+")")
}
response
}

def wasRotated(response:Response):Boolean = {
if(response.ahcResponse.getStatusCode == 416) {
def wasRotated(response:WSResponse):Boolean = {
if(response.status == 416) {
Logger.debug("Log file [%s] seems to have rotated (StatusCode = 416)")
return true
}

val contentRange = response.getAHCResponse.getHeader("Content-Range")
val contentRange = response.header("Content-Range").getOrElse("")
val rangeValue = StringUtils.substringBetween(contentRange, "bytes", "/").trim()

if (rangeValue eq "*") {
Expand Down Expand Up @@ -118,7 +123,7 @@ object LogFile {
breakable {
globals.hBaseContext.hBase.eachRegionServer { regionServer =>
val url = logRootUrl(regionServer)
val response = WS.url(url).get().value.get
val response = WS.url(url).get().value.get.get
val logFileMatcher = logFilePathPattern.matcher(response.body)

if (logFileMatcher.find()) {
Expand All @@ -142,8 +147,8 @@ object LogFile {
Logger.info("setting Loglevels for the Regionservers")
hBaseContext.hBase.eachRegionServer { regionServer =>
val url = logLevelUrl(regionServer)
val response = WS.url(url).get().value.get
if (response.ahcResponse.getStatusCode() != 200) {
val response = WS.url(url).get().value.get.get
if (response.status != 200) {
throw new Exception("couldn't set log-level with URL: " + url);
} else {
Logger.debug("... Loglevel set for server %s".format(regionServer))
Expand Down
4 changes: 2 additions & 2 deletions app/utils/Console.scala
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,6 @@
package utils

object Console {
def startApp() = play.api.Play.start(new play.api.Application(new java.io.File("."), classOf[play.core.StaticApplication].getClassLoader, None, play.api.Mode.Test))
def stopApp() = play.api.Play.stop()
// def startApp() = play.api.Play.start(new play.api.Application(new java.io.File("."), classOf[play.core.StaticApplication].getClassLoader, None, play.api.Mode.Test))
// def stopApp() = play.api.Play.stop()
}
4 changes: 3 additions & 1 deletion app/views/compactions/index.scala.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

@import java.text.DateFormat

@import play.libs.Json._

@includes = {
<link rel="stylesheet" media="screen" href='@routes.Assets.at("stylesheets/metric_chart_view.css")'>
<script src='@routes.Assets.at("javascripts/views/common/VisualCountDown.js")' type="text/javascript"></script>
Expand All @@ -13,7 +15,7 @@
}

@clusterMetricChart(metricNames: Seq[String]) = {
<div class="metric-chart-view compaction-metric-chart-view" data-metric-names="@com.codahale.jerkson.Json.generate(metricNames)">
<div class="metric-chart-view compaction-metric-chart-view" data-metric-names="@stringify(toJson(metricNames))">
<div class="x-axis"></div>
<div class="chart"></div>
<div class="legend-container">
Expand Down
2 changes: 2 additions & 0 deletions app/views/regions/index.scala.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

@import helpers.Utils._

@import play.libs.Json._

@main("Regions") {
<ul>
@regions.map { region =>
Expand Down
4 changes: 3 additions & 1 deletion app/views/regions/show.scala.html
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,10 @@
@import helpers.Referer
@import java.text.DateFormat

@import play.libs.Json._

@regionMetricChart(metricNames: Seq[String]) = {
<div class="metric-chart-view region-metric-chart-view" data-region-name="@region.regionName" data-metric-names="@com.codahale.jerkson.Json.generate(metricNames)">
<div class="metric-chart-view region-metric-chart-view" data-region-name="@region.regionName" data-metric-names="@stringify(toJson(metricNames))">
<div class="x-axis"></div>
<div class="chart"></div>
<div class="legend-container">
Expand Down
4 changes: 3 additions & 1 deletion app/views/tables/show.scala.html
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@

@import helpers.Referer

@import play.libs.Json._

@tableRegionsChart() = {
<div class="table-regions-chart-view" data-table="@com.codahale.jerkson.Json.generate(table)">
<div class="table-regions-chart-view" data-table="@stringify(toJson(table))">
<div class="y-axis"></div>
<div class="x-axis"></div>
<div class="chart"></div>
Expand Down

0 comments on commit 3069e33

Please sign in to comment.