You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by th...@apache.org on 2020/08/18 07:14:21 UTC

svn commit: r1880953 - in /jackrabbit/site/live/oak/docs: nodestore/segment/overview.html nodestore/segment/records.html query/lucene.html security/authentication/ldap.html

Author: thomasm
Date: Tue Aug 18 07:14:21 2020
New Revision: 1880953

URL: http://svn.apache.org/viewvc?rev=1880953&view=rev
Log:
OAK-936: Site checkin for project Oak Documentation-1.33-SNAPSHOT

Modified:
    jackrabbit/site/live/oak/docs/nodestore/segment/overview.html
    jackrabbit/site/live/oak/docs/nodestore/segment/records.html
    jackrabbit/site/live/oak/docs/query/lucene.html
    jackrabbit/site/live/oak/docs/security/authentication/ldap.html

Modified: jackrabbit/site/live/oak/docs/nodestore/segment/overview.html
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/oak/docs/nodestore/segment/overview.html?rev=1880953&r1=1880952&r2=1880953&view=diff
==============================================================================
--- jackrabbit/site/live/oak/docs/nodestore/segment/overview.html (original)
+++ jackrabbit/site/live/oak/docs/nodestore/segment/overview.html Tue Aug 18 07:14:21 2020
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.8.1 at 2020-04-22 
+ | Generated by Apache Maven Doxia Site Renderer 1.8.1 at 2020-08-18 
  | Rendered using Apache Maven Fluido Skin 1.6
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20200422" />
+    <meta name="Date-Revision-yyyymmdd" content="20200818" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Jackrabbit Oak &#x2013; Oak Segment Tar</title>
     <link rel="stylesheet" href="../../css/apache-maven-fluido-1.6.min.css" />
@@ -155,9 +155,9 @@
 
       <div id="breadcrumbs">
         <ul class="breadcrumb">
-        <li id="publishDate">Last Published: 2020-04-22<span class="divider">|</span>
+        <li id="publishDate">Last Published: 2020-08-18<span class="divider">|</span>
 </li>
-          <li id="projectVersion">Version: 1.27-SNAPSHOT</li>
+          <li id="projectVersion">Version: 1.33-SNAPSHOT</li>
         </ul>
       </div>
       <div class="row-fluid">
@@ -891,7 +891,14 @@ TarMK GC #2: compacting root.
 <p><b>Connection Instructions</b>:</p>
 <ul>
 
-<li><b>Microsoft Azure</b> The <tt>cloud-prefix</tt> for MS Azure is <tt>az</tt>, therefore a valid connection argument would be <tt>az:https://myaccount.blob.core.windows.net/container/repository</tt>, where the part after <tt>:</tt> is the Azure URL identifier for the <i>repository</i> directory inside the specified <i>container</i> of the <i>myaccount</i> Azure storage account. The last missing piece is the secret key which will be supplied as an environment variable, i.e. <tt>AZURE_SECRET_KEY</tt>.</li>
+<li>
+
+<p><b>Microsoft Azure</b> The <tt>cloud-prefix</tt> for MS Azure is <tt>az</tt>, therefore a valid connection argument would be <tt>az:https://myaccount.blob.core.windows.net/container/repository</tt>, where the part after <tt>:</tt> is the Azure URL identifier for the <i>repository</i> directory inside the specified <i>container</i> of the <i>myaccount</i> Azure storage account. The last missing piece is the secret key which will be supplied as an environment variable, i.e. <tt>AZURE_SECRET_KEY</tt>.</p>
+</li>
+<li>
+
+<p><b>Amazon AWS</b> The <tt>cloud-prefix</tt> for Amazon AWS is <tt>aws</tt>, therefore a valid connection argument would be <tt>aws:bucket;root_directory;journal_table;lock_table</tt> where the part after <tt>:</tt> defines the <i>root_directory</i> inside the specified <i>bucket</i> in S3 and the <i>journal_table</i> and <i>lock_table</i> tables within DynamoDB services. The other portion to connect to AWS is the credentials which will be supplied by placing a credentials file with ~/.aws folder.</p>
+</li>
 </ul></div>
 <div class="section">
 <h3><a name="Segment-Copy"></a><a name="segment-copy"></a> Segment-Copy</h3>
@@ -901,7 +908,7 @@ TarMK GC #2: compacting root.
 <pre class="source">java -jar oak-run.jar segment-copy SOURCE DESTINATION [--last &lt;REV_COUNT&gt;]
 </pre></div></div>
 
-<p>The <tt>segment-copy</tt> command allows the &#x201c;translation&#x201d; of the Segment Store at <tt>SOURCE</tt> from one persistence type (e.g. local TarMK Segment Store) to a different persistence type (e.g. remote Azure Segment Store), saving the resulted Segment Store at <tt>DESTINATION</tt>. Unlike a sidegrade peformed with <tt>oak-upgrade</tt> (see <a href="#a....migration.md">Repository Migration</a>) which includes only the current head state, this translation includes <b>all previous revisions persisted in the Segment Store</b>, therefore retaining the entire history. If <tt>--last</tt> option is present, the tool will start with the most recent revision and will copy at most &lt;REV_COUNT&gt; journal revisions.</p>
+<p>The <tt>segment-copy</tt> command allows the &#x201c;translation&#x201d; of the Segment Store at <tt>SOURCE</tt> from one persistence type (e.g. local TarMK Segment Store) to a different persistence type (e.g. remote Azure or AWS Segment Store), saving the resulted Segment Store at <tt>DESTINATION</tt>. Unlike a sidegrade peformed with <tt>oak-upgrade</tt> (see <a href="#a....migration.md">Repository Migration</a>) which includes only the current head state, this translation includes <b>all previous revisions persisted in the Segment Store</b>, therefore retaining the entire history. If <tt>--last</tt> option is present, the tool will start with the most recent revision and will copy at most &lt;REV_COUNT&gt; journal revisions.</p>
 <p><tt>SOURCE</tt> must be a valid path/uri to an existing Segment Store. <tt>DESTINATION</tt> must be a valid path/uri for the resulting Segment Store.</p>
 <p>The optional <tt>--last [Integer]</tt> argument can be used to control the maximum number of revisions to be copied from the journal (default is 1).</p>
 <p>Both are specified as <tt>PATH | cloud-prefix:URI</tt>. Please refer to the <a href="#remote-segment-stores">Remote Segment Stores</a> section for details on how to correctly specify connection URIs.</p>
@@ -991,7 +998,7 @@ TarMK GC #2: compacting root.
 <pre class="source">java -jar oak-run.jar compact [--force] [--mmap] [--compactor] PATH | cloud-prefix:URI
 </pre></div></div>
 
-<p>The <tt>compact</tt> command performs offline compaction of the local/remote Segment Store at <tt>PATH</tt>/<tt>URI</tt>. <tt>PATH</tt>/<tt>URI</tt> must be a valid path/uri to an existing Segment Store. Currently, Azure Segment Store is the only supported remote Segment Store. Please refer to the <a href="#remote-segment-stores">Remote Segment Stores</a> section for details on how to correctly specify connection URIs.</p>
+<p>The <tt>compact</tt> command performs offline compaction of the local/remote Segment Store at <tt>PATH</tt>/<tt>URI</tt>. <tt>PATH</tt>/<tt>URI</tt> must be a valid path/uri to an existing Segment Store. Currently, Azure Segment Store and AWS Segment Store the supported remote Segment Stores. Please refer to the <a href="#remote-segment-stores">Remote Segment Stores</a> section for details on how to correctly specify connection URIs.</p>
 <p>If the optional <tt>--force [Boolean]</tt> argument is set to <tt>true</tt> the tool ignores a non matching Segment Store version. <i>CAUTION</i>: this will upgrade the Segment Store to the latest version, which is incompatible with older versions. <i>There is no way to downgrade an accidentally upgraded Segment Store</i>.</p>
 <p>The optional <tt>--mmap [Boolean]</tt> argument can be used to control the file access mode. Set to <tt>true</tt> for memory mapped access and <tt>false</tt> for file access. If not specified, memory mapped access is used on 64 bit systems and file access is used on 32 bit systems. On Windows, regular file access is always enforced and this option is ignored.</p>
 <p>The optional <tt>--compactor [String]</tt> argument can be used to pick the compactor type to be used. Valid choices are <i>classic</i> and <i>diff</i>. While the former is slower, it might be more stable, due to lack of optimisations employed by the <i>diff</i> compactor which compacts the checkpoints on top of each other. If not specified, <i>diff</i> compactor is used.</p>

Modified: jackrabbit/site/live/oak/docs/nodestore/segment/records.html
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/oak/docs/nodestore/segment/records.html?rev=1880953&r1=1880952&r2=1880953&view=diff
==============================================================================
--- jackrabbit/site/live/oak/docs/nodestore/segment/records.html (original)
+++ jackrabbit/site/live/oak/docs/nodestore/segment/records.html Tue Aug 18 07:14:21 2020
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.8.1 at 2020-04-22 
+ | Generated by Apache Maven Doxia Site Renderer 1.8.1 at 2020-08-18 
  | Rendered using Apache Maven Fluido Skin 1.6
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20200422" />
+    <meta name="Date-Revision-yyyymmdd" content="20200818" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Jackrabbit Oak &#x2013; Segments and records</title>
     <link rel="stylesheet" href="../../css/apache-maven-fluido-1.6.min.css" />
@@ -155,9 +155,9 @@
 
       <div id="breadcrumbs">
         <ul class="breadcrumb">
-        <li id="publishDate">Last Published: 2020-04-22<span class="divider">|</span>
+        <li id="publishDate">Last Published: 2020-08-18<span class="divider">|</span>
 </li>
-          <li id="projectVersion">Version: 1.27-SNAPSHOT</li>
+          <li id="projectVersion">Version: 1.33-SNAPSHOT</li>
         </ul>
       </div>
       <div class="row-fluid">
@@ -415,7 +415,8 @@
 </ul>
 <p>Maps are stored using the hash array mapped trie (HAMT) data structure. The hash code of each key is split into pieces of 5 bits each and the keys are sorted into 32 (2^5) buckets based on the first 5 bits. If a bucket contains less than 32 entries, then it is stored directly as a list of key-value pairs. Otherwise the keys are split into sub-buckets based on the next 5 bits of their hash codes. When all buckets are stored, the list of top-level bucket references gets stored along with the total number of entries in the map.</p>
 <p>The result is a hierarchically stored immutable map where each element can be accessed in O(log N) time and the size overhead of updating or inserting list elements is also O(log N).</p>
-<p>Map records are also optimized for small changes. In example, if only one element of a previously stored map is modified, and the map is stored again, only a &#x201c;diff&#x201d; of the map is stored. This prevents the full storage of the modified map, which can save a considerable amount of space if the original map was big.</p></div>
+<p>Map records are also optimized for small changes. In example, if only one element of a previously stored map is modified, and the map is stored again, only a &#x201c;diff&#x201d; of the map is stored. This prevents the full storage of the modified map, which can save a considerable amount of space if the original map was big.</p>
+<p><i>Warning: A map record can store up to 2^29 - 1 (i.e. 536.870.911) entries! In order to avoid reaching this number and possibly running into issues from surpassing it, log messages are printed after reaching 400.000.000 entries and writing beyond 500.000.000 entries is not allowed unless the boolean system property <tt>oak.segmentNodeStore.allowWritesOnHugeMapRecord</tt> is set. Finally, the segment store does not allow writing map records with more than 536.000.000 entries.</i></p></div>
 <div class="section">
 <h3><a name="Template_records"></a>Template records</h3>
 <p>A template record stores metadata about nodes that, on average, don&#x2019;t change so often. A template record stores information like the primary type, the mixin types, the property names and the property types of a node. Having this information stored away from the node itself prevents to write them over and over again if they don&#x2019;t change when the node changes.</p>

Modified: jackrabbit/site/live/oak/docs/query/lucene.html
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/oak/docs/query/lucene.html?rev=1880953&r1=1880952&r2=1880953&view=diff
==============================================================================
--- jackrabbit/site/live/oak/docs/query/lucene.html (original)
+++ jackrabbit/site/live/oak/docs/query/lucene.html Tue Aug 18 07:14:21 2020
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.8.1 at 2020-04-22 
+ | Generated by Apache Maven Doxia Site Renderer 1.8.1 at 2020-08-18 
  | Rendered using Apache Maven Fluido Skin 1.6
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20200422" />
+    <meta name="Date-Revision-yyyymmdd" content="20200818" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Jackrabbit Oak &#x2013; Lucene Index</title>
     <link rel="stylesheet" href="../css/apache-maven-fluido-1.6.min.css" />
@@ -155,9 +155,9 @@
 
       <div id="breadcrumbs">
         <ul class="breadcrumb">
-        <li id="publishDate">Last Published: 2020-04-22<span class="divider">|</span>
+        <li id="publishDate">Last Published: 2020-08-18<span class="divider">|</span>
 </li>
-          <li id="projectVersion">Version: 1.27-SNAPSHOT</li>
+          <li id="projectVersion">Version: 1.33-SNAPSHOT</li>
         </ul>
       </div>
       <div class="row-fluid">
@@ -708,6 +708,14 @@
 <dd>Since 1.6.3: if <tt>weight</tt> is set to <tt>0</tt>, then this property is assumed not to reduce the cost. Queries that contain <i>only</i> this condition should not use that index. See <a class="externalLink" href="https://issues.apache.org/jira/browse/OAK-5899">OAK-5899</a> for details.</dd>
 <dd>Since 1.7.11: if <tt>weight</tt> is set to <tt>10</tt>, then the estimated number of unique entries is 10. This means, the cost is reduced by a factor of about 10, for queries that contain this condition. See <a class="externalLink" href="https://issues.apache.org/jira/browse/OAK-6735">OAK-6735</a> for details.</dd>
 <dd>Since 1.10: the default value is now <tt>5</tt>. See <a class="externalLink" href="https://issues.apache.org/jira/browse/OAK-7379">OAK-7379</a> for details.</dd>
+<dt>sync</dt>
+<dd>Since 1.8.0, <a class="externalLink" href="https://issues.apache.org/jira/browse/OAK-6535">OAK-6535</a></dd>
+<dd>Changes to the content are available in the index as soon as they are committed. Requires &#x201c;propertyIndex=true&#x201d;. Relative properties and notNullCheckEnabled are not supported.</dd>
+<dd>See <a class="externalLink" href="http://jackrabbit.apache.org/archive/wiki/JCR/Synchronous-Lucene-Property-Indexes_115513516.html">synchronous Lucene property indexes</a> for details.</dd>
+<dt>unique</dt>
+<dd>Since 1.8.0, <a class="externalLink" href="https://issues.apache.org/jira/browse/OAK-6535">OAK-6535</a></dd>
+<dd>Requires &#x201c;sync=true&#x201d;. Enforces unique property values in the content.</dd>
+<dd>See <a class="externalLink" href="http://jackrabbit.apache.org/archive/wiki/JCR/Synchronous-Lucene-Property-Indexes_115513516.html">synchronous Lucene property indexes</a> for details.</dd>
 </dl>
 <p><a name="property-names"></a><b>Property Names</b></p>
 <p>Property name can be one of following</p>

Modified: jackrabbit/site/live/oak/docs/security/authentication/ldap.html
URL: http://svn.apache.org/viewvc/jackrabbit/site/live/oak/docs/security/authentication/ldap.html?rev=1880953&r1=1880952&r2=1880953&view=diff
==============================================================================
--- jackrabbit/site/live/oak/docs/security/authentication/ldap.html (original)
+++ jackrabbit/site/live/oak/docs/security/authentication/ldap.html Tue Aug 18 07:14:21 2020
@@ -1,13 +1,13 @@
 <!DOCTYPE html>
 <!--
- | Generated by Apache Maven Doxia Site Renderer 1.8.1 at 2020-04-22 
+ | Generated by Apache Maven Doxia Site Renderer 1.8.1 at 2020-08-18 
  | Rendered using Apache Maven Fluido Skin 1.6
 -->
 <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20200422" />
+    <meta name="Date-Revision-yyyymmdd" content="20200818" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Jackrabbit Oak &#x2013; LDAP Integration</title>
     <link rel="stylesheet" href="../../css/apache-maven-fluido-1.6.min.css" />
@@ -155,9 +155,9 @@
 
       <div id="breadcrumbs">
         <ul class="breadcrumb">
-        <li id="publishDate">Last Published: 2020-04-22<span class="divider">|</span>
+        <li id="publishDate">Last Published: 2020-08-18<span class="divider">|</span>
 </li>
-          <li id="projectVersion">Version: 1.27-SNAPSHOT</li>
+          <li id="projectVersion">Version: 1.33-SNAPSHOT</li>
         </ul>
       </div>
       <div class="row-fluid">
@@ -338,114 +338,138 @@
 <thead>
 
 <tr class="a">
-<th> Name                          </th>
-<th> Property                </th>
+<th> Name                               </th>
+<th> Property                                  </th>
 <th> Description                              </th></tr>
 </thead><tbody>
 
 <tr class="b">
-<td> LDAP Provider Name            </td>
-<td> <tt>provider.name</tt>              </td>
+<td> LDAP Provider Name                 </td>
+<td> <tt>provider.name</tt>                           </td>
 <td> Name of this LDAP provider configuration. This is used to reference this provider by the login modules. </td></tr>
 <tr class="a">
-<td> Bind DN                       </td>
-<td> <tt>bind.dn</tt>                    </td>
+<td> Bind DN                            </td>
+<td> <tt>bind.dn</tt>                                 </td>
 <td> DN of the user for authentication. Leave empty for anonymous bind. </td></tr>
 <tr class="b">
-<td> Bind Password                 </td>
-<td> <tt>bind.password</tt>              </td>
+<td> Bind Password                      </td>
+<td> <tt>bind.password</tt>                           </td>
 <td> Password of the user for authentication. </td></tr>
 <tr class="a">
-<td> LDAP Server Hostname          </td>
-<td> <tt>host.name</tt>                  </td>
+<td> LDAP Server Hostname               </td>
+<td> <tt>host.name</tt>                               </td>
 <td> Hostname of the LDAP server              </td></tr>
 <tr class="b">
-<td> Disable certificate checking  </td>
-<td> <tt>host.noCertCheck</tt>           </td>
+<td> Disable certificate checking       </td>
+<td> <tt>host.noCertCheck</tt>                        </td>
 <td> Indicates if server certificate validation should be disabled. </td></tr>
 <tr class="a">
-<td> LDAP Server Port              </td>
-<td> <tt>host.port</tt>                  </td>
+<td> LDAP Server Port                   </td>
+<td> <tt>host.port</tt>                               </td>
 <td> Port of the LDAP server                  </td></tr>
 <tr class="b">
-<td> Use SSL                       </td>
-<td> <tt>host.ssl</tt>                   </td>
+<td> Use SSL                            </td>
+<td> <tt>host.ssl</tt>                                </td>
 <td> Indicates if an SSL (LDAPs) connection should be used. </td></tr>
 <tr class="a">
-<td> Use TLS                       </td>
-<td> <tt>host.tls</tt>                   </td>
+<td> Use TLS                            </td>
+<td> <tt>host.tls</tt>                                </td>
 <td> Indicates if TLS should be started on connections. </td></tr>
 <tr class="b">
-<td> Search Timeout                </td>
-<td> <tt>searchTimeout</tt>              </td>
+<td> Search Timeout                     </td>
+<td> <tt>searchTimeout</tt>                           </td>
 <td> Time in until a search times out (eg: &#x2018;1s&#x2019; or &#x2018;1m 30s&#x2019;). </td></tr>
 <tr class="a">
-<td> Admin pool max active         </td>
-<td> <tt>adminPool.maxActive</tt>        </td>
+<td> Admin pool max active              </td>
+<td> <tt>adminPool.maxActive</tt>                     </td>
 <td> The max active size of the admin connection pool. When non-positive, there is no limit to the number of objects that can be managed by the pool at one time. A value of 0 disables this pool. </td></tr>
 <tr class="b">
-<td> Admin pool lookup on validate </td>
-<td> <tt>adminPool.lookupOnValidate</tt> </td>
+<td> Admin pool lookup on validate      </td>
+<td> <tt>adminPool.lookupOnValidate</tt>              </td>
 <td> Indicates an ROOT DSE lookup is performed to test if the connection is still valid when taking it out of the admin pool. </td></tr>
 <tr class="a">
-<td> User pool max active          </td>
-<td> <tt>userPool.maxActive</tt>         </td>
-<td> The max active size of the user connection pool. When non-positive, there is no limit to the number of objects that can be managed by the pool at one time. A value of 0 disables this pool. </td></tr>
+<td> Admin pool min evictable idle time </td>
+<td> <tt>adminPool.minEvictableIdleTime</tt>          </td>
+<td> The minimum amount of time a connection from the admin pool must be idle before becoming eligible for eviction by the idle object evictor, if running (eg: &#x2018;1m 30s&#x2019;). When non-positive, no connections will be evicted from the pool due to idle time alone. </td></tr>
+<tr class="b">
+<td> Admin pool eviction run interval   </td>
+<td> <tt>adminPool.timeBetweenEvictionRuns</tt>       </td>
+<td> Time interval to sleep between runs of the idle object evictor thread for the admin pool (eg: &#x2018;1m 30s&#x2019;). When non-positive, no idle object evictor thread will be run. </td></tr>
+<tr class="a">
+<td> Admin pool tests per eviction run  </td>
+<td> <tt>adminPool.numTestsPerEvictionRun</tt>        </td>
+<td> The maximum number of objects to be examined during a single eviction run of the admin pool. </td></tr>
 <tr class="b">
-<td> User pool lookup on validate  </td>
-<td> <tt>userPool.lookupOnValidate</tt>  </td>
+<td> User pool max active               </td>
+<td> <tt>userPool.maxActive</tt>                      </td>
+<td> The max active size of the user connection pool. When non-positive, there is no limit to the number of objects that can be managed by the pool at one time. A value of 0 disables this pool. </td></tr>
+<tr class="a">
+<td> User pool lookup on validate       </td>
+<td> <tt>userPool.lookupOnValidate</tt>               </td>
 <td> Indicates an ROOT DSE lookup is performed to test if the connection is still valid when taking it out of the user pool. </td></tr>
+<tr class="b">
+<td> User pool min evictable idle time  </td>
+<td> <tt>userPool.minEvictableIdleTime</tt>           </td>
+<td> The minimum amount of time a connection from the user pool must be idle before becoming eligible for eviction by the idle object evictor, if running (eg: &#x2018;1m 30s&#x2019;). When non-positive, no connections will be evicted from the pool due to idle time alone. </td></tr>
+<tr class="a">
+<td> User pool eviction run interval    </td>
+<td> <tt>userPool.timeBetweenEvictionRuns</tt>        </td>
+<td> Time interval to sleep between runs of the idle object evictor thread for the user pool (eg: &#x2018;1m 30s&#x2019;). When non-positive, no idle object evictor thread will be run. </td></tr>
+<tr class="b">
+<td> User pool tests per eviction run   </td>
+<td> <tt>userPool.numTestsPerEvictionRun</tt>         </td>
+<td> The maximum number of objects to be examined during a single eviction run of the user pool. </td></tr>
 <tr class="a">
-<td> User base DN                  </td>
-<td> <tt>user.baseDN</tt>                </td>
+<td> User base DN                       </td>
+<td> <tt>user.baseDN</tt>                             </td>
 <td> The base DN for user searches. </td></tr>
 <tr class="b">
-<td> User extra filter             </td>
-<td> <tt>user.extraFilter</tt>           </td>
+<td> User extra filter                  </td>
+<td> <tt>user.extraFilter</tt>                        </td>
 <td> Extra LDAP filter to use when searching for users. The final filter is formatted like: <tt>(&amp;(&lt;idAttr&gt;=&lt;userId&gt;)(objectclass=&lt;objectclass&gt;)&lt;extraFilter&gt;)</tt> </td></tr>
 <tr class="a">
-<td> User id attribute             </td>
-<td> <tt>user.idAttribute</tt>           </td>
+<td> User id attribute                  </td>
+<td> <tt>user.idAttribute</tt>                        </td>
 <td> Name of the attribute that contains the user id. </td></tr>
 <tr class="b">
-<td> User DN paths                 </td>
-<td> <tt>user.makeDnPath</tt>            </td>
+<td> User DN paths                      </td>
+<td> <tt>user.makeDnPath</tt>                         </td>
 <td> Controls if the DN should be used for calculating a portion of the intermediate path. </td></tr>
 <tr class="a">
-<td> User object classes           </td>
-<td> <tt>user.objectclass</tt>           </td>
+<td> User object classes                </td>
+<td> <tt>user.objectclass</tt>                        </td>
 <td> The list of object classes an user entry must contain. </td></tr>
 <tr class="b">
-<td> Group base DN                 </td>
-<td> <tt>group.baseDN</tt>               </td>
+<td> Group base DN                      </td>
+<td> <tt>group.baseDN</tt>                            </td>
 <td> The base DN for group searches.          </td></tr>
 <tr class="a">
-<td> Group extra filter            </td>
-<td> <tt>group.extraFilter</tt>          </td>
+<td> Group extra filter                 </td>
+<td> <tt>group.extraFilter</tt>                       </td>
 <td> Extra LDAP filter to use when searching for groups. The final filter is formatted like: <tt>(&amp;(&lt;nameAttr&gt;=&lt;groupName&gt;)(objectclass=&lt;objectclass&gt;)&lt;extraFilter&gt;)</tt> </td></tr>
 <tr class="b">
-<td> Group DN paths                </td>
-<td> <tt>group.makeDnPath</tt>           </td>
+<td> Group DN paths                     </td>
+<td> <tt>group.makeDnPath</tt>                        </td>
 <td> Controls if the DN should be used for calculating a portion of the intermediate path. </td></tr>
 <tr class="a">
-<td> Group member attribute        </td>
-<td> <tt>group.memberAttribute</tt>      </td>
+<td> Group member attribute             </td>
+<td> <tt>group.memberAttribute</tt>                   </td>
 <td> Group attribute that contains the member(s) of a group. </td></tr>
 <tr class="b">
-<td> Group name attribute          </td>
-<td> <tt>group.nameAttribute</tt>        </td>
+<td> Group name attribute               </td>
+<td> <tt>group.nameAttribute</tt>                     </td>
 <td> Name of the attribute that contains the group name. </td></tr>
 <tr class="a">
-<td> Group object classes          </td>
-<td> <tt>group.objectclass</tt>          </td>
+<td> Group object classes               </td>
+<td> <tt>group.objectclass</tt>                       </td>
 <td> The list of object classes a group entry must contain. </td></tr>
 <tr class="b">
-<td> Use user id for external ids  </td>
-<td> <tt>useUidForExtId</tt>             </td>
+<td> Use user id for external ids       </td>
+<td> <tt>useUidForExtId</tt>                          </td>
 <td> If enabled, the value of the user id (resp. group name) attribute will be used to create external identifiers. Leave disabled to use the DN instead. </td></tr>
 <tr class="a">
-<td> Custom Attributes             </td>
-<td> <tt>customattributes</tt>           </td>
+<td> Custom Attributes                  </td>
+<td> <tt>customattributes</tt>                        </td>
 <td> Attributes retrieved when looking up LDAP entries. Leave empty to retrieve all attributes. </td></tr>
 <tr class="b">
 <td> </td>