You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@twill.apache.org by ch...@apache.org on 2017/04/03 22:28:09 UTC
twill git commit: (TWILL-176) Redirect all requests to tracker URL to
/resources path
Repository: twill
Updated Branches:
refs/heads/master c8e2a615a -> 10fff16c0
(TWILL-176) Redirect all requests to tracker URL to /resources path
- "/resources" is the only path supported for the tracker service for now
This fixes #52 on Github.
Signed-off-by: Terence Yim <ch...@apache.org>
Project: http://git-wip-us.apache.org/repos/asf/twill/repo
Commit: http://git-wip-us.apache.org/repos/asf/twill/commit/10fff16c
Tree: http://git-wip-us.apache.org/repos/asf/twill/tree/10fff16c
Diff: http://git-wip-us.apache.org/repos/asf/twill/diff/10fff16c
Branch: refs/heads/master
Commit: 10fff16c07ca7e47f413b1965e72d5544e712433
Parents: c8e2a61
Author: Terence Yim <ch...@apache.org>
Authored: Mon Apr 3 14:42:44 2017 -0700
Committer: Terence Yim <ch...@apache.org>
Committed: Mon Apr 3 15:10:45 2017 -0700
----------------------------------------------------------------------
.../internal/json/ResourceReportAdapter.java | 1 +
.../internal/appmaster/TrackerService.java | 37 +++++++++++---------
2 files changed, 22 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/twill/blob/10fff16c/twill-core/src/main/java/org/apache/twill/internal/json/ResourceReportAdapter.java
----------------------------------------------------------------------
diff --git a/twill-core/src/main/java/org/apache/twill/internal/json/ResourceReportAdapter.java b/twill-core/src/main/java/org/apache/twill/internal/json/ResourceReportAdapter.java
index 4427704..7484f7a 100644
--- a/twill-core/src/main/java/org/apache/twill/internal/json/ResourceReportAdapter.java
+++ b/twill-core/src/main/java/org/apache/twill/internal/json/ResourceReportAdapter.java
@@ -39,6 +39,7 @@ public final class ResourceReportAdapter {
private ResourceReportAdapter() {
gson = new GsonBuilder()
.serializeNulls()
+ .setPrettyPrinting()
.registerTypeAdapter(TwillRunResources.class, new TwillRunResourcesCodec())
.registerTypeAdapter(ResourceReport.class, new ResourceReportCodec())
.create();
http://git-wip-us.apache.org/repos/asf/twill/blob/10fff16c/twill-yarn/src/main/java/org/apache/twill/internal/appmaster/TrackerService.java
----------------------------------------------------------------------
diff --git a/twill-yarn/src/main/java/org/apache/twill/internal/appmaster/TrackerService.java b/twill-yarn/src/main/java/org/apache/twill/internal/appmaster/TrackerService.java
index d3f7c86..f91efcc 100644
--- a/twill-yarn/src/main/java/org/apache/twill/internal/appmaster/TrackerService.java
+++ b/twill-yarn/src/main/java/org/apache/twill/internal/appmaster/TrackerService.java
@@ -61,6 +61,7 @@ import java.io.Writer;
import java.net.InetSocketAddress;
import java.net.URI;
import java.net.URL;
+import java.nio.charset.StandardCharsets;
import java.util.concurrent.Executor;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
@@ -178,33 +179,33 @@ public final class TrackerService extends AbstractIdleService {
final class ReportHandler extends SimpleChannelUpstreamHandler {
private final ResourceReportAdapter reportAdapter;
- public ReportHandler() {
+ ReportHandler() {
this.reportAdapter = ResourceReportAdapter.create();
}
@Override
public void messageReceived(ChannelHandlerContext ctx, MessageEvent e) throws Exception {
HttpRequest request = (HttpRequest) e.getMessage();
- if (!isValid(request)) {
- write404(e);
+ if (request.getMethod() != HttpMethod.GET) {
+ HttpResponse response = new DefaultHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.METHOD_NOT_ALLOWED);
+ response.setHeader(HttpHeaders.Names.CONTENT_TYPE, "text/plain; charset=UTF-8");
+ response.setContent(ChannelBuffers.wrappedBuffer("Only GET is supported".getBytes(StandardCharsets.UTF_8)));
+ writeResponse(e.getChannel(), response);
return;
}
- writeResponse(e);
- }
-
- // only accepts GET on /resources for now
- private boolean isValid(HttpRequest request) {
- return (request.getMethod() == HttpMethod.GET) && PATH.equals(request.getUri());
- }
+ if (!PATH.equals(request.getUri())) {
+ // Redirect all GET call to the /resources path.
+ HttpResponse response = new DefaultHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.TEMPORARY_REDIRECT);
+ response.setHeader(HttpHeaders.Names.LOCATION, PATH);
+ writeResponse(e.getChannel(), response);
+ return;
+ }
- private void write404(MessageEvent e) {
- HttpResponse response = new DefaultHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.NOT_FOUND);
- ChannelFuture future = e.getChannel().write(response);
- future.addListener(ChannelFutureListener.CLOSE);
+ writeResourceReport(e.getChannel());
}
- private void writeResponse(MessageEvent e) {
+ private void writeResourceReport(Channel channel) {
HttpResponse response = new DefaultHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK);
response.setHeader(HttpHeaders.Names.CONTENT_TYPE, "application/json; charset=UTF-8");
@@ -217,7 +218,11 @@ public final class TrackerService extends AbstractIdleService {
LOG.error("error writing resource report", e1);
}
response.setContent(content);
- ChannelFuture future = e.getChannel().write(response);
+ writeResponse(channel, response);
+ }
+
+ private void writeResponse(Channel channel, HttpResponse response) {
+ ChannelFuture future = channel.write(response);
future.addListener(ChannelFutureListener.CLOSE);
}