You are viewing a plain text version of this content. The canonical link for it is here.
Posted to cvs@httpd.apache.org by sf...@apache.org on 2010/07/31 21:56:51 UTC

svn commit: r981084 - in /httpd/httpd/trunk: docs/manual/mod/mod_unique_id.xml modules/metadata/mod_unique_id.c

Author: sf
Date: Sat Jul 31 19:56:51 2010
New Revision: 981084

URL: http://svn.apache.org/viewvc?rev=981084&view=rev
Log:
Update docs and comment: the unique id is now 24 characters, not 19

Submitted by: Takashi Sato <takashi lans-tv com>, Stefan Fritsch
PR: 36269

Modified:
    httpd/httpd/trunk/docs/manual/mod/mod_unique_id.xml
    httpd/httpd/trunk/modules/metadata/mod_unique_id.c

Modified: httpd/httpd/trunk/docs/manual/mod/mod_unique_id.xml
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/docs/manual/mod/mod_unique_id.xml?rev=981084&r1=981083&r2=981084&view=diff
==============================================================================
--- httpd/httpd/trunk/docs/manual/mod/mod_unique_id.xml (original)
+++ httpd/httpd/trunk/docs/manual/mod/mod_unique_id.xml Sat Jul 31 19:56:51 2010
@@ -82,7 +82,10 @@ identifier for each request</description
     <p>Given those assumptions, at a single point in time we can
     identify any httpd process on any machine in the cluster from
     all other httpd processes. The machine's IP address and the pid
-    of the httpd process are sufficient to do this. So in order to
+    of the httpd process are sufficient to do this. A httpd process
+    can handle multiple requests simultaneously if you use a
+    multi-threaded MPM. In order to identify threads, we use a thread
+    index Apache httpd uses internally. So in order to
     generate unique identifiers for requests we need only
     distinguish between different points in time.</p>
 
@@ -152,11 +155,13 @@ identifier for each request</description
     even still, if you're running NTP then your UTC time will be
     correct very shortly after reboot.</p>
 
+    <!-- FIXME: thread_index is unsigned int, so not always 32bit.-->
     <p>The <code>UNIQUE_ID</code> environment variable is
-    constructed by encoding the 112-bit (32-bit IP address, 32 bit
-    pid, 32 bit time stamp, 16 bit counter) quadruple using the
+    constructed by encoding the 144-bit (32-bit IP address, 32 bit
+    pid, 32 bit time stamp, 16 bit counter, 32 bit thread index)
+    quadruple using the
     alphabet <code>[A-Za-z0-9@-]</code> in a manner similar to MIME
-    base64 encoding, producing 19 characters. The MIME base64
+    base64 encoding, producing 24 characters. The MIME base64
     alphabet is actually <code>[A-Za-z0-9+/]</code> however
     <code>+</code> and <code>/</code> need to be specially encoded
     in URLs, which makes them less desirable. All values are
@@ -182,8 +187,7 @@ identifier for each request</description
     issuing the new encodings.</p>
 
     <p>This we believe is a relatively portable solution to this
-    problem. It can be extended to multithreaded systems like
-    Windows NT, and can grow with future needs. The identifiers
+    problem. The identifiers
     generated have essentially an infinite life-time because future
     identifiers can be made longer as required. Essentially no
     communication is required between machines in the cluster (only

Modified: httpd/httpd/trunk/modules/metadata/mod_unique_id.c
URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/metadata/mod_unique_id.c?rev=981084&r1=981083&r2=981084&view=diff
==============================================================================
--- httpd/httpd/trunk/modules/metadata/mod_unique_id.c (original)
+++ httpd/httpd/trunk/modules/metadata/mod_unique_id.c Sat Jul 31 19:56:51 2010
@@ -79,8 +79,8 @@ typedef struct {
  * saving cpu cycles.  The counter is never reset, and is used to permit up to
  * 64k requests in a single second by a single child.
  *
- * The 112-bits of unique_id_rec are encoded using the alphabet
- * [A-Za-z0-9@-], resulting in 19 bytes of printable characters.  That is then
+ * The 144-bits of unique_id_rec are encoded using the alphabet
+ * [A-Za-z0-9@-], resulting in 24 bytes of printable characters.  That is then
  * stuffed into the environment variable UNIQUE_ID so that it is available to
  * other modules.  The alphabet choice differs from normal base64 encoding
  * [A-Za-z0-9+/] because + and / are special characters in URLs and we want to