Package org.alfresco.solr.tracker
Class AclTracker
- java.lang.Object
-
- org.alfresco.solr.tracker.AbstractTracker
-
- org.alfresco.solr.tracker.ActivatableTracker
-
- org.alfresco.solr.tracker.AclTracker
-
- All Implemented Interfaces:
Tracker
public class AclTracker extends ActivatableTracker
Multithreaded ACLTrackerimplementation.- Author:
- Matt Ward
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface org.alfresco.solr.tracker.Tracker
Tracker.Type
-
-
Field Summary
Fields Modifier and Type Field Description protected static longINITIAL_MAX_ACL_CHANGE_SET_IDprotected static org.slf4j.LoggerLOGGER-
Fields inherited from class org.alfresco.solr.tracker.ActivatableTracker
isEnabled
-
Fields inherited from class org.alfresco.solr.tracker.AbstractTracker
client, coreName, props, rollback, rollbackCausedBy, shardCount, shardInstance, shardKey, shardProperty, state, trackerId, transformContent, type
-
-
Constructor Summary
Constructors Constructor Description AclTracker(java.util.Properties p, org.alfresco.solr.client.SOLRAPIClient client, java.lang.String coreName, InformationServer informationServer)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidaddAclChangeSetToIndex(java.lang.Long aclChangeSetToIndex)voidaddAclChangeSetToPurge(java.lang.Long aclChangeSetToPurge)voidaddAclChangeSetToReindex(java.lang.Long aclChangeSetToReindex)voidaddAclToIndex(java.lang.Long aclToIndex)voidaddAclToPurge(java.lang.Long aclToPurge)voidaddAclToReindex(java.lang.Long aclToReindex)org.alfresco.solr.AclReportcheckAcl(java.lang.Long aclid)org.alfresco.solr.tracker.IndexHealthReportcheckIndex(java.lang.Long toAclTx, java.lang.Long fromTime, java.lang.Long toTime)protected voidcheckRepoAndIndexConsistency(org.alfresco.solr.TrackerState state)Checks the first and last TX timeprotected voidclearScheduledMaintenanceWork()Cleans up the scheduled maintenance work collected by this tracker.protected voiddoTrack(java.lang.String iterationId)Subclasses must implement behaviour that completes the following steps, in order: Purge Reindex Index Track repositoryjava.util.List<java.lang.Long>getAclsForDbAclTransaction(java.lang.Long acltxid)protected java.lang.LonggetChangeSetFromCommitTime(org.alfresco.solr.BoundedDeque<org.alfresco.solr.client.AclChangeSet> changeSetsFound, long lastGoodChangeSetCommitTimeInIndex)java.util.concurrent.SemaphoregetRunLock()Trackers implementing this method should decide if the Run Lock is applied globally for every Tracker Thread (static) or locally for each running Threadprotected org.alfresco.solr.client.AclChangeSetsgetSomeAclChangeSets(org.alfresco.solr.BoundedDeque<org.alfresco.solr.client.AclChangeSet> changeSetsFound, java.lang.Long fromCommitTime, long timeStep, int maxResults, long endTime)java.util.concurrent.SemaphoregetWriteLock()Trackers implementing this method should decide if the Write Lock is applied globally for every Tracker Thread (static) or locally for each running ThreadbooleanhasMaintenance()protected voidindexAcl(java.util.List<org.alfresco.solr.client.AclReaders> aclReaderList, boolean overwrite)protected voidindexAclChangeSets()protected voidindexAcls()voidinvalidateState()voidmaintenance()protected voidpurgeAclChangeSets()protected voidpurgeAcls()protected voidreindexAclChangeSets()protected voidreindexAcls()protected voidtrackAclChangeSets()Every ACL Change Set contains a list of ACLs to be indexed.protected voidtrackRepository()-
Methods inherited from class org.alfresco.solr.tracker.ActivatableTracker
disable, enable, isDisabled, isEnabled, logAndClear, track
-
Methods inherited from class org.alfresco.solr.tracker.AbstractTracker
checkNode, getDocRouter, getProps, getRollback, getRollbackCausedBy, getTrackerState, getType, isAlreadyInShutDownMode, setRollback, setShutdown, shutdown
-
-
-
-
Field Detail
-
LOGGER
protected static final org.slf4j.Logger LOGGER
-
INITIAL_MAX_ACL_CHANGE_SET_ID
protected static final long INITIAL_MAX_ACL_CHANGE_SET_ID
- See Also:
- Constant Field Values
-
-
Constructor Detail
-
AclTracker
public AclTracker(java.util.Properties p, org.alfresco.solr.client.SOLRAPIClient client, java.lang.String coreName, InformationServer informationServer)
-
-
Method Detail
-
getWriteLock
public java.util.concurrent.Semaphore getWriteLock()
Description copied from class:AbstractTrackerTrackers 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:
getWriteLockin interfaceTracker- Specified by:
getWriteLockin classAbstractTracker
-
getRunLock
public java.util.concurrent.Semaphore getRunLock()
Description copied from class:AbstractTrackerTrackers implementing this method should decide if the Run Lock is applied globally for every Tracker Thread (static) or locally for each running Thread- Specified by:
getRunLockin classAbstractTracker
-
doTrack
protected void doTrack(java.lang.String iterationId) throws java.lang.ThrowableDescription copied from class:AbstractTrackerSubclasses must implement behaviour that completes the following steps, in order:- Purge
- Reindex
- Index
- Track repository
- Specified by:
doTrackin classAbstractTracker- Parameters:
iterationId- an identifier which is uniquely associated with a given iteration.- Throws:
java.lang.Throwable
-
maintenance
public void maintenance() throws java.lang.Exception- Throws:
java.lang.Exception
-
hasMaintenance
public boolean hasMaintenance()
-
indexAclChangeSets
protected void indexAclChangeSets() throws org.alfresco.httpclient.AuthenticationException, java.io.IOException, org.json.JSONException- Throws:
org.alfresco.httpclient.AuthenticationExceptionjava.io.IOExceptionorg.json.JSONException
-
indexAcls
protected void indexAcls() throws org.alfresco.httpclient.AuthenticationException, java.io.IOException, org.json.JSONException- Throws:
org.alfresco.httpclient.AuthenticationExceptionjava.io.IOExceptionorg.json.JSONException
-
reindexAclChangeSets
protected void reindexAclChangeSets() throws org.alfresco.httpclient.AuthenticationException, java.io.IOException, org.json.JSONException- Throws:
org.alfresco.httpclient.AuthenticationExceptionjava.io.IOExceptionorg.json.JSONException
-
reindexAcls
protected void reindexAcls() throws org.alfresco.httpclient.AuthenticationException, java.io.IOException, org.json.JSONException- Throws:
org.alfresco.httpclient.AuthenticationExceptionjava.io.IOExceptionorg.json.JSONException
-
purgeAclChangeSets
protected void purgeAclChangeSets() throws java.io.IOException, org.json.JSONException- Throws:
java.io.IOExceptionorg.json.JSONException
-
purgeAcls
protected void purgeAcls() throws java.io.IOException, org.json.JSONException- Throws:
java.io.IOExceptionorg.json.JSONException
-
addAclChangeSetToReindex
public void addAclChangeSetToReindex(java.lang.Long aclChangeSetToReindex)
-
addAclChangeSetToIndex
public void addAclChangeSetToIndex(java.lang.Long aclChangeSetToIndex)
-
addAclChangeSetToPurge
public void addAclChangeSetToPurge(java.lang.Long aclChangeSetToPurge)
-
addAclToReindex
public void addAclToReindex(java.lang.Long aclToReindex)
-
addAclToIndex
public void addAclToIndex(java.lang.Long aclToIndex)
-
addAclToPurge
public void addAclToPurge(java.lang.Long aclToPurge)
-
clearScheduledMaintenanceWork
protected void clearScheduledMaintenanceWork()
Description copied from class:ActivatableTrackerCleans up the scheduled maintenance work collected by this tracker.- Overrides:
clearScheduledMaintenanceWorkin classActivatableTracker
-
trackRepository
protected void trackRepository() throws java.io.IOException, org.alfresco.httpclient.AuthenticationException, org.json.JSONException- Throws:
java.io.IOExceptionorg.alfresco.httpclient.AuthenticationExceptionorg.json.JSONException
-
checkRepoAndIndexConsistency
protected void checkRepoAndIndexConsistency(org.alfresco.solr.TrackerState state) throws org.alfresco.httpclient.AuthenticationException, java.io.IOException, org.json.JSONExceptionChecks the first and last TX time- Throws:
org.alfresco.httpclient.AuthenticationExceptionjava.io.IOExceptionorg.json.JSONException
-
getChangeSetFromCommitTime
protected java.lang.Long getChangeSetFromCommitTime(org.alfresco.solr.BoundedDeque<org.alfresco.solr.client.AclChangeSet> changeSetsFound, long lastGoodChangeSetCommitTimeInIndex)- Parameters:
changeSetsFound- BoundedDequelastGoodChangeSetCommitTimeInIndex- long- Returns:
- Long
-
getSomeAclChangeSets
protected org.alfresco.solr.client.AclChangeSets getSomeAclChangeSets(org.alfresco.solr.BoundedDeque<org.alfresco.solr.client.AclChangeSet> changeSetsFound, java.lang.Long fromCommitTime, long timeStep, int maxResults, long endTime) throws org.alfresco.httpclient.AuthenticationException, java.io.IOException, org.json.JSONException- Throws:
org.alfresco.httpclient.AuthenticationExceptionjava.io.IOExceptionorg.json.JSONException
-
indexAcl
protected void indexAcl(java.util.List<org.alfresco.solr.client.AclReaders> aclReaderList, boolean overwrite) throws java.io.IOException- Parameters:
aclReaderList- Listoverwrite- boolean- Throws:
java.io.IOException
-
checkIndex
public org.alfresco.solr.tracker.IndexHealthReport checkIndex(java.lang.Long toAclTx, java.lang.Long fromTime, java.lang.Long toTime) throws org.alfresco.httpclient.AuthenticationException, java.io.IOException, org.json.JSONException- Throws:
org.alfresco.httpclient.AuthenticationExceptionjava.io.IOExceptionorg.json.JSONException
-
getAclsForDbAclTransaction
public java.util.List<java.lang.Long> getAclsForDbAclTransaction(java.lang.Long acltxid)
-
checkAcl
public org.alfresco.solr.AclReport checkAcl(java.lang.Long aclid)
-
trackAclChangeSets
protected void trackAclChangeSets() throws org.alfresco.httpclient.AuthenticationException, java.io.IOException, org.json.JSONExceptionEvery ACL Change Set contains a list of ACLs to be indexed. This method gets ACL Change Sets from Alfresco Repository to be indexed. The indexing is performed in batches of ACL Change Sets and the Tracker Status is updated in batched of ACLs. Tracker Status contains the Commit Time from the latest ACL Change Set indexed, so new operations can be retrieved from Repository starting with that time.- Throws:
org.alfresco.httpclient.AuthenticationExceptionjava.io.IOExceptionorg.json.JSONException
-
invalidateState
public void invalidateState()
- Specified by:
invalidateStatein interfaceTracker- Overrides:
invalidateStatein classAbstractTracker
-
-