org.alfresco.repo.content.cleanup
Class EagerContentStoreCleaner

java.lang.Object
  extended by org.alfresco.repo.transaction.TransactionListenerAdapter
      extended by org.alfresco.repo.content.cleanup.EagerContentStoreCleaner
All Implemented Interfaces:
TransactionListener

public class EagerContentStoreCleaner
extends TransactionListenerAdapter

This component is responsible cleaning up orphaned content.

Clean-up happens at two levels.

Eager cleanup: (since 3.2)

If eager cleanup is activated, then this component listens to all content property change events and recorded for post-transaction processing. All orphaned content is deleted from the registered store(s). Note that any listeners are called as normal; backup or scrubbing procedures should be plugged in as listeners if this is required.

Lazy cleanup:

This is triggered by means of a Quartz job. This is a heavy-weight process that effectively compares the database metadata with the content URLs controlled by the various stores. Once again, the listeners are called appropriately.

How backup policies are affected:

When restoring the system from a backup, the type of restore required is dictated by the cleanup policy being enforced. If eager cleanup is active, the system must
(a) have a listeners configured to backup the deleted content e.g. DeletedContentBackupCleanerListener, or
(b) ensure consistent backups across the database and content stores: backup when the system is not running; use a DB-based content store. This is the recommended route when running with eager cleanup.

Lazy cleanup protects the content for a given period (e.g. 7 days) giving plenty of time for a backup to be taken; this allows hot backup without needing metadata-content consistency to be enforced.


Constructor Summary
EagerContentStoreCleaner()
           
 
Method Summary
 void afterCommit()
          Cleans up all newly-orphaned content
 void afterRollback()
          Invoked after transaction rollback.
 boolean deleteFromStores(java.lang.String contentUrl)
          Delete the content URL from all stores
 void init()
          Initializes the cleaner based on the eagerCleanup flag.
 void registerNewContentUrl(java.lang.String contentUrl)
          Queues orphaned content for post-transaction removal
 boolean registerOrphanedContentUrl(java.lang.String contentUrl)
          Queues orphaned content for post-transaction removal

NB: Any content registered will be deleted if the current transaction commits and if 'eager' cleanup is turned on.

 boolean registerOrphanedContentUrl(java.lang.String contentUrl, boolean force)
          Queues orphaned content for post-transaction removal

NB: Any content registered will be deleted if the current transaction commits and if 'eager' cleanup is turned on.

 void setEagerOrphanCleanup(boolean eagerOrphanCleanup)
           
 void setListeners(java.util.List listeners)
           
 void setStores(java.util.List stores)
           
 
Methods inherited from class org.alfresco.repo.transaction.TransactionListenerAdapter
beforeCommit, beforeCompletion, flush
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

EagerContentStoreCleaner

public EagerContentStoreCleaner()
Method Detail

setEagerOrphanCleanup

public void setEagerOrphanCleanup(boolean eagerOrphanCleanup)
Parameters:
eagerOrphanCleanup - true to enable this component, otherwise false

setStores

public void setStores(java.util.List stores)
Parameters:
stores - the content stores to clean

setListeners

public void setListeners(java.util.List listeners)
Parameters:
listeners - the listeners that can react to deletions

init

public void init()
Initializes the cleaner based on the eagerCleanup flag.


registerNewContentUrl

public void registerNewContentUrl(java.lang.String contentUrl)
Queues orphaned content for post-transaction removal


registerOrphanedContentUrl

public boolean registerOrphanedContentUrl(java.lang.String contentUrl)
Queues orphaned content for post-transaction removal

NB: Any content registered will be deleted if the current transaction commits and if 'eager' cleanup is turned on.

Returns:
Returns true if the content was scheduled for post-transaction deletion. If the return value is true then the calling code must delete the row entry for the content URL provided BEFORE THE TRANSACTION COMMITS!

registerOrphanedContentUrl

public boolean registerOrphanedContentUrl(java.lang.String contentUrl,
                                          boolean force)
Queues orphaned content for post-transaction removal

NB: Any content registered will be deleted if the current transaction commits and if 'eager' cleanup is turned on.

Parameters:
force - true for force the post-commit URL deletion regardless of the setting EagerContentStoreCleaner.setEagerOrphanCleanup(boolean).
Returns:
Returns true if the content was scheduled for post-transaction deletion. If the return value is true then the calling code must delete the row entry for the content URL provided BEFORE THE TRANSACTION COMMITS!

afterCommit

public void afterCommit()
Cleans up all newly-orphaned content

Specified by:
afterCommit in interface TransactionListener
Overrides:
afterCommit in class TransactionListenerAdapter

afterRollback

public void afterRollback()
Description copied from class: TransactionListenerAdapter
Invoked after transaction rollback.

Although all transaction resources are still available, this method should be used only for cleaning up resources after a rollback has occured.

Specified by:
afterRollback in interface TransactionListener
Overrides:
afterRollback in class TransactionListenerAdapter

deleteFromStores

public boolean deleteFromStores(java.lang.String contentUrl)
Delete the content URL from all stores

Parameters:
contentUrl - the URL to delete
Returns:
Returns true if all deletes were successful


Copyright © 2005 - 2010 Alfresco Software, Inc. All Rights Reserved.