Package ch.rswk.meta.engine
Class EngineUpdater
java.lang.Object
ch.rswk.meta.engine.EngineUpdater
EngineUpdater executes tasks against two engine instances for importing/exporting and migrating service data. The current instance acts
as the source of data and a new, pristine instance acts as a target for data. After one or more tasks are run without error, all data
directories of the current instance are swapped with the data directories of the new instance.
Custom tasks can be injected by implementing EngineUpdater.UpdateTask
. Built in tasks:
EngineUpdater.CloneTask
- Clones (re-index) all Lucene based data (FileService
,MetaService
,UserService
) of the current instance to the new instance. Useful in case of schema changes or update to a new Lucene versionEngineUpdater.JsonImportTask
- Imports data from a JSON file to the new instance. Can also update or delete data. SeeEngineUpdater.JsonImportTaskConfig
for optionsEngineUpdater.JsonExportTask
- Exports selected data from the current instance to a JSON file. SeeEngineUpdater.JsonExportTaskConfig
for optionsEngineUpdater.EngineImportTask
- Imports selected data from a remote engine to the new instance. SeeEngineUpdater.EngineImportTaskConfig
options
EngineUpdater.MetaUpdater
and EngineUpdater.MetaUserUpdater
instances can be injected to do data/schema migrations.
Important notes:
- Tasks are executed in the order they are provided to
runTasks(String[], Function, List)
- If any of the tasks returns true for
skipIndexReplacement
, the Lucene work directories of the current instance are not replaced with the new ones - Replacement of Lucene work directories takes place, if every task returns false for
skipIndexReplacement
. If none of the tasks writes any Lucene data to the new instance, all data will be lost! - To import data into an existing instance, run
EngineUpdater.CloneTask
followed byEngineUpdater.JsonImportTask
. Or the other way around, if the new data should have precedence
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic class
static class
static class
static final record
static class
static final record
static final record
static class
static final record
static interface
static interface
static final record
static class
static final record
static interface
static class
static final record
-
Field Summary
FieldsModifier and TypeFieldDescriptionprivate final EngineLauncher.EngineConfig
private static final org.slf4j.Logger
private final Set
<EngineUpdater.MetaUpdater> private final Set
<EngineUpdater.UpdateTask> private final Set
<EngineUpdater.MetaUserUpdater> -
Constructor Summary
ConstructorsConstructorDescriptionEngineUpdater
(EngineLauncher.EngineConfig engineConfig, Set<EngineUpdater.MetaUpdater> metaUpdaters, Set<EngineUpdater.UpdateTask> tasks, Set<EngineUpdater.MetaUserUpdater> userUpdaters) -
Method Summary
Modifier and TypeMethodDescriptionprivate static void
replaceIndex
(String indexDir, Path newIndexDir) void
runTasks
(String[] args, Function<EngineUpdater.UpdaterServicesConfigs, EngineUpdater.UpdaterServices> servicesSupplier, List<String> taskIds) private EngineUpdater.UpdaterServices
startUpNewServices
(Path fileIndexDir, Path metaIndexDir, Function<EngineUpdater.UpdaterServicesConfigs, EngineUpdater.UpdaterServices> servicesSupplier, Path userIndexDir) private static EngineUpdater.UpdaterServices
startUpOldServices
(EngineLauncher.EngineConfig config, Function<EngineUpdater.UpdaterServicesConfigs, EngineUpdater.UpdaterServices> servicesSupplier) private void
verifyTaskIds
(List<String> taskIds)
-
Field Details
-
LOG
private static final org.slf4j.Logger LOG -
engineConfig
-
metaUpdaters
-
tasks
-
userUpdaters
-
-
Constructor Details
-
EngineUpdater
@Inject public EngineUpdater(EngineLauncher.EngineConfig engineConfig, Set<EngineUpdater.MetaUpdater> metaUpdaters, Set<EngineUpdater.UpdateTask> tasks, Set<EngineUpdater.MetaUserUpdater> userUpdaters)
-
-
Method Details
-
runTasks
public void runTasks(String[] args, Function<EngineUpdater.UpdaterServicesConfigs, EngineUpdater.UpdaterServices> servicesSupplier, List<String> taskIds) throws Exception- Throws:
Exception
-
verifyTaskIds
-
startUpOldServices
private static EngineUpdater.UpdaterServices startUpOldServices(EngineLauncher.EngineConfig config, Function<EngineUpdater.UpdaterServicesConfigs, EngineUpdater.UpdaterServices> servicesSupplier) -
startUpNewServices
private EngineUpdater.UpdaterServices startUpNewServices(Path fileIndexDir, Path metaIndexDir, Function<EngineUpdater.UpdaterServicesConfigs, EngineUpdater.UpdaterServices> servicesSupplier, Path userIndexDir) -
replaceIndex
- Throws:
IOException
-