Merge branch 'master' into feature/search-2318-travis-build

This commit is contained in:
Alex Mukha
2020-07-31 12:10:37 +01:00
4 changed files with 6 additions and 57 deletions
@@ -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
@@ -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
@@ -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() {
@@ -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());
}