This is an automated email from the ASF dual-hosted git repository.
avijayan pushed a commit to branch branch-2.7
in repository https://gitbox.apache.org/repos/asf/ambari.git
The following commit(s) were added to refs/heads/branch-2.7 by this push:
new d54e08a [AMBARI-24471] URL rewrite rules in gateway cannot be applied
when thee response content from ambari server is compressed. (#2049)
d54e08a is described below
commit d54e08a220ebb00c6d867c2f320d9bf5fd414b95
Author: avijayanhwx <[email protected]>
AuthorDate: Mon Aug 13 21:42:41 2018 -0700
[AMBARI-24471] URL rewrite rules in gateway cannot be applied when thee
response content from ambari server is compressed. (#2049)
* [AMBARI-24471] URL rewrite rules in gateway cannot be applied when the
response content from ambari server is compressed.
* [AMBARI-24471] URL rewrite rules in gateway cannot be applied when the
response content from ambari server is compressed. (2)
---
ambari-server/docs/configuration/index.md | 9 +++++++--
.../ambari/server/configuration/Configuration.java | 16 ++++++++++++++++
.../apache/ambari/server/controller/AmbariServer.java | 15 +++++++++------
3 files changed, 32 insertions(+), 8 deletions(-)
diff --git a/ambari-server/docs/configuration/index.md
b/ambari-server/docs/configuration/index.md
index 955a91b..a0c2d04 100644
--- a/ambari-server/docs/configuration/index.md
+++ b/ambari-server/docs/configuration/index.md
@@ -107,8 +107,11 @@ The following are the properties which can be used to
configure Ambari.
| db.mysql.jdbc.name | The name of the MySQL JDBC JAR connector.
|`mysql-connector-java.jar` |
| db.oracle.jdbc.name | The name of the Oracle JDBC JAR connector.
|`ojdbc6.jar` |
| default.kdcserver.port | The port used to communicate with the Kerberos Key
Distribution Center. |`88` |
+| execution.command.retry.count | The number of attempts to emit execution
command message to agent. Default is 4 |`4` |
+| execution.command.retry.interval | The interval in seconds between attempts
to emit execution command message to agent. Default is 15 |`15` |
| extensions.path | The location on the Ambari Server where stack extensions
exist.<br/><br/>The following are examples of valid
values:<ul><li>`/var/lib/ambari-server/resources/extensions`</ul> | |
| gpl.license.accepted | Whether user accepted GPL license. |`false` |
+| gzip.handler.jetty.enabled | Determines whether jetty Gzip compression is
enabled or not. |`true` |
| http.cache-control | The value that will be used to set the `Cache-Control`
HTTP response header. |`no-store` |
| http.charset | The value that will be used to set the Character encoding to
HTTP response header. |`utf-8` |
| http.pragma | The value that will be used to set the `PRAGMA` HTTP response
header. |`no-cache` |
@@ -131,7 +134,7 @@ The following are the properties which can be used to
configure Ambari.
| logsearch.portal.connect.timeout | The time, in milliseconds, that the
Ambari Server will wait while attempting to connect to the LogSearch Portal
service. |`5000` |
| logsearch.portal.external.address | Address of an external LogSearch Portal
service. (managed outside of Ambari) Using Ambari Credential store is required
for this feature (credential: 'logsearch.admin.credential') | |
| logsearch.portal.read.timeout | The time, in milliseconds, that the Ambari
Server will wait while attempting to read a response from the LogSearch Portal
service. |`5000` |
-| messaging.threadpool.size | Thread pool size for spring messaging |`1` |
+| messaging.threadpool.size | Thread pool size for spring messaging |`10` |
| metadata.path | The location on the Ambari Server where the stack resources
exist.<br/><br/>The following are examples of valid
values:<ul><li>`/var/lib/ambari-server/resources/stacks`</ul> | |
| metrics.retrieval-service.cache.timeout | The amount of time, in minutes,
that JMX and REST metrics retrieved directly can remain in the cache. |`30` |
| metrics.retrieval-service.request.ttl | The number of seconds to wait
between issuing JMX or REST metric requests to the same endpoint. This property
is used to throttle requests to the same URL being made too close
together<br/><br/> This property is related to
`metrics.retrieval-service.request.ttl.enabled`. |`5` |
@@ -162,6 +165,7 @@ The following are the properties which can be used to
configure Ambari.
| security.master.key.location | The location on the Ambari Server of the
master key file. This is the key to the master keystore. | |
| security.master.keystore.location | The location on the Ambari Server of the
master keystore file. | |
| security.passwords.encryption.enabled | Whether security password encryption
is enabled or not. In case it is we store passwords in their own file(s);
otherwise we store passwords in the Ambari credential store. |`false` |
+| security.server.cert_chain_name | The name of the file located in the
`security.server.keys_dir` directory containing the CA certificate chain used
to verify certificates during 2-way SSL communications. |`ca_chain.pem` |
| security.server.cert_name | The name of the file located in the
`security.server.keys_dir` directory where certificates will be generated when
Ambari uses the `openssl ca` command. |`ca.crt` |
| security.server.crt_pass | The password for the keystores, truststores, and
certificates. If not specified, then `security.server.crt_pass_file` should be
used | |
| security.server.crt_pass.len | The length of the randomly generated password
for keystores and truststores. |`50` |
@@ -273,7 +277,8 @@ The following are the properties which can be used to
configure Ambari.
| stack.upgrade.bypass.prechecks | Determines whether pre-upgrade checks will
be skipped when performing a rolling or express stack upgrade. |`false` |
| stack.upgrade.default.parallelism | Default value of max number of tasks to
schedule in parallel for upgrades. Upgrade packs can override this value.
|`100` |
| stackadvisor.script | The location and name of the Python stack advisor
script executed when configuring services.
|`/var/lib/ambari-server/resources/scripts/stack_advisor.py` |
-| stomp.max.message.size | The maximum size of a stomp text message. Default
is 2 MB. |`2097152` |
+| stomp.max_buffer.message.size | The maximum size of a buffer for stomp
message sending. Default is 5 MB. |`5242880` |
+| stomp.max_incoming.message.size | The maximum size of an incoming stomp text
message. Default is 2 MB. |`2097152` |
| subscription.registry.cache.size | Maximal cache size for spring
subscription registry. |`1500` |
| task.query.parameterlist.size | The maximum number of tasks which can be
queried by ID from the database. |`999` |
| topology.task.creation.parallel | Indicates whether parallel topology task
creation is enabled |`false` |
diff --git
a/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
b/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
index 8d1f520..e2c3953 100644
---
a/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
+++
b/ambari-server/src/main/java/org/apache/ambari/server/configuration/Configuration.java
@@ -467,6 +467,13 @@ public class Configuration {
"api.csrfPrevention.enabled", "true");
/**
+ * Determines whether Gzip handler is enabled for Jetty.
+ */
+ @Markdown(description = "Determines whether jetty Gzip compression is
enabled or not.")
+ public static final ConfigurationProperty<String> GZIP_HANDLER_JETTY_ENABLED
= new ConfigurationProperty<>(
+ "gzip.handler.jetty.enabled", "true");
+
+ /**
* Determines whether HTTP body data is compressed with GZIP.
*/
@Markdown(description = "Determines whether data sent to and from the Ambari
service should be compressed.")
@@ -3796,6 +3803,15 @@ public class Configuration {
return Boolean.parseBoolean(getProperty(API_GZIP_COMPRESSION_ENABLED));
}
+
+ /**
+ * Check to see if the API responses should be compressed via gzip or not
+ * @return false if not, true if gzip compression needs to be used.
+ */
+ public boolean isGzipHandlerEnabledForJetty() {
+ return Boolean.parseBoolean(getProperty(GZIP_HANDLER_JETTY_ENABLED));
+ }
+
/**
* Check to see if the agent API responses should be compressed via gzip or
not
* @return false if not, true if gzip compression needs to be used.
diff --git
a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java
b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java
index 986c7b6..07bf2b7 100644
---
a/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java
+++
b/ambari-server/src/main/java/org/apache/ambari/server/controller/AmbariServer.java
@@ -470,13 +470,16 @@ public class AmbariServer {
enableLog4jMonitor(configsMap);
- GzipHandler gzipHandler = new GzipHandler();
- gzipHandler.setHandler(root);
-
- //TODO minimal set, perhaps is needed to add some other mime types
- gzipHandler.setIncludedMimeTypes("text/html", "text/plain", "text/xml",
"text/css", "application/javascript",
+ if (configs.isGzipHandlerEnabledForJetty()) {
+ GzipHandler gzipHandler = new GzipHandler();
+ gzipHandler.setHandler(root);
+ //TODO minimal set, perhaps is needed to add some other mime types
+ gzipHandler.setIncludedMimeTypes("text/html", "text/plain",
"text/xml", "text/css", "application/javascript",
"application/x-javascript", "application/xml",
"application/x-www-form-urlencoded", "application/json");
- handlerList.addHandler(gzipHandler);
+ handlerList.addHandler(gzipHandler);
+ } else {
+ handlerList.addHandler(root);
+ }
server.setHandler(handlerList);