blob: ae3cbdbff67c799354f9bd56a95141e807f02bcd [file] [log] [blame]
/*=========================================================================
* Copyright (c) 2002-2014 Pivotal Software, Inc. All Rights Reserved.
* This product is protected by U.S. and international copyright
* and intellectual property laws. Pivotal products are covered by
* more patents listed at http://www.pivotal.io/patents.
*========================================================================
*/
package com.gemstone.gemfire.cache;
/**
* Each enum represents a predefined {@link RegionAttributes} in a {@link Cache}.
* These enum values can be used to create regions using a {@link RegionFactory}
* obtained by calling {@link Cache#createRegionFactory(RegionShortcut)}.
* <p>Another way to use predefined region attributes is in cache.xml by setting
* the refid attribute on a region element or region-attributes element to the
* string of each value.
* @since 6.5
* @author darrel
*/
public enum RegionShortcut {
/**
* A PARTITION has local state that is partitioned across each peer member
* that created the region.
* The actual RegionAttributes for a PARTITION region set the {@link DataPolicy} to {@link DataPolicy#PARTITION}.
*/
PARTITION,
/**
* A PARTITION_REDUNDANT has local state that is partitioned across each peer member
* that created the region.
* In addition an extra copy of the data is kept in memory.
* The actual RegionAttributes for a PARTITION_REDUNDANT region set the {@link DataPolicy} to {@link DataPolicy#PARTITION} and the redundant-copies to 1.
*/
PARTITION_REDUNDANT,
/**
* A PARTITION_PERSISTENT has local state that is partitioned across each peer member
* that created the region.
* In addition its state is written to disk and recovered from disk when the region
* is created.
* The actual RegionAttributes for a PARTITION_PERSISTENT region set the {@link DataPolicy} to {@link DataPolicy#PERSISTENT_PARTITION}.
*/
PARTITION_PERSISTENT,
/**
* A PARTITION_REDUNDANT_PERSISTENT has local state that is partitioned across each peer member
* that created the region.
* In addition its state is written to disk and recovered from disk when the region
* is created.
* In addition an extra copy of the data is kept in memory.
* The actual RegionAttributes for a PARTITION_REDUNDANT_PERSISTENT region set the {@link DataPolicy} to {@link DataPolicy#PERSISTENT_PARTITION} and the redundant-copies to 1.
*/
PARTITION_REDUNDANT_PERSISTENT,
/**
* A PARTITION_OVERFLOW has local state that is partitioned across each peer member
* that created the region.
* It will also move the values of entries to disk once it detects that the
* java vm is running low of memory.
* The actual RegionAttributes for a PARTITION_OVERFLOW region set the {@link DataPolicy} to {@link DataPolicy#PARTITION}.
* and {@link EvictionAttributes} are set to {@link EvictionAlgorithm#LRU_HEAP}
* with {@link EvictionAction#OVERFLOW_TO_DISK}.
*/
PARTITION_OVERFLOW,
/**
* A PARTITION_REDUNDANT_OVERFLOW has local state that is partitioned across each peer member
* that created the region.
* In addition an extra copy of the data is kept in memory.
* It will also move the values of entries to disk once it detects that the
* java vm is running low of memory.
* The actual RegionAttributes for a PARTITION_REDUNDANT_OVERFLOW region set the {@link DataPolicy} to {@link DataPolicy#PARTITION}, the redundant-copies to 1,
* and {@link EvictionAttributes} are set to {@link EvictionAlgorithm#LRU_HEAP}
* with {@link EvictionAction#OVERFLOW_TO_DISK}.
*/
PARTITION_REDUNDANT_OVERFLOW,
/**
* A PARTITION_PERSISTENT_OVERFLOW has local state that is partitioned across each peer member
* that created the region.
* In addition its state is written to disk and recovered from disk when the region
* is created.
* It will also remove the values of entries from memory once it detects that the
* java vm is running low of memory.
* The actual RegionAttributes for a PARTITION_PERSISTENT_OVERFLOW region set the {@link DataPolicy} to {@link DataPolicy#PERSISTENT_PARTITION}
* and {@link EvictionAttributes} are set to {@link EvictionAlgorithm#LRU_HEAP}
* with {@link EvictionAction#OVERFLOW_TO_DISK}.
*/
PARTITION_PERSISTENT_OVERFLOW,
/**
* A PARTITION_REDUNDANT_PERSISTENT_OVERFLOW has local state that is partitioned across each peer member
* that created the region.
* In addition its state is written to disk and recovered from disk when the region
* is created.
* In addition an extra copy of the data is kept in memory.
* It will also remove the values of entries from memory once it detects that the
* java vm is running low of memory.
* The actual RegionAttributes for a PARTITION_REDUNDANT_PERSISTENT_OVERFLOW region set the {@link DataPolicy} to {@link DataPolicy#PERSISTENT_PARTITION}, the redundant-copies to 1,
* and {@link EvictionAttributes} are set to {@link EvictionAlgorithm#LRU_HEAP}
* with {@link EvictionAction#OVERFLOW_TO_DISK}.
*/
PARTITION_REDUNDANT_PERSISTENT_OVERFLOW,
/**
* A PARTITION_HEAP_LRU has local state that is partitioned across each peer member
* that created the region.
* It will also destroy entries once it detects that the java vm is running low
* of memory.
* The actual RegionAttributes for a PARTITION_HEAP_LRU region set the {@link DataPolicy} to {@link DataPolicy#PARTITION}
* and {@link EvictionAttributes} are set to {@link EvictionAlgorithm#LRU_HEAP}
* with {@link EvictionAction#LOCAL_DESTROY}.
*/
PARTITION_HEAP_LRU,
/**
* A PARTITION_REDUNDANT_HEAP_LRU has local state that is partitioned across each peer member
* that created the region.
* In addition an extra copy of the data is kept in memory.
* It will also destroy entries once it detects that the java vm is running low
* of memory.
* The actual RegionAttributes for a PARTITION_REDUNDANT_HEAP_LRU region set the {@link DataPolicy} to {@link DataPolicy#PARTITION}, the redundant-copies to 1,
* and {@link EvictionAttributes} are set to {@link EvictionAlgorithm#LRU_HEAP}
* with {@link EvictionAction#LOCAL_DESTROY}.
*/
PARTITION_REDUNDANT_HEAP_LRU,
/**
* A REPLICATE has local state that is kept in sync with all other replicate
* regions that exist in its peers.
* The actual RegionAttributes for a REPLICATE region set the {@link DataPolicy} to {@link DataPolicy#REPLICATE} and {@link Scope} to {@link Scope#DISTRIBUTED_ACK}.
*/
REPLICATE,
/**
* A REPLICATE_PERSISTENT has local state that is kept in sync with all other replicate
* regions that exist in its peers.
* In addition its state is written to disk and recovered from disk when the region
* is created.
* The actual RegionAttributes for a REPLICATE_PERSISTENT region set the {@link DataPolicy} to {@link DataPolicy#PERSISTENT_REPLICATE} and {@link Scope} to {@link Scope#DISTRIBUTED_ACK}.
*/
REPLICATE_PERSISTENT,
/**
* A REPLICATE_OVERFLOW has local state that is kept in sync with all other replicate
* regions that exist in its peers.
* The actual RegionAttributes for a REPLICATE_OVERFLOW region set the {@link DataPolicy}
* to {@link DataPolicy#REPLICATE}, the {@link Scope} to {@link Scope#DISTRIBUTED_ACK}
* and {@link EvictionAttributes} are set to {@link EvictionAlgorithm#LRU_HEAP}
* with {@link EvictionAction#OVERFLOW_TO_DISK}.
*/
REPLICATE_OVERFLOW,
/**
* A REPLICATE_PERSISTENT_OVERFLOW has local state that is kept in sync with all other replicate
* regions that exist in its peers.
* In addition its state is written to disk and recovered from disk when the region
* is created.
* It will also remove the values of entries from memory once it detects that the
* java vm is running low of memory.
* The actual RegionAttributes for a REPLICATE_PERSISTENT_OVERFLOW region set the {@link DataPolicy}
* to {@link DataPolicy#PERSISTENT_REPLICATE}, the {@link Scope} to {@link Scope#DISTRIBUTED_ACK},
* and {@link EvictionAttributes} are set to {@link EvictionAlgorithm#LRU_HEAP}
* with {@link EvictionAction#OVERFLOW_TO_DISK}.
*/
REPLICATE_PERSISTENT_OVERFLOW,
/**
* A REPLICATE_HEAP_LRU has local state that is kept in sync with all other replicate
* regions that exist in its peers.
* It will also destroy entries once it detects that the java vm is running low
* of memory.
* The actual RegionAttributes for a REPLICATE_HEAP_LRU region set the {@link DataPolicy} to {@link DataPolicy#PRELOADED}, the {@link Scope} to {@link Scope#DISTRIBUTED_ACK},
* {@link SubscriptionAttributes} to {@link InterestPolicy#ALL},
* and {@link EvictionAttributes} are set to {@link EvictionAlgorithm#LRU_HEAP}
* with {@link EvictionAction#LOCAL_DESTROY}.
*/
REPLICATE_HEAP_LRU,
/**
* A LOCAL region only has local state and never sends operations to others.
* The actual RegionAttributes for a LOCAL region set the {@link DataPolicy} to {@link DataPolicy#NORMAL}.
*/
LOCAL,
/**
* A LOCAL_PERSISTENT region only has local state and never sends operations to others
* but it does write its state to disk and can recover that state when the region
* is created.
* The actual RegionAttributes for a LOCAL_PERSISTENT region set the {@link DataPolicy} to {@link DataPolicy#PERSISTENT_REPLICATE}.
*/
LOCAL_PERSISTENT,
/**
* A LOCAL_HEAP_LRU region only has local state and never sends operations to others.
* It will also destroy entries once it detects that the java vm is running low
* of memory.
* The actual RegionAttributes for a LOCAL_HEAP_LRU region set the {@link DataPolicy} to {@link DataPolicy#NORMAL} and {@link EvictionAttributes} are set to {@link EvictionAlgorithm#LRU_HEAP}
* with {@link EvictionAction#LOCAL_DESTROY}.
*/
LOCAL_HEAP_LRU,
/**
* A LOCAL_OVERFLOW region only has local state and never sends operations to others.
* It will also move the values of entries to disk once it detects that the
* java vm is running low of memory.
* The actual RegionAttributes for a LOCAL_OVERFLOW region set the {@link DataPolicy} to {@link DataPolicy#NORMAL} and {@link EvictionAttributes} are set to {@link EvictionAlgorithm#LRU_HEAP}
* with {@link EvictionAction#OVERFLOW_TO_DISK}.
*/
LOCAL_OVERFLOW,
/**
* A LOCAL_PERSISTENT_OVERFLOW region only has local state and never sends operations to others
* but it does write its state to disk and can recover that state when the region
* is created.
* It will also remove the values of entries from memory once it detects that the
* java vm is running low of memory.
* The actual RegionAttributes for a LOCAL_PERSISTENT_OVERFLOW region set the {@link DataPolicy} to {@link DataPolicy#PERSISTENT_REPLICATE} and {@link EvictionAttributes} are set to {@link EvictionAlgorithm#LRU_HEAP}
* with {@link EvictionAction#OVERFLOW_TO_DISK}.
*/
LOCAL_PERSISTENT_OVERFLOW,
/**
* A PARTITION_PROXY has no local state and forwards all operations to a PARTITION
* or a PARTITION_PERSISTENT that exists in its peers.
* The actual RegionAttributes for a PARTITION_PROXY region set the {@link DataPolicy} to {@link DataPolicy#PARTITION} and the local-max-memory to 0.
*/
PARTITION_PROXY,
/**
* A PARTITION_PROXY_REDUNDANT has no local state and forwards all operations to a PARTITION_REDUNDANT
* or a PARTITION_REDUNDANT_PERSISTENT that exists in its peers.
* The actual RegionAttributes for a PARTITION_PROXY_REDUNDANT region set the {@link DataPolicy} to {@link DataPolicy#PARTITION}, the local-max-memory to 0,
* and the redundant-copies to 1.
*/
PARTITION_PROXY_REDUNDANT,
/**
* A REPLICATE_PROXY has no local state and forwards all operations (except queries) to a REPLICATE
* or a REPLICATE_PERSISTENT that exists in its peers.
* Queries will be executed on this PROXY region.
* The actual RegionAttributes for a REPLICATE_PROXY region set the {@link DataPolicy} to {@link DataPolicy#EMPTY} and {@link Scope} to {@link Scope#DISTRIBUTED_ACK}.
*/
REPLICATE_PROXY,
/**
* A PARTITION_HDFS has local state that is partitioned across each peer member
* that created the region.
* In addition its state is written to HDFS.
* The random access to the data in HDFS is also enabled.
* The actual RegionAttributes for a PARTITION_HDFS region set the {@link DataPolicy} to {@link DataPolicy#HDFS_PARTITION}.
* The HDFS event queue's property random-access is set to true.
* The {@link EvictionAttributes} are set to {@link EvictionAlgorithm#LRU_HEAP}
* with {@link EvictionAction#OVERFLOW_TO_DISK}.
*/
PARTITION_HDFS,
/**
* A PARTITION_REDUNDANT_HDFS has local state that is partitioned across each peer member
* that created the region.
* In addition its state is written to HDFS and recovered from HDFS when the region is
* created. The random access to the data in HDFS is also enabled.
* In addition an extra copy of the data is kept in memory.
* The actual RegionAttributes for a PARTITION_REDUNDANT_HDFS region set the {@link DataPolicy} to {@link DataPolicy#HDFS_PARTITION}
* and the redundant-copies to 1. The HDFS event queue's property random-access is set to true.
* The {@link EvictionAttributes} are set to {@link EvictionAlgorithm#LRU_HEAP}
* with {@link EvictionAction#OVERFLOW_TO_DISK}.
*/
PARTITION_REDUNDANT_HDFS,
/**
* A PARTITION_WRITEONLY_HDFS_STORE has local state that is partitioned across each peer member
* that created the region.
* In addition its state is written to HDFS and recovered from HDFS when the region is
* created. The random access to the data in HDFS is disabled.
* The actual RegionAttributes for a PARTITION_WRITEONLY_HDFS_STORE region set the {@link DataPolicy} to {@link DataPolicy#HDFS_PARTITION}.
* The HDFS event queue's property write only is set as true.
* The {@link EvictionAttributes} are set to {@link EvictionAlgorithm#LRU_HEAP}
* with {@link EvictionAction#OVERFLOW_TO_DISK}.
*/
PARTITION_WRITEONLY_HDFS_STORE,
/**
* A PARTITION_REDUNDANT_WRITEONLY_HDFS_STORE has local state that is partitioned across each peer member
* that created the region.
* In addition its state is written to HDFS and recovered from HDFS when the region is
* created. The random access to the data in HDFS is disabled.
* In addition an extra copy of the data is kept in memory.
* The actual RegionAttributes for a PARTITION_REDUNDANT_WRITEONLY_HDFS_STORE region set the {@link DataPolicy} to {@link DataPolicy#HDFS_PARTITION}
* and the redundant-copies to 1. The HDFS event queue's property write only is set as true.
* The {@link EvictionAttributes} are set to {@link EvictionAlgorithm#LRU_HEAP}
* with {@link EvictionAction#OVERFLOW_TO_DISK}.
*/
PARTITION_REDUNDANT_WRITEONLY_HDFS_STORE
}