LATEST VERSION: 8.2.6 - CHANGELOG
Pivotal GemFire® v8.2

Configure Data Expiration

Configure Data Expiration

Configure the type of expiration and the expiration action to use.

You do not have to perform these steps in the exact sequence shown.
  1. Set the region's statistics-enabled attribute to true.
    Note: The statistics used for expiration are available directly to the application through the CacheStatistics object returned by the Region and Region.Entry getStatistics methods. The CacheStatistics object also provides a method for resetting the statistics counters.
  2. Set the expiration attributes by expiration type, with the max times and expiration actions. See the region attributes listings for entry-time-to-live, entry-idle-time, region-time-to-live, and region-idle-time in <region-attributes>.
    Note: For partitioned regions, to ensure reliable read behavior, use the time-to-live attributes, not the idle-time attributes. In addition, you cannot use local-destroy or local-invalidate expiration actions in partitioned regions.

    Example:

    // Setting standard expiration on an entry
    <region-attributes statistics-enabled="true"> 
      <entry-idle-time> 
        <expiration-attributes timeout="60" action="local-invalidate"/> 
      </entry-idle-time> 
    </region-attributes> 
  3. Override the region-wide settings for specific entries, if required by your application. To do this:
    1. Program a custom expiration class that implements com.gemstone.gemfire.cache.CustomExpiry. Example:
      // Custom expiration class
      // Use the key for a region entry to set entry-specific expiration timeouts of 
      //   10 seconds for even-numbered keys with a DESTROY action on the expired entries
      //   Leave the default region setting for all odd-numbered keys. 
      public class MyClass implements CustomExpiry, Declarable 
      { 
          private static final ExpirationAttributes CUSTOM_EXPIRY = 
                  new ExpirationAttributes(10, ExpirationAction.DESTROY); 
          public ExpirationAttributes getExpiry(Entry entry) 
          { 
              int key = (Integer)entry.getKey(); 
              return key % 2 == 0 ? CUSTOM_EXPIRY : null; 
          }
      }
    2. Define the class inside the expiration attributes settings for the region. Example:
      <!-- Set default entry idle timeout expiration for the region --> 
      <!-- Pass entries to custom expiry class for expiration overrides -->
      <region-attributes statistics-enabled="true"> 
          <entry-idle-time> 
              <expiration-attributes timeout="60" action="local-invalidate"> 
                  <custom-expiry> 
                      <class-name>com.company.mypackage.MyClass</class-name> 
                  </custom-expiry> 
              </expiration-attributes> 
          </entry-idle-time> 
      </region-attributes>
Note: You can also configure Regions using the gfsh command-line interface, however, you cannot configure custom-expiry using gfsh. See Region Commands.