<?xml version="1.0"?>

<document>
  <properties>
    <title>Indexed Disk Cache Configuration</title>
    <author email="ASmuts@apache.org">Aaron Smuts</author>
  </properties>

  <body>
    <section name="Indexed Disk Auxiliary Cache Configuration">

      <p>
        The following properties apply to the Indexed Disk Cache plugin.
      </p>

	  <subsection name="Indexed Disk Configuration Properties">
        <table>
          <tr>
            <th>Property</th>
            <th>Description</th>
            <th>Required</th>
            <th>Default Value</th>
          </tr>
          <tr>
            <td>DiskPath</td>
            <td>
              The directory where the disk cache should write its files.
            </td>
            <td>Y</td>
            <td>n/a</td>
          </tr>
          <tr>
            <td>MaxPurgatorySize</td>
            <td>
              The maximum number of items allowed in the queue of items to 
              be written to disk.
            </td>
            <td>N</td>
            <td>5000</td>
          </tr>
          <tr>
            <td>MaxKeySize</td>
            <td>
              The maximum number of keys that the indexed disk cache can have.  
              Since the keys are stored in memory, you may want to limit
              this number to something reasonable.  The default is a bit small.
            </td>
            <td>N</td>
            <td>5000</td>
          </tr>
          <tr>
            <td>OptimizeAtRemoveCount</td>
            <td>
              At how many removes should the cache try to defragment the
              data file.  Since we recycle empty spots, defragmentation
              is usually not needed.  To prevent the cache from defragmenting
              the data file, you can set this to -1.  This is the default value.
            </td>
            <td>N</td>
            <td>-1</td>
          </tr>
          <tr>
            <td>MaxRecycleBinSize</td>
            <td>
              The maximum number of empty spots the cache will keep
              track of.  The smallest are removed when the maximum size
              is reached.  Keeping track of empty spots on disk allows us 
              to reuse spots, thereby keeping the file from growing unncessarily.
            </td>
            <td>N</td>
            <td>5000</td>
          </tr>                 
        </table>
      </subsection>
      
      <subsection name="Example Configuration">
              <source><![CDATA[
jcs.auxiliary.DC=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheFactory
jcs.auxiliary.DC.attributes=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheAttributes
jcs.auxiliary.DC.attributes.DiskPath=target/test-sandbox/indexed-disk-cache
jcs.auxiliary.DC.attributes.MaxPurgatorySize=10000
jcs.auxiliary.DC.attributes.MaxKeySize=10000
jcs.auxiliary.DC.attributes.OptimizeAtRemoveCount=300000
jcs.auxiliary.DC.attributes.MaxRecycleBinSize=7500
        ]]></source>
      </subsection>
      
	  <subsection name="Indexed Disk Event Queue Configuration">
      
        <table>
          <tr>
            <th>Property</th>
            <th>Description</th>
            <th>Required</th>
            <th>Default Value</th>
          </tr>
          <tr>
            <td>EventQueueType</td>
            <td>
			  This should be either SINGLE or POOLED.  By default the single
			  style pool is used.  The single style pool uses a single thread
			  per event queue.  That thread is killed whenever the queue is inactive
			  for 30 seconds.  Since the disk cache uses an event queue for every region,
			  if you have many regions and they are all active, you will be using many threads.
			  To limit the number of threads, you can configure the disk cache to 
			  use the pooled event queue.  Using more threads than regions will not
			  add any benefit for the indexed disk cache, since only one thread can read or
			  write at a time for a single region.                
            </td>
            <td>N</td>
            <td>SINGLE</td>
          </tr>   
          <tr>
            <td>EventQueuePoolName</td>
            <td>
			  This is the name of the pool to use.  It is required if you
			  choose the POOLED event queue type, otherwise it is ignored.
            </td>
            <td>Y</td>
            <td>n/a</td>
          </tr>                         
        </table>
      </subsection>
      
      <subsection name="Example Configuration Using Thread Pool">
              <source><![CDATA[      
jcs.auxiliary.DC=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheFactory
jcs.auxiliary.DC.attributes=org.apache.jcs.auxiliary.disk.indexed.IndexedDiskCacheAttributes
jcs.auxiliary.DC.attributes.DiskPath=target/test-sandbox/indexed-disk-cache
jcs.auxiliary.DC.attributes.MaxPurgatorySize=10000
jcs.auxiliary.DC.attributes.MaxKeySize=10000
jcs.auxiliary.DC.attributes.OptimizeAtRemoveCount=300000
jcs.auxiliary.DC.attributes.MaxRecycleBinSize=7500      
jcs.auxiliary.DC.attributes.EventQueueType=POOLED
jcs.auxiliary.DC.attributes.EventQueuePoolName=disk_cache_event_queue

# Disk Cache pool
thread_pool.disk_cache_event_queue.boundarySize=50
thread_pool.disk_cache_event_queue.useBoundary=true
thread_pool.disk_cache_event_queue.maximumPoolSize=15
thread_pool.disk_cache_event_queue.minimumPoolSize=1
thread_pool.disk_cache_event_queue.keepAliveTime=3500
thread_pool.disk_cache_event_queue.startUpSize=1   
        ]]></source>
      </subsection>

   
    </section>
  </body>
</document>      