only check if settings need to change or mappings need to be checked if the index metadata has actually changed
This commit is contained in:
parent
68f838a488
commit
e06de6b24c
|
@ -21,6 +21,8 @@ package org.elasticsearch.cluster;
|
|||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
import com.google.common.collect.Lists;
|
||||
import org.elasticsearch.cluster.metadata.IndexMetaData;
|
||||
import org.elasticsearch.cluster.metadata.MetaData;
|
||||
import org.elasticsearch.cluster.node.DiscoveryNodes;
|
||||
|
||||
import java.util.List;
|
||||
|
@ -122,6 +124,20 @@ public class ClusterChangedEvent {
|
|||
return state.metaData() != previousState.metaData();
|
||||
}
|
||||
|
||||
public boolean indexMetaDataChanged(IndexMetaData current) {
|
||||
MetaData previousMetaData = previousState.metaData();
|
||||
if (previousMetaData == null) {
|
||||
return true;
|
||||
}
|
||||
IndexMetaData previousIndexMetaData = previousMetaData.index(current.index());
|
||||
// no need to check on version, since disco modules will make sure to use the
|
||||
// same instance if its a version match
|
||||
if (previousIndexMetaData == current) {
|
||||
return false;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
public boolean blocksChanged() {
|
||||
return state.blocks() != previousState.blocks();
|
||||
}
|
||||
|
|
|
@ -304,11 +304,18 @@ public class IndicesClusterStateService extends AbstractLifecycleComponent<Indic
|
|||
}
|
||||
|
||||
private void applySettings(ClusterChangedEvent event) {
|
||||
if (!event.metaDataChanged()) {
|
||||
return;
|
||||
}
|
||||
for (IndexMetaData indexMetaData : event.state().metaData()) {
|
||||
if (!indicesService.hasIndex(indexMetaData.index())) {
|
||||
// we only create / update here
|
||||
continue;
|
||||
}
|
||||
// if the index meta data didn't change, no need check for refreshed settings
|
||||
if (!event.indexMetaDataChanged(indexMetaData)) {
|
||||
continue;
|
||||
}
|
||||
String index = indexMetaData.index();
|
||||
IndexService indexService = indicesService.indexServiceSafe(index);
|
||||
IndexSettingsService indexSettingsService = indexService.injector().getInstance(IndexSettingsService.class);
|
||||
|
@ -324,6 +331,10 @@ public class IndicesClusterStateService extends AbstractLifecycleComponent<Indic
|
|||
// we only create / update here
|
||||
continue;
|
||||
}
|
||||
// if the index meta data didn't change, no need check for refreshed settings
|
||||
if (!event.indexMetaDataChanged(indexMetaData)) {
|
||||
continue;
|
||||
}
|
||||
List<String> typesToRefresh = null;
|
||||
String index = indexMetaData.index();
|
||||
IndexService indexService = indicesService.indexServiceSafe(index);
|
||||
|
|
Loading…
Reference in New Issue