Return-Path: Delivered-To: apmail-lucene-hadoop-commits-archive@locus.apache.org Received: (qmail 82155 invoked from network); 20 Jun 2007 19:34:19 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 20 Jun 2007 19:34:17 -0000 Received: (qmail 45423 invoked by uid 500); 20 Jun 2007 19:34:19 -0000 Delivered-To: apmail-lucene-hadoop-commits-archive@lucene.apache.org Received: (qmail 45373 invoked by uid 500); 20 Jun 2007 19:34:19 -0000 Mailing-List: contact hadoop-commits-help@lucene.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: hadoop-dev@lucene.apache.org Delivered-To: mailing list hadoop-commits@lucene.apache.org Received: (qmail 45344 invoked by uid 99); 20 Jun 2007 19:34:19 -0000 Received: from herse.apache.org (HELO herse.apache.org) (140.211.11.133) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 20 Jun 2007 12:34:19 -0700 X-ASF-Spam-Status: No, hits=-99.5 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 20 Jun 2007 12:34:14 -0700 Received: by eris.apache.org (Postfix, from userid 65534) id B49A61A981D; Wed, 20 Jun 2007 12:33:54 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r549209 - in /lucene/hadoop/trunk: CHANGES.txt conf/hadoop-default.xml src/java/org/apache/hadoop/dfs/JspHelper.java src/webapps/job/jobdetails.jsp src/webapps/job/jobtracker.jsp Date: Wed, 20 Jun 2007 19:33:54 -0000 To: hadoop-commits@lucene.apache.org From: cutting@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20070620193354.B49A61A981D@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: cutting Date: Wed Jun 20 12:33:53 2007 New Revision: 549209 URL: http://svn.apache.org/viewvc?view=rev&rev=549209 Log: HADOOP-1484. Permit one to kill jobs from the web ui. Modified: lucene/hadoop/trunk/CHANGES.txt lucene/hadoop/trunk/conf/hadoop-default.xml lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/JspHelper.java lucene/hadoop/trunk/src/webapps/job/jobdetails.jsp lucene/hadoop/trunk/src/webapps/job/jobtracker.jsp Modified: lucene/hadoop/trunk/CHANGES.txt URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/CHANGES.txt?view=diff&rev=549209&r1=549208&r2=549209 ============================================================================== --- lucene/hadoop/trunk/CHANGES.txt (original) +++ lucene/hadoop/trunk/CHANGES.txt Wed Jun 20 12:33:53 2007 @@ -188,6 +188,11 @@ 58. HADOOP-1505. Remove spurious stacktrace in ZlibFactory introduced in HADOOP-1093. (Michael Stack via tomwhite) + 59. HADOOP-1484. Permit one to kill jobs from the web ui. Note that + this is disabled by default. One must set + "webinterface.private.actions" to enable this. + (Enis Soztutar via cutting) + Release 0.13.0 - 2007-06-08 Modified: lucene/hadoop/trunk/conf/hadoop-default.xml URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/conf/hadoop-default.xml?view=diff&rev=549209&r1=549208&r2=549209 ============================================================================== --- lucene/hadoop/trunk/conf/hadoop-default.xml (original) +++ lucene/hadoop/trunk/conf/hadoop-default.xml Wed Jun 20 12:33:53 2007 @@ -912,4 +912,16 @@ calls + + + + webinterface.private.actions + false + If set to true, the web interfaces of JT and NN may contain + actions, such as kill job, delete file, etc., that should + not be exposed to public. Enable this option if the interfaces + are only reachable by those who have the right authorization. + + + Modified: lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/JspHelper.java URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/JspHelper.java?view=diff&rev=549209&r1=549208&r2=549209 ============================================================================== --- lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/JspHelper.java (original) +++ lucene/hadoop/trunk/src/java/org/apache/hadoop/dfs/JspHelper.java Wed Jun 20 12:33:53 2007 @@ -32,7 +32,7 @@ public class JspHelper { static FSNamesystem fsn = null; static InetSocketAddress nameNodeAddr; - static Configuration conf = new Configuration(); + public static Configuration conf = new Configuration(); static int defaultChunkSizeToView = conf.getInt("dfs.default.chunk.view.size", 32 * 1024); Modified: lucene/hadoop/trunk/src/webapps/job/jobdetails.jsp URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/webapps/job/jobdetails.jsp?view=diff&rev=549209&r1=549208&r2=549209 ============================================================================== --- lucene/hadoop/trunk/src/webapps/job/jobdetails.jsp (original) +++ lucene/hadoop/trunk/src/webapps/job/jobdetails.jsp Wed Jun 20 12:33:53 2007 @@ -8,10 +8,14 @@ import="java.text.DecimalFormat" import="org.apache.hadoop.mapred.*" import="org.apache.hadoop.util.*" + import="org.apache.hadoop.dfs.JspHelper" %> <%! + private static final String PRIVATE_ACTIONS_KEY + = "webinterface.private.actions"; + JobTracker tracker = JobTracker.getTracker(); String trackerName = StringUtils.simpleHostname(tracker.getJobTrackerMachine()); @@ -70,6 +74,18 @@ ) + "\n"); } + + private void printConfirm(JspWriter out, String jobId) throws IOException{ + String url = "jobdetails.jsp?jobid=" + jobId; + out.print("" + + "

Are you sure you want to kill " + jobId + + " ?


" + + "KillDon't Kill
"); + } + %> <% String jobId = request.getParameter("jobid"); @@ -83,6 +99,19 @@ catch (NumberFormatException ignored) { } } + + JobInProgress job = (JobInProgress) tracker.getJob(jobId); + + if(JspHelper.conf.getBoolean(PRIVATE_ACTIONS_KEY, false)) { + String action = request.getParameter("action"); + if(action!=null && action.equalsIgnoreCase("confirm")) { + printConfirm(out, jobId); + return; + } + else if(action != null && action.equalsIgnoreCase("kill")) { + job.kill(); + } + } %> @@ -100,7 +129,6 @@

Hadoop <%=jobId%> on <%=trackerName%>

<% - JobInProgress job = (JobInProgress) tracker.getJob(jobId); if (job == null) { out.print("Job " + jobId + " not found.
\n"); return; @@ -117,17 +145,27 @@ } else { out.print("Job File: " + profile.getJobFile() + "
\n"); } - out.print("Started at: " + new Date(job.getStartTime()) + "
\n"); if (runState == JobStatus.RUNNING) { out.print("Status: Running
\n"); + out.print("Started at: " + new Date(job.getStartTime()) + "
\n"); + out.print("Runnning for: " + StringUtils.formatTimeDiff( + System.currentTimeMillis(), job.getStartTime()) + "
\n"); } else { if (runState == JobStatus.SUCCEEDED) { out.print("Status: Succeeded
\n"); + out.print("Started at : " + new Date(job.getStartTime()) + "
\n"); + out.print("Finished at: " + new Date(job.getFinishTime()) + + "
\n"); + out.print("Finished in: " + StringUtils.formatTimeDiff( + job.getFinishTime(), job.getStartTime()) + "
\n"); } else if (runState == JobStatus.FAILED) { out.print("Status: Failed
\n"); + out.print("Started at: " + new Date(job.getStartTime()) + "
\n"); + out.print("Failed at : " + new Date(job.getFinishTime()) + + "
\n"); + out.print("Failed in : " + StringUtils.formatTimeDiff( + job.getFinishTime(), job.getStartTime()) + "
\n"); } - out.print("Finished at: " + new Date(job.getFinishTime()) + - "
\n"); } if (flakyTaskTrackers > 0) { out.print("Black-listed TaskTrackers: " + @@ -195,6 +233,11 @@ %> + +<% if(JspHelper.conf.getBoolean(PRIVATE_ACTIONS_KEY, false) + && runState == JobStatus.RUNNING) { %> +
Kill this job +<% } %>
Go back to JobTracker
Hadoop, 2006.
Modified: lucene/hadoop/trunk/src/webapps/job/jobtracker.jsp URL: http://svn.apache.org/viewvc/lucene/hadoop/trunk/src/webapps/job/jobtracker.jsp?view=diff&rev=549209&r1=549208&r2=549209 ============================================================================== --- lucene/hadoop/trunk/src/webapps/job/jobtracker.jsp (original) +++ lucene/hadoop/trunk/src/webapps/job/jobtracker.jsp Wed Jun 20 12:33:53 2007 @@ -64,10 +64,12 @@ ClusterStatus status = tracker.getClusterStatus(); out.print("\n"+ "" + - "\n"); + "" + + "\n"); out.print("
MapsReducesTasks/NodeNodes
Tasks/NodeTotal SubmissionsNodes
" + status.getMapTasks() + "" + status.getReduceTasks() + "" + - status.getMaxTasks() + "" + + status.getMaxTasks() + "" + + tracker.getTotalSubmissions() + "" + status.getTaskTrackers() + "
\n"); } %>