<?xml version="1.0" encoding="UTF-8"?>
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
-->
<!DOCTYPE concept PUBLIC "-//OASIS//DTD DITA Concept//EN" "concept.dtd">
<concept rev="1.2.1" id="timeouts">

  <title>Setting Timeout Periods for Daemons, Queries, and Sessions</title>

  <titlealts audience="PDF">

    <navtitle>Setting Timeouts</navtitle>

  </titlealts>

  <prolog>
    <metadata>
      <data name="Category" value="Impala"/>
      <data name="Category" value="Administrators"/>
      <data name="Category" value="Scheduling"/>
      <data name="Category" value="Scalability"/>
    </metadata>
  </prolog>

  <conbody>

    <p>
      Depending on how busy your <keyword keyref="distro"/> cluster is, you might increase or decrease various timeout
      values. Increase timeouts if Impala is cancelling operations prematurely, when the system
      is responding slower than usual but the operations are still successful if given extra
      time. Decrease timeouts if operations are idle or hanging for long periods, and the idle
      or hung operations are consuming resources and reducing concurrency.
    </p>

    <p outputclass="toc inpage"/>

  </conbody>

  <concept id="statestore_timeout">

    <title>Increasing the Statestore Timeout</title>

    <conbody>

      <p rev="IMP-1210">
        If you have an extensive Impala schema, for example with hundreds of databases, tens of
        thousands of tables, and so on, you might encounter timeout errors during startup as the
        Impala catalog service broadcasts metadata to all the Impala nodes using the statestore
        service. To avoid such timeout errors on startup, increase the statestore timeout value
        from its default of 10 seconds. Specify the timeout value using the
        <codeph>-statestore_subscriber_timeout_seconds</codeph> option for the statestore
        service, using the configuration instructions in
        <xref href="impala_config_options.xml#config_options"/>. The symptom of this problem is
        messages in the <codeph>impalad</codeph> log such as:
      </p>

<codeblock>Connection with state-store lost
Trying to re-register with state-store</codeblock>

      <p>
        See <xref href="impala_scalability.xml#statestore_scalability"/> for more details about
        statestore operation and settings on clusters with a large number of Impala-related
        objects such as tables and partitions.
      </p>

    </conbody>

  </concept>

  <concept id="impalad_timeout">

    <title>Setting the Idle Query and Idle Session Timeouts for impalad</title>

    <conbody>

      <p>
        To keep long-running queries or idle sessions from tying up cluster resources, you can
        set timeout intervals for both individual queries, and entire sessions.
      </p>

      <note conref="../shared/impala_common.xml#common/timeout_clock_blurb"/>

      <p>
        Use the following startup options for the <cmdname>impalad</cmdname>
        daemon to specify timeout values:
      </p>

      <ul>
        <li><codeph>--idle_query_timeout</codeph>
          <p>
            Specifies the time in
            seconds after which an idle query is cancelled. This could be a
            query whose results were all fetched but was never closed, or one
            whose results were partially fetched and then the client program
            stopped requesting further results. This condition is most likely to
            occur in a client program using the JDBC or ODBC interfaces, rather
            than in the interactive <cmdname>impala-shell</cmdname> interpreter.
            Once a query is cancelled, the client program cannot retrieve any
            further results from the query.
          </p>
          <p rev="2.0.0">
            You can reduce
            the idle query timeout by using the <codeph>QUERY_TIMEOUT_S</codeph>
            query option. Any non-zero value specified for the
              <codeph>--idle_query_timeout</codeph> startup option serves as an
            upper limit for the <codeph>QUERY_TIMEOUT_S</codeph> query option.
            See <xref href="impala_query_timeout_s.xml#query_timeout_s"/> about
            the query option.
          </p>
          <p rev="2.0.0">A zero value for
              <codeph>--idle_query_timeout</codeph> disables query timeouts.
          </p>
          <p>
            Cancelled queries remain in the open state but use only the
            minimal resources.
          </p>
        </li>

        <li><codeph>--idle_session_timeout</codeph>
          <p>
            Specifies the time in
            seconds after which an idle session expires. A session is idle when
            no activity is occurring for any of the queries in that session, and
            the session has not started any new queries. Once a session is
            expired, you cannot issue any new query requests to it. The session
            remains open, but the only operation you can perform is to close it.
          </p>
          <p>
            The default value of 0 specifies sessions never
            expire.
          </p>
          <p rev="2.12.0">
            You can override the
              <codeph>--idle_session_timeout</codeph> value with the <xref
              href="impala_idle_session_timeout.xml#idle_session_timeout"/> at
            the session level.
          </p>
        </li>
      </ul>

      <p>
        For instructions on changing <cmdname>impalad</cmdname> startup options, see
        <xref href="impala_config_options.xml#config_options"/>.
      </p>

      <note>
        <p rev="IMPALA-5108">
          Impala checks periodically for idle sessions and queries
          to cancel. The actual idle time before cancellation might be up to 50% greater than
          the specified configuration setting. For example, if the timeout setting was 60, the
          session or query might be cancelled after being idle between 60 and 90 seconds.
        </p>
      </note>

    </conbody>

  </concept>
  <concept id="concept_rfy_jl1_rx">
    <title>Setting Timeout and Retries for Thrift Connections to the Backend
      Client</title>
    <conbody>
      <p>Impala connections to the backend client are subject to failure in
        cases when the network is momentarily overloaded. To avoid failed
        queries due to transient network problems, you can configure the number
        of Thrift connection retries using the following option: </p>
      <ul id="ul_bj3_ql1_rx">
        <li>The <codeph>--backend_client_connection_num_retries</codeph> option
          specifies the number of times Impala will try connecting to the
          backend client after the first connection attempt fails. By default,
            <cmdname>impalad</cmdname> will attempt three re-connections before
          it returns a failure. </li>
      </ul>
      <p>You can configure timeouts for sending and receiving data from the
        backend client. Therefore, if for some reason a query hangs, instead of
        waiting indefinitely for a response, Impala will terminate the
        connection after a configurable timeout.</p>
      <ul id="ul_vm2_2v1_rx">
        <li>The <codeph>--backend_client_rpc_timeout_ms</codeph> option can be
          used to specify the number of milliseconds Impala should wait for a
          response from the backend client before it terminates the connection
          and signals a failure. The default value for this property is 300000
          milliseconds, or 5 minutes. </li>
      </ul>
    </conbody>
  </concept>

  <concept id="cancel_query">

    <title>Cancelling a Query</title>

    <conbody>
      <p> Occasionally, an Impala query might run for an unexpectedly long time,
        tying up resources in the cluster. This section describes the options to
        terminate such runaway queries.</p>
    </conbody>
    <concept id="cancel_query_with_query_option">
      <title>Setting a Time Limit on Query Execution</title>
      <conbody>
        <p>An Impala administrator can set a default value of the
            <codeph>EXEC_TIME_LIMIT_S</codeph> query option for a resource pool.
          If a user accidentally runs a large query that executes for longer
          than the limit, it will be automatically terminated after the time
          limit expires to free up resources. </p>
        <p>You can override the default value per query or per session if you do
          not want to apply the default <codeph>EXEC_TIME_LIMIT_S</codeph> value
          to a specific query or a session. See <xref
            href="impala_exec_time_limit_s.xml#exec_time_limit_s"/> for the
          details of the query option.</p>
      </conbody>
    </concept>
    <concept id="cancel_query_in_webUI">
      <title>Interactively Cancelling a Query </title>
      <conbody>
        <p> You can cancel the query explicitly, independent of the timeout
          period, by going into the web UI for the <cmdname>impalad</cmdname>
          host (on port 25000 by default), and using the link on the
            <codeph>/queries</codeph> tab to cancel the running query. </p>
        <p> Various client applications let you interactively cancel queries
          submitted or monitored through those applications. For example: <ul>
            <li> Press <systemoutput>^C</systemoutput> in
                <cmdname>impala-shell</cmdname>. </li>
            <li> Click <b>Cancel</b> from the <b>Watch</b>page in Hue. </li>
          </ul>
        </p>
      </conbody>
    </concept>

  </concept>

</concept>
