Class FDBRecordStore.Builder
- java.lang.Object
-
- com.apple.foundationdb.record.provider.foundationdb.FDBRecordStore.Builder
-
- All Implemented Interfaces:
FDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
- Enclosing class:
- FDBRecordStore
@API(STABLE) public static class FDBRecordStore.Builder extends Object implements FDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
A builder forFDBRecordStore
. Methods for getting a record store from the builder:FDBRecordStoreBase.BaseBuilder.createOrOpen()
: open an existing record store or create it the first time.FDBRecordStoreBase.BaseBuilder.open()
: open an existing record store or throw an exception if it has never been created.FDBRecordStoreBase.BaseBuilder.create()
: create a record store or throw an exception if it has already been created.build()
: return a record store without checking its state in the database. One should almost always callFDBRecordStore.checkVersion(com.apple.foundationdb.record.provider.foundationdb.FDBRecordStoreBase.UserVersionChecker, com.apple.foundationdb.record.provider.foundationdb.FDBRecordStoreBase.StoreExistenceCheck)
before actually using the record store.
FDBRecordStore.newBuilder().setMetaDataProvider(md).setContext(ctx).setSubspace(s).createOrOpen()
-
-
Field Summary
Fields Modifier and Type Field Description protected SubspaceProvider
subspaceProvider
-
Constructor Summary
Constructors Modifier Constructor Description protected
Builder()
protected
Builder(FDBRecordStore store)
protected
Builder(FDBRecordStore.Builder other)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description FDBRecordStore
build()
Build the record store.FDBRecordStore.Builder
copyBuilder()
Make a copy of this builder.void
copyFrom(FDBRecordStore store)
Copy state from a record store.void
copyFrom(FDBRecordStore.Builder other)
Copy state from another store builder.CompletableFuture<FDBRecordStore>
createOrOpenAsync(FDBRecordStoreBase.StoreExistenceCheck existenceCheck)
Opens aFDBRecordStore
instance in the given path with the given meta-data.FDBRecordContext
getContext()
Get the record context (transaction) to use for the record store.int
getFormatVersion()
Get the storage format version for this store.IndexMaintainerRegistry
getIndexMaintainerRegistry()
Get the registry of index maintainers to be used by the record store.IndexMaintenanceFilter
getIndexMaintenanceFilter()
Get theindex filter
to be used by the record store.RecordMetaDataProvider
getMetaDataProvider()
Get the provider for the record store's meta-data.FDBMetaDataStore
getMetaDataStore()
Get theFDBMetaDataStore
to use as the source of meta-data.FDBRecordStoreBase.PipelineSizer
getPipelineSizer()
Get theobject
to be used to determine the depth of pipelines run by the record store.RecordSerializer<Message>
getSerializer()
Get the serializer used to convert records into byte arrays.FDBRecordStoreStateCache
getStoreStateCache()
Get the store state cache to be used by the record store.SubspaceProvider
getSubspaceProvider()
Get the subspace provider.FDBRecordStoreBase.UserVersionChecker
getUserVersionChecker()
Get thefunction
to be used to check the meta-data version of the record store.FDBRecordStore.Builder
setContext(FDBRecordContext context)
Set the record context (transaction) to use for the record store.FDBRecordStore.Builder
setFormatVersion(int formatVersion)
Set the storage format version for this store.FDBRecordStore.Builder
setIndexMaintainerRegistry(IndexMaintainerRegistry indexMaintainerRegistry)
Set the registry of index maintainers to be used by the record store.FDBRecordStore.Builder
setIndexMaintenanceFilter(IndexMaintenanceFilter indexMaintenanceFilter)
Set theindex filter
to be used by the record store.FDBRecordStore.Builder
setKeySpacePath(KeySpacePath keySpacePath)
Sets theKeySpacePath
location of theFDBRecordStore
.FDBRecordStore.Builder
setMetaDataProvider(RecordMetaDataProvider metaDataProvider)
Set the provider for the record store's meta-data.FDBRecordStore.Builder
setMetaDataStore(FDBMetaDataStore metaDataStore)
Set theFDBMetaDataStore
to use as the source of meta-data.FDBRecordStore.Builder
setPipelineSizer(FDBRecordStoreBase.PipelineSizer pipelineSizer)
Set theobject
to be used to determine the depth of pipelines run by the record store.FDBRecordStore.Builder
setSerializer(RecordSerializer<Message> serializer)
Set the serializer used to convert records into byte arrays.FDBRecordStore.Builder
setStoreStateCache(FDBRecordStoreStateCache storeStateCache)
Set the store state cache to be used by the record store.FDBRecordStore.Builder
setSubspace(Subspace subspace)
Set the subspace to use for the record store.FDBRecordStore.Builder
setSubspaceProvider(SubspaceProvider subspaceProvider)
Set the subspace provider from a subspace provider.FDBRecordStore.Builder
setUserVersionChecker(FDBRecordStoreBase.UserVersionChecker userVersionChecker)
Set thefunction
to be used to check the meta-data version of the record store.CompletableFuture<FDBRecordStore>
uncheckedOpenAsync()
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Methods inherited from interface com.apple.foundationdb.record.provider.foundationdb.FDBRecordStoreBase.BaseBuilder
create, createAsync, createOrOpen, createOrOpen, createOrOpenAsync, open, openAsync, uncheckedOpen
-
-
-
-
Field Detail
-
subspaceProvider
@Nullable protected SubspaceProvider subspaceProvider
-
-
Constructor Detail
-
Builder
protected Builder()
-
Builder
protected Builder(FDBRecordStore.Builder other)
-
Builder
protected Builder(FDBRecordStore store)
-
-
Method Detail
-
copyFrom
public void copyFrom(@Nonnull FDBRecordStore.Builder other)
Copy state from another store builder.- Parameters:
other
- the record store builder whose state to take
-
copyFrom
public void copyFrom(@Nonnull FDBRecordStore store)
Copy state from a record store.- Parameters:
store
- the record store whose state to take
-
getSerializer
@Nullable public RecordSerializer<Message> getSerializer()
Description copied from interface:FDBRecordStoreBase.BaseBuilder
Get the serializer used to convert records into byte arrays.- Specified by:
getSerializer
in interfaceFDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
- Returns:
- the serializer to use
-
setSerializer
@Nonnull public FDBRecordStore.Builder setSerializer(@Nonnull RecordSerializer<Message> serializer)
Description copied from interface:FDBRecordStoreBase.BaseBuilder
Set the serializer used to convert records into byte arrays.- Specified by:
setSerializer
in interfaceFDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
- Parameters:
serializer
- the serializer to use- Returns:
- this builder
-
getFormatVersion
public int getFormatVersion()
Description copied from interface:FDBRecordStoreBase.BaseBuilder
Get the storage format version for this store.- Specified by:
getFormatVersion
in interfaceFDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
- Returns:
- the format version to use
-
setFormatVersion
@Nonnull public FDBRecordStore.Builder setFormatVersion(int formatVersion)
Description copied from interface:FDBRecordStoreBase.BaseBuilder
Set the storage format version for this store. Normally, this should be set to the highest format version supported by all code that may access the record store.FDBRecordStoreBase.BaseBuilder.open()
will set the store's format version tomax(max_supported_version, current_version)
. This is to support cases where the target cannot be changed everywhere at once and some instances write the new version before others know that they are licensed to do so. It is still critically important that all instances know how to handle the new version before any instance allows it. When installing a new version of the record layer library that includes a format change, first install everywhere having arranged forFDBRecordStoreBase.BaseBuilder.setFormatVersion(int)
to be called with the old format version. Then, after that install is complete, change to the newer version.- Specified by:
setFormatVersion
in interfaceFDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
- Parameters:
formatVersion
- the format version to use- Returns:
- this builder
-
getMetaDataProvider
@Nullable public RecordMetaDataProvider getMetaDataProvider()
Description copied from interface:FDBRecordStoreBase.BaseBuilder
Get the provider for the record store's meta-data.- Specified by:
getMetaDataProvider
in interfaceFDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
- Returns:
- the meta-data source to use
-
setMetaDataProvider
@Nonnull public FDBRecordStore.Builder setMetaDataProvider(@Nullable RecordMetaDataProvider metaDataProvider)
Description copied from interface:FDBRecordStoreBase.BaseBuilder
Set the provider for the record store's meta-data. IfFDBRecordStoreBase.BaseBuilder.setMetaDataStore(com.apple.foundationdb.record.provider.foundationdb.FDBMetaDataStore)
is also called, the provider will only be used to initialize the meta-data store when it is empty. The record store will be built using the store as its provider.- Specified by:
setMetaDataProvider
in interfaceFDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
- Parameters:
metaDataProvider
- the meta-data source to use- Returns:
- this builder
-
getMetaDataStore
@Nullable public FDBMetaDataStore getMetaDataStore()
Description copied from interface:FDBRecordStoreBase.BaseBuilder
Get theFDBMetaDataStore
to use as the source of meta-data.- Specified by:
getMetaDataStore
in interfaceFDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
- Returns:
- the meta-data store to use
-
setMetaDataStore
@Nonnull public FDBRecordStore.Builder setMetaDataStore(@Nullable FDBMetaDataStore metaDataStore)
Description copied from interface:FDBRecordStoreBase.BaseBuilder
Set theFDBMetaDataStore
to use as the source of meta-data. IfFDBRecordStoreBase.BaseBuilder.setMetaDataProvider(com.apple.foundationdb.record.RecordMetaDataProvider)
is also called, it will be used to seed the store.- Specified by:
setMetaDataStore
in interfaceFDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
- Parameters:
metaDataStore
- the meta-data store to use- Returns:
- this builder
-
getContext
@Nullable public FDBRecordContext getContext()
Description copied from interface:FDBRecordStoreBase.BaseBuilder
Get the record context (transaction) to use for the record store.- Specified by:
getContext
in interfaceFDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
- Returns:
- context the record context / transaction to use
-
setContext
@Nonnull public FDBRecordStore.Builder setContext(@Nullable FDBRecordContext context)
Description copied from interface:FDBRecordStoreBase.BaseBuilder
Set the record context (transaction) to use for the record store.- Specified by:
setContext
in interfaceFDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
- Parameters:
context
- the record context / transaction to use- Returns:
- this builder
-
getSubspaceProvider
@Nullable public SubspaceProvider getSubspaceProvider()
Description copied from interface:FDBRecordStoreBase.BaseBuilder
Get the subspace provider.- Specified by:
getSubspaceProvider
in interfaceFDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
- Returns:
- the subspace provider
-
setSubspaceProvider
@Nonnull public FDBRecordStore.Builder setSubspaceProvider(@Nullable SubspaceProvider subspaceProvider)
Description copied from interface:FDBRecordStoreBase.BaseBuilder
Set the subspace provider from a subspace provider.- Specified by:
setSubspaceProvider
in interfaceFDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
- Parameters:
subspaceProvider
- the subspace provider- Returns:
- this builder
-
setSubspace
@Nonnull @API(UNSTABLE) public FDBRecordStore.Builder setSubspace(@Nullable Subspace subspace)
Description copied from interface:FDBRecordStoreBase.BaseBuilder
Set the subspace to use for the record store. The record store is allowed to use the entire subspace, so it should not overlap any other record store's subspace. It is preferred toFDBRecordStoreBase.BaseBuilder.setKeySpacePath(com.apple.foundationdb.record.provider.foundationdb.keyspace.KeySpacePath)
rather than this because key space path provides more meaningful logs.- Specified by:
setSubspace
in interfaceFDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
- Parameters:
subspace
- the subspace to use- Returns:
- this builder
-
setKeySpacePath
@Nonnull public FDBRecordStore.Builder setKeySpacePath(@Nullable KeySpacePath keySpacePath)
Sets theKeySpacePath
location of theFDBRecordStore
.- Specified by:
setKeySpacePath
in interfaceFDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
- Parameters:
keySpacePath
- the key space path to use- Returns:
- this builder
-
getUserVersionChecker
@Nullable public FDBRecordStoreBase.UserVersionChecker getUserVersionChecker()
Description copied from interface:FDBRecordStoreBase.BaseBuilder
Get thefunction
to be used to check the meta-data version of the record store.- Specified by:
getUserVersionChecker
in interfaceFDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
- Returns:
- the checker function to use
-
setUserVersionChecker
@Nonnull public FDBRecordStore.Builder setUserVersionChecker(@Nullable FDBRecordStoreBase.UserVersionChecker userVersionChecker)
Description copied from interface:FDBRecordStoreBase.BaseBuilder
Set thefunction
to be used to check the meta-data version of the record store.- Specified by:
setUserVersionChecker
in interfaceFDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
- Parameters:
userVersionChecker
- the checker function to use- Returns:
- this builder
-
getIndexMaintainerRegistry
@Nonnull public IndexMaintainerRegistry getIndexMaintainerRegistry()
Description copied from interface:FDBRecordStoreBase.BaseBuilder
Get the registry of index maintainers to be used by the record store.- Specified by:
getIndexMaintainerRegistry
in interfaceFDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
- Returns:
- the index registry to use
-
setIndexMaintainerRegistry
@Nonnull public FDBRecordStore.Builder setIndexMaintainerRegistry(@Nonnull IndexMaintainerRegistry indexMaintainerRegistry)
Description copied from interface:FDBRecordStoreBase.BaseBuilder
Set the registry of index maintainers to be used by the record store.- Specified by:
setIndexMaintainerRegistry
in interfaceFDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
- Parameters:
indexMaintainerRegistry
- the index registry to use- Returns:
- this builder
- See Also:
FDBRecordStore.getIndexMaintainer(com.apple.foundationdb.record.metadata.Index)
,RecordMetaDataBuilder.setIndexMaintainerRegistry(com.apple.foundationdb.record.provider.foundationdb.IndexMaintainerRegistry)
-
getIndexMaintenanceFilter
@Nonnull public IndexMaintenanceFilter getIndexMaintenanceFilter()
Description copied from interface:FDBRecordStoreBase.BaseBuilder
Get theindex filter
to be used by the record store.- Specified by:
getIndexMaintenanceFilter
in interfaceFDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
- Returns:
- the index filter to use
-
setIndexMaintenanceFilter
@Nonnull public FDBRecordStore.Builder setIndexMaintenanceFilter(@Nonnull IndexMaintenanceFilter indexMaintenanceFilter)
Description copied from interface:FDBRecordStoreBase.BaseBuilder
Set theindex filter
to be used by the record store.- Specified by:
setIndexMaintenanceFilter
in interfaceFDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
- Parameters:
indexMaintenanceFilter
- the index filter to use- Returns:
- this builder
-
getPipelineSizer
@Nonnull public FDBRecordStoreBase.PipelineSizer getPipelineSizer()
Description copied from interface:FDBRecordStoreBase.BaseBuilder
Get theobject
to be used to determine the depth of pipelines run by the record store.- Specified by:
getPipelineSizer
in interfaceFDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
- Returns:
- the sizer to use
-
setPipelineSizer
@Nonnull public FDBRecordStore.Builder setPipelineSizer(@Nonnull FDBRecordStoreBase.PipelineSizer pipelineSizer)
Description copied from interface:FDBRecordStoreBase.BaseBuilder
Set theobject
to be used to determine the depth of pipelines run by the record store.- Specified by:
setPipelineSizer
in interfaceFDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
- Parameters:
pipelineSizer
- the sizer to use- Returns:
- this builder
- See Also:
FDBRecordStoreBase.getPipelineSize(com.apple.foundationdb.record.PipelineOperation)
-
getStoreStateCache
@Nullable public FDBRecordStoreStateCache getStoreStateCache()
Description copied from interface:FDBRecordStoreBase.BaseBuilder
Get the store state cache to be used by the record store. If the builder returnsnull
, the produced record store will use the default store state cache provided by theFDBDatabase
when initializing the record store state.- Specified by:
getStoreStateCache
in interfaceFDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
- Returns:
- the store state cached used by this record store of
null
if it uses the database default
-
setStoreStateCache
@Nonnull public FDBRecordStore.Builder setStoreStateCache(@Nullable FDBRecordStoreStateCache storeStateCache)
Description copied from interface:FDBRecordStoreBase.BaseBuilder
Set the store state cache to be used by the record store. Ifnull
is provided or if this method is never called, the produced record store will use the default store state cache provided by theFDBDatabase
.- Specified by:
setStoreStateCache
in interfaceFDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
- Parameters:
storeStateCache
- the store state cache to used by this record store ornull
to specify that this should use the database default- Returns:
- this builder
-
copyBuilder
@Nonnull public FDBRecordStore.Builder copyBuilder()
Description copied from interface:FDBRecordStoreBase.BaseBuilder
Make a copy of this builder. This can be used to share enough of the state to connect to the same record store several times in different transactions.builder = FDBRecordStore.newBuilder().setMetaDataProvider(metadata).setSubspace(subspace) store1 = builder.copyBuilder().setContext(context1).build() store2 = builder.copyBuilder().setContext(context2).build()
- Specified by:
copyBuilder
in interfaceFDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
- Returns:
- a new builder with the same state as this builder
-
build
@Nonnull public FDBRecordStore build()
Description copied from interface:FDBRecordStoreBase.BaseBuilder
Build the record store.- Specified by:
build
in interfaceFDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
- Returns:
- a new record store with the desired state.
-
uncheckedOpenAsync
@Nonnull public CompletableFuture<FDBRecordStore> uncheckedOpenAsync()
Description copied from interface:FDBRecordStoreBase.BaseBuilder
Opens aFDBRecordStore
instance without callingFDBRecordStore.checkVersion(com.apple.foundationdb.record.provider.foundationdb.FDBRecordStoreBase.UserVersionChecker, com.apple.foundationdb.record.provider.foundationdb.FDBRecordStoreBase.StoreExistenceCheck)
.- Specified by:
uncheckedOpenAsync
in interfaceFDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
- Returns:
- a future that will contain a store with the appropriate parameters set when ready
-
createOrOpenAsync
@Nonnull public CompletableFuture<FDBRecordStore> createOrOpenAsync(@Nonnull FDBRecordStoreBase.StoreExistenceCheck existenceCheck)
Description copied from interface:FDBRecordStoreBase.BaseBuilder
Opens aFDBRecordStore
instance in the given path with the given meta-data.- Specified by:
createOrOpenAsync
in interfaceFDBRecordStoreBase.BaseBuilder<Message,FDBRecordStore>
- Parameters:
existenceCheck
- whether the store must already exist- Returns:
- a future that will contain a store with the appropriate parameters set when ready
-
-