mirror of
https://github.com/Alfresco/SearchServices.git
synced 2026-09-16 18:12:56 +00:00
Merge branch 'master' into feature/search-2318-travis-build
This commit is contained in:
-17
@@ -30,7 +30,6 @@ import static java.util.Arrays.asList;
|
||||
import static java.util.Optional.ofNullable;
|
||||
|
||||
import static org.alfresco.solr.SolrInformationServer.CASCADE_TRACKER_ENABLED;
|
||||
import static org.alfresco.solr.tracker.ActivatableTracker.INDEXING_ENABLED_PERSISTENT_FLAG_ACROSS_RELOADS;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
@@ -47,7 +46,6 @@ import org.alfresco.solr.SolrKeyResourceLoader;
|
||||
import org.alfresco.solr.client.SOLRAPIClient;
|
||||
import org.alfresco.solr.client.SOLRAPIClientFactory;
|
||||
import org.alfresco.solr.tracker.AclTracker;
|
||||
import org.alfresco.solr.tracker.ActivatableTracker;
|
||||
import org.alfresco.solr.tracker.CascadeTracker;
|
||||
import org.alfresco.solr.tracker.CommitTracker;
|
||||
import org.alfresco.solr.tracker.ContentTracker;
|
||||
@@ -290,21 +288,6 @@ public class SolrCoreLoadListener extends AbstractSolrEventListener
|
||||
trackers.add(cascadeTracker);
|
||||
}
|
||||
|
||||
boolean indexingHasBeenEnabled =
|
||||
Boolean.parseBoolean(props.getProperty(INDEXING_ENABLED_PERSISTENT_FLAG_ACROSS_RELOADS, "true"));
|
||||
|
||||
if (indexingHasBeenEnabled)
|
||||
{
|
||||
trackers.stream().map(ActivatableTracker.class::cast).forEach(ActivatableTracker::enable);
|
||||
LOGGER.info("SearchServices Core trackers (i.e. indexing) have been enabled.");
|
||||
}
|
||||
else
|
||||
{
|
||||
trackers.stream().map(ActivatableTracker.class::cast).forEach(ActivatableTracker::disable);
|
||||
LOGGER.info("SearchServices Core trackers (i.e. indexing) have been disabled. That could happen if you " +
|
||||
"previously disabled the indexing on this core and then you reloaded it. If you want to enable indexing " +
|
||||
"please invoke the \"enable-indexing\" admin action.");
|
||||
}
|
||||
|
||||
//The CommitTracker will acquire these locks in order
|
||||
//The ContentTracker will likely have the longest runs so put it first to ensure the MetadataTracker is not paused while
|
||||
|
||||
+4
-26
@@ -44,20 +44,17 @@ import java.util.concurrent.atomic.AtomicBoolean;
|
||||
public abstract class ActivatableTracker extends AbstractTracker
|
||||
{
|
||||
private static final Logger LOGGER = LoggerFactory.getLogger(ActivatableTracker.class);
|
||||
public final static String INDEXING_ENABLED_PERSISTENT_FLAG_ACROSS_RELOADS = "alfresco.trackers.indexingEnabled";
|
||||
|
||||
protected final AtomicBoolean isEnabled;
|
||||
protected static AtomicBoolean isEnabled = new AtomicBoolean(true);
|
||||
|
||||
protected ActivatableTracker(Type type)
|
||||
{
|
||||
super(type);
|
||||
this.isEnabled = new AtomicBoolean(true);
|
||||
}
|
||||
|
||||
protected ActivatableTracker(Properties properties, SOLRAPIClient client, String coreName, InformationServer informationServer, Type type)
|
||||
{
|
||||
super(properties, client, coreName, informationServer, type);
|
||||
isEnabled = new AtomicBoolean(Boolean.parseBoolean(properties.getProperty(INDEXING_ENABLED_PERSISTENT_FLAG_ACROSS_RELOADS, "true")));
|
||||
|
||||
if (isEnabled.get())
|
||||
{
|
||||
@@ -69,32 +66,20 @@ public abstract class ActivatableTracker extends AbstractTracker
|
||||
}
|
||||
}
|
||||
|
||||
protected void setPersistentIndexingStateAcrossReloadsTo(boolean enabled)
|
||||
{
|
||||
infoSrv.getAdminHandler().getCoreContainer().getCoreDescriptor(coreName).setProperty(INDEXING_ENABLED_PERSISTENT_FLAG_ACROSS_RELOADS, String.valueOf(enabled));
|
||||
}
|
||||
|
||||
/**
|
||||
* Disables this tracker instance.
|
||||
*/
|
||||
public final void disable()
|
||||
{
|
||||
clearScheduledMaintenanceWork();
|
||||
|
||||
if (isEnabled.compareAndSet(true, false))
|
||||
{
|
||||
setPersistentIndexingStateAcrossReloadsTo(false);
|
||||
if (state != null && state.isRunning())
|
||||
{
|
||||
LOGGER.info("[{} / {} / {}] {} Tracker has been disabled (the change will be effective at the next tracking cycle) and set in rollback mode because it is running.", coreName, trackerId, state, type);
|
||||
setRollback(true, null);
|
||||
}
|
||||
LOGGER.info("[{} / {} / {}] {} Tracker has been disabled. The change will be effective at the next tracking cycle.", coreName, trackerId, state, type);
|
||||
}
|
||||
else
|
||||
{
|
||||
LOGGER.warn("[{} / {} / {}] {} Tracker cannot be disabled because it is already in that state.", coreName, trackerId, state, type);
|
||||
}
|
||||
LOGGER.info("[{} / {} / {}] {} Tracker has been disabled.", coreName, trackerId, state, type);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -102,15 +87,8 @@ public abstract class ActivatableTracker extends AbstractTracker
|
||||
*/
|
||||
public final void enable()
|
||||
{
|
||||
if (isEnabled.compareAndSet(false, true))
|
||||
{
|
||||
setPersistentIndexingStateAcrossReloadsTo(true);
|
||||
LOGGER.info("[{} / {} / {}] {} Tracker has been enabled. The change will be effective at the next tracking cycle.", coreName, trackerId, state, type);
|
||||
}
|
||||
else
|
||||
{
|
||||
LOGGER.warn("[{} / {} / {}] {} Tracker cannot be enabled because it is already in that state.", coreName, trackerId, state, type);
|
||||
}
|
||||
isEnabled.set(true);
|
||||
LOGGER.info("[{} / {} / {}] {} Tracker has been enabled", coreName, trackerId, state, type);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
-10
@@ -251,11 +251,6 @@ public class AlfrescoCoreAdminHandlerTest
|
||||
protected void doTrack(String iterationId) {
|
||||
// Nothing to be done here, it's a fake implementation.
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setPersistentIndexingStateAcrossReloadsTo(boolean enabled) {
|
||||
// Nothing to be done here, it's a fake implementation.
|
||||
}
|
||||
}
|
||||
|
||||
class TestAclTracker extends AclTracker {
|
||||
@@ -269,11 +264,6 @@ public class AlfrescoCoreAdminHandlerTest
|
||||
protected void doTrack(String iterationId) {
|
||||
// Nothing to be done here, it's a fake implementation.
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setPersistentIndexingStateAcrossReloadsTo(boolean enabled) {
|
||||
// Nothing to be done here, it's a fake implementation.
|
||||
}
|
||||
}
|
||||
|
||||
admin = new AlfrescoCoreAdminHandler() {
|
||||
|
||||
+2
-4
@@ -55,10 +55,6 @@ public class ActivatableTrackerTest
|
||||
// Nothing to be done here, it's a fake implementation.
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setPersistentIndexingStateAcrossReloadsTo(boolean enabled) {
|
||||
// Nothing to be done here, it's a fake implementation.
|
||||
}
|
||||
|
||||
@Override
|
||||
public void maintenance() {
|
||||
@@ -90,6 +86,8 @@ public class ActivatableTrackerTest
|
||||
state = new TrackerState();
|
||||
state.setRunning(false);
|
||||
tracker = spy(new TestActivatableTracker(new Properties(), state));
|
||||
tracker.enable();
|
||||
assertTrue(tracker.isEnabled());
|
||||
assertFalse(tracker.state.isRunning());
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user