mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-06-30 18:15:39 +00:00
- Refix ALF-10665: Caches that use @@VALUE_NOT_FOUND@@ are not really immutable - Add NodeBulkLoader.setCheckNodeConsistency - Use in a transaction to ensure that the node cache views are consistent with the database views. - Increase size of contentDataCache and make it support equals checking - Details: 32162: Read-through cache changes 32163: TransactionalCache changes to support more efficient consistency guarantees - 'allowEqualsCheck' property allows cache to do a full equals check against changed shared cache values - In-transaction option 'setDisableSharedCacheReadForTransaction'. Values are cache in-transaction and written back at the end of the transaction (subject to collision rules) but the first read will not go to the shared cache. - Drop optimistic write-through in read-only transactions; they are equally likely to want to flush stale data. - Add simpler logic for mutable and allowEqualsCheck and make sure all conditions are covered by tests 32164: Cache node entity support TransactionalCache's allowEqualsCheck 32165: Add NodeDAO.setCheckNodeConsistency() method - Allows code to request that node metadata is consistent with whatever view the DB is providing - Incorporate into node concurrency tests without issue - Only one cache is affected (nodesCache) and it is enhanced by having 'allowEqualsCheck' to prevent massive flushing when multiple read transactions are all trying to push data into the shared caches, particularly during (re)indexing operations. - Further reduces the cache invalidation messages required in order to maintain consistency across the cluster 32166: Make Lucene reindex work (trackers and FTS) use enforced node consistency - bulkLoader.setCheckNodeConsistency() incorporated where 'isReadThrough' is on 32167: SOLR tracking uses NodeDAO.setCheckNodeConsistency() during node metadata retrieval - Ensures that any stale node metadata does not find its way into indexed SOLR node metadata 32207: Fix ALF-11644: AVM cleanup jobs run when WCM is not installed - Moved scheduled jobs to installable wcm-bootstrap-context.xml - Also got rid of orphan reaper warnings when running in a cluster 32208: Better hashcode for NodeVersionKey 32209: RECORD ONLY 32210: RECORD ONLY 32212: Proper fix for ALF-10665: Immutable caches do not respond well to null (=> @@VALUE_NOT_FOUND@@) - The following caches were incorrectly classed as 'immutable': propertyValueCache immutableEntityCache rootNodesCache allRootNodesCache authorityCache tagscopeSummaryCache imapMessageCache - The 'immutable' caches are: node.aspectsCache node.propertiesCache node.parentAssocsCache - The following caches support equals checks: node.nodesCache authorityLookupCache 32213: Fixed getNodeRefStatus(): nodesCache caches deleted entries as well. git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@32657 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
151 lines
5.5 KiB
Java
151 lines
5.5 KiB
Java
/*
|
|
* Copyright (C) 2005-2011 Alfresco Software Limited.
|
|
*
|
|
* This file is part of Alfresco
|
|
*
|
|
* Alfresco is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU Lesser General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* Alfresco is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU Lesser General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Lesser General Public License
|
|
* along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
|
|
*/
|
|
package org.alfresco.repo.solr;
|
|
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
import org.alfresco.repo.domain.node.Node;
|
|
import org.alfresco.service.namespace.QName;
|
|
|
|
/**
|
|
* Interface for component to provide tracking data for SOLR.
|
|
*
|
|
* @since 4.0
|
|
*/
|
|
public interface SOLRTrackingComponent
|
|
{
|
|
/**
|
|
* Get the ACL changesets for given range parameters
|
|
*
|
|
* @param minAclChangeSetId minimum ACL changeset ID - (inclusive and optional)
|
|
* @param fromCommitTime minimum ACL commit time - (inclusive and optional)
|
|
* @param maxResults limit the results. 0 or Integer.MAX_VALUE does not limit the results
|
|
* @return list of ACL changesets
|
|
*/
|
|
public List<AclChangeSet> getAclChangeSets(Long minAclChangeSetId, Long fromCommitTime, int maxResults);
|
|
|
|
/**
|
|
* Get the ACLs with paging options for a specific ACL ChangeSet
|
|
*
|
|
* @param aclChangeSetIds the ACL ChangeSet IDs
|
|
* @param minAclId the minimum ACL ID - (inclusive and optional).
|
|
* @param maxResults the maximum number of results (must be greater than zero and less than MAX)
|
|
* @return list of ACLs
|
|
*/
|
|
public List<Acl> getAcls(List<Long> aclChangeSetIds, Long minAclId, int maxResults);
|
|
|
|
/**
|
|
* Get the ACL readers ("authorities who can read this ACL") for a given set of ACL IDs
|
|
*
|
|
* @param aclIds the ACL IDs
|
|
* @return Returns the list of ACL readers (includes original ACL IDs)
|
|
*/
|
|
public List<AclReaders> getAclsReaders(List<Long> aclIds);
|
|
|
|
/**
|
|
* Get the transactions from either minTxnId or fromCommitTime, optionally limited to maxResults
|
|
*
|
|
* @param minTxnId greater than or equal to minTxnId
|
|
* @param fromCommitTime greater than or equal to transaction commit time
|
|
* @param maxResults limit the results. 0 or Integer.MAX_VALUE does not limit the results
|
|
* @return list of transactions
|
|
*/
|
|
public List<Transaction> getTransactions(Long minTxnId, Long fromCommitTime, int maxResults);
|
|
|
|
/**
|
|
* Get the nodes satisfying the constraints in nodeParameters
|
|
*
|
|
* @param nodeParameters set of constraints for which nodes to return
|
|
* @param maxResults limit the results. 0 or Integer.MAX_VALUE does not limit the results
|
|
* @param callback a callback to receive the results
|
|
*/
|
|
public void getNodes(NodeParameters nodeParameters, NodeQueryCallback callback);
|
|
|
|
/**
|
|
* Returns metadata for a set of node ids
|
|
*
|
|
* @param nodeIds a set of nodeIds for which to return node metadata
|
|
* @param maxResults limit the results. 0 or Integer.MAX_VALUE does not limit the results
|
|
* @param callback a callback to receive the results
|
|
*/
|
|
public void getNodesMetadata(NodeMetaDataParameters nodeMetaDataParameters, MetaDataResultsFilter resultFilter, NodeMetaDataQueryCallback callback);
|
|
|
|
/**
|
|
* Returns the Alfresco model given by the name modelName
|
|
*
|
|
* @param modelName the name of the model
|
|
* @return the model plus a checksum
|
|
*/
|
|
public AlfrescoModel getModel(QName modelName);
|
|
|
|
/**
|
|
* Returns a list of diffs representing differences between the current Repository models
|
|
* and those passed in the models parameter.
|
|
*
|
|
* @param models a set of mappings of model names to checksums
|
|
* @return a list of diffs between those in the repository and those passed in the models parameter
|
|
*/
|
|
public List<AlfrescoModelDiff> getModelDiffs(Map<QName, Long> models);
|
|
|
|
/**
|
|
* The interface that will be used to give query results to the calling code.
|
|
*/
|
|
public interface NodeQueryCallback
|
|
{
|
|
/**
|
|
* Handle a node.
|
|
*
|
|
* @param node the node
|
|
* @return Return <tt>true</tt> to continue processing rows or <tt>false</tt> to stop
|
|
*/
|
|
boolean handleNode(Node node);
|
|
}
|
|
|
|
/**
|
|
* The interface that will be used to give query results to the calling code.
|
|
*/
|
|
public interface NodeMetaDataQueryCallback
|
|
{
|
|
/**
|
|
* Handle a node.
|
|
*
|
|
* @param node the node meta data
|
|
* @return Return <tt>true</tt> to continue processing rows or <tt>false</tt> to stop
|
|
*/
|
|
boolean handleNodeMetaData(NodeMetaData nodeMetaData);
|
|
}
|
|
|
|
/**
|
|
* @return
|
|
*/
|
|
boolean isEnabled();
|
|
|
|
/**
|
|
* @param enabled
|
|
*/
|
|
void setEnabled(boolean enabled);
|
|
|
|
/**
|
|
* Get the last transaction timestamp from the repo
|
|
* @return
|
|
*/
|
|
public Long getMaxTxnCommitTime();
|
|
}
|