You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@trafficserver.apache.org by js...@apache.org on 2016/11/01 15:22:39 UTC

[trafficserver] branch master updated (863ce53 -> 5562d87)

This is an automated email from the ASF dual-hosted git repository.

jsime pushed a change to branch master
in repository https://git-dual.apache.org/repos/asf/trafficserver.git.

      from  863ce53   TS-5011: Fixes memory leak in CLFUS compression
       new  0376486   Doc: tweaks and cleanup
       new  85253ff   More tweaks.
       new  5562d87   Trying better enumeration support.

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "adds" were already present in the repository and have only
been added to this reference.


Summary of changes:
 doc/admin-guide/configuration/index.en.rst         |   1 -
 .../configuration/multi-server-caches.en.rst       | 180 ------------------
 doc/admin-guide/files/cluster.config.en.rst        |  85 ---------
 doc/admin-guide/files/index.en.rst                 |   4 -
 doc/admin-guide/files/records.config.en.rst        |   4 +-
 .../monitoring/statistics/core-statistics.en.rst   |   1 -
 .../monitoring/statistics/core/cluster.en.rst      | 209 ---------------------
 doc/appendices/command-line/traffic_ctl.en.rst     |   9 +-
 doc/appendices/faq.en.rst                          |   3 +-
 doc/checkvers.py                                   |  19 +-
 doc/conf.py                                        |   7 +-
 .../api/functions/TSHttpTxnInfoIntGet.en.rst       |  42 +++--
 .../api/functions/TSHttpTxnIntercept.en.rst        |   2 +-
 .../api/functions/TSHttpTxnIsInternal.en.rst       |   4 +-
 .../api/functions/TSHttpTxnServerAddrSet.en.rst    |   2 +-
 .../api/functions/TSIOBufferCreate.en.rst          |  10 +-
 .../api/functions/TSIOBufferReader.en.rst          | 117 ++++++++++++
 .../api/functions/TSLifecycleHookAdd.en.rst        |  96 ++++++----
 .../api/functions/TSMBufferCreate.en.rst           |   2 +-
 .../api/functions/TSSslContextFindBy.en.rst        |   8 +-
 doc/developer-guide/api/functions/TSTypes.en.rst   |  36 ++--
 .../api/functions/TSUuidCreate.en.rst              |  16 +-
 .../api/functions/TSVConnTunnel.en.rst             |   4 +-
 doc/developer-guide/api/types/TSEvent.en.rst       |   2 +
 .../api/types/TSLifecycleHookID.en.rst             |  51 -----
 doc/ext/traffic-server.py                          |  29 ++-
 doc/manpages.py                                    |   1 -
 27 files changed, 295 insertions(+), 649 deletions(-)
 delete mode 100644 doc/admin-guide/configuration/multi-server-caches.en.rst
 delete mode 100644 doc/admin-guide/files/cluster.config.en.rst
 delete mode 100644 doc/admin-guide/monitoring/statistics/core/cluster.en.rst
 create mode 100644 doc/developer-guide/api/functions/TSIOBufferReader.en.rst
 delete mode 100644 doc/developer-guide/api/types/TSLifecycleHookID.en.rst

-- 
To stop receiving notification emails like this one, please contact
['"commits@trafficserver.apache.org" <co...@trafficserver.apache.org>'].

[trafficserver] 03/03: Trying better enumeration support.

Posted by js...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jsime pushed a commit to branch master
in repository https://git-dual.apache.org/repos/asf/trafficserver.git

commit 5562d87db6ab4e734a4eaab6bc507f05b9d2af5c
Author: Alan M. Carroll <so...@yahoo-inc.com>
AuthorDate: Thu Oct 20 16:02:01 2016 -0500

    Trying better enumeration support.
---
 doc/appendices/command-line/traffic_ctl.en.rst     |  9 ++---
 .../api/functions/TSLifecycleHookAdd.en.rst        | 40 ++++++++++++++++------
 2 files changed, 35 insertions(+), 14 deletions(-)

diff --git a/doc/appendices/command-line/traffic_ctl.en.rst b/doc/appendices/command-line/traffic_ctl.en.rst
index cfb2bb0..7c56650 100644
--- a/doc/appendices/command-line/traffic_ctl.en.rst
+++ b/doc/appendices/command-line/traffic_ctl.en.rst
@@ -247,10 +247,10 @@ traffic_ctl server
 traffic_ctl storage
 -------------------
 .. program:: traffic_ctl storage
-.. option:: offline DEVICE [DEVICE ...]
+.. option:: offline PATH [PATH ...]
 
    Mark a cache storage device as offline. The storage is identified
-   by a *path* which must match exactly a path specified in
+   by :arg:`PATH` which must match exactly a path specified in
    :file:`storage.config`. This removes the storage from the cache
    and redirects requests that would have used this storage to other
    storage. This has exactly the same effect as a disk failure for
@@ -262,9 +262,10 @@ traffic_ctl plugin
 .. program:: traffic_ctl plugin
 .. option:: msg TAG DATA
 
-    Send a message to plugins. All plugins that have hooked the :c:member:`TS_LIFECYCLE_MSG_HOOK`
+    Send a message to plugins. All plugins that have hooked the :cpp:enumerator:`TSLifecycleHookID::TS_LIFECYCLE_MSG_HOOK`
     will receive a callback for that hook. The :arg:`TAG` and :arg:`DATA` will be available to the
-    plugin hook processing.
+    plugin hook processing. It is expected that plugins will use :arg:`TAG` to select relevant messages
+    and determine the format of the :arg:`DATA`.
     
 Examples
 ========
diff --git a/doc/developer-guide/api/functions/TSLifecycleHookAdd.en.rst b/doc/developer-guide/api/functions/TSLifecycleHookAdd.en.rst
index a15f21f..24ef96d 100644
--- a/doc/developer-guide/api/functions/TSLifecycleHookAdd.en.rst
+++ b/doc/developer-guide/api/functions/TSLifecycleHookAdd.en.rst
@@ -46,9 +46,11 @@ is always called before another unless specifically mentioned.
 Types
 =====
 
-.. :c:type:: TSLifecycleHookID
+.. cpp:enum:: TSLifecycleHookID
 
-   .. c:member:: TS_LIFECYCLE_PORTS_INITIALIZED_HOOK
+   Life cycle hook selector.
+
+   .. cpp:enumerator:: TS_LIFECYCLE_PORTS_INITIALIZED_HOOK
    
       Called after the :ts:cv:`proxy server port <proxy.config.http.server_ports>`
       data structures have been initialized but before connections are accepted on
@@ -60,7 +62,7 @@ Types
       Invoked with the event :c:data:`TS_EVENT_LIFECYCLE_PORTS_INITIALIZED` and
       ``NULL`` data.
    
-   .. c:member:: TS_LIFECYCLE_PORTS_READY_HOOK
+   .. cpp:enumerator:: TS_LIFECYCLE_PORTS_READY_HOOK
    
       Called after enabling connections on the proxy server ports. Because |TS| is
       threaded this may or may not be called before any connections are accepted.
@@ -71,34 +73,52 @@ Types
       Invoked with the event :c:data:`TS_EVENT_LIFECYCLE_PORTS_READY` and ``NULL``
       data.
    
-   .. c:member:: TS_LIFECYCLE_CACHE_READY_HOOK
+   .. cpp:enumerator:: TS_LIFECYCLE_CACHE_READY_HOOK
    
       Called after |TS| cache initialization has finished.
    
       Invoked with the event :c:data:`TS_EVENT_LIFECYCLE_CACHE_READY` and ``NULL``
       data.
    
-   .. c:member:: TS_LIFECYCLE_MSG_HOOK
+   .. cpp:enumerator:: TS_LIFECYCLE_MSG_HOOK
    
       Called when triggered by an external process, such as :program:`traffic_ctl`.
    
       Invoked with the event :c:data:`TS_EVENT_LIFECYCLE_MSG`. The data is an instance of the
       :c:type:`TSPluginMsg`. This contains a *tag* which is a null terminated string and a data payload.
-      The payload cannot be assumed to be null terminated and is created by the external agent.
+      The payload cannot be assumed to be null terminated and is created by the external agent. Its internal
+      structure and format are entirely under the control of the external agent although presumably there is
+      an agreement between the plugin and the external where this is determined by the :arg:`tag`.
       
-   .. c:member:: TS_LIFECYCLE_CLIENT_SSL_CTX_INITIALIZED_HOOK
+   .. cpp:enumerator:: TS_LIFECYCLE_CLIENT_SSL_CTX_INITIALIZED_HOOK
    
       Called after the initialization of the SSL context used by |TS| for outbound connections (|TS| as client).
    
-   .. c:member:: TS_LIFECYCLE_SERVER_SSL_CTX_INITIALIZED_HOOK
+   .. cpp:enumerator:: TS_LIFECYCLE_SERVER_SSL_CTX_INITIALIZED_HOOK
    
       Called after every SSL context initialization used by |TS| for inbound connections (|TS| as the server).
+      
+.. c:type:: TSPluginMsg
+
+   The format of the data for the plugin message event :c:data:`TS_EVENT_LIFECYCLE_MSG`.
+
+.. c:member:: const char * TSPluginMsg::tag
+
+   The tag of the message. This is a null terminated string.
+   
+.. c:member:: const void * TSPluginMsg::data
+
+   Message data (payload). This is a raw slab of bytes - no structure is guaranteed.
+   
+.. c:member:: size_t TSPluginMsg::data_size
+
+   The size of :member:`TSPluginMsg::data`.
 
 Ordering
 ========
 
-:c:member:`TS_LIFECYCLE_PORTS_INITIALIZED_HOOK` will always be called before
-:c:member:`TS_LIFECYCLE_PORTS_READY_HOOK`.
+:cpp:enumerator:`TSLifecycleHookID::TS_LIFECYCLE_PORTS_INITIALIZED_HOOK` will always be called before
+:cpp:enumerator:`TSLifecycleHookID::TS_LIFECYCLE_PORTS_READY_HOOK`.
 
 Examples
 ========

-- 
To stop receiving notification emails like this one, please contact
"commits@trafficserver.apache.org" <co...@trafficserver.apache.org>.

[trafficserver] 02/03: More tweaks.

Posted by js...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jsime pushed a commit to branch master
in repository https://git-dual.apache.org/repos/asf/trafficserver.git

commit 85253ffdfa91f5b7e6806a90e659e9db5366a7f6
Author: Alan M. Carroll <so...@yahoo-inc.com>
AuthorDate: Thu Oct 20 12:57:50 2016 -0500

    More tweaks.
---
 .../api/functions/TSHttpTxnIntercept.en.rst        |   2 +-
 .../api/functions/TSIOBufferCreate.en.rst          |  10 +-
 .../api/functions/TSIOBufferReader.en.rst          | 117 +++++++++++++++++++++
 .../api/functions/TSLifecycleHookAdd.en.rst        |  86 ++++++++-------
 doc/developer-guide/api/functions/TSTypes.en.rst   |  18 +++-
 .../api/functions/TSUuidCreate.en.rst              |  16 +--
 doc/developer-guide/api/types/TSEvent.en.rst       |   2 +
 .../api/types/TSLifecycleHookID.en.rst             |  51 ---------
 doc/ext/traffic-server.py                          |   2 +-
 9 files changed, 201 insertions(+), 103 deletions(-)

diff --git a/doc/developer-guide/api/functions/TSHttpTxnIntercept.en.rst b/doc/developer-guide/api/functions/TSHttpTxnIntercept.en.rst
index e221049..5825dd7 100644
--- a/doc/developer-guide/api/functions/TSHttpTxnIntercept.en.rst
+++ b/doc/developer-guide/api/functions/TSHttpTxnIntercept.en.rst
@@ -41,7 +41,7 @@ server and read the HTTP request and body off the :c:type:`TSVConn`
 and send an HTTP response header and body.
 
 :func:`TSHttpTxnIntercept` must be called be called from only
-:data:`TS_HTTP_READ_REQUEST_HOOK`.  Using
+:data:`TS_HTTP_READ_REQUEST_HDR_HOOK`.  Using
 :type:`TSHttpTxnIntercept` will bypass the Traffic Server cache.  If
 response sent by the plugin should be cached, use
 :func:`TSHttpTxnServerIntercept` instead.
diff --git a/doc/developer-guide/api/functions/TSIOBufferCreate.en.rst b/doc/developer-guide/api/functions/TSIOBufferCreate.en.rst
index 9de8e5b..ee70863 100644
--- a/doc/developer-guide/api/functions/TSIOBufferCreate.en.rst
+++ b/doc/developer-guide/api/functions/TSIOBufferCreate.en.rst
@@ -54,7 +54,7 @@ The IO buffer abstraction provides for a single writer and multiple
 readers. In order for the readers to have no knowledge of each
 other, they manipulate IO buffers through the :type:`TSIOBufferReader`
 data structure. Since only a single writer is allowed, there is no
-corresponding :type:`TSIOBufferWriter` data structure. The writer
+corresponding `TSIOBufferWriter` data structure. The writer
 simply modifies the IO buffer directly.
 
 :func:`TSIOBufferCreate` creates an empty :type:`TSIOBuffer`.
@@ -75,9 +75,11 @@ buffer :arg:`bufp`. A common pattern for writing to an IO buffer is to copy
 data into a buffer block and then call INKIOBufferProduce to make the new
 data visible to any readers.
 
-.. XXX The above references an old API function: INKIOBufferProduce and needs to
-       be fixed. I don't see a TSIOBufferProduce function that would be its
-       obvious replacement from the Ink->TS rename.
+.. note::
+
+   The above references an old API function: INKIOBufferProduce and needs to
+   be fixed. I don't see a TSIOBufferProduce function that would be its
+   obvious replacement from the Ink->TS rename.
 
 The watermark of an :type:`TSIOBuffer` is the minimum number of bytes of data
 that have to be in the buffer before calling back any continuation that
diff --git a/doc/developer-guide/api/functions/TSIOBufferReader.en.rst b/doc/developer-guide/api/functions/TSIOBufferReader.en.rst
new file mode 100644
index 0000000..ad97bbc
--- /dev/null
+++ b/doc/developer-guide/api/functions/TSIOBufferReader.en.rst
@@ -0,0 +1,117 @@
+.. 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.
+
+.. default-domain:: c
+
+==================
+TSIOBufferReader
+==================
+
+Traffic Server IO buffer reader API.
+
+Synopsis
+========
+`#include <ts/ts.h>`
+
+.. function:: TSIOBufferReader TSIOBufferReaderAlloc(TSIOBuffer bufp)
+.. function:: TSIOBufferReader TSIOBufferReaderClone(TSIOBufferReader readerp)
+.. function:: void TSIOBufferReaderFree(TSIOBufferReader readerp)
+.. function:: void TSIOBufferReaderConsume(TSIOBufferReader readerp, int64_t nbytes)
+.. function:: TSIOBufferBlock TSIOBufferReaderStart(TSIOBufferReader readerp)
+.. function:: int64_t TSIOBufferReaderAvail(TSIOBufferReader readerp)
+.. function:: bool TSIOBufferReaderIsAvailAtLeast(TSIOBufferReader, int64_t nbytes)
+.. function:: int64_t TSIOBufferReaderRead(TSIOBufferReader reader, const void * buf, int64_t length)
+.. function:: bool TSIOBufferReaderIterate(TSIOBufferReader reader, TSIOBufferBlockFunc* func, void* context)
+
+.. :type:: TSIOBufferBlockFunc
+
+   ``bool (*TSIOBufferBlockFunc)(void const* data, int64_t nbytes, void* context)``
+
+   :arg:`data` is the data in the :type:`TSIOBufferBlock` and is :arg:`nbytes` long. :arg:`context` is
+   opaque data provided to the API call along with this function and passed on to the function. This
+   function should return ``true`` to continue iteration or ``false`` to terminate iteration.
+
+Description
+===========
+
+:type:`TSIOBufferReader` is an read accessor for :type:`TSIOBuffer`. It represents a location in
+the contents of the buffer. A buffer can have multiple readers and each reader consumes data in the
+buffer independently. Data which for which there are no readers is discarded from the buffer. This
+has two very important consequences --
+
+* Data for which there are no readers and no writer will be discarded. In effect this means without
+   any readers only the current write buffer block will be maintained, older buffer blocks will
+   disappear.
+*  Conversely keeping a reader around unused will pin the buffer data in memory. This can be useful or harmful.
+
+A buffer has a fixed amount of possible readers (currently 5) which is determined at compile
+time. Reader allocation is fast and cheap until this maxium is reached at which point it fails.
+
+:func:`TSIOBufferReaderAlloc` allocates a reader for the IO buffer :arg:`bufp`. This should only be
+      called on a newly allocated buffer. If not the location of the reader in the buffer will be
+      indeterminate. Use :func:`TSIOBufferReaderClone` to get another reader if the buffer is
+      already in use.
+
+:func:`TSIOBufferReaderClone` allocates a reader and sets its position in the buffer to be the same as :arg:`reader`.
+
+:func:`TSIOBufferReaderFree` de-allocates the reader. Any data referenced only by this reader is
+      discarded from the buffer.
+
+:func:`TSIOBufferReaderConsume` advances the position of :arg:`reader` in its IO buffer by the
+      the smaller of :arg:`nbytes` and the maximum available in the buffer.
+
+:func:`TSIOBufferReaderStart` returns the IO buffer block containing the position of
+:arg:`reader`.
+
+   .. note:: The byte at the position of :arg:`reader` is in the block but is not necessarily the first byte of the block.
+
+:func:`TSIOBufferReaderAvail` returns the number of bytes which :arg:`reader` could consume. That is
+      the number of bytes in the IO buffer starting at the current position of :arg:`reader`.
+
+:func:`TSIOBufferReaderIsAvailAtLeast` return ``true`` if the available number of bytes for
+      :arg:`reader` is at least :arg:`nbytes`, ``false`` if not. This can be more efficient than
+      :func:`TSIOBufferReadAvail` because the latter must walk all the IO buffer blocks in the IO
+      buffer. This function returns as soon as the return value can be determined. In particular a
+      value of ``1`` for :arg:`nbytes` means only the first buffer block will be checked.
+
+:func:`TSIOBufferReaderRead` reads data from :arg:`reader`. This first copies data from the IO
+      buffer for :arg:`reader` to the target buffer :arg:`bufp`, starting at :arg:`reader`s
+      position, and then advances (as with :func:`TSIOBufferReaderConsume`) :arg:`reader`s
+      position past the copied data. The amount of data read in this fashion is the smaller of the
+      amount of data available in the IO buffer for :arg:`reader` and the size of the target buffer
+      (:arg:`length`).
+
+:func:`TSIOBufferReaderIterate` iterates over the blocks for :arg:`reader`. For each block
+:arg:`func` is called with with the data for the block and :arg:`context`. The :arg:`context` is an
+opaque type to this function and is passed unchanged to :arg:`func`. It is intended to be used as
+context for :arg:`func`. If :arg:`func` returns ``false`` the iteration terminates. If :arg:`func`
+returns true the block is consumed. The return value for :func:`TSIOBufferReaderIterate` is the
+return value from the last call to :arg:`func`.
+
+   .. note:: If it would be a problem for the iteration to consume the data (especially in cases where
+             ``false`` might be returned) the reader can be cloned via :func:`TSIOBufferReaderClone` to
+             keep the data in the IO buffer and available. If not needed the reader can be destroyed or
+             if needed the original reader can be destroyed and replaced by the clone.
+
+.. note:: Destroying a :type:`TSIOBuffer` will de-allocate and destroy all readers for that buffer.
+
+
+
+See also
+========
+
+:manpage:`TSIOBufferCreate(3ts)`
diff --git a/doc/developer-guide/api/functions/TSLifecycleHookAdd.en.rst b/doc/developer-guide/api/functions/TSLifecycleHookAdd.en.rst
index 5499bc0..a15f21f 100644
--- a/doc/developer-guide/api/functions/TSLifecycleHookAdd.en.rst
+++ b/doc/developer-guide/api/functions/TSLifecycleHookAdd.en.rst
@@ -43,50 +43,62 @@ considered a lifecyle hook). Unlike other hooks, lifecycle hooks may not have a
 well defined ordering and use of them should not assume that one of the hooks
 is always called before another unless specifically mentioned.
 
-.. c:var:: TS_LIFECYCLE_PORTS_INITIALIZED_HOOK
+Types
+=====
 
-   Called after the :ts:cv:`proxy server port <proxy.config.http.server_ports>`
-   data structures have been initialized but before connections are accepted on
-   those ports. The sockets corresponding to the ports may or may not be open
-   depending on how the :program:`traffic_server` process was invoked. Other
-   API functions that depend on server ports should be called from this hook
-   and not :func:`TSPluginInit`.
+.. :c:type:: TSLifecycleHookID
 
-   Invoked with the event :c:data:`TS_EVENT_LIFECYCLE_PORTS_INITIALIZED` and
-   ``NULL`` data.
-
-.. c:var:: TS_LIFECYCLE_PORTS_READY_HOOK
-
-   Called after enabling connections on the proxy server ports. Because |TS| is
-   threaded this may or may not be called before any connections are accepted.
-   The hook code may assume that any connection to |TS| started after this hook
-   is called will be accepted by |TS|, making this a convenient place to signal
-   external processes of that.
-
-   Invoked with the event :c:data:`TS_EVENT_LIFECYCLE_PORTS_READY` and ``NULL``
-   data.
-
-.. c:var:: TS_LIFECYCLE_CACHE_READY_HOOK
-
-   Called after |TS| cache initialization has finished.
-
-   Invoked with the event :c:data:`TS_EVENT_LIFECYCLE_CACHE_READY` and ``NULL``
-   data.
-
-.. c:var:: TS_LIFECYCLE_MSG_HOOK
-
-   Called when triggered by an external process, such as :program:`traffic_ctl`.
-
-   Invoked with the event :c:data:`TS_EVENT_LIFECYCLE_MSG`. The data is an instance of the
-   :c:type:`TSPluginMsg`. This contains a *tag* which is a null terminated string and a data payload.
-   The payload cannot be assumed to be null terminated and is created by the external agent.
+   .. c:member:: TS_LIFECYCLE_PORTS_INITIALIZED_HOOK
+   
+      Called after the :ts:cv:`proxy server port <proxy.config.http.server_ports>`
+      data structures have been initialized but before connections are accepted on
+      those ports. The sockets corresponding to the ports may or may not be open
+      depending on how the :program:`traffic_server` process was invoked. Other
+      API functions that depend on server ports should be called from this hook
+      and not :func:`TSPluginInit`.
+   
+      Invoked with the event :c:data:`TS_EVENT_LIFECYCLE_PORTS_INITIALIZED` and
+      ``NULL`` data.
+   
+   .. c:member:: TS_LIFECYCLE_PORTS_READY_HOOK
+   
+      Called after enabling connections on the proxy server ports. Because |TS| is
+      threaded this may or may not be called before any connections are accepted.
+      The hook code may assume that any connection to |TS| started after this hook
+      is called will be accepted by |TS|, making this a convenient place to signal
+      external processes of that.
+   
+      Invoked with the event :c:data:`TS_EVENT_LIFECYCLE_PORTS_READY` and ``NULL``
+      data.
+   
+   .. c:member:: TS_LIFECYCLE_CACHE_READY_HOOK
+   
+      Called after |TS| cache initialization has finished.
+   
+      Invoked with the event :c:data:`TS_EVENT_LIFECYCLE_CACHE_READY` and ``NULL``
+      data.
+   
+   .. c:member:: TS_LIFECYCLE_MSG_HOOK
+   
+      Called when triggered by an external process, such as :program:`traffic_ctl`.
+   
+      Invoked with the event :c:data:`TS_EVENT_LIFECYCLE_MSG`. The data is an instance of the
+      :c:type:`TSPluginMsg`. This contains a *tag* which is a null terminated string and a data payload.
+      The payload cannot be assumed to be null terminated and is created by the external agent.
+      
+   .. c:member:: TS_LIFECYCLE_CLIENT_SSL_CTX_INITIALIZED_HOOK
+   
+      Called after the initialization of the SSL context used by |TS| for outbound connections (|TS| as client).
+   
+   .. c:member:: TS_LIFECYCLE_SERVER_SSL_CTX_INITIALIZED_HOOK
    
+      Called after every SSL context initialization used by |TS| for inbound connections (|TS| as the server).
 
 Ordering
 ========
 
-:c:data:`TS_LIFECYCLE_PORTS_INITIALIZED_HOOK` will always be called before
-:c:data:`TS_LIFECYCLE_PORTS_READY_HOOK`.
+:c:member:`TS_LIFECYCLE_PORTS_INITIALIZED_HOOK` will always be called before
+:c:member:`TS_LIFECYCLE_PORTS_READY_HOOK`.
 
 Examples
 ========
diff --git a/doc/developer-guide/api/functions/TSTypes.en.rst b/doc/developer-guide/api/functions/TSTypes.en.rst
index c3c069f..60e6aff 100644
--- a/doc/developer-guide/api/functions/TSTypes.en.rst
+++ b/doc/developer-guide/api/functions/TSTypes.en.rst
@@ -64,7 +64,7 @@ more widely. Those are described on this page.
 
 .. type:: TSHttpSsn
 
-   An opaque type that represents a Traffic Server :term:`session`.
+   An opaque type that represents a Traffic SeUuirver :term:`session`.
 
 .. type:: TSHttpStatus
 
@@ -176,6 +176,22 @@ more widely. Those are described on this page.
 
 .. type:: TSThreadPool
 
+.. type:: TSUuid
+
+   Opaque type that refers to an allocated UUID.
+   
+.. type:: TSUuidVersion
+
+   A version value for at :type:`TSUuid`.
+   
+   .. member:: TS_UUID_V4
+
+      A version 4 UUID. Currently only this value is used.
+      
+.. var:: size_t TS_UUID_STRING_LEN
+
+   Length of a UUID string.
+
 .. type:: TSVConn
 
 .. type:: TSVIO
diff --git a/doc/developer-guide/api/functions/TSUuidCreate.en.rst b/doc/developer-guide/api/functions/TSUuidCreate.en.rst
index d0f9429..1ae9c61 100644
--- a/doc/developer-guide/api/functions/TSUuidCreate.en.rst
+++ b/doc/developer-guide/api/functions/TSUuidCreate.en.rst
@@ -28,14 +28,14 @@ Synopsis
 
 `#include <ts/ts.h>`
 
-.. function:: TSUuid TSUuidCreate(void);
-.. function:: TSReturnCode TSUuidInitialize(TSUuid uuid, TSUuidVersion v);
-.. function:: void TSUuidDestroy(TSUuid uuid);
-.. function:: TSReturnCode TSUuidCopy(TSUuid dest, const TSUuid src);
-.. function:: const char *TSUuidStringGet(const TSUuid uuid);
-.. function:: TSUuidVersion TSUuidVersionGet(const TSUuid uuid);
-.. function:: TSReturnCode TSUuidStringParse(TSUuid uuid, const char *uuid_str);
-.. function:: const TSUuid TSProcessUuidGet(void);
+.. function:: TSUuid TSUuidCreate(void)
+.. function:: TSReturnCode TSUuidInitialize(TSUuid uuid, TSUuidVersion v)
+.. function:: void TSUuidDestroy(TSUuid uuid)
+.. function:: TSReturnCode TSUuidCopy(TSUuid dest, const TSUuid src)
+.. function:: const char * TSUuidStringGet(const TSUuid uuid)
+.. function:: TSUuidVersion TSUuidVersionGet(const TSUuid uuid)
+.. function:: TSReturnCode TSUuidStringParse(TSUuid uuid, const char * uuid_str)
+.. function:: const TSUuid TSProcessUuidGet(void)
 
 Description
 ===========
diff --git a/doc/developer-guide/api/types/TSEvent.en.rst b/doc/developer-guide/api/types/TSEvent.en.rst
index baabda8..239cd45 100644
--- a/doc/developer-guide/api/types/TSEvent.en.rst
+++ b/doc/developer-guide/api/types/TSEvent.en.rst
@@ -170,6 +170,8 @@ Enumeration Members
 
 .. c:member:: TSEvent TS_EVENT_LIFECYCLE_CACHE_READY
 
+.. c:member:: TSEvent TS_EVENT_LIFECYCLE_MSG
+
 .. c:member:: TSEvent TS_EVENT_LIFECYCLE_SERVER_SSL_CTX_INITIALIZED
 
 .. c:member:: TSEvent TS_EVENT_LIFECYCLE_CLIENT_SSL_CTX_INITIALIZED
diff --git a/doc/developer-guide/api/types/TSLifecycleHookID.en.rst b/doc/developer-guide/api/types/TSLifecycleHookID.en.rst
deleted file mode 100644
index e9b5546..0000000
--- a/doc/developer-guide/api/types/TSLifecycleHookID.en.rst
+++ /dev/null
@@ -1,51 +0,0 @@
-.. 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.
-
-.. include:: ../../../common.defs
-
-TSLifecycleHookID
-*****************
-
-Synopsis
-========
-
-`#include <ts/apidefs.h>`
-
-.. c:type:: TSLifeCycleHookID
-
-Enum typedef used to indicate the event hook being called during a continuation
-invocation.
-
-Enumeration Members
-===================
-
-.. c:member:: TSLifecycleHookID TS_LIFECYCLE_PORTS_INITIALIZED_HOOK
-
-.. c:member:: TSLifecycleHookID TS_LIFECYCLE_PORTS_READY_HOOK
-
-.. c:member:: TSLifecycleHookID TS_LIFECYCLE_CACHE_READY_HOOK
-
-.. c:member:: TSLifecycleHookID TS_LIFECYCLE_SERVER_SSL_CTX_INITIALIZED_HOOK
-
-.. c:member:: TSLifecycleHookID TS_LIFECYCLE_CLIENT_SSL_CTX_INITIALIZED_HOOK
-	      
-.. c:member:: TSLifecycleHookID MSG_HOOK
-
-.. c:member:: TSLifecycleHookID TS_LIFECYCLE_LAST_HOOK
-
-Description
-===========
-
diff --git a/doc/ext/traffic-server.py b/doc/ext/traffic-server.py
index 0711f0e..a875f47 100644
--- a/doc/ext/traffic-server.py
+++ b/doc/ext/traffic-server.py
@@ -347,7 +347,7 @@ class TrafficServerDomain(Domain):
 # We really need to do better with this. Editing this file for each of
 # these is already getting silly.
 EXTERNAL_TYPES = set((
-    'int', 'uint',
+    'bool', 'int', 'uint',
     'uint8_t', 'uint16_t', 'uint24_t', 'uint32_t', 'uint64_t',
     'int8_t', 'int16_t', 'int24_t', 'int32_t', 'int64_t',
     'unsigned', 'unsigned int',

-- 
To stop receiving notification emails like this one, please contact
"commits@trafficserver.apache.org" <co...@trafficserver.apache.org>.

[trafficserver] 01/03: Doc: tweaks and cleanup

Posted by js...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

jsime pushed a commit to branch master
in repository https://git-dual.apache.org/repos/asf/trafficserver.git

commit 0376486474f756ec79e2c4e964464f60b96c38cc
Author: Alan M. Carroll <so...@yahoo-inc.com>
AuthorDate: Thu Oct 20 11:11:27 2016 -0500

    Doc: tweaks and cleanup
---
 doc/admin-guide/configuration/index.en.rst         |   1 -
 .../configuration/multi-server-caches.en.rst       | 180 ------------------
 doc/admin-guide/files/cluster.config.en.rst        |  85 ---------
 doc/admin-guide/files/index.en.rst                 |   4 -
 doc/admin-guide/files/records.config.en.rst        |   4 +-
 .../monitoring/statistics/core-statistics.en.rst   |   1 -
 .../monitoring/statistics/core/cluster.en.rst      | 209 ---------------------
 doc/appendices/faq.en.rst                          |   3 +-
 doc/checkvers.py                                   |  19 +-
 doc/conf.py                                        |   7 +-
 .../api/functions/TSHttpTxnInfoIntGet.en.rst       |  42 +++--
 .../api/functions/TSHttpTxnIsInternal.en.rst       |   4 +-
 .../api/functions/TSHttpTxnServerAddrSet.en.rst    |   2 +-
 .../api/functions/TSMBufferCreate.en.rst           |   2 +-
 .../api/functions/TSSslContextFindBy.en.rst        |   8 +-
 doc/developer-guide/api/functions/TSTypes.en.rst   |  18 +-
 .../api/functions/TSVConnTunnel.en.rst             |   4 +-
 doc/ext/traffic-server.py                          |  27 ++-
 doc/manpages.py                                    |   1 -
 19 files changed, 74 insertions(+), 547 deletions(-)

diff --git a/doc/admin-guide/configuration/index.en.rst b/doc/admin-guide/configuration/index.en.rst
index 3a6d3ad..cc2e3f6 100644
--- a/doc/admin-guide/configuration/index.en.rst
+++ b/doc/admin-guide/configuration/index.en.rst
@@ -31,5 +31,4 @@ Proxy Cache Configuration
    explicit-forward-proxying.en
    transparent-proxy.en
    transparent-forward-proxying.en
-   multi-server-caches.en
    hierachical-caching.en
diff --git a/doc/admin-guide/configuration/multi-server-caches.en.rst b/doc/admin-guide/configuration/multi-server-caches.en.rst
deleted file mode 100644
index aa37530..0000000
--- a/doc/admin-guide/configuration/multi-server-caches.en.rst
+++ /dev/null
@@ -1,180 +0,0 @@
-.. _traffic-server-cluster:
-
-Traffic Server Cluster
-**********************
-
-.. 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.
-
-Traffic Server scales from a single node to multiple nodes that form a
-cluster allowing you to improve system performance and reliability.
-
-.. toctree::
-   :maxdepth: 1
-
-Understanding Traffic Server Clusters
-=====================================
-
-A Traffic Server cluster consists of multiple Traffic Server nodes. The
-nodes in a cluster share configuration information and can form a single
-logical cache. Traffic Server detects the addition and deletion of nodes
-in the cluster automatically and can detect when a node is unavailable.
-Traffic Server uses its own protocol for clustering, which is multicast
-for node location and heartbeat, but unicast for all data exchange
-within the cluster. Traffic Server has two clustering modes:
-
--  Management-only mode; refer to `Management-Only Clustering`_ below.
--  Full-clustering mode; refer to `Full Clustering`_
-
-Management-Only Clustering
-==========================
-
-In management-only clustering mode, Traffic Server cluster nodes share
-configuration information. You can administer all the nodes at the same
-time. Traffic Server uses a multicast management protocol to provide a
-single system image of your Traffic Server cluster. Information about
-cluster membership, configuration, and exceptions is shared across all
-nodes, and the :program:`traffic_manager` process automatically propagates
-configuration changes to all the nodes.
-
-Full Clustering
-===============
-
-In full-clustering mode, as well as sharing configuration information, a
-Traffic Server cluster distributes its cache across its nodes into a
-single, virtual object store, rather than replicating the cache node by
-node. Traffic Server can provide an enormous aggregate cache size and
-can maximize cache hit rate by storing objects only once across the
-entire cluster.
-
-A fully clustered Traffic Server maps objects to specific nodes in the
-cluster. When a node receives a request, it checks to see if the request
-is a hit somewhere in the cluster. If the request is a hit on a
-different node, the node handling the request obtains the object from
-the hit node and serves it to the client. Traffic Server uses its own
-communication protocol to obtain an object from sibling cluster nodes.
-
-If a node fails or is shut down and removed, Traffic Server removes
-references to the missing node on all nodes in the cluster.
-
-Full clustering recommends a dedicated network interface for cluster
-communication to achieve better performance.
-
-Enabling Clustering Mode
-========================
-
-Before a node is added into a cluster, please ensure that the following
-conditions are being met:
-
--  All nodes are running the same operating system:
-
-   -  The same distribution, e.g.: RHEL 6.6
-   -  The same kernel, e.g.: 2.6.32-504.23.4.el6
-   -  The same architecture, e.g.: x86_64
-
--  All nodes have the same version of Traffic Server installed
--  All nodes are composed of the same hardware
--  All nodes are on the same switch or same VLAN.
-
-Traffic Server does not apply the clustering mode change to all the
-nodes in the cluster. You must change the clustering mode on each node
-individually. You may following these instructions:
-
-1. Setup the same cluster name, with :ts:cv:`proxy.config.proxy_name`, e.g. ``MyCluster``.
-
-2. Set :ts:cv:`proxy.local.cluster.type` to ``1`` to enable cluster mode. The
-   following values of this configuration are valid:
-
-================= ==================================================
-Value             Description
-================= ==================================================
-1                 Full-Clustering mode
-2                 Management-Only mode
-3                 No clustering (*default*)
-================= ==================================================
-
-3. Configure :ts:cv:`proxy.config.cluster.ethernet_interface`, e.g.: ``eth0``.
-   This should be replaced with the node's real interface. We recommends a
-   dedicated physical interface here. Refer to :ts:cv:`proxy.local.cluster.type`
-   for a full description.
-
-4. Enable configuration changes::
-
-       traffic_ctl config reload
-
-5. Restart traffic server::
-
-       traffic_ctl server restart
-
-   The :program:`traffic_server` and :program:`traffic_manager` processes will need to
-   restart after the change of :ts:cv:`proxy.local.cluster.type` and
-   :ts:cv:`proxy.config.cluster.ethernet_interface` have taken place.
-
-Traffic Server will join the cluster in about 10 seconds. To verify the hosts in the
-cluster, you can run::
-
-    traffic_ctl metric get proxy.process.cluster.nodes
-
-Cluster node status is also tracked in ``cluster.config`` in the configuration
-directory. This configuration is generated by the system and should not be
-edited. It contains a list of the machines that are currently members of the
-cluster, for example::
-
-    # 3
-    127.1.2.3:80
-    127.1.2.4:80
-    127.1.2.5:80
-
-After successfully joining a cluster, all changes of global configurations
-performed on any node in that cluster will take effect on all nodes, removing
-the need to manually duplicate configuration changes across each node individually.
-
-Deleting Nodes from a Cluster
-=============================
-
-To delete a node from the Traffic Server cluster, return the setting
-:ts:cv:`proxy.local.cluster.type` to the default value ``3`` and reload.
-
-Common issues for Cluster setup
-===============================
-
-1. The Cluster member auto discovery is built upon multi-casting UDP, and as such
-   is impossible to setup where multi-casting is not avaliable, such as AWS EC2.
-
-2. The Cluster will depend on ports 8088, 8089, and 8086. These ports must not be
-   blocked by any network configurations or firewalls on the network used for
-   internal cluster communication.
-
-Performance Tuning for Busy Clusters
-====================================
-
-Beginning with version 3.2.0, Apache Traffic Server can handle multiple internal
-cluster connections and the number of Cluster Threads is configurable. Each
-of the threads will keep one connection open to all peering cluster nodes.
-
-Increasing Cluster Threads
---------------------------
-
-In the cluster environment, the current performance of the cluster threads
-will consume the same cpu usage as a normal network thread. It's reasonable
-to keep roughly the same number of cluster threads as network threads. For
-example, if you are running a system with 10 network processing threads,
-you can set the number of cluster threads by modifying
-:ts:cv:`proxy.config.cluster.threads` to ``10``::
-
-    traffic_ctl config set proxy.config.cluster.threads 10
-
diff --git a/doc/admin-guide/files/cluster.config.en.rst b/doc/admin-guide/files/cluster.config.en.rst
deleted file mode 100644
index c08c296..0000000
--- a/doc/admin-guide/files/cluster.config.en.rst
+++ /dev/null
@@ -1,85 +0,0 @@
-.. 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.
-
-.. include:: ../../common.defs
-
-.. configfile:: cluster.config
-
-cluster.config
-**************
-
-The :file:`cluster.config` tracks |TS| cluster membership, allowing more than
-one server running |TS| to coordinate and either replicate or distribute cache
-operations.
-
-For the contents of this file to reflect any clustering peers, |TS| clustering
-must first be enabled by adjusting :ts:cv:`proxy.local.cluster.type`.
-
-For information on how to enable and configure |TS| clustering, refer to the
-:ref:`traffic-server-cluster` section.
-
-.. danger::
-
-   The :file:`cluster.config` configuration file is generated and managed by
-   |TS| itself and should not be modified directly.
-
-Format
-======
-
-The format of :file:`cluster.config` is simple. Lines beginning with ``#`` are
-comments and, as such, will be ignored by |TS|. The first non-comment,
-non-empty line is an integer indicating the number of |TS| cluster peers for
-the current node. If the current node is not a member of a cluster, this value
-will be ``0``.
-
-Following lines provide the ``<address>:<port>`` of each peer in the cluster.
-By default, |TS| uses ``8086`` for cluster communication. This may be adjusted
-with :ts:cv:`proxy.config.cluster.cluster_port`. Note that this setting is in
-the ``CONFIG`` scope, which means it must be set to the same value on all
-cluster peers.
-
-Examples
-========
-
-Stand-alone Proxy
------------------
-
-When running a single |TS| node without a cluster, the configuration file will
-simply contain a zero, indicating that there are no cluster peers, as so::
-
-    0
-
-Because there are zero peers in the (non-existent) cluster, no address lines
-follow.
-
-Multiple Peers
---------------
-
-In a cluster with four members (including the current node), the configuration
-will appear as::
-
-    3
-    127.1.2.3:8086
-    127.1.2.4:8086
-    127.1.2.5:8086
-
-Though, of course, the IP addresses will be appropriate for your network. If
-you have configured your |TS| nodes to use a cluster management port other than
-the default ``8086`` the port numbers will differ, as well.
-
-The configuration will not include the current |TS| node's address, only its
-peers' addresses.
diff --git a/doc/admin-guide/files/index.en.rst b/doc/admin-guide/files/index.en.rst
index 2fe38a7..bd62751 100644
--- a/doc/admin-guide/files/index.en.rst
+++ b/doc/admin-guide/files/index.en.rst
@@ -26,7 +26,6 @@ Configuration Files
    :hidden:
 
    cache.config.en
-   cluster.config.en
    congestion.config.en
    hosting.config.en
    ip_allow.config.en
@@ -46,9 +45,6 @@ Configuration Files
     Defines if, how, and for what durations |TS| caches objects, based on
     destinations, clients, URL components, and more.
 
-:doc:`cluster.config.en`
-    Manages |TS| cluster configuration and membership on each node.
-
 :doc:`congestion.config.en`
     Defines network conditions under which clients will receive retry messages
     instead of |TS| contacting origin servers.
diff --git a/doc/admin-guide/files/records.config.en.rst b/doc/admin-guide/files/records.config.en.rst
index ecf52a7..a02a858 100644
--- a/doc/admin-guide/files/records.config.en.rst
+++ b/doc/admin-guide/files/records.config.en.rst
@@ -2119,9 +2119,9 @@ Heuristic Expiration
 
     These fuzzing options are marked as deprecated as of v6.2.0, and will be
     removed for v7.0.0. Instead, we recommend looking at the new
-    :ts:cv:`proxy-config-http-cache-open-write-fail-action` configuration and
+    :ts:cv:`proxy.config.http.cache.open_write_fail_action` configuration and
     the features around thundering heard avoidance (see
-    :ref:`cache-basics` for details).
+    :ref:`http-proxy-caching` for details).
 
 Dynamic Content & Content Negotiation
 =====================================
diff --git a/doc/admin-guide/monitoring/statistics/core-statistics.en.rst b/doc/admin-guide/monitoring/statistics/core-statistics.en.rst
index abb8ccc..2947ec7 100644
--- a/doc/admin-guide/monitoring/statistics/core-statistics.en.rst
+++ b/doc/admin-guide/monitoring/statistics/core-statistics.en.rst
@@ -36,7 +36,6 @@ component to which they're related.
    core/hierarchical.en
    core/hostdb.en
    core/dns.en
-   core/cluster.en
    core/origin.en
    core/network-io.en
    core/ssl.en
diff --git a/doc/admin-guide/monitoring/statistics/core/cluster.en.rst b/doc/admin-guide/monitoring/statistics/core/cluster.en.rst
deleted file mode 100644
index 1bce07b..0000000
--- a/doc/admin-guide/monitoring/statistics/core/cluster.en.rst
+++ /dev/null
@@ -1,209 +0,0 @@
-.. 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.
-
-.. include:: ../../../../common.defs
-
-.. _admin-stats-core-cluster:
-
-Cluster
-*******
-
-The statistics documented in this section relate to |TS| clusters, which are
-synchronized sets of |TS| instances running across multiple hosts. For more
-information on configuring and using the clustering feature, please refer to
-the :ref:`traffic-server-cluster` chapter of the :ref:`admin-guide`.
-
-.. ts:stat:: global proxy.node.cluster.nodes integer
-   :type: gauge
-
-   Represents the number of |TS| instances which are members of the same cluster
-   as this node.
-
-.. ts:stat:: global proxy.process.cluster.alloc_data_news integer
-   :type: gauge
-
-.. ts:stat:: global proxy.process.cluster.byte_bank_used integer
-   :type: gauge
-
-.. ts:stat:: global proxy.process.cluster.cache_callbacks integer
-   :type: counter
-
-.. ts:stat:: global proxy.process.cluster.cache_callback_time float
-.. ts:stat:: global proxy.process.cluster.cache_outstanding integer
-   :type: counter
-
-.. ts:stat:: global proxy.process.cluster.chan_inuse integer
-   :type: gauge
-
-.. ts:stat:: global proxy.process.cluster.cluster_ping_time float
-   :type: gauge
-
-.. ts:stat:: global proxy.process.cluster.configuration_changes integer
-   :type: gauge
-
-.. ts:stat:: global proxy.process.cluster.connections_avg_time float
-   :type: gauge
-
-.. ts:stat:: global proxy.process.cluster.connections_bumped integer
-   :type: counter
-
-.. ts:stat:: global proxy.process.cluster.connections_closed integer
-   :type: counter
-
-.. ts:stat:: global proxy.process.cluster.connections_opened integer
-   :type: counter
-
-.. ts:stat:: global proxy.process.cluster.connections_open integer
-   :type: gauge
-
-.. ts:stat:: global proxy.process.cluster.connections_read_locked integer
-   :type: gauge
-
-.. ts:stat:: global proxy.process.cluster.connections_write_locked integer
-   :type: gauge
-
-.. ts:stat:: global proxy.process.cluster.control_messages_avg_receive_time float
-.. ts:stat:: global proxy.process.cluster.control_messages_avg_send_time float
-.. ts:stat:: global proxy.process.cluster.control_messages_received integer
-   :type: counter
-
-.. ts:stat:: global proxy.process.cluster.control_messages_sent integer
-   :type: counter
-
-.. ts:stat:: global proxy.process.cluster.delayed_reads integer
-   :type: counter
-
-.. ts:stat:: global proxy.process.cluster.level1_bank integer
-.. ts:stat:: global proxy.process.cluster.lkrmt_cache_callbacks integer
-   :type: counter
-
-.. ts:stat:: global proxy.process.cluster.lkrmt_cache_callback_time float
-.. ts:stat:: global proxy.process.cluster.local_connections_closed integer
-   :type: counter
-
-.. ts:stat:: global proxy.process.cluster.local_connection_time float
-.. ts:stat:: global proxy.process.cluster.machines_allocated integer
-   :type: counter
-
-.. ts:stat:: global proxy.process.cluster.machines_freed integer
-   :type: counter
-
-.. ts:stat:: global proxy.process.cluster.multilevel_bank integer
-.. ts:stat:: global proxy.process.cluster.net_backup integer
-.. ts:stat:: global proxy.process.cluster.nodes integer
-   :type: gauge
-
-.. ts:stat:: global proxy.process.cluster.no_remote_space integer
-   :type: counter
-
-.. ts:stat:: global proxy.process.cluster.op_delayed_for_lock integer
-   :type: counter
-
-.. ts:stat:: global proxy.process.cluster.open_delays integer
-   :type: counter
-
-.. ts:stat:: global proxy.process.cluster.open_delay_time float
-.. ts:stat:: global proxy.process.cluster.partial_reads integer
-   :type: counter
-
-.. ts:stat:: global proxy.process.cluster.partial_writes integer
-   :type: counter
-
-.. ts:stat:: global proxy.process.cluster.rdmsg_assemble_time float
-.. ts:stat:: global proxy.process.cluster.read_bytes integer
-   :type: counter
-   :unit: bytes
-
-.. ts:stat:: global proxy.process.cluster.reads integer
-   :type: counter
-
-.. ts:stat:: global proxy.process.cluster.remote_connections_closed integer
-   :type: counter
-
-.. ts:stat:: global proxy.process.cluster.remote_connection_time float
-.. ts:stat:: global proxy.process.cluster.remote_op_reply_timeouts integer
-   :type: counter
-
-.. ts:stat:: global proxy.process.cluster.remote_op_timeouts integer
-   :type: counter
-
-.. ts:stat:: global proxy.process.cluster.rmt_cache_callbacks integer
-   :type: counter
-
-.. ts:stat:: global proxy.process.cluster.rmt_cache_callback_time float
-.. ts:stat:: global proxy.process.cluster.setdata_no_cachevc integer
-   :type: counter
-
-.. ts:stat:: global proxy.process.cluster.setdata_no_cluster integer
-   :type: counter
-
-.. ts:stat:: global proxy.process.cluster.setdata_no_clustervc integer
-   :type: counter
-
-.. ts:stat:: global proxy.process.cluster.setdata_no_tunnel integer
-   :type: counter
-
-.. ts:stat:: global proxy.process.cluster.slow_ctrl_msgs_sent integer
-   :type: counter
-
-.. ts:stat:: global proxy.process.cluster.vc_cache_insert_lock_misses integer
-   :type: counter
-
-.. ts:stat:: global proxy.process.cluster.vc_cache_inserts integer
-   :type: counter
-
-.. ts:stat:: global proxy.process.cluster.vc_cache_lookup_hits integer
-   :type: counter
-
-.. ts:stat:: global proxy.process.cluster.vc_cache_lookup_lock_misses integer
-   :type: counter
-
-.. ts:stat:: global proxy.process.cluster.vc_cache_lookup_misses integer
-   :type: counter
-
-.. ts:stat:: global proxy.process.cluster.vc_cache_purges integer
-   :type: counter
-
-.. ts:stat:: global proxy.process.cluster.vc_cache_scan_lock_misses integer
-   :type: counter
-
-.. ts:stat:: global proxy.process.cluster.vc_cache_scans integer
-   :type: counter
-
-.. ts:stat:: global proxy.process.cluster.vc_read_list_len integer
-   :type: counter
-
-.. ts:stat:: global proxy.process.cluster.vc_write_list_len integer
-   :type: counter
-
-.. ts:stat:: global proxy.process.cluster.vc_write_stall integer
-   :type: counter
-
-.. ts:stat:: global proxy.process.cluster.write_bb_mallocs integer
-   :type: counter
-
-.. ts:stat:: global proxy.process.cluster.write_bytes integer
-   :type: counter
-   :unit: bytes
-
-.. ts:stat:: global proxy.process.cluster.write_lock_misses integer
-   :type: counter
-
-.. ts:stat:: global proxy.process.cluster.writes integer
-   :type: counter
-
-
diff --git a/doc/appendices/faq.en.rst b/doc/appendices/faq.en.rst
index 861f69a..5697e4e 100644
--- a/doc/appendices/faq.en.rst
+++ b/doc/appendices/faq.en.rst
@@ -348,7 +348,7 @@ minutes to transfer the object. This inaccuracy is more noticeable with
 a light load. A heavier load yields a more accurate statistic.
 
 You are unable to execute Traffic Control commands
------------------------------------------------
+--------------------------------------------------
 
 :program:`traffic_ctl` commands do not execute under the following conditions:
 
@@ -595,4 +595,3 @@ origin servers. If you cannot avoid such timeouts by otherwise addressing the
 performance on your origin servers, you may adjust the origin connection timeout
 in Traffic Server by changing :ts:cv:`proxy.config.http.connect_attempts_timeout`
 in :file:`records.config` to a larger value.
-
diff --git a/doc/checkvers.py b/doc/checkvers.py
index c648f4e..cc95053 100644
--- a/doc/checkvers.py
+++ b/doc/checkvers.py
@@ -28,15 +28,20 @@ if __name__ == '__main__':
   # Check whether we have a recent version of sphinx. EPEL and CentOS are completely crazy and I don't understand their
   # packaging at all. The test below works on Ubuntu and places where sphinx is installed sanely AFAICT.
   if options.checkvers:
-    print 'checking for sphinx version >= 1.1... ',
+    print 'checking for sphinx version >= 1.2... ',
+    # Need at least 1.2 because of some command line options stuff HRP added.
+    # Also 1.2 guarantees sphinx.version_info is available.
     try:
       import sphinx
-
-      version = sphinx.__version__
-      print 'found ' + sphinx.__version__
-
-      (major, minor, micro) = version.split('.')
-      if (int(major) < 1) or (int(major) == 1 and int(minor) < 1):
+      
+      if 'version_info' in dir(sphinx) :
+        print 'Found Sphinx version {0}'.format(sphinx.version_info)
+      else :
+        version = sphinx.__version__
+        print 'Found Sphinx version (old) {0}'.format(sphinx.__version__)
+        sphinx.version_info = version.split('.')
+        
+      if sphinx.version_info < (1,2) :
           sys.exit(1)
 
     except Exception as e:
diff --git a/doc/conf.py b/doc/conf.py
index c34ad4f..dd26cd7 100644
--- a/doc/conf.py
+++ b/doc/conf.py
@@ -28,6 +28,7 @@
 # serve to show the default.
 
 import sys, os
+from sphinx import version_info
 
 # If extensions (or modules to document with autodoc) are in another directory,
 # add these directories to sys.path here. If the directory is relative to the
@@ -51,11 +52,15 @@ extensions = [
   'sphinx.ext.autodoc',
   'sphinx.ext.todo',
   'sphinx.ext.coverage',
-  'sphinx.ext.pngmath',
   'sphinx.ext.viewcode',
   'traffic-server',
 ]
 
+if version_info >= (1,4) :
+  extensions.append('sphinx.ext.imgmath')
+else :
+  extensions.append('sphinx.ext.pngmath')
+
 # XXX Disabling docxygen for now, since it make RTD documentation builds time
 # out, eg. https://readthedocs.org/projects/trafficserver/builds/3525976/
 # extensions += [
diff --git a/doc/developer-guide/api/functions/TSHttpTxnInfoIntGet.en.rst b/doc/developer-guide/api/functions/TSHttpTxnInfoIntGet.en.rst
index 4fa9c9e..a8d2eea 100644
--- a/doc/developer-guide/api/functions/TSHttpTxnInfoIntGet.en.rst
+++ b/doc/developer-guide/api/functions/TSHttpTxnInfoIntGet.en.rst
@@ -23,11 +23,11 @@ Synopsis
 
 `#include <ts/ts.h>`
 
-.. c:function:: TSReturnCode TSHttpTxnInfoIntGet(TSHttpTxn txnp, TSHttpTxnInfoKey key, TSMgmtInt *value)
-
+.. c:function:: TSReturnCode TSHttpTxnInfoIntGet(TSHttpTxn txnp, TSHttpTxnInfoKey key, TSMgmtInt * value)
 
 Description
 -----------
+
 :c:func:`TSHttpTxnInfoIntGet` returns arbitrary integer-typed info about a transaction as defined in
 :c:type:`TSHttpTxnInfoKey`. The API will be part of a generic API umbrella that can support returning
 arbitrary info about a transaction using custom log tags. It works on multiple hooks depending on the
@@ -35,35 +35,37 @@ requested info. For example, cache related info may be available only at or afte
 
 The :c:type:`TSHttpTxnInfoKey` currently supports the below integer-based info about a transaction
 
-    :c:data:`TS_TXN_INFO_CACHE_HIT_RAM`
+.. c:type:: TSHttpTxnInfoKey
+
+   .. c:member:: TS_TXN_INFO_CACHE_HIT_RAM
 
-         This info is available at or after :c:data:`TS_HTTP_CACHE_LOOKUP_COMPLETE_HOOK` hook. A value of 1 indicates that the response
-         is returned from RAM cache. A value of 0 indicates otherwise.
+      This info is available at or after :c:member:`TS_HTTP_CACHE_LOOKUP_COMPLETE_HOOK` hook. A value of :literal:`1` indicates that the response
+      is returned from RAM cache. A value of :literal:`0` indicates otherwise.
 
-    :c:data:`TS_TXN_INFO_CACHE_COMPRESSED_IN_RAM`
+   .. c:member:: TS_TXN_INFO_CACHE_COMPRESSED_IN_RAM
 
-         This info is available at or after :c:data:`TS_HTTP_CACHE_LOOKUP_COMPLETE_HOOK` hook. A value of 1 indicates that the response
-         is returned from RAM cache and is compressed. A value of 0 indicates otherwise.
+      This info is available at or after :c:data:`TS_HTTP_CACHE_LOOKUP_COMPLETE_HOOK` hook. A value of 1 indicates that the response
+      is returned from RAM cache and is compressed. A value of 0 indicates otherwise.
 
-    :c:data:`TS_TXN_INFO_CACHE_HIT_RWW`
+   .. c:member:: TS_TXN_INFO_CACHE_HIT_RWW
 
-         This info is available at or after :c:data:`TS_HTTP_CACHE_LOOKUP_COMPLETE_HOOK` hook. A value of 1 indicates that the response
-         is returned via Read-While-Writer functionality. A value of 0 indicates otherwise.
+      This info is available at or after :c:data:`TS_HTTP_CACHE_LOOKUP_COMPLETE_HOOK` hook. A value of 1 indicates that the response
+      is returned via Read-While-Writer functionality. A value of 0 indicates otherwise.
 
-    :c:data:`TS_TXN_INFO_CACHE_OPEN_READ_TRIES`
+   .. c:member:: TS_TXN_INFO_CACHE_OPEN_READ_TRIES
 
-         This info is available at or after :c:data:`TS_HTTP_CACHE_LOOKUP_COMPLETE_HOOK` hook. The value indicates the number of cache open
-         read reattempts made by the transaction on cache open read failure.
+      This info is available at or after :c:data:`TS_HTTP_CACHE_LOOKUP_COMPLETE_HOOK` hook. The value indicates the number of cache open
+      read reattempts made by the transaction on cache open read failure.
 
-    :c:data:`TS_TXN_INFO_CACHE_OPEN_WRITE_TRIES`
+   .. c:member:: TS_TXN_INFO_CACHE_OPEN_WRITE_TRIES
 
-         This info is available at or after :c:data:`TS_HTTP_CACHE_LOOKUP_COMPLETE_HOOK` hook. The value indicates the number of cache open
-         write reattempts made by the transaction on cache open write failure.
+      This info is available at or after :c:data:`TS_HTTP_CACHE_LOOKUP_COMPLETE_HOOK` hook. The value indicates the number of cache open
+      write reattempts made by the transaction on cache open write failure.
 
-    :c:data:`TS_TXN_INFO_CACHE_VOLUME`
+   .. c:member:: TS_TXN_INFO_CACHE_VOLUME
 
-         This info is available at or after :c:data:`TS_HTTP_CACHE_LOOKUP_COMPLETE_HOOK` hook. The value indicates the cache volume ID used
-         for the cache object associated with the transaction.
+      This info is available at or after :c:data:`TS_HTTP_CACHE_LOOKUP_COMPLETE_HOOK` hook. The value indicates the cache volume ID used
+      for the cache object associated with the transaction.
 
 Return values
 -------------
diff --git a/doc/developer-guide/api/functions/TSHttpTxnIsInternal.en.rst b/doc/developer-guide/api/functions/TSHttpTxnIsInternal.en.rst
index f884a45..d0804bb 100644
--- a/doc/developer-guide/api/functions/TSHttpTxnIsInternal.en.rst
+++ b/doc/developer-guide/api/functions/TSHttpTxnIsInternal.en.rst
@@ -42,7 +42,7 @@ Return Values
 =============
 
 Both these APIs return a :type:`int`, indicating whether the
-request was internal (:data:`1`) or not (:data:`0`).
+request was internal (:literal:`1`) or not (:literal:`0`).
 
 Examples
 ========
@@ -50,7 +50,7 @@ Examples
 The ESI plugin uses :func:`TSHttpTxnIsInternal` to ignore requests that is
 had generated while fetching portions of an ESI document:
 
-.. literalinclude:: ../../../../plugins/experimental/esi/esi.cc
+.. literalinclude:: ../../../../plugins/esi/esi.cc
   :language: c
   :lines: 1395-1398
 
diff --git a/doc/developer-guide/api/functions/TSHttpTxnServerAddrSet.en.rst b/doc/developer-guide/api/functions/TSHttpTxnServerAddrSet.en.rst
index 0ddd306..5100513 100644
--- a/doc/developer-guide/api/functions/TSHttpTxnServerAddrSet.en.rst
+++ b/doc/developer-guide/api/functions/TSHttpTxnServerAddrSet.en.rst
@@ -26,7 +26,7 @@ Synopsis
 
 `#include <ts/ts.h>`
 
-.. function:: TSReturnCode TSHttpTxnServerAddrGet(TSHttpTxn txnp, struct sockaddr const* addr)
+.. function:: TSReturnCode TSHttpTxnServerAddrSet(TSHttpTxn txnp, struct sockaddr const* addr)
 
 Description
 ===========
diff --git a/doc/developer-guide/api/functions/TSMBufferCreate.en.rst b/doc/developer-guide/api/functions/TSMBufferCreate.en.rst
index 5277a05..4b7e3c7 100644
--- a/doc/developer-guide/api/functions/TSMBufferCreate.en.rst
+++ b/doc/developer-guide/api/functions/TSMBufferCreate.en.rst
@@ -40,7 +40,7 @@ out of marshal buffers, and change the values within the marshal buffer.
 Whenever you manipulate an object, you require the handle to the object
 (:type:`TSMLoc`) and the marshal buffer containing the object (:type:`TSMBuffer`).
 
-Any marshal buffer fetched by :func:`TSHttpTxn*Get` will be used by other parts
+Any marshal buffer fetched by transaction getters will be used by other parts
 of the system. Be careful not to destroy these shared, transaction marshal buffers.
 
 :func:`TSMBufferCreate` creates a new marshal buffer and initializes
diff --git a/doc/developer-guide/api/functions/TSSslContextFindBy.en.rst b/doc/developer-guide/api/functions/TSSslContextFindBy.en.rst
index ffc1d27..b9bc07e 100644
--- a/doc/developer-guide/api/functions/TSSslContextFindBy.en.rst
+++ b/doc/developer-guide/api/functions/TSSslContextFindBy.en.rst
@@ -29,6 +29,7 @@ Synopsis
 `#include <ts/ts.h>`
 
 .. function:: TSSslContext TSSslContextFindByName(const char * name)
+
 .. function:: TSSslContext TSSslContextFindByAddr(const struct sockaddr * address)
 
 Description
@@ -42,13 +43,6 @@ server :arg:`name`.
 created from :file:`ssl_multicert.config` matchin against the server
 :arg:`address`.
 
-Type
-====
-
-.. type:: TSSslContext
-
-The SSL context object. This is an opaque type that can be cast to
-the underlying SSL library type (SSL_CTX * for the OpenSSL library).
 
 See also
 ========
diff --git a/doc/developer-guide/api/functions/TSTypes.en.rst b/doc/developer-guide/api/functions/TSTypes.en.rst
index 9d76101..c3c069f 100644
--- a/doc/developer-guide/api/functions/TSTypes.en.rst
+++ b/doc/developer-guide/api/functions/TSTypes.en.rst
@@ -48,15 +48,6 @@ more widely. Those are described on this page.
 
    An opaque type that represents a Traffic Server :term:`continuation`.
 
-.. type:: TSEvent
-
-   :type:`TSEvents` are sent to continuations when they are called
-   back.
-
-   The :type:`TSEvent` provides the continuation's handler function
-   with information about the callback.  Based on the event it
-   receives, the handler function can decide what to do.
-
 .. type:: TSEventFunc
 
 .. type:: TSFile
@@ -69,10 +60,6 @@ more widely. Those are described on this page.
 
    A 64 bit time value, measured in nanoseconds.
 
-.. type:: TSHttpHookID
-
-   An enumeration that identifies a specific type of hook for HTTP transactions.
-
 .. type:: TSHttpParser
 
 .. type:: TSHttpSsn
@@ -137,6 +124,10 @@ more widely. Those are described on this page.
 
 .. type:: TSMLoc
 
+.. var:: TSMLoc TS_NULL_MLOC
+
+   A predefined null valued :type:`TSMLoc` used to indicate the absence of an :type:`TSMLoc`.
+
 .. type:: TSMutex
 
 .. type:: TSParseResult
@@ -188,3 +179,4 @@ more widely. Those are described on this page.
 .. type:: TSVConn
 
 .. type:: TSVIO
+      
diff --git a/doc/developer-guide/api/functions/TSVConnTunnel.en.rst b/doc/developer-guide/api/functions/TSVConnTunnel.en.rst
index abe0d7c..0669b9a 100644
--- a/doc/developer-guide/api/functions/TSVConnTunnel.en.rst
+++ b/doc/developer-guide/api/functions/TSVConnTunnel.en.rst
@@ -32,8 +32,8 @@ Description
 ===========
 
 Set the SSL connection :arg:`svc` to convert to a blind tunnel. Can be called
-from :data:`TS_VCONN_PRE_ACCEPT_HOOK` or :data:`TS_SSL_SNI_HOOK/TS_SSL_CERT_HOOK`.
+from :member:`TS_VCONN_PRE_ACCEPT_HOOK` or :member:`TS_SSL_SNI_HOOK` / :member:`TS_SSL_CERT_HOOK`.
 
-For this to work from the :data:`TS_SSL_SNI_HOOK` or :data:`TS_SSL_CERT_HOOK`,
+For this to work from the :member:`TS_SSL_SNI_HOOK` or :member:`TS_SSL_CERT_HOOK`,
 either the server must be running OpenSSL 1.0.2 or a version of OpenSSL 1.0.1
 with the appropriate patch installed.
diff --git a/doc/ext/traffic-server.py b/doc/ext/traffic-server.py
index 91f286e..0711f0e 100644
--- a/doc/ext/traffic-server.py
+++ b/doc/ext/traffic-server.py
@@ -19,9 +19,9 @@
 """
     TS Sphinx Directives
     ~~~~~~~~~~~~~~~~~~~~~~~~~
-
+    
     Sphinx Docs directives for Apache Traffic Server
-
+    
     :copyright: Copyright 2013 by the Apache Software Foundation
     :license: Apache
 """
@@ -133,9 +133,14 @@ class TSConfVar(std.Target):
         # index. nodes.make_id() specifies the link anchor name that is
         # implicitly generated by the anchor node above.
         indexnode = sphinx.addnodes.index(entries=[])
-        indexnode['entries'].append(
-            ('single', _('%s') % cv_name, nodes.make_id(cv_name), '')
-        )
+        if sphinx.version_info >= (1, 4) :
+            indexnode['entries'].append(
+                ('single', _('%s') % cv_name, nodes.make_id(cv_name), '', '')
+            )
+        else :
+            indexnode['entries'].append(
+                ('single', _('%s') % cv_name, nodes.make_id(cv_name), '')
+            )
 
         return [ indexnode, node, fl, nn ]
 
@@ -252,9 +257,15 @@ class TSStat(std.Target):
         # index. nodes.make_id() specifies the link anchor name that is
         # implicitly generated by the anchor node above.
         indexnode = sphinx.addnodes.index(entries=[])
-        indexnode['entries'].append(
-            ('single', _('%s') % stat_name, nodes.make_id(stat_name), '')
-        )
+
+        if sphinx.version_info >= (1, 4) :
+            indexnode['entries'].append(
+                ('single', _('%s') % stat_name, nodes.make_id(stat_name), '', '')
+            )
+        else :
+            indexnode['entries'].append(
+                ('single', _('%s') % stat_name, nodes.make_id(stat_name), '')
+            )
 
         return [ indexnode, node, fl, nn ]
 
diff --git a/doc/manpages.py b/doc/manpages.py
index 7b0aae2..3ccd9de 100644
--- a/doc/manpages.py
+++ b/doc/manpages.py
@@ -35,7 +35,6 @@ man_pages = [
   ('appendices/command-line/traffic_via.en', 'traffic_via', u'Traffic Server Via header decoder', None, '1'),
 
   ('admin-guide/files/cache.config.en', 'cache.config', u'Traffic Server cache configuration file', None, '5'),
-  ('admin-guide/files/cluster.config.en', 'cluster.config', u'Traffic Server cluster configuration file', None, '5'),
   ('admin-guide/files/congestion.config.en', 'congestion.config', u'Traffic Server congestion control configuration file', None, '5'),
   ('admin-guide/files/hosting.config.en', 'hosting.config', u'Traffic Server domain hosting configuration file', None, '5'),
   ('admin-guide/files/ip_allow.config.en', 'ip_allow.config', u'Traffic Server IP access control configuration file', None, '5'),

-- 
To stop receiving notification emails like this one, please contact
"commits@trafficserver.apache.org" <co...@trafficserver.apache.org>.