Class AbstractTracker

java.lang.Object
org.alfresco.solr.tracker.AbstractTracker
All Implemented Interfaces:
Tracker
Direct Known Subclasses:
ActivatableTracker, CommitTracker, ModelTracker, ShardStatePublisher

public abstract class AbstractTracker extends Object implements Tracker
Abstract base class that provides common Tracker behaviour.
Author:
Matt Ward
  • Field Details

    • props

      protected Properties props
    • client

      protected org.alfresco.solr.client.SOLRAPIClient client
    • coreName

      protected String coreName
    • state

      protected volatile org.alfresco.solr.TrackerState state
    • shardCount

      protected int shardCount
    • shardInstance

      protected int shardInstance
    • transformContent

      protected boolean transformContent
    • rollback

      protected volatile boolean rollback
    • rollbackCausedBy

      protected Throwable rollbackCausedBy
      When rollback is set, original error is also gathered in order to provide detailed logging.
    • type

      protected final Tracker.Type type
    • trackerId

      protected final String trackerId
    • shardProperty

      protected Optional<org.alfresco.service.namespace.QName> shardProperty
      The property to use for determining the shard. Note that this property is not used by all trackers, it is actually managed by the ShardStatePublisher and MetadataTracker. We put this property here because otherwise we should introduce another supertype layer for those two trackers.
    • shardKey

      protected Optional<String> shardKey
      The string representation of the shard key. Note that this property is not used by all trackers, it is actually managed by the ShardStatePublisher and MetadataTracker. We put this property here because otherwise we should introduce another supertype layer for those two trackers.
  • Constructor Details

    • AbstractTracker

      protected AbstractTracker(Tracker.Type type)
      Default constructor, strictly for testing.
    • AbstractTracker

      protected AbstractTracker(Properties p, org.alfresco.solr.client.SOLRAPIClient client, String coreName, InformationServer informationServer, Tracker.Type type)
  • Method Details

    • doTrack

      protected abstract void doTrack(String iterationId) throws Throwable
      Subclasses must implement behaviour that completes the following steps, in order:
      1. Purge
      2. Reindex
      3. Index
      4. Track repository
      Parameters:
      iterationId - an identifier which is uniquely associated with a given iteration.
      Throws:
      Throwable
    • track

      public void track()
      Template method - subclasses must implement the Tracker-specific indexing by implementing the abstract method doTrack(String).
      Specified by:
      track in interface Tracker
    • getRollback

      public boolean getRollback()
      Specified by:
      getRollback in interface Tracker
    • getRollbackCausedBy

      public Throwable getRollbackCausedBy()
      Specified by:
      getRollbackCausedBy in interface Tracker
    • setRollback

      public void setRollback(boolean rollback, Throwable rollbackCausedBy)
      Specified by:
      setRollback in interface Tracker
    • invalidateState

      public void invalidateState()
      Specified by:
      invalidateState in interface Tracker
    • getTrackerState

      public org.alfresco.solr.TrackerState getTrackerState()
      Specified by:
      getTrackerState in interface Tracker
    • isAlreadyInShutDownMode

      public boolean isAlreadyInShutDownMode()
      Specified by:
      isAlreadyInShutDownMode in interface Tracker
    • setShutdown

      public void setShutdown(boolean shutdown)
      Specified by:
      setShutdown in interface Tracker
    • shutdown

      public void shutdown()
      Specified by:
      shutdown in interface Tracker
    • getWriteLock

      public abstract Semaphore getWriteLock()
      Trackers implementing this method should decide if the Write Lock is applied globally for every Tracker Thread (static) or locally for each running Thread
      Specified by:
      getWriteLock in interface Tracker
    • getRunLock

      public abstract Semaphore getRunLock()
      Trackers implementing this method should decide if the Run Lock is applied globally for every Tracker Thread (static) or locally for each running Thread
    • getProps

      public Properties getProps()
      Specified by:
      getProps in interface Tracker
    • getType

      public Tracker.Type getType()
      Specified by:
      getType in interface Tracker
    • checkNode

      public org.alfresco.solr.NodeReport checkNode(Long dbid)
      Returns information about the Node associated with the given dbid.
      Parameters:
      dbid - the node identifier.
      Returns:
      the Node associated with the given dbid.
    • getDocRouter

      public DocRouter getDocRouter()
      Returns the DocRouter instance in use on this node.
      Returns:
      the DocRouter instance in use on this node.