Skip to content

Commit b01c9ed

Browse files
committed
Enable GZip by default for Web UI
1 parent 52d1281 commit b01c9ed

File tree

3 files changed

+31
-0
lines changed

3 files changed

+31
-0
lines changed

core/pom.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,11 @@
146146
<artifactId>jetty-servlet</artifactId>
147147
<scope>compile</scope>
148148
</dependency>
149+
<dependency>
150+
<groupId>org.eclipse.jetty</groupId>
151+
<artifactId>jetty-servlets</artifactId>
152+
<scope>compile</scope>
153+
</dependency>
149154
<!-- Because we mark jetty as provided and shade it, its dependency
150155
orbit is ignored, so we explicitly list it here (see SPARK-5557).-->
151156
<dependency>

core/src/main/scala/org/apache/spark/ui/JettyUtils.scala

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import scala.xml.Node
2727
import org.eclipse.jetty.server.Server
2828
import org.eclipse.jetty.server.handler._
2929
import org.eclipse.jetty.servlet._
30+
import org.eclipse.jetty.servlets.GzipFilter
3031
import org.eclipse.jetty.util.thread.QueuedThreadPool
3132
import org.json4s.JValue
3233
import org.json4s.jackson.JsonMethods.{pretty, render}
@@ -166,8 +167,26 @@ private[spark] object JettyUtils extends Logging {
166167
contextHandler
167168
}
168169

170+
private def addDefaultFilters(handlers: Seq[ServletContextHandler], conf: SparkConf): Unit = {
171+
val compression = conf.getBoolean("spark.ui.compression", true)
172+
if (compression) {
173+
// Enable gzip for Web UI
174+
logInfo("Adding filter: GzipFilter")
175+
val holder = new FilterHolder()
176+
holder.setClassName(classOf[GzipFilter].getName())
177+
holder.setInitParameter("methods", "GET,POST")
178+
holder.setInitParameter("mimeTypes", "text/html,text/xml,text/plain,text/css," +
179+
"text/javascript,text/json,application/x-javascript,application/javascript," +
180+
"application/json,application/xml,application/xml+xhtml,image/svg+xml")
181+
val enumDispatcher = java.util.EnumSet.of(DispatcherType.ASYNC, DispatcherType.ERROR,
182+
DispatcherType.FORWARD, DispatcherType.INCLUDE, DispatcherType.REQUEST)
183+
handlers.foreach { case (handler) => handler.addFilter(holder, "/*", enumDispatcher) }
184+
}
185+
}
186+
169187
/** Add filters, if any, to the given list of ServletContextHandlers */
170188
def addFilters(handlers: Seq[ServletContextHandler], conf: SparkConf) {
189+
addDefaultFilters(handlers, conf)
171190
val filters: Array[String] = conf.get("spark.ui.filters", "").split(',').map(_.trim())
172191
filters.foreach {
173192
case filter : String =>

pom.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -382,6 +382,12 @@
382382
<version>${jetty.version}</version>
383383
<scope>provided</scope>
384384
</dependency>
385+
<dependency>
386+
<groupId>org.eclipse.jetty</groupId>
387+
<artifactId>jetty-servlets</artifactId>
388+
<version>${jetty.version}</version>
389+
<scope>provided</scope>
390+
</dependency>
385391
<dependency>
386392
<groupId>org.eclipse.jetty</groupId>
387393
<artifactId>jetty-util</artifactId>
@@ -1442,6 +1448,7 @@
14421448
<include>org.eclipse.jetty:jetty-http</include>
14431449
<include>org.eclipse.jetty:jetty-continuation</include>
14441450
<include>org.eclipse.jetty:jetty-servlet</include>
1451+
<include>org.eclipse.jetty:jetty-servlets</include>
14451452
<include>org.eclipse.jetty:jetty-plus</include>
14461453
<include>org.eclipse.jetty:jetty-security</include>
14471454
<include>org.eclipse.jetty:jetty-util</include>

0 commit comments

Comments
 (0)