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 lookup 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 void
checkAcceptingTasks()
StorageConfiguration
configuration()
Returns theStorageConfiguration
used to initialize thisStorageManager
instance.StorageConnection
createConnection()
Creates a newStorageConnection
instance.StorageRawFileStatistics
createStorageStatistics()
Creates aStorageRawFileStatistics
instance, (obviously) containing raw file statistics about every channel in the storage.Database
database()
Returns theDatabase
instance thisStorageManager
is associated with.Reference<Object>
defaultRoot()
Deprecated.void
exportChannels(StorageLiveFileProvider fileProvider, boolean performGarbageCollection)
Exports the data of all channels in the storage by using the passedStorageLiveFileProvider
instance.
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.StorageEntityTypeExportStatistics
exportTypes(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.void
importFiles(XGettingEnum<AFile> importFiles)
Imports all files specified by the passed Enum (ordered set) ofAFile
in 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.long
initializationTime()
boolean
isAcceptingTasks()
boolean
isActive()
Queries whether the part is actually active right now.boolean
isRunning()
boolean
isShuttingDown()
boolean
isStartingUp()
boolean
issueCacheCheck(long nanoTimeBudget, StorageEntityCacheEvaluator entityEvaluator)
Same asStorageConnection.issueCacheCheck(long)
, but with using the passedStorageEntityCacheEvaluator
logic instead of the configured one.boolean
issueFileCheck(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.void
issueFullBackup(StorageLiveFileProvider targetFileProvider, PersistenceTypeDictionaryExporter typeDictionaryExporter)
Issues a full backup of the whole storage to be executed.boolean
issueGarbageCollection(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.long
operationModeTime()
PersistenceManager<Binary>
persistenceManager()
Object
root()
Return the persistent object graph's root object, without specific typing.Object
setRoot(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.boolean
shutdown()
Issues a command to shut down all active threads managing the storage.StorageManager
start()
"Starts" the storage controlled by thisStorageController
instance, 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.long
storeRoot()
Stores the registered root instance (as returned byStorageManager.root()
) by using the default storing logic by callingStorageConnection.createStorer()
to create theStorer
to be used.
Depending on the storer logic, storing the root instance can cause many other object to be stored, as well.StorageTypeDictionary
typeDictionary()
Returns theStorageTypeDictionary
that contains a completely list of types currently known to / handled by the storage represented by thisStorageManager
instance.PersistenceRootsView
viewRoots()
Returns a read-only view on all technical root instance registered in thisStorageManager
instance.
See the description inPersistenceRootsView
for details.Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface one.microstream.storage.types.StorageConnection
createEagerStorer, createLazyStorer, createStorer, exportChannels, exportTypes, getObject, issueCacheCheck, issueFullBackup, issueFullCacheCheck, issueFullCacheCheck, issueFullFileCheck, issueFullGarbageCollection, store, storeAll, storeAll
Methods inherited from interface one.microstream.storage.types.StorageController
close, initializationDuration, isShutdown
Methods inherited from interface one.microstream.storage.types.StorageManager
customRoot, databaseName, storeDefaultRoot
-
Constructor Details
-
Method Details
-
configuration
Description copied from interface:StorageManager
Returns theStorageConfiguration
used to initialize thisStorageManager
instance.- Specified by:
configuration
in interfaceStorageManager
- Returns:
- the used configuration.
-
typeDictionary
Description copied from interface:StorageManager
Returns theStorageTypeDictionary
that contains a completely list of types currently known to / handled by the storage represented by thisStorageManager
instance. This list grows dynamically as so far unknown types are discovered, analyzed, mapped and added on the fly by a store.- Specified by:
typeDictionary
in interfaceStorageManager
- Returns:
- thr current
StorageTypeDictionary
.
-
start
Description copied from interface:StorageManager
"Starts" the storage controlled by thisStorageController
instance, 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:
start
in interfaceStorageController
- Specified by:
start
in interfaceStorageManager
- Returns:
- this to allow writing of fluent code.
-
shutdown
public boolean shutdown()Description copied from interface:StorageManager
Issues a command to shut down all active threads managing the storage.- Specified by:
shutdown
in interfaceStorageController
- Specified by:
shutdown
in interfaceStorageManager
- Returns:
true
after a successful shutdown orfalse
if an internalInterruptedException
happened.
-
isAcceptingTasks
public boolean isAcceptingTasks()- Specified by:
isAcceptingTasks
in interfaceStorageController
-
isRunning
public boolean isRunning()- Specified by:
isRunning
in interfaceStorageController
-
isStartingUp
public boolean isStartingUp()- Specified by:
isStartingUp
in interfaceStorageController
-
isShuttingDown
public boolean isShuttingDown()- Specified by:
isShuttingDown
in interfaceStorageController
-
checkAcceptingTasks
public void checkAcceptingTasks()- Specified by:
checkAcceptingTasks
in interfaceStorageController
-
initializationTime
public long initializationTime()- Specified by:
initializationTime
in interfaceStorageController
-
operationModeTime
public long operationModeTime()- Specified by:
operationModeTime
in interfaceStorageController
-
createConnection
Description copied from interface:StorageManager
Creates a newStorageConnection
instance. 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 aStorageManager
instance. Just use it instead.- Specified by:
createConnection
in interfaceStorageManager
- Returns:
- a new
StorageConnection
instance.
-
root
Description copied from interface:StorageManager
Return 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:
root
in interfaceStorageManager
- Returns:
- the persistent object graph's root object.
-
setRoot
Description copied from interface:StorageManager
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.- Specified by:
setRoot
in 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:StorageManager
Stores the registered root instance (as returned byStorageManager.root()
) by using the default storing logic by callingStorageConnection.createStorer()
to create theStorer
to 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.- Specified by:
storeRoot
in interfaceStorageManager
- Returns:
- the root instance's objectId.
-
viewRoots
Description copied from interface:StorageManager
Returns a read-only view on all technical root instance registered in thisStorageManager
instance.
See the description inPersistenceRootsView
for details.- Specified by:
viewRoots
in interfaceStorageManager
- Returns:
- a new
PersistenceRootsView
instance allowing to iterate all technical root instances.
-
defaultRoot
Deprecated.Description copied from interface:StorageManager
This method is deprecated due to simplified root handling and will be removed in a future version.
It is advised to useStorageManager.root()
andStorageManager.setRoot(Object)
instead.- Specified by:
defaultRoot
in interfaceStorageManager
- Returns:
- a mutable
Reference
to the root object.
-
database
Description copied from interface:StorageManager
Returns theDatabase
instance thisStorageManager
is associated with. See its description for details.- Specified by:
database
in interfaceStorageManager
- Returns:
- the associated
Database
instance.
-
issueGarbageCollection
public boolean issueGarbageCollection(long nanoTimeBudget)Description copied from interface:StorageConnection
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. The same progress marker is used by the implicit housekeeping, so both mechanisms will continue on the same progress.
If no store has occured since the last completed garbage sweep, this method will have no effect and return immediately.- Specified by:
issueGarbageCollection
in 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:StorageConnection
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. The same progress marker is used by the implicit housekeeping, so both mechanisms will continue on the same progress.
If no store has occured since the last completed check, this method will have no effect and return immediately.- Specified by:
issueFileCheck
in 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:StorageConnection
Same asStorageConnection.issueCacheCheck(long)
, but with using the passedStorageEntityCacheEvaluator
logic instead of the configured one.- Specified by:
issueCacheCheck
in 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:StorageConnection
Issues 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:
issueFullBackup
in interfaceStorageConnection
- Parameters:
targetFileProvider
- file provider for backup filestypeDictionaryExporter
- custom type dictionary exporter
-
createStorageStatistics
Description copied from interface:StorageConnection
Creates aStorageRawFileStatistics
instance, (obviously) containing raw file statistics about every channel in the storage.- Specified by:
createStorageStatistics
in interfaceStorageConnection
- Returns:
- a
StorageRawFileStatistics
instance based on the current state.
-
exportChannels
Description copied from interface:StorageConnection
Exports the data of all channels in the storage by using the passedStorageLiveFileProvider
instance.
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:
exportChannels
in interfaceStorageConnection
- Parameters:
fileProvider
- theStorageLiveFileProvider
logic 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:StorageConnection
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. 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:
exportTypes
in interfaceStorageConnection
- Parameters:
exportFileProvider
- theStorageEntityTypeExportFileProvider
logic to be used.isExportType
- aPredicate
selecting which type's entity data to be exported.- Returns:
- a
StorageEntityTypeExportStatistics
information instance about the completed export. - See Also:
StorageConnection.exportTypes(StorageEntityTypeExportFileProvider)
-
importFiles
Description copied from interface:StorageConnection
Imports all files specified by the passed Enum (ordered set) ofAFile
in 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:
importFiles
in interfaceStorageConnection
- Parameters:
importFiles
- the files whose native binary content shall be imported.
-
persistenceManager
- Specified by:
persistenceManager
in interfaceStorageConnection
- Returns:
- the
PersistenceManager
used by thisStorageConnection
.
-
isActive
public boolean isActive()Description copied from interface:StorageActivePart
Queries whether the part is actually active right now. This might returntrue
even despite some "running" flag being set tofalse
because there might be one last loop cycle execution before checking the "running" flag again.- Specified by:
isActive
in interfaceStorageActivePart
- Returns:
- if the part is actually active right now.
-