<?xml version="1.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.
-->

<document>
	<properties>
		<title>Block Disk Cache</title>
		<author email="asmuts@apache.org">Aaron Smuts</author>
	</properties>

	<body>
		<section name="Block Disk Auxiliary Cache">
			<p>
				The Block Disk Cache stores cached values on disk. Like
				the Indexed Disk Cache, the Block Disk Cache keeps the
				keys in memory. The Block Disk Cache stores the values
				in a group of fixed size blocks, whereas the Indexed
				Disk Cache writes items to disk in one chunk.
			</p>
			<p>
				The Block Disk Cache has advantages over the normal
				indexed model for regions where the size of the items
				varies. Since all the blocks are the same size, the
				recycle bin is very simple. It is just a list of block
				numbers. Also, the Block Disk Cache will never need to
				be optimized. Once the maximum number of keys is
				reached, blocks will be reused.
			</p>
			
			<section name="Size limitation">
				<p>
					There are two ways to limit the cache size: using element
					count and element size. When using element count, in disk
					store there will be at most MaxKeySize elements (not disk 
					blocks). When using element size, there will be at most
					KeySize kB of elements stored in the data file. As the Block 
					Disk Cache doesn't need optimization, the data file 
					will be not longer than specified. The limit does not
					cover the key file size. The mode is chosen using DiskLimitType. 
					Allowed values are: COUNT and SIZE.
				</p>
			</section>

			<subsection name="Example cache.ccf">
				<source>
					<![CDATA[
##############################################################
##### DEFAULT REGION  ########################################

jcs.default=blockDiskCache
jcs.default.cacheattributes=org.apache.commons.jcs.engine.CompositeCacheAttributes
jcs.default.cacheattributes.MaxObjects=0
jcs.default.cacheattributes.MemoryCacheName=org.apache.commons.jcs.engine.memory.lru.LRUMemoryCache

##############################################################
##### AUXILIARY CACHES  ######################################

# Block Disk Cache
jcs.auxiliary.blockDiskCache=org.apache.commons.jcs.auxiliary.disk.block.BlockDiskCacheFactory
jcs.auxiliary.blockDiskCache.attributes=org.apache.commons.jcs.auxiliary.disk.block.BlockDiskCacheAttributes
jcs.auxiliary.blockDiskCache.attributes.DiskPath=target/test-sandbox/block-disk-cache-huge
jcs.auxiliary.blockDiskCache.attributes.MaxPurgatorySize=300000
jcs.auxiliary.blockDiskCache.attributes.MaxKeySize=1000000
jcs.auxiliary.blockDiskCache.attributes.blockSizeBytes=500
jcs.auxiliary.blockDiskCache.attributes.EventQueueType=SINGLE
#jcs.auxiliary.blockDiskCache.attributes.EventQueuePoolName=disk_cache_event_queue

##############################################################
################## THREAD POOL CONFIGURATION #################

# Default thread pool config
thread_pool.default.boundarySize=2000
thread_pool.default.maximumPoolSize=150
thread_pool.default.minimumPoolSize=4
thread_pool.default.keepAliveTime=350000
#RUN ABORT WAIT BLOCK DISCARDOLDEST
thread_pool.default.whenBlockedPolicy=RUN
thread_pool.default.startUpSize=4

# Disk Cache pool
thread_pool.disk_cache_event_queue.useBoundary=false
thread_pool.disk_cache_event_queue.minimumPoolSize=2
thread_pool.disk_cache_event_queue.keepAliveTime=3500
thread_pool.disk_cache_event_queue.startUpSize=10
        ]]>
				</source>
			</subsection>
		</section>
	</body>
</document>
