Class StorageManagerProxy
java.lang.Object
one.microstream.integrations.cdi.types.config.StorageManagerProxy
- All Implemented Interfaces:
AutoCloseable,PersistenceStoring,Persister,ObjectSwizzling,DatabasePart,StorageActivePart,StorageConnection,StorageController,StorageManager
public class StorageManagerProxy extends Object implements StorageManager
For MicroProfile Config, at deployment time, we need to validate if @ConfigProperty is valid by
creating the StorageManager. Since we need to look up the beans for
EmbeddedStorageFoundationCustomizer
and StorageManagerInitializer we need a fully initialised bean Manager which we do not have.
And to avoid the creating of the StorageManager at deployment time, we have this proxy that
delays the creation of the StorageManager until first use.-
Nested Class Summary
Nested classes/interfaces inherited from interface one.microstream.storage.types.StorageConnection
StorageConnection.Default -
Constructor Summary
Constructors Constructor Description StorageManagerProxy(String value) -
Method Summary
Modifier and Type Method Description voidcheckAcceptingTasks()StorageConfigurationconfiguration()Returns theStorageConfigurationused to initialize thisStorageManagerinstance.StorageConnectioncreateConnection()Creates a newStorageConnectioninstance.StorageRawFileStatisticscreateStorageStatistics()Creates aStorageRawFileStatisticsinstance, (obviously) containing raw file statistics about every channel in the storage.Databasedatabase()Returns theDatabaseinstance thisStorageManageris associated with.voidexportChannels(StorageLiveFileProvider fileProvider, boolean performGarbageCollection)Exports the data of all channels in the storage by using the passedStorageLiveFileProviderinstance.
This is basically a simple file copy applied to all files in the storage, however with the guaranteed safety of no other task / access to the storage's files intervening with the ongoing process.StorageEntityTypeExportStatisticsexportTypes(StorageEntityTypeExportFileProvider exportFileProvider, Predicate<? super StorageEntityTypeHandler> isExportType)Exports the entity data of all selected types of all channels into one file per type.
The data will be in the native binary format used internally by the storage.voidimportData(XGettingEnum<ByteBuffer> importData)Imports all data specified by the passed Enum (ordered set) ofByteBufferin order.
The buffers are assumed to be in the native binary format used internally by the storage.
All entities contained in the specified buffers will be imported.voidimportFiles(XGettingEnum<AFile> importFiles)Imports all files specified by the passed Enum (ordered set) ofAFilein order.
The files are assumed to be in the native binary format used internally by the storage.
All entities contained in the specified files will be imported.longinitializationTime()booleanisAcceptingTasks()booleanisActive()Queries whether the part is actually active right now.booleanisRunning()booleanisShuttingDown()booleanisStartingUp()booleanissueCacheCheck(long nanoTimeBudget, StorageEntityCacheEvaluator entityEvaluator)Same asStorageConnection.issueCacheCheck(long), but with using the passedStorageEntityCacheEvaluatorlogic instead of the configured one.booleanissueFileCheck(long nanoTimeBudget)Issues a storage file check to be executed, limited to the time budget in nanoseconds specified by the passednanoTimeBudget.
When the time budget is used up, the checking logic will keep the current progress and continue there at the next opportunity.voidissueFullBackup(StorageLiveFileProvider targetFileProvider, PersistenceTypeDictionaryExporter typeDictionaryExporter)Issues a full backup of the whole storage to be executed.booleanissueGarbageCollection(long nanoTimeBudget)Issues garbage collection to be executed, limited to the time budget in nanoseconds specified by the passednanoTimeBudget.
When the time budget is used up, the garbage collector will keep the current progress and continue there at the next opportunity.longoperationModeTime()PersistenceManager<Binary>persistenceManager()Objectroot()Return the persistent object graph's root object, without specific typing.ObjectsetRoot(Object newRoot)Sets the passed instance as the new root for the persistent object graph.
Note that this will replace the old root instance, potentially resulting in wiping the whole database.booleanshutdown()Issues a command to shut down all active threads managing the storage.StorageManagerstart()"Starts" the storage controlled by thisStorageControllerinstance, with "starting" meaning:
Reading, indexing and potentially caching all the persisted data in the storage. Starting storage managing threads to execute requests like storing, loading and issued utility functions.longstoreRoot()Stores the registered root instance (as returned byStorageManager.root()) by using the default storing logic by callingStorageConnection.createStorer()to create theStorerto be used.
Depending on the storer logic, storing the root instance can cause many other object to be stored, as well.StorageTypeDictionarytypeDictionary()Returns theStorageTypeDictionarythat contains a complete list of types currently known to / handled by the storage represented by thisStorageManagerinstance.PersistenceRootsViewviewRoots()Returns a read-only view on all technical root instance registered in thisStorageManagerinstance.
See the description inPersistenceRootsViewfor details.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitMethods inherited from interface one.microstream.storage.types.StorageConnection
createEagerStorer, createLazyStorer, createStorer, exportChannels, exportTypes, exportTypes, exportTypes, getObject, issueCacheCheck, issueFullBackup, issueFullCacheCheck, issueFullCacheCheck, issueFullFileCheck, issueFullGarbageCollection, store, storeAll, storeAllMethods inherited from interface one.microstream.storage.types.StorageController
close, initializationDuration, isShutdown
-
Constructor Details
-
Method Details
-
configuration
Description copied from interface:StorageManagerReturns theStorageConfigurationused to initialize thisStorageManagerinstance.- Specified by:
configurationin interfaceStorageManager- Returns:
- the used configuration.
-
typeDictionary
Description copied from interface:StorageManagerReturns theStorageTypeDictionarythat contains a complete list of types currently known to / handled by the storage represented by thisStorageManagerinstance. This list grows dynamically as so far unknown types are discovered, analyzed, mapped and added on the fly by a store.- Specified by:
typeDictionaryin interfaceStorageManager- Returns:
- thr current
StorageTypeDictionary.
-
start
Description copied from interface:StorageManager"Starts" the storage controlled by thisStorageControllerinstance, with "starting" meaning:
- Reading, indexing and potentially caching all the persisted data in the storage.
- Starting storage managing threads to execute requests like storing, loading and issued utility functions.
- Specified by:
startin interfaceStorageController- Specified by:
startin interfaceStorageManager- Returns:
- this to allow writing of fluent code.
-
shutdown
public boolean shutdown()Description copied from interface:StorageManagerIssues a command to shut down all active threads managing the storage.- Specified by:
shutdownin interfaceStorageController- Specified by:
shutdownin interfaceStorageManager- Returns:
trueafter a successful shutdown orfalseif an internalInterruptedExceptionhappened.
-
isAcceptingTasks
public boolean isAcceptingTasks()- Specified by:
isAcceptingTasksin interfaceStorageController
-
isRunning
public boolean isRunning()- Specified by:
isRunningin interfaceStorageController
-
isStartingUp
public boolean isStartingUp()- Specified by:
isStartingUpin interfaceStorageController
-
isShuttingDown
public boolean isShuttingDown()- Specified by:
isShuttingDownin interfaceStorageController
-
checkAcceptingTasks
public void checkAcceptingTasks()- Specified by:
checkAcceptingTasksin interfaceStorageController
-
initializationTime
public long initializationTime()- Specified by:
initializationTimein interfaceStorageController
-
operationModeTime
public long operationModeTime()- Specified by:
operationModeTimein interfaceStorageController
-
createConnection
Description copied from interface:StorageManagerCreates a newStorageConnectioninstance. See the type description for details.
Not that while it makes sense on an architectural level to have a connecting mechanism between application logic and storage level, there is currently no need to create additional connections beyond the intrinsic one held inside aStorageManagerinstance. Just use it instead.- Specified by:
createConnectionin interfaceStorageManager- Returns:
- a new
StorageConnectioninstance.
-
root
Description copied from interface:StorageManagerReturn the persistent object graph's root object, without specific typing.If a specifically typed root instance reference is desired, it is preferable to hold a properly typed constant reference to it and let the storage initialization use that instance as the root.
See the following code snippet on how to do that:static final MyAppRoot ROOT = new MyAppRoot(); static final StorageManager STORAGE = EmbeddedStorage.start(ROOT);- Specified by:
rootin interfaceStorageManager- Returns:
- the persistent object graph's root object.
-
setRoot
Description copied from interface:StorageManagerSets the passed instance as the new root for the persistent object graph.
Note that this will replace the old root instance, potentially resulting in wiping the whole database.- Specified by:
setRootin interfaceStorageManager- Parameters:
newRoot- the new root instance to be set.- Returns:
- the passed newRoot to allow fluent usage of this method.
-
storeRoot
public long storeRoot()Description copied from interface:StorageManagerStores the registered root instance (as returned byStorageManager.root()) by using the default storing logic by callingStorageConnection.createStorer()to create theStorerto be used.
Depending on the storer logic, storing the root instance can cause many other object to be stored, as well. For example for the default behavior (as implemented inStorageConnection.createLazyStorer(), all recursively referenced instances that are not yet known to the persistent context (i.e. have an associated objectId registered in the context'sPersistenceObjectRegistry) are stored as well. If the default storing logic is "lazy" and the current root object has been persisted already, this call may not update the whole graph!- Specified by:
storeRootin interfaceStorageManager- Returns:
- the root instance's objectId.
-
viewRoots
Description copied from interface:StorageManagerReturns a read-only view on all technical root instance registered in thisStorageManagerinstance.
See the description inPersistenceRootsViewfor details.- Specified by:
viewRootsin interfaceStorageManager- Returns:
- a new
PersistenceRootsViewinstance allowing to iterate all technical root instances.
-
database
Description copied from interface:StorageManagerReturns theDatabaseinstance thisStorageManageris associated with. See its description for details.- Specified by:
databasein interfaceStorageManager- Returns:
- the associated
Databaseinstance.
-
issueGarbageCollection
public boolean issueGarbageCollection(long nanoTimeBudget)Description copied from interface:StorageConnectionIssues garbage collection to be executed, limited to the time budget in nanoseconds specified by the passednanoTimeBudget.
When the time budget is used up, the garbage collector will keep the current progress and continue there at the next opportunity. The same progress marker is used by the implicit housekeeping, so both mechanisms will continue on the same progress.
If no store has occurred since the last completed garbage sweep, this method will have no effect and return immediately.- Specified by:
issueGarbageCollectionin interfaceStorageConnection- Parameters:
nanoTimeBudget- the time budget in nanoseconds to be used to perform garbage collection.- Returns:
- whether the returned call has completed garbage collection.
- See Also:
StorageConnection.issueFullGarbageCollection()
-
issueFileCheck
public boolean issueFileCheck(long nanoTimeBudget)Description copied from interface:StorageConnectionIssues a storage file check to be executed, limited to the time budget in nanoseconds specified by the passednanoTimeBudget.
When the time budget is used up, the checking logic will keep the current progress and continue there at the next opportunity. The same progress marker is used by the implicit housekeeping, so both mechanisms will continue on the same progress.
If no store has occurred since the last completed check, this method will have no effect and return immediately.- Specified by:
issueFileCheckin interfaceStorageConnection- Parameters:
nanoTimeBudget- the time budget in nanoseconds to be used to perform file checking.- Returns:
- whether the returned call has completed file checking.
-
issueCacheCheck
Description copied from interface:StorageConnectionSame asStorageConnection.issueCacheCheck(long), but with using the passedStorageEntityCacheEvaluatorlogic instead of the configured one.- Specified by:
issueCacheCheckin interfaceStorageConnection- Parameters:
nanoTimeBudget- the time budget in nanoseconds to be used to perform cache checking.entityEvaluator- the entity cache evaluation logic to be used for the call.- Returns:
- whether the used cache size is 0 or became 0 via the performed check.
- See Also:
StorageConnection.issueFullCacheCheck(),StorageConnection.issueFullCacheCheck(StorageEntityCacheEvaluator),StorageConnection.issueCacheCheck(long)
-
issueFullBackup
public void issueFullBackup(StorageLiveFileProvider targetFileProvider, PersistenceTypeDictionaryExporter typeDictionaryExporter)Description copied from interface:StorageConnectionIssues a full backup of the whole storage to be executed. Keep in mind that this could result in a very long running operation, depending on the storage size.
Although the full backup may be a valid solution in some circumstances, the incremental backup should be preferred, since it is by far more efficient.- Specified by:
issueFullBackupin interfaceStorageConnection- Parameters:
targetFileProvider- file provider for backup filestypeDictionaryExporter- custom type dictionary exporter
-
createStorageStatistics
Description copied from interface:StorageConnectionCreates aStorageRawFileStatisticsinstance, (obviously) containing raw file statistics about every channel in the storage.- Specified by:
createStorageStatisticsin interfaceStorageConnection- Returns:
- a
StorageRawFileStatisticsinstance based on the current state.
-
exportChannels
Description copied from interface:StorageConnectionExports the data of all channels in the storage by using the passedStorageLiveFileProviderinstance.
This is basically a simple file copy applied to all files in the storage, however with the guaranteed safety of no other task / access to the storage's files intervening with the ongoing process. This is useful to safely create a complete copy of the storage, e.g. a full backup.- Specified by:
exportChannelsin interfaceStorageConnection- Parameters:
fileProvider- theStorageLiveFileProviderlogic to be used for the export.performGarbageCollection- whether aStorageConnection.issueFullGarbageCollection()shall be issued before performing the export.
-
exportTypes
public StorageEntityTypeExportStatistics exportTypes(StorageEntityTypeExportFileProvider exportFileProvider, Predicate<? super StorageEntityTypeHandler> isExportType)Description copied from interface:StorageConnectionExports the entity data of all selected types of all channels into one file per type.
The data will be in the native binary format used internally by the storage. Converters can be used to transform the data into a different, for example human readable, form like CSV.This is useful to extract the data contained in the storage in a structured way, for example to migrate it into another storage system or to analyze it, like converting it into human readable form.
- Specified by:
exportTypesin interfaceStorageConnection- Parameters:
exportFileProvider- theStorageEntityTypeExportFileProviderlogic to be used.isExportType- aPredicateselecting which type's entity data to be exported.- Returns:
- a
StorageEntityTypeExportStatisticsinformation instance about the completed export. - See Also:
StorageConnection.exportTypes(StorageEntityTypeExportFileProvider)
-
importFiles
Description copied from interface:StorageConnectionImports all files specified by the passed Enum (ordered set) ofAFilein order.
The files are assumed to be in the native binary format used internally by the storage.
All entities contained in the specified files will be imported. If they already exist in the storage (identified by their ObjectId), their current data will be replaced by the imported data.
Note that importing data that is not reachable from any root entity will have no effect and will eventually be deleted by the garbage collector.- Specified by:
importFilesin interfaceStorageConnection- Parameters:
importFiles- the files whose native binary content shall be imported.
-
importData
Description copied from interface:StorageConnectionImports all data specified by the passed Enum (ordered set) ofByteBufferin order.
The buffers are assumed to be in the native binary format used internally by the storage.
All entities contained in the specified buffers will be imported. If they already exist in the storage (identified by their ObjectId), their current data will be replaced by the imported data.
Note that importing data that is not reachable from any root entity will have no effect and will eventually be deleted by the garbage collector.- Specified by:
importDatain interfaceStorageConnection- Parameters:
importData- the files whose native binary content shall be imported.
-
persistenceManager
- Specified by:
persistenceManagerin interfaceStorageConnection- Returns:
- the
PersistenceManagerused by thisStorageConnection.
-
isActive
public boolean isActive()Description copied from interface:StorageActivePartQueries whether the part is actually active right now. This might returntrueeven despite some "running" flag being set tofalsebecause there might be one last loop cycle execution before checking the "running" flag again.- Specified by:
isActivein interfaceStorageActivePart- Returns:
- if the part is actually active right now.
-