You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lens.apache.org by ra...@apache.org on 2016/11/09 05:51:15 UTC

lens git commit: LENS-968: Configure timeouts for queries and terminate queries in case of timeouts

Repository: lens
Updated Branches:
  refs/heads/master 3c23f18c2 -> 4ae48c749


LENS-968: Configure timeouts for queries and terminate queries in case of timeouts


Project: http://git-wip-us.apache.org/repos/asf/lens/repo
Commit: http://git-wip-us.apache.org/repos/asf/lens/commit/4ae48c74
Tree: http://git-wip-us.apache.org/repos/asf/lens/tree/4ae48c74
Diff: http://git-wip-us.apache.org/repos/asf/lens/diff/4ae48c74

Branch: refs/heads/master
Commit: 4ae48c7497ef46319b1b5f39d21531b11a5afba8
Parents: 3c23f18
Author: Amareshwari Sriramadasu <am...@apache.org>
Authored: Wed Nov 9 13:50:45 2016 +0800
Committer: raju <ra...@apache.org>
Committed: Wed Nov 9 13:50:45 2016 +0800

----------------------------------------------------------------------
 .../src/main/resources/esdriver-default.xml     |   7 ++
 .../src/main/resources/jdbcdriver-default.xml   |   8 ++
 .../lens/server/api/LensConfConstants.java      |  19 +++
 .../lens/server/api/query/QueryContext.java     |  14 ++-
 .../lens/server/api/driver/MockDriver.java      |  16 ++-
 .../server/query/QueryExecutionServiceImpl.java |  54 ++++++++
 .../src/main/resources/lensserver-default.xml   |   8 ++
 .../src/main/resources/lenssession-default.xml  |   7 ++
 .../lens/server/common/FailingQueryDriver.java  |   5 +
 .../lens/server/query/TestQueryService.java     |  16 +++
 lens-server/src/test/resources/lens-site.xml    |   5 +
 lens-server/src/test/resources/logback.xml      |   4 +-
 src/site/apt/admin/config.apt                   | 124 ++++++++++---------
 src/site/apt/admin/esdriver-config.apt          |   2 +
 src/site/apt/admin/jdbcdriver-config.apt        |   2 +
 src/site/apt/admin/session-config.apt           |  10 +-
 16 files changed, 229 insertions(+), 72 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lens/blob/4ae48c74/lens-driver-es/src/main/resources/esdriver-default.xml
----------------------------------------------------------------------
diff --git a/lens-driver-es/src/main/resources/esdriver-default.xml b/lens-driver-es/src/main/resources/esdriver-default.xml
index 5bd56b3..2ffca90 100644
--- a/lens-driver-es/src/main/resources/esdriver-default.xml
+++ b/lens-driver-es/src/main/resources/esdriver-default.xml
@@ -35,6 +35,13 @@
     <value>10000</value>
   </property>
   <property>
+    <name>lens.query.timeout.millis</name>
+      <value>60000</value>
+      <description>The runtime(millis) of the query after which query will be timedout and cancelled. Default is 60
+        seconds for es queries.
+      </description>
+  </property>
+  <property>
     <name>lens.driver.es.max.row.size</name>
     <description>max rows for es document look up queries, non existent or -1 refers no limit</description>
     <value>-1</value>

http://git-wip-us.apache.org/repos/asf/lens/blob/4ae48c74/lens-driver-jdbc/src/main/resources/jdbcdriver-default.xml
----------------------------------------------------------------------
diff --git a/lens-driver-jdbc/src/main/resources/jdbcdriver-default.xml b/lens-driver-jdbc/src/main/resources/jdbcdriver-default.xml
index 89726c4..5545fac 100644
--- a/lens-driver-jdbc/src/main/resources/jdbcdriver-default.xml
+++ b/lens-driver-jdbc/src/main/resources/jdbcdriver-default.xml
@@ -209,6 +209,14 @@
   </property>
 
   <property>
+    <name>lens.query.timeout.millis</name>
+    <value>3600000</value>
+    <description>The runtime(millis) of the query after which query will be timedout and cancelled. Default is 1 hour
+      for jdbc queries.
+    </description>
+  </property>
+
+  <property>
     <name>lens.driver.jdbc.enable.resultset.streaming.retrieval</name>
     <value>false</value>
     <description>Flag to enable row by row retrieval of result set from the database server. This is used to enable

http://git-wip-us.apache.org/repos/asf/lens/blob/4ae48c74/lens-server-api/src/main/java/org/apache/lens/server/api/LensConfConstants.java
----------------------------------------------------------------------
diff --git a/lens-server-api/src/main/java/org/apache/lens/server/api/LensConfConstants.java b/lens-server-api/src/main/java/org/apache/lens/server/api/LensConfConstants.java
index 8f9db2a..cf1c233 100644
--- a/lens-server-api/src/main/java/org/apache/lens/server/api/LensConfConstants.java
+++ b/lens-server-api/src/main/java/org/apache/lens/server/api/LensConfConstants.java
@@ -1165,6 +1165,25 @@ public final class LensConfConstants {
   public static final String QUERY_HTTP_NOTIFICATION_TYPE_FINISHED = QUERY_HTTP_NOTIFICATION_TYPE_PFX + "FINISHED";
 
   /**
+   * This is the property to specify the timeout for a query after running for configured time.
+   */
+  public static final String QUERY_TIMEOUT_MILLIS = QUERY_PFX + "timeout.millis";
+
+  /**
+   * This is the default timeout for query to get killed after running for configured time.
+   */
+  public static final int DEFAULT_QUERY_TIMEOUT_MILLIS = 24 * 60 * 60 * 1000; // 1day
+
+  /**
+   * Specifies how often query expiry will run
+   */
+  public static final String QUERY_EXPIRY_INTERVAL_MILLIS = SERVER_PFX + "query.expiry.check.interval.millis";
+  /**
+   * Default value for query expiry interval
+   */
+  public static final long DEFAULT_QUERY_EXPIRY_INTERVAL_MILLIS = 1 * 60 * 60 * 1000; // 1 hour
+
+  /**
    * The Constant GRIZZLY_CORE_POOL_SIZE.
    */
   public static final String GRIZZLY_CORE_POOL_SIZE = SERVER_PFX + "grizzly.core.pool.size";

http://git-wip-us.apache.org/repos/asf/lens/blob/4ae48c74/lens-server-api/src/main/java/org/apache/lens/server/api/query/QueryContext.java
----------------------------------------------------------------------
diff --git a/lens-server-api/src/main/java/org/apache/lens/server/api/query/QueryContext.java b/lens-server-api/src/main/java/org/apache/lens/server/api/query/QueryContext.java
index 64c7145..9923589 100644
--- a/lens-server-api/src/main/java/org/apache/lens/server/api/query/QueryContext.java
+++ b/lens-server-api/src/main/java/org/apache/lens/server/api/query/QueryContext.java
@@ -18,10 +18,7 @@
  */
 package org.apache.lens.server.api.query;
 
-import static org.apache.lens.server.api.LensConfConstants.DEFAULT_PREFETCH_INMEMORY_RESULTSET;
-import static org.apache.lens.server.api.LensConfConstants.DEFAULT_PREFETCH_INMEMORY_RESULTSET_ROWS;
-import static org.apache.lens.server.api.LensConfConstants.PREFETCH_INMEMORY_RESULTSET;
-import static org.apache.lens.server.api.LensConfConstants.PREFETCH_INMEMORY_RESULTSET_ROWS;
+import static org.apache.lens.server.api.LensConfConstants.*;
 
 import java.util.*;
 import java.util.concurrent.Future;
@@ -619,4 +616,13 @@ public class QueryContext extends AbstractQueryContext implements FailureContext
       getDriverStatus().getDriverStartTime(), getDriverStatus().getDriverFinishTime()));
     getDriverStatus().clear();
   }
+
+  public boolean hasTimedout() {
+    if (status.running()) {
+      long runtimeMillis = System.currentTimeMillis() - launchTime;
+      long timeoutMillis = getSelectedDriverConf().getInt(QUERY_TIMEOUT_MILLIS, DEFAULT_QUERY_TIMEOUT_MILLIS);
+      return runtimeMillis > timeoutMillis;
+    }
+    return false;
+  }
 }

http://git-wip-us.apache.org/repos/asf/lens/blob/4ae48c74/lens-server-api/src/test/java/org/apache/lens/server/api/driver/MockDriver.java
----------------------------------------------------------------------
diff --git a/lens-server-api/src/test/java/org/apache/lens/server/api/driver/MockDriver.java b/lens-server-api/src/test/java/org/apache/lens/server/api/driver/MockDriver.java
index 2a2963f..92724c6 100644
--- a/lens-server-api/src/test/java/org/apache/lens/server/api/driver/MockDriver.java
+++ b/lens-server-api/src/test/java/org/apache/lens/server/api/driver/MockDriver.java
@@ -180,11 +180,23 @@ public class MockDriver extends AbstractLensDriver {
         throw new LensException(e);
       }
     }
+    if (context.getUserQuery().contains("autocancel")) {
+      if (!cancel) {
+        context.getDriverStatus().setState(DriverQueryState.RUNNING);
+      } else {
+        context.getDriverStatus().setState(DriverQueryState.CANCELED);
+        context.getDriverStatus().setDriverFinishTime(System.currentTimeMillis());
+      }
+      return;
+    }
+
     context.getDriverStatus().setProgress(1.0);
     context.getDriverStatus().setStatusMessage("Done");
     context.getDriverStatus().setState(DriverQueryState.SUCCESSFUL);
+    context.getDriverStatus().setDriverFinishTime(System.currentTimeMillis());
   }
 
+  boolean cancel = false;
   /*
    * (non-Javadoc)
    *
@@ -192,7 +204,8 @@ public class MockDriver extends AbstractLensDriver {
    */
   @Override
   public boolean cancelQuery(QueryHandle handle) throws LensException {
-    return false;
+    cancel = true;
+    return true;
   }
 
   /*
@@ -319,6 +332,7 @@ public class MockDriver extends AbstractLensDriver {
    */
   @Override
   public void executeAsync(QueryContext context) throws LensException {
+    cancel = false;
     this.query = context.getSelectedDriverQuery();
   }
 

http://git-wip-us.apache.org/repos/asf/lens/blob/4ae48c74/lens-server/src/main/java/org/apache/lens/server/query/QueryExecutionServiceImpl.java
----------------------------------------------------------------------
diff --git a/lens-server/src/main/java/org/apache/lens/server/query/QueryExecutionServiceImpl.java b/lens-server/src/main/java/org/apache/lens/server/query/QueryExecutionServiceImpl.java
index b5e996f..c76ad24 100644
--- a/lens-server/src/main/java/org/apache/lens/server/query/QueryExecutionServiceImpl.java
+++ b/lens-server/src/main/java/org/apache/lens/server/query/QueryExecutionServiceImpl.java
@@ -125,6 +125,10 @@ public class QueryExecutionServiceImpl extends BaseLensService implements QueryE
    */
   public static final String QUERY_PURGER_COUNTER = "query-purger-errors";
 
+  public static final String QUERY_EXPIRY_FAILURE_COUNTER = "query-expiry-errors";
+
+  public static final String TOTAL_QUERIES_EXPIRED = "total-expired-queries";
+
   /**
    * The Constant PREPARED_QUERY_PURGER_COUNTER.
    */
@@ -209,6 +213,11 @@ public class QueryExecutionServiceImpl extends BaseLensService implements QueryE
   private final Thread queryPurger = new Thread(new QueryPurger(), "QueryPurger");
 
   /**
+   * The query expiry thread which cancels timedout queries.
+   */
+  private ScheduledExecutorService queryExpirer;
+
+  /**
    * The prepare query purger.
    */
   private final Thread prepareQueryPurger = new Thread(new PreparedQueryPurger(), "PrepareQueryPurger");
@@ -1420,6 +1429,8 @@ public class QueryExecutionServiceImpl extends BaseLensService implements QueryE
     if (null != queryResultPurger) {
       queryResultPurger.shutdown();
     }
+    // shutdown query expirer
+    queryExpirer.shutdownNow();
     // Soft shutdown right now, will await termination in this method itself, since cancellation pool
     // should be terminated before query state gets persisted.
     queryCancellationPool.shutdown();
@@ -1529,6 +1540,7 @@ public class QueryExecutionServiceImpl extends BaseLensService implements QueryE
     statusPoller.start();
     queryPurger.start();
     prepareQueryPurger.start();
+    startQueryExpirer();
 
     if (conf.getBoolean(RESULTSET_PURGE_ENABLED, DEFAULT_RESULTSET_PURGE_ENABLED)) {
       queryResultPurger = new QueryResultPurger();
@@ -1604,6 +1616,44 @@ public class QueryExecutionServiceImpl extends BaseLensService implements QueryE
     queryCancellationPool = new ThreadPoolExecutor(3, 3, 60, TimeUnit.SECONDS, new LinkedBlockingQueue(), factory);
   }
 
+  private void startQueryExpirer() {
+    ThreadFactory factory = new BasicThreadFactory.Builder()
+      .namingPattern("QueryExpirer-%d")
+      .daemon(true)
+      .priority(Thread.NORM_PRIORITY)
+      .build();
+    queryExpirer = Executors.newSingleThreadScheduledExecutor(factory);
+    long expiryRunInterval = conf.getLong(QUERY_EXPIRY_INTERVAL_MILLIS, DEFAULT_QUERY_EXPIRY_INTERVAL_MILLIS);
+    queryExpirer.scheduleWithFixedDelay(new Runnable() {
+      @Override
+      public void run() {
+        try {
+          expireQueries();
+        } catch (Exception e) {
+          incrCounter(QUERY_EXPIRY_FAILURE_COUNTER);
+          log.error("Unable to expire queries", e);
+        }
+      }
+    }, expiryRunInterval, expiryRunInterval, TimeUnit.MILLISECONDS);
+    log.info("Enabled periodic exipry of queries at {} millis interval", expiryRunInterval);
+  }
+
+
+  private void expireQueries() {
+    for (QueryContext ctx : launchedQueries.getQueries()) {
+      try {
+        if (ctx.hasTimedout()) {
+          log.info("Query {} has timedout, thus cancelling it", ctx.getLogHandle());
+          queryCancellationPool.submit(new CancelQueryTask(ctx.getQueryHandle()));
+          incrCounter(TOTAL_QUERIES_EXPIRED);
+        }
+      } catch (Exception e) {
+        incrCounter(QUERY_EXPIRY_FAILURE_COUNTER);
+        log.error("Unable to expire queries", e);
+      }
+    }
+  }
+
   @AllArgsConstructor
   private class CancelQueryTask implements Runnable {
     private QueryHandle handle;
@@ -3204,6 +3254,10 @@ public class QueryExecutionServiceImpl extends BaseLensService implements QueryE
       details.append("Query Cancellation Pool is dead.");
     }
 
+    if (queryExpirer.isShutdown() || queryExpirer.isTerminated()) {
+      isHealthy = false;
+      details.append("Query Expiry thread is dead.");
+    }
 
     if (!isHealthy) {
       log.error(details.toString());

http://git-wip-us.apache.org/repos/asf/lens/blob/4ae48c74/lens-server/src/main/resources/lensserver-default.xml
----------------------------------------------------------------------
diff --git a/lens-server/src/main/resources/lensserver-default.xml b/lens-server/src/main/resources/lensserver-default.xml
index a00048b..0ac722d 100644
--- a/lens-server/src/main/resources/lensserver-default.xml
+++ b/lens-server/src/main/resources/lensserver-default.xml
@@ -291,6 +291,14 @@
   </property>
 
   <property>
+    <name>lens.server.query.expiry.check.interval.millis</name>
+    <value>60000</value>
+    <description>The interval(milliseconds) with which query expiry will run periodically. Default is 1 minute. The
+      value needs to be much lower than lens.query.timeout.millis. If the final deployment values of query timeout
+      can be smaller, then reduce this value to be much lower.
+    </description>
+  </property>
+  <property>
     <name>lens.server.inmemory.resultset.ttl.secs</name>
     <value>300</value>
     <description>This property defines the TTL(time to live) in seconds for all result sets of type InMemoryResultSet

http://git-wip-us.apache.org/repos/asf/lens/blob/4ae48c74/lens-server/src/main/resources/lenssession-default.xml
----------------------------------------------------------------------
diff --git a/lens-server/src/main/resources/lenssession-default.xml b/lens-server/src/main/resources/lenssession-default.xml
index 9a8f9da..8d9f097 100644
--- a/lens-server/src/main/resources/lenssession-default.xml
+++ b/lens-server/src/main/resources/lenssession-default.xml
@@ -268,6 +268,13 @@
       server for the query.</description>
   </property>
 
+  <property>
+    <name>lens.query.timeout.millis</name>
+    <value>86400000</value>
+    <description>The runtime(millis) of the query after which query will be timedout and cancelled. Default is 1 day.
+    </description>
+  </property>
+
   <!--  properties for session -->
   <property>
     <name>lens.session.aux.jars</name>

http://git-wip-us.apache.org/repos/asf/lens/blob/4ae48c74/lens-server/src/test/java/org/apache/lens/server/common/FailingQueryDriver.java
----------------------------------------------------------------------
diff --git a/lens-server/src/test/java/org/apache/lens/server/common/FailingQueryDriver.java b/lens-server/src/test/java/org/apache/lens/server/common/FailingQueryDriver.java
index 5a8d5e6..7e9133e 100644
--- a/lens-server/src/test/java/org/apache/lens/server/common/FailingQueryDriver.java
+++ b/lens-server/src/test/java/org/apache/lens/server/common/FailingQueryDriver.java
@@ -62,6 +62,11 @@ public class FailingQueryDriver extends MockDriver {
         // ignore interrupted exception
       }
     }
+    // simulate autocancel.
+    if (ctx.getUserQuery().contains("autocancel")) {
+      return;
+    }
     throw new LensException("Simulated Launch Failure");
   }
+
 }

http://git-wip-us.apache.org/repos/asf/lens/blob/4ae48c74/lens-server/src/test/java/org/apache/lens/server/query/TestQueryService.java
----------------------------------------------------------------------
diff --git a/lens-server/src/test/java/org/apache/lens/server/query/TestQueryService.java b/lens-server/src/test/java/org/apache/lens/server/query/TestQueryService.java
index ecbd689..7d8c977 100644
--- a/lens-server/src/test/java/org/apache/lens/server/query/TestQueryService.java
+++ b/lens-server/src/test/java/org/apache/lens/server/query/TestQueryService.java
@@ -2005,4 +2005,20 @@ public class TestQueryService extends LensJerseyTest {
     Assert.assertEquals(queryName.toString(), results.get(0).getQueryName());
     Assert.assertEquals(result.getQueryHandle(), results.get(0).getQueryHandle());
   }
+
+  @Test
+  public void testQueryTimeoutOnWaitingQuery() throws Exception {
+    String query = "select mock, fail, autocancel from " + TEST_TABLE;
+    LensConf lconf = new LensConf();
+    lconf.addProperty(LensConfConstants.QUERY_TIMEOUT_MILLIS, 300);
+    QueryHandle handle = executeAndGetHandle(target(), Optional.of(lensSessionId), Optional.of(query),
+      Optional.of(lconf), defaultMT);
+    // query should have been cancelled, as query timeout is 300 millis
+    waitForQueryToFinish(target(), lensSessionId, handle, Status.CANCELED, defaultMT);
+    LensQuery lensQuery = getLensQuery(target(), lensSessionId, handle, defaultMT);
+    assertTrue((lensQuery.getFinishTime() - lensQuery.getLaunchTime()) >= 300, "Query time is "
+      + (lensQuery.getFinishTime() - lensQuery.getLaunchTime()));
+    assertTrue((lensQuery.getFinishTime() - lensQuery.getLaunchTime()) < 400, "Query time is "
+      + (lensQuery.getFinishTime() - lensQuery.getLaunchTime()));
+  }
 }

http://git-wip-us.apache.org/repos/asf/lens/blob/4ae48c74/lens-server/src/test/resources/lens-site.xml
----------------------------------------------------------------------
diff --git a/lens-server/src/test/resources/lens-site.xml b/lens-server/src/test/resources/lens-site.xml
index d96659f..334a9c4 100644
--- a/lens-server/src/test/resources/lens-site.xml
+++ b/lens-server/src/test/resources/lens-site.xml
@@ -128,6 +128,11 @@
   </property>
 
   <property>
+    <name>lens.server.query.expiry.check.interval.millis</name>
+    <value>10</value>
+  </property>
+
+  <property>
     <name>lens.server.db.jdbc.url</name>
     <value>jdbc:hsqldb:target/queries.db</value>
   </property>

http://git-wip-us.apache.org/repos/asf/lens/blob/4ae48c74/lens-server/src/test/resources/logback.xml
----------------------------------------------------------------------
diff --git a/lens-server/src/test/resources/logback.xml b/lens-server/src/test/resources/logback.xml
index 6b91a77..e3b30a3 100644
--- a/lens-server/src/test/resources/logback.xml
+++ b/lens-server/src/test/resources/logback.xml
@@ -22,7 +22,7 @@
 <configuration>
   <appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
     <encoder>
-      <pattern>%d{dd MMM yyyy HH:mm:ss,SSS} [%X{logSegregationId}] [%t] %-5p %c - %m%n</pattern>
+      <pattern>%d{dd MMM yyyy HH:mm:ss.SSS} [%X{logSegregationId}] [%t] %-5p %c - %m%n</pattern>
     </encoder>
     <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
       <level>INFO</level>
@@ -32,7 +32,7 @@
     <!--See also http://logback.qos.ch/manual/appenders.html#RollingFileAppender-->
     <file>target/test.log</file>
     <encoder>
-      <pattern>%d{dd MMM yyyy HH:mm:ss,SSS} %X{logSegregationId} [%t] %-5p %c - %m%n</pattern>
+      <pattern>%d{dd MMM yyyy HH:mm:ss.SSS} %X{logSegregationId} [%t] %-5p %c - %m%n</pattern>
     </encoder>
     <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
       <level>INFO</level>

http://git-wip-us.apache.org/repos/asf/lens/blob/4ae48c74/src/site/apt/admin/config.apt
----------------------------------------------------------------------
diff --git a/src/site/apt/admin/config.apt b/src/site/apt/admin/config.apt
index 4d49781..21b23f9 100644
--- a/src/site/apt/admin/config.apt
+++ b/src/site/apt/admin/config.apt
@@ -159,128 +159,130 @@ Lens server configuration
 *--+--+---+--+
 |66|lens.server.query.acceptors| |Query Acceptors configured. Query acceptors are consulted first, before anything happens for the given query. They can either return null or return a messaging indicating why the given query shouldn't be accepted. These can be used to filter out queries at the earliest.|
 *--+--+---+--+
-|67|lens.server.query.launching.constraint.factories|org.apache.lens.server.query.constraint.TotalQueryCostCeilingConstraintFactory|Factories used to instantiate constraints enforced on queries by lens. Every Factory should be an implementation of org.apache.lens.server.api.common.ConfigBasedObjectCreationFactory and create an implementation of org.apache.lens.server.api.query.constraint.QueryLaunchingConstraint. A query will be launched only if all constraints pass.|
+|67|lens.server.query.expiry.check.interval.millis|60000|The interval(milliseconds) with which query expiry will run periodically. Default is 1 minute. The value needs to be much lower than lens.query.timeout.millis. If the final deployment values of query timeout can be smaller, then reduce this value to be much lower.|
 *--+--+---+--+
-|68|lens.server.query.phase1.rewriters| |Query phase 1 rewriters. This is to convert user query to cube query. The resulting cube query will be passed for validation and rewriting to hql query.\ |
+|68|lens.server.query.launching.constraint.factories|org.apache.lens.server.query.constraint.TotalQueryCostCeilingConstraintFactory|Factories used to instantiate constraints enforced on queries by lens. Every Factory should be an implementation of org.apache.lens.server.api.common.ConfigBasedObjectCreationFactory and create an implementation of org.apache.lens.server.api.query.constraint.QueryLaunchingConstraint. A query will be launched only if all constraints pass.|
+*--+--+---+--+
+|69|lens.server.query.phase1.rewriters| |Query phase 1 rewriters. This is to convert user query to cube query. The resulting cube query will be passed for validation and rewriting to hql query.\ |
 |  |                                  | |Use cases will be to use extra intelligence to convert user query to optimized cube query.                                                              \ |
 |  |                                  | |Or define shortcuts for certain frequently used queries :)                                                                                                |
 *--+--+---+--+
-|69|lens.server.query.resultset.retention|1 day|Lens query resultset retention period. Default 1 day|
+|70|lens.server.query.resultset.retention|1 day|Lens query resultset retention period. Default 1 day|
 *--+--+---+--+
-|70|lens.server.query.service.impl|org.apache.lens.server.query.QueryExecutionServiceImpl|Implementation class for query execution service|
+|71|lens.server.query.service.impl|org.apache.lens.server.query.QueryExecutionServiceImpl|Implementation class for query execution service|
 *--+--+---+--+
-|71|lens.server.query.state.logger.enabled|true|Disable or enable the query state logger with this config. The location for the logger can be specified in logback xml for the class org.apache.lens.server.query.QueryExecutionServiceImpl.QueryStatusLogger|
+|72|lens.server.query.state.logger.enabled|true|Disable or enable the query state logger with this config. The location for the logger can be specified in logback xml for the class org.apache.lens.server.query.QueryExecutionServiceImpl.QueryStatusLogger|
 *--+--+---+--+
-|72|lens.server.query.ws.resource.impl|org.apache.lens.server.query.QueryServiceResource|Implementation class for Query Resource|
+|73|lens.server.query.ws.resource.impl|org.apache.lens.server.query.QueryServiceResource|Implementation class for Query Resource|
 *--+--+---+--+
-|73|lens.server.querypurger.sleep.interval|10000|The interval(milliseconds) with which purger to run periodically. Default 10 sec.|
+|74|lens.server.querypurger.sleep.interval|10000|The interval(milliseconds) with which purger to run periodically. Default 10 sec.|
 *--+--+---+--+
-|74|lens.server.quota.service.impl|org.apache.lens.server.quota.QuotaServiceImpl|Implementation class for quota service|
+|75|lens.server.quota.service.impl|org.apache.lens.server.quota.QuotaServiceImpl|Implementation class for quota service|
 *--+--+---+--+
-|75|lens.server.quota.ws.resource.impl|org.apache.lens.server.quota.QuotaResource|Implementation class for Quota Resource|
+|76|lens.server.quota.ws.resource.impl|org.apache.lens.server.quota.QuotaResource|Implementation class for Quota Resource|
 *--+--+---+--+
-|76|lens.server.requestlogger.ws.filter.impl|org.apache.lens.server.LensRequestLoggingFilter|Implementation class for Request logging Filter|
+|77|lens.server.requestlogger.ws.filter.impl|org.apache.lens.server.LensRequestLoggingFilter|Implementation class for Request logging Filter|
 *--+--+---+--+
-|77|lens.server.resultset.purge.enabled|false|Whether to purge the query results|
+|78|lens.server.resultset.purge.enabled|false|Whether to purge the query results|
 *--+--+---+--+
-|78|lens.server.resultsetpurger.sleep.interval.secs|3600|Periodicity for Query result purger runs. Default 1 hour.|
+|79|lens.server.resultsetpurger.sleep.interval.secs|3600|Periodicity for Query result purger runs. Default 1 hour.|
 *--+--+---+--+
-|79|lens.server.savedquery.jdbc.dialectclass|org.apache.lens.server.query.save.SavedQueryDao$HSQLDialect|Dialect of the target DB, Default is HSQL. Override with the target DB used.|
+|80|lens.server.savedquery.jdbc.dialectclass|org.apache.lens.server.query.save.SavedQueryDao$HSQLDialect|Dialect of the target DB, Default is HSQL. Override with the target DB used.|
 *--+--+---+--+
-|80|lens.server.savedquery.list.default.count|20|Key denoting the default fetch value of saved query list api.|
+|81|lens.server.savedquery.list.default.count|20|Key denoting the default fetch value of saved query list api.|
 *--+--+---+--+
-|81|lens.server.savedquery.list.default.offset|0|Key denoting the default start value of saved query list api.|
+|82|lens.server.savedquery.list.default.offset|0|Key denoting the default start value of saved query list api.|
 *--+--+---+--+
-|82|lens.server.savedquery.service.impl|org.apache.lens.server.query.save.SavedQueryServiceImpl|Implementation class for saved query service|
+|83|lens.server.savedquery.service.impl|org.apache.lens.server.query.save.SavedQueryServiceImpl|Implementation class for saved query service|
 *--+--+---+--+
-|83|lens.server.savedquery.ws.resource.impl|org.apache.lens.server.query.save.SavedQueryResource|Implementation class for Saved query Resource|
+|84|lens.server.savedquery.ws.resource.impl|org.apache.lens.server.query.save.SavedQueryResource|Implementation class for Saved query Resource|
 *--+--+---+--+
-|84|lens.server.scheduler.instance.waiting.thread.interval.millis|300000|Thread interval for checking the waiting instances in milliseconds|
+|85|lens.server.scheduler.instance.waiting.thread.interval.millis|300000|Thread interval for checking the waiting instances in milliseconds|
 *--+--+---+--+
-|85|lens.server.scheduler.max.job.per.user|-1|Maximum number of jobs that can be scheduled by a single user. If the number is less than zero, then there is no restriction on the number of jobs scheduled.|
+|86|lens.server.scheduler.max.job.per.user|-1|Maximum number of jobs that can be scheduled by a single user. If the number is less than zero, then there is no restriction on the number of jobs scheduled.|
 *--+--+---+--+
-|86|lens.server.scheduler.service.impl|org.apache.lens.server.scheduler.SchedulerServiceImpl|Implementation class for query scheduler service|
+|87|lens.server.scheduler.service.impl|org.apache.lens.server.scheduler.SchedulerServiceImpl|Implementation class for query scheduler service|
 *--+--+---+--+
-|87|lens.server.scheduler.store.class|org.apache.lens.server.scheduler.SchedulerDAO$SchedulerHsqlDBStore|A subclass of SchedulerDBStore class used for storing scheduler related information.|
+|88|lens.server.scheduler.store.class|org.apache.lens.server.scheduler.SchedulerDAO$SchedulerHsqlDBStore|A subclass of SchedulerDBStore class used for storing scheduler related information.|
 *--+--+---+--+
-|88|lens.server.scheduler.ws.resource.impl|org.apache.lens.server.scheduler.ScheduleResource|Implementation class for query scheduler resource|
+|89|lens.server.scheduler.ws.resource.impl|org.apache.lens.server.scheduler.ScheduleResource|Implementation class for query scheduler resource|
 *--+--+---+--+
-|89|lens.server.scheduling.queue.poll.interval.millisec|2000|The interval at which submission thread will poll scheduling queue to fetch the next query for submission. If value is less than equal to 0, then it would mean that thread will continuosly poll without sleeping. The interval has to be given in milliseconds.|
+|90|lens.server.scheduling.queue.poll.interval.millisec|2000|The interval at which submission thread will poll scheduling queue to fetch the next query for submission. If value is less than equal to 0, then it would mean that thread will continuosly poll without sleeping. The interval has to be given in milliseconds.|
 *--+--+---+--+
-|90|lens.server.serverMode.ws.filter.impl|org.apache.lens.server.ServerModeFilter|Implementation class for ServerMode Filter|
+|91|lens.server.serverMode.ws.filter.impl|org.apache.lens.server.ServerModeFilter|Implementation class for ServerMode Filter|
 *--+--+---+--+
-|91|lens.server.service.provider.factory|org.apache.lens.server.ServiceProviderFactoryImpl|Service provider factory implementation class. This parameter is used to lookup the factory implementation class name that would provide an instance of ServiceProvider. Users should instantiate the class to obtain its instance. Example -- Class spfClass = conf.getClass("lens.server.service.provider.factory", null, ServiceProviderFactory.class); ServiceProviderFactory spf = spfClass.newInstance(); ServiceProvider serviceProvider = spf.getServiceProvider(); -- This is not supposed to be overridden by users.|
+|92|lens.server.service.provider.factory|org.apache.lens.server.ServiceProviderFactoryImpl|Service provider factory implementation class. This parameter is used to lookup the factory implementation class name that would provide an instance of ServiceProvider. Users should instantiate the class to obtain its instance. Example -- Class spfClass = conf.getClass("lens.server.service.provider.factory", null, ServiceProviderFactory.class); ServiceProviderFactory spf = spfClass.newInstance(); ServiceProvider serviceProvider = spf.getServiceProvider(); -- This is not supposed to be overridden by users.|
 *--+--+---+--+
-|92|lens.server.servicenames|session,alarm,query,savedquery,metastore,scheduler,quota|These services would be started in the specified order when lens-server starts up|
+|93|lens.server.servicenames|session,alarm,query,savedquery,metastore,scheduler,quota|These services would be started in the specified order when lens-server starts up|
 *--+--+---+--+
-|93|lens.server.session.expiry.service.interval.secs|3600|Interval at which lens session expiry service runs|
+|94|lens.server.session.expiry.service.interval.secs|3600|Interval at which lens session expiry service runs|
 *--+--+---+--+
-|94|lens.server.session.service.impl|org.apache.lens.server.session.HiveSessionService|Implementation class for session service|
+|95|lens.server.session.service.impl|org.apache.lens.server.session.HiveSessionService|Implementation class for session service|
 *--+--+---+--+
-|95|lens.server.session.timeout.seconds|86400|Lens session timeout in seconds.If there is no activity on the session for this period then the session will be closed.Default timeout is one day.|
+|96|lens.server.session.timeout.seconds|86400|Lens session timeout in seconds.If there is no activity on the session for this period then the session will be closed.Default timeout is one day.|
 *--+--+---+--+
-|96|lens.server.session.ws.resource.impl|org.apache.lens.server.session.SessionResource|Implementation class for Session Resource|
+|97|lens.server.session.ws.resource.impl|org.apache.lens.server.session.SessionResource|Implementation class for Session Resource|
 *--+--+---+--+
-|97|lens.server.state.persist.out.stream.buffer.size|1048576|Output Stream Buffer Size used in writing lens server state to file system. Size is in bytes.|
+|98|lens.server.state.persist.out.stream.buffer.size|1048576|Output Stream Buffer Size used in writing lens server state to file system. Size is in bytes.|
 *--+--+---+--+
-|98|lens.server.state.persistence.enabled|true|If flag is enabled, state of all the services will be persisted periodically to a location specified by lens.server.persist.location and on server restart all the services will be started from last saved state.|
+|99|lens.server.state.persistence.enabled|true|If flag is enabled, state of all the services will be persisted periodically to a location specified by lens.server.persist.location and on server restart all the services will be started from last saved state.|
 *--+--+---+--+
-|99|lens.server.state.persistence.interval.millis|300000|Lens server state persistence time interval in milliseconds|
+|100|lens.server.state.persistence.interval.millis|300000|Lens server state persistence time interval in milliseconds|
 *--+--+---+--+
-|100|lens.server.statistics.db|lensstats|Database to which statistics tables are created and partitions are added.|
+|101|lens.server.statistics.db|lensstats|Database to which statistics tables are created and partitions are added.|
 *--+--+---+--+
-|101|lens.server.statistics.log.rollover.interval|3600000|Default rate which log statistics store scans for rollups in milliseconds.|
+|102|lens.server.statistics.log.rollover.interval|3600000|Default rate which log statistics store scans for rollups in milliseconds.|
 *--+--+---+--+
-|102|lens.server.statistics.store.class|org.apache.lens.server.stats.store.log.LogStatisticsStore|Default implementation of class used to persist Lens Statistics.|
+|103|lens.server.statistics.store.class|org.apache.lens.server.stats.store.log.LogStatisticsStore|Default implementation of class used to persist Lens Statistics.|
 *--+--+---+--+
-|103|lens.server.statistics.warehouse.dir|file:///tmp/lens/statistics/warehouse|Default top level location where stats are moved by the log statistics store.|
+|104|lens.server.statistics.warehouse.dir|file:///tmp/lens/statistics/warehouse|Default top level location where stats are moved by the log statistics store.|
 *--+--+---+--+
-|104|lens.server.status.update.exponential.wait.millis|30000|Number of millis that would grow exponentially for next update, incase of transient failures.|
+|105|lens.server.status.update.exponential.wait.millis|30000|Number of millis that would grow exponentially for next update, incase of transient failures.|
 *--+--+---+--+
-|105|lens.server.status.update.maximum.delay.secs|1800|The maximum delay in seconds for next status update to happen after any transient failure. This will be used a maximum delay sothat exponential wait times not to grow to bigger value.|
+|106|lens.server.status.update.maximum.delay.secs|1800|The maximum delay in seconds for next status update to happen after any transient failure. This will be used a maximum delay sothat exponential wait times not to grow to bigger value.|
 *--+--+---+--+
-|106|lens.server.status.update.num.retries|10|The number of retries a status update will tried with exponentital back off, in case of transient issues, upon which query will be marked FAILED.|
+|107|lens.server.status.update.num.retries|10|The number of retries a status update will tried with exponentital back off, in case of transient issues, upon which query will be marked FAILED.|
 *--+--+---+--+
-|107|lens.server.total.query.cost.ceiling.per.user|-1.0|A query submitted by user will be launched only if total query cost of all current launched queries of user is less than or equal to total query cost ceiling defined by this property. This configuration value is only useful when TotalQueryCostCeilingConstraint is enabled by using org.apache.lens.server.query.constraint.TotalQueryCostCeilingConstraintFactory as one of the factories in lens.server.query.constraint.factories property. Default is -1.0 which means that there is no limit on the total query cost of launched queries submitted by a user.|
+|108|lens.server.total.query.cost.ceiling.per.user|-1.0|A query submitted by user will be launched only if total query cost of all current launched queries of user is less than or equal to total query cost ceiling defined by this property. This configuration value is only useful when TotalQueryCostCeilingConstraint is enabled by using org.apache.lens.server.query.constraint.TotalQueryCostCeilingConstraintFactory as one of the factories in lens.server.query.constraint.factories property. Default is -1.0 which means that there is no limit on the total query cost of launched queries submitted by a user.|
 *--+--+---+--+
-|108|lens.server.user.resolver.custom.class|full.package.name.Classname|Required for CUSTOM user resolver. In case the provided implementations are not sufficient for user config resolver, a custom classname can be provided. Class should extend org.apache.lens.server.user.UserConfigLoader|
+|109|lens.server.user.resolver.custom.class|full.package.name.Classname|Required for CUSTOM user resolver. In case the provided implementations are not sufficient for user config resolver, a custom classname can be provided. Class should extend org.apache.lens.server.user.UserConfigLoader|
 *--+--+---+--+
-|109|lens.server.user.resolver.db.keys|lens.session.cluster.user,mapred.job.queue.name|Required for DATABASE and LDAP_BACKED_DATABASE user resolvers. For database based user config loaders, the conf keys that will be loaded from database.|
+|110|lens.server.user.resolver.db.keys|lens.session.cluster.user,mapred.job.queue.name|Required for DATABASE and LDAP_BACKED_DATABASE user resolvers. For database based user config loaders, the conf keys that will be loaded from database.|
 *--+--+---+--+
-|110|lens.server.user.resolver.db.query|select clusteruser,queue from user_config_table where username=?|Required for DATABASE and LDAP_BACKED_DATABASE user resolvers. For database based user config loader, this query will be run with single argument = logged in user and the result columns will be assigned to lens.server.user.resolver.db.keys in order. For ldap backed database resolver, the argument to this query will be the intermediate values obtained from ldap.|
+|111|lens.server.user.resolver.db.query|select clusteruser,queue from user_config_table where username=?|Required for DATABASE and LDAP_BACKED_DATABASE user resolvers. For database based user config loader, this query will be run with single argument = logged in user and the result columns will be assigned to lens.server.user.resolver.db.keys in order. For ldap backed database resolver, the argument to this query will be the intermediate values obtained from ldap.|
 *--+--+---+--+
-|111|lens.server.user.resolver.fixed.value| |Required for FIXED user resolver. when lens.server.user.resolver.type=FIXED, This will be the value cluster user will resolve to.|
+|112|lens.server.user.resolver.fixed.value| |Required for FIXED user resolver. when lens.server.user.resolver.type=FIXED, This will be the value cluster user will resolve to.|
 *--+--+---+--+
-|112|lens.server.user.resolver.ldap.bind.dn| |Required for LDAP_BACKED_DATABASE user resolvers. ldap dn for admin binding example: CN=company-it-admin,ou=service-account,ou=company-service-account,dc=dc1,dc=com...|
+|113|lens.server.user.resolver.ldap.bind.dn| |Required for LDAP_BACKED_DATABASE user resolvers. ldap dn for admin binding example: CN=company-it-admin,ou=service-account,ou=company-service-account,dc=dc1,dc=com...|
 *--+--+---+--+
-|113|lens.server.user.resolver.ldap.bind.password| |Required for LDAP_BACKED_DATABASE user resolvers. ldap password for admin binding above|
+|114|lens.server.user.resolver.ldap.bind.password| |Required for LDAP_BACKED_DATABASE user resolvers. ldap password for admin binding above|
 *--+--+---+--+
-|114|lens.server.user.resolver.ldap.fields|department|Required for LDAP_BACKED_DATABASE user resolvers. list of fields to be obtained from ldap. These will be cached by the intermediate db.|
+|115|lens.server.user.resolver.ldap.fields|department|Required for LDAP_BACKED_DATABASE user resolvers. list of fields to be obtained from ldap. These will be cached by the intermediate db.|
 *--+--+---+--+
-|115|lens.server.user.resolver.ldap.intermediate.db.delete.sql|delete from user_department where username=?|Required for LDAP_BACKED_DATABASE user resolvers. query to delete intermediate values from database backing ldap as cache. one argument: logged in user.|
+|116|lens.server.user.resolver.ldap.intermediate.db.delete.sql|delete from user_department where username=?|Required for LDAP_BACKED_DATABASE user resolvers. query to delete intermediate values from database backing ldap as cache. one argument: logged in user.|
 *--+--+---+--+
-|116|lens.server.user.resolver.ldap.intermediate.db.insert.sql|insert into user_department (username, department, expiry) values (?, ?, ?)|Required for LDAP_BACKED_DATABASE user resolvers. query to insert intermediate values from database backing ldap as cache. arguments: first logged in user, then all intermediate values, then current time + expiration time|
+|117|lens.server.user.resolver.ldap.intermediate.db.insert.sql|insert into user_department (username, department, expiry) values (?, ?, ?)|Required for LDAP_BACKED_DATABASE user resolvers. query to insert intermediate values from database backing ldap as cache. arguments: first logged in user, then all intermediate values, then current time + expiration time|
 *--+--+---+--+
-|117|lens.server.user.resolver.ldap.intermediate.db.query|select department from user_department where username=? and expiry>?|Required for LDAP_BACKED_DATABASE user resolvers. query to obtain intermediate values from database backing ldap as cache. two arguments: logged in user and current time.|
+|118|lens.server.user.resolver.ldap.intermediate.db.query|select department from user_department where username=? and expiry>?|Required for LDAP_BACKED_DATABASE user resolvers. query to obtain intermediate values from database backing ldap as cache. two arguments: logged in user and current time.|
 *--+--+---+--+
-|118|lens.server.user.resolver.ldap.search.base| |Required for LDAP_BACKED_DATABASE user resolvers. for searching intermediate values for a user, the search keys. example: cn=users,dc=dc1,dc=dc2...|
+|119|lens.server.user.resolver.ldap.search.base| |Required for LDAP_BACKED_DATABASE user resolvers. for searching intermediate values for a user, the search keys. example: cn=users,dc=dc1,dc=dc2...|
 *--+--+---+--+
-|119|lens.server.user.resolver.ldap.search.filter|(&(objectClass=user)(sAMAccountName=%s))|Required for LDAP_BACKED_DATABASE user resolvers. filter pattern for ldap search|
+|120|lens.server.user.resolver.ldap.search.filter|(&(objectClass=user)(sAMAccountName=%s))|Required for LDAP_BACKED_DATABASE user resolvers. filter pattern for ldap search|
 *--+--+---+--+
-|120|lens.server.user.resolver.ldap.url| |Required for LDAP_BACKED_DATABASE user resolvers. ldap url to connect to.|
+|121|lens.server.user.resolver.ldap.url| |Required for LDAP_BACKED_DATABASE user resolvers. ldap url to connect to.|
 *--+--+---+--+
-|121|lens.server.user.resolver.propertybased.filename|/path/to/propertyfile|Required for PROPERTYBASED user resolver. when lens.server.user.resolver.type is PROPERTYBASED, then this file will be read and parsed to determine cluster user. Each line should contain username followed by DOT followed by property full name followed by equal-to sign and followed by value. example schema of the file is: user1.lens.server.cluster.user=clusteruser1 user1.mapred.job.queue.name=queue1 *.lens.server.cluster.user=defaultclusteruser *.mapred.job.queue.name=default|
+|122|lens.server.user.resolver.propertybased.filename|/path/to/propertyfile|Required for PROPERTYBASED user resolver. when lens.server.user.resolver.type is PROPERTYBASED, then this file will be read and parsed to determine cluster user. Each line should contain username followed by DOT followed by property full name followed by equal-to sign and followed by value. example schema of the file is: user1.lens.server.cluster.user=clusteruser1 user1.mapred.job.queue.name=queue1 *.lens.server.cluster.user=defaultclusteruser *.mapred.job.queue.name=default|
 *--+--+---+--+
-|122|lens.server.user.resolver.type|FIXED|Type of user config resolver. allowed values are FIXED, PROPERTYBASED, DATABASE, LDAP_BACKED_DATABASE, CUSTOM.|
+|123|lens.server.user.resolver.type|FIXED|Type of user config resolver. allowed values are FIXED, PROPERTYBASED, DATABASE, LDAP_BACKED_DATABASE, CUSTOM.|
 *--+--+---+--+
-|123|lens.server.waiting.queries.selection.policy.factories|org.apache.lens.server.query.collect.UserSpecificWaitingQueriesSelectionPolicyFactory|Factories used to instantiate waiting queries selection policies. Every factory should be an implementation of org.apache.lens.server.api.common.ConfigBasedObjectCreationFactory and create an implementation of org.apache.lens.server.api.query.collect.WaitingQueriesSelectionPolicy.|
+|124|lens.server.waiting.queries.selection.policy.factories|org.apache.lens.server.query.collect.UserSpecificWaitingQueriesSelectionPolicyFactory|Factories used to instantiate waiting queries selection policies. Every factory should be an implementation of org.apache.lens.server.api.common.ConfigBasedObjectCreationFactory and create an implementation of org.apache.lens.server.api.query.collect.WaitingQueriesSelectionPolicy.|
 *--+--+---+--+
-|124|lens.server.ws.featurenames|multipart,moxyjson,moxyjsonconfigresovler|These JAX-RS Feature(s) would be started in the specified order when lens-server starts up|
+|125|lens.server.ws.featurenames|multipart,moxyjson,moxyjsonconfigresovler|These JAX-RS Feature(s) would be started in the specified order when lens-server starts up|
 *--+--+---+--+
-|125|lens.server.ws.filternames|requestlogger,consistentState,serverMode|These JAX-RS filters would be started in the specified order when lens-server starts up|
+|126|lens.server.ws.filternames|requestlogger,consistentState,serverMode|These JAX-RS filters would be started in the specified order when lens-server starts up|
 *--+--+---+--+
-|126|lens.server.ws.listenernames|appevent|These listeners would be called in the specified order when lens-server starts up|
+|127|lens.server.ws.listenernames|appevent|These listeners would be called in the specified order when lens-server starts up|
 *--+--+---+--+
-|127|lens.server.ws.resourcenames|session,metastore,query,savedquery,quota,scheduler,index,log|These JAX-RS resources would be started in the specified order when lens-server starts up|
+|128|lens.server.ws.resourcenames|session,metastore,query,savedquery,quota,scheduler,index,log|These JAX-RS resources would be started in the specified order when lens-server starts up|
 *--+--+---+--+
 The configuration parameters and their default values

http://git-wip-us.apache.org/repos/asf/lens/blob/4ae48c74/src/site/apt/admin/esdriver-config.apt
----------------------------------------------------------------------
diff --git a/src/site/apt/admin/esdriver-config.apt b/src/site/apt/admin/esdriver-config.apt
index ce952ae..966d90f 100644
--- a/src/site/apt/admin/esdriver-config.apt
+++ b/src/site/apt/admin/esdriver-config.apt
@@ -38,4 +38,6 @@ ES driver configuration
 *--+--+---+--+
 |7|lens.driver.es.term.fetch.size|10000|Fetch (buffer) size for document look up queries|
 *--+--+---+--+
+|8|lens.query.timeout.millis|60000|The runtime(millis) of the query after which query will be timedout and cancelled. Default is 60 seconds for es queries.|
+*--+--+---+--+
 The configuration parameters and their default values

http://git-wip-us.apache.org/repos/asf/lens/blob/4ae48c74/src/site/apt/admin/jdbcdriver-config.apt
----------------------------------------------------------------------
diff --git a/src/site/apt/admin/jdbcdriver-config.apt b/src/site/apt/admin/jdbcdriver-config.apt
index c64d6ee..eb56927 100644
--- a/src/site/apt/admin/jdbcdriver-config.apt
+++ b/src/site/apt/admin/jdbcdriver-config.apt
@@ -91,4 +91,6 @@ Jdbc driver configuration
 *--+--+---+--+
 |33|lens.driver.jdbc.waiting.queries.selection.policy.factories|org.apache.lens.server.api.query.collect.DriverSpecificWaitingQueriesSelectionPolicyFactory|Factories used to instantiate driver specific waiting queries selection policies. Every factory should be an implementation of org.apache.lens.server.api.common.ConfigBasedObjectCreationFactory and create an implementation of org.apache.lens.server.api.query.collect.WaitingQueriesSelectionPolicy.|
 *--+--+---+--+
+|34|lens.query.timeout.millis|3600000|The runtime(millis) of the query after which query will be timedout and cancelled. Default is 1 hour for jdbc queries.|
+*--+--+---+--+
 The configuration parameters and their default values

http://git-wip-us.apache.org/repos/asf/lens/blob/4ae48c74/src/site/apt/admin/session-config.apt
----------------------------------------------------------------------
diff --git a/src/site/apt/admin/session-config.apt b/src/site/apt/admin/session-config.apt
index d480f88..663a605 100644
--- a/src/site/apt/admin/session-config.apt
+++ b/src/site/apt/admin/session-config.apt
@@ -104,12 +104,14 @@ Lens session configuration
 *--+--+---+--+
 |40|lens.query.result.split.multiple.maxrows|100000|The maximum number of rows allowed in each file, when splitting the result into multiple files is enabled.|
 *--+--+---+--+
-|41|lens.session.aux.jars| |List of comma separated jar paths, which will added to the session|
+|41|lens.query.timeout.millis|86400000|The runtime(millis) of the query after which query will be timedout and cancelled. Default is 1 day.|
 *--+--+---+--+
-|42|lens.session.cluster.user| |Session level config which will determine which cluster user will access hdfs|
+|42|lens.session.aux.jars| |List of comma separated jar paths, which will added to the session|
 *--+--+---+--+
-|43|lens.session.loggedin.user| |The username used to log in to lens. e.g. LDAP user|
+|43|lens.session.cluster.user| |Session level config which will determine which cluster user will access hdfs|
 *--+--+---+--+
-|44|lens.session.metastore.exclude.cubetables.from.nativetables|true|Exclude cube related tables when fetching native tables|
+|44|lens.session.loggedin.user| |The username used to log in to lens. e.g. LDAP user|
+*--+--+---+--+
+|45|lens.session.metastore.exclude.cubetables.from.nativetables|true|Exclude cube related tables when fetching native tables|
 *--+--+---+--+
 The configuration parameters and their default values