Class FileSettingsService
- All Implemented Interfaces:
Closeable,AutoCloseable,ClusterStateListener,LifecycleComponent,Releasable
The service expects that the operator directory will contain a single JSON file with all the settings that need to be applied to the cluster state. The name of the file is fixed to be settings.json. The operator directory name can be configured by setting the 'path.config.operator_directory' in the node properties.
The FileSettingsService is active always, but enabled only on the current master node. We register
the service as a listener to cluster state changes, so that we can enable the file watcher thread when this
node becomes a master node.
-
Field Summary
FieldsFields inherited from class org.elasticsearch.common.component.AbstractLifecycleComponent
lifecycle -
Constructor Summary
ConstructorsConstructorDescriptionFileSettingsService(ClusterService clusterService, ReservedClusterStateService stateService, Environment environment) Constructs theFileSettingsService -
Method Summary
Modifier and TypeMethodDescriptionprotected booleanfilesExists(Path path) protected booleanfilesIsDirectory(Path path) protected InputStreamfilesNewInputStream(Path path) protected <A extends BasicFileAttributes>
AfilesReadAttributes(Path path, Class<A> clazz) protected PathfilesSetLastModifiedTime(Path path, FileTime time) voidhandleSnapshotRestore(ClusterState clusterState, Metadata.Builder mdBuilder) Used by snapshot restore serviceRestoreServiceto prepare the reserved state of the snapshot for the current cluster.protected voidRead settings and pass them toReservedClusterStateServicefor applicationprotected voidRead settings and pass them toReservedClusterStateServicefor application.protected voidprotected booleanshouldRefreshFileState(ClusterState clusterState) If the file settings metadata version is set to zero, then we have restored from a snapshot and must reprocess the file.Methods inherited from class org.elasticsearch.common.file.MasterNodeFileWatchingService
clusterChanged, doStart, doStopMethods inherited from class org.elasticsearch.common.file.AbstractFileWatchingService
addFileChangedListener, doClose, startWatcher, stopWatcher, watchedFile, watchedFileDir, watcherThread, watchingMethods inherited from class org.elasticsearch.common.component.AbstractLifecycleComponent
addLifecycleListener, close, lifecycleState, start, stopMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface org.elasticsearch.cluster.ClusterStateListener
clusterChanged
-
Field Details
-
SETTINGS_FILE_NAME
- See Also:
-
NAMESPACE
- See Also:
-
OPERATOR_DIRECTORY
- See Also:
-
-
Constructor Details
-
FileSettingsService
public FileSettingsService(ClusterService clusterService, ReservedClusterStateService stateService, Environment environment) Constructs theFileSettingsService- Parameters:
clusterService- so we can register ourselves as a cluster state change listenerstateService- an instance of the immutable cluster state controller, so we can perform the cluster state changesenvironment- we need the environment to pull the location of the config and operator directories
-
-
Method Details
-
handleSnapshotRestore
Used by snapshot restore serviceRestoreServiceto prepare the reserved state of the snapshot for the current cluster.If the current cluster where we are restoring the snapshot into has any operator file based settings, we'll reset the reserved state version to 0.
If there's no file based settings file in this cluster, we'll remove all state reservations for file based settings from the cluster state.
- Parameters:
clusterState- the cluster state before snapshot restoremdBuilder- the current metadata builder for the new cluster state
-
shouldRefreshFileState
If the file settings metadata version is set to zero, then we have restored from a snapshot and must reprocess the file.- Overrides:
shouldRefreshFileStatein classMasterNodeFileWatchingService- Parameters:
clusterState- State of the cluster- Returns:
- true if file settings metadata version is exactly 0, false otherwise.
-
processFileChanges
Read settings and pass them toReservedClusterStateServicefor application- Specified by:
processFileChangesin classAbstractFileWatchingService- Throws:
IOException- if there is an error reading the file itselfExecutionException- if there is an issue while applying the changes from the fileInterruptedException- if the file processing is interrupted by another thread.
-
processFileOnServiceStart
protected void processFileOnServiceStart() throws IOException, ExecutionException, InterruptedExceptionRead settings and pass them toReservedClusterStateServicefor application. Settings will be reprocessed even if the cluster-state version equals that found in the settings file.- Overrides:
processFileOnServiceStartin classAbstractFileWatchingService- Throws:
IOExceptionExecutionExceptionInterruptedException
-
processInitialFileMissing
- Specified by:
processInitialFileMissingin classAbstractFileWatchingService- Throws:
ExecutionExceptionInterruptedException
-
filesExists
- Overrides:
filesExistsin classMasterNodeFileWatchingService
-
filesIsDirectory
- Overrides:
filesIsDirectoryin classMasterNodeFileWatchingService
-
filesReadAttributes
protected <A extends BasicFileAttributes> A filesReadAttributes(Path path, Class<A> clazz) throws IOException - Overrides:
filesReadAttributesin classMasterNodeFileWatchingService- Throws:
IOException
-
filesList
- Overrides:
filesListin classMasterNodeFileWatchingService- Throws:
IOException
-
filesSetLastModifiedTime
- Overrides:
filesSetLastModifiedTimein classMasterNodeFileWatchingService- Throws:
IOException
-
filesNewInputStream
- Overrides:
filesNewInputStreamin classMasterNodeFileWatchingService- Throws:
IOException
-