Class FDBTypedRecordStore.Builder<M extends Message>
- java.lang.Object
-
- com.apple.foundationdb.record.provider.foundationdb.FDBTypedRecordStore.Builder<M>
-
- Type Parameters:
M
- generated Protobuf class for the record message type
- All Implemented Interfaces:
FDBRecordStoreBase.BaseBuilder<M,FDBTypedRecordStore<M>>
- Enclosing class:
- FDBTypedRecordStore<M extends Message>
public static class FDBTypedRecordStore.Builder<M extends Message> extends Object implements FDBRecordStoreBase.BaseBuilder<M,FDBTypedRecordStore<M>>
A builder forFDBTypedRecordStore
. This is only used when creating both the untyped and typed record stores at the same time. To create a new typed record store from an open record store, useFDBRecordStoreBase.getTypedRecordStore(com.apple.foundationdb.record.provider.common.RecordSerializer<N>)
.- See Also:
FDBTypedRecordStore.newBuilder()
-
-
Constructor Summary
Constructors Modifier Constructor Description protected
Builder()
protected
Builder(FDBTypedRecordStore.Builder<M> other)
protected
Builder(FDBTypedRecordStore<M> store)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description FDBTypedRecordStore<M>
build()
Build the record store.FDBTypedRecordStore.Builder<M>
copyBuilder()
Make a copy of this builder.CompletableFuture<FDBTypedRecordStore<M>>
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<M>
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.RecordSerializer<Message>
getUntypedSerializer()
Get the serializer that will be used by the underlying record store for non-typed operations such as building indexes.FDBRecordStoreBase.UserVersionChecker
getUserVersionChecker()
Get thefunction
to be used to check the meta-data version of the record store.FDBTypedRecordStore.Builder<M>
setContext(FDBRecordContext context)
Set the record context (transaction) to use for the record store.FDBTypedRecordStore.Builder<M>
setFormatVersion(int formatVersion)
Set the storage format version for this store.FDBTypedRecordStore.Builder<M>
setIndexMaintainerRegistry(IndexMaintainerRegistry indexMaintainerRegistry)
Set the registry of index maintainers to be used by the record store.FDBTypedRecordStore.Builder<M>
setIndexMaintenanceFilter(IndexMaintenanceFilter indexMaintenanceFilter)
Set theindex filter
to be used by the record store.FDBTypedRecordStore.Builder<M>
setKeySpacePath(KeySpacePath keySpacePath)
Set the key space path to use for the record store.FDBTypedRecordStore.Builder<M>
setMetaDataProvider(RecordMetaDataProvider metaDataProvider)
Set the provider for the record store's meta-data.FDBTypedRecordStore.Builder<M>
setMetaDataStore(FDBMetaDataStore metaDataStore)
Set theFDBMetaDataStore
to use as the source of meta-data.FDBTypedRecordStore.Builder<M>
setPipelineSizer(FDBRecordStoreBase.PipelineSizer pipelineSizer)
Set theobject
to be used to determine the depth of pipelines run by the record store.FDBTypedRecordStore.Builder<M>
setSerializer(RecordSerializer<M> typedSerializer)
Set the serializer used to convert records into byte arrays.FDBTypedRecordStore.Builder<M>
setStoreStateCache(FDBRecordStoreStateCache storeStateCache)
Set the store state cache to be used by the record store.FDBTypedRecordStore.Builder<M>
setSubspace(Subspace subspace)
Set the subspace to use for the record store.FDBTypedRecordStore.Builder<M>
setSubspaceProvider(SubspaceProvider subspaceProvider)
Set the subspace provider from a subspace provider.FDBTypedRecordStore.Builder<M>
setUntypedSerializer(RecordSerializer<Message> serializer)
Get the serializer that will be used by the underlying record store for non-typed operations such as building indexes.FDBTypedRecordStore.Builder<M>
setUserVersionChecker(FDBRecordStoreBase.UserVersionChecker userVersionChecker)
Set thefunction
to be used to check the meta-data version of the record store.CompletableFuture<FDBTypedRecordStore<M>>
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
-
-
-
-
Constructor Detail
-
Builder
protected Builder()
-
Builder
protected Builder(FDBTypedRecordStore.Builder<M> other)
-
Builder
protected Builder(FDBTypedRecordStore<M> store)
-
-
Method Detail
-
getSerializer
@Nullable public RecordSerializer<M> getSerializer()
Description copied from interface:FDBRecordStoreBase.BaseBuilder
Get the serializer used to convert records into byte arrays.- Specified by:
getSerializer
in interfaceFDBRecordStoreBase.BaseBuilder<M extends Message,FDBTypedRecordStore<M extends Message>>
- Returns:
- the serializer to use
-
setSerializer
@Nonnull public FDBTypedRecordStore.Builder<M> setSerializer(@Nullable RecordSerializer<M> typedSerializer)
Description copied from interface:FDBRecordStoreBase.BaseBuilder
Set the serializer used to convert records into byte arrays.- Specified by:
setSerializer
in interfaceFDBRecordStoreBase.BaseBuilder<M extends Message,FDBTypedRecordStore<M extends Message>>
- Parameters:
typedSerializer
- the serializer to use- Returns:
- this builder
-
getUntypedSerializer
@Nonnull public RecordSerializer<Message> getUntypedSerializer()
Get the serializer that will be used by the underlying record store for non-typed operations such as building indexes.- Returns:
- untyped serializer
-
setUntypedSerializer
@Nonnull public FDBTypedRecordStore.Builder<M> setUntypedSerializer(@Nonnull RecordSerializer<Message> serializer)
Get the serializer that will be used by the underlying record store for non-typed operations such as building indexes.- Parameters:
serializer
- untyped serializer- 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<M extends Message,FDBTypedRecordStore<M extends Message>>
- Returns:
- the format version to use
-
setFormatVersion
@Nonnull public FDBTypedRecordStore.Builder<M> 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<M extends Message,FDBTypedRecordStore<M extends Message>>
- 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<M extends Message,FDBTypedRecordStore<M extends Message>>
- Returns:
- the meta-data source to use
-
setMetaDataProvider
@Nonnull public FDBTypedRecordStore.Builder<M> 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<M extends Message,FDBTypedRecordStore<M extends Message>>
- 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<M extends Message,FDBTypedRecordStore<M extends Message>>
- Returns:
- the meta-data store to use
-
setMetaDataStore
@Nonnull public FDBTypedRecordStore.Builder<M> 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<M extends Message,FDBTypedRecordStore<M extends Message>>
- 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<M extends Message,FDBTypedRecordStore<M extends Message>>
- Returns:
- context the record context / transaction to use
-
setContext
@Nonnull public FDBTypedRecordStore.Builder<M> 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<M extends Message,FDBTypedRecordStore<M extends Message>>
- 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<M extends Message,FDBTypedRecordStore<M extends Message>>
- Returns:
- the subspace provider
-
setSubspaceProvider
@Nonnull public FDBTypedRecordStore.Builder<M> setSubspaceProvider(@Nullable SubspaceProvider subspaceProvider)
Description copied from interface:FDBRecordStoreBase.BaseBuilder
Set the subspace provider from a subspace provider.- Specified by:
setSubspaceProvider
in interfaceFDBRecordStoreBase.BaseBuilder<M extends Message,FDBTypedRecordStore<M extends Message>>
- Parameters:
subspaceProvider
- the subspace provider- Returns:
- this builder
-
setSubspace
@Nonnull public FDBTypedRecordStore.Builder<M> 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<M extends Message,FDBTypedRecordStore<M extends Message>>
- Parameters:
subspace
- the subspace to use- Returns:
- this builder
-
setKeySpacePath
@Nonnull public FDBTypedRecordStore.Builder<M> setKeySpacePath(@Nullable KeySpacePath keySpacePath)
Description copied from interface:FDBRecordStoreBase.BaseBuilder
Set the key space path 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. Note: The context should be set before setting the key space path.- Specified by:
setKeySpacePath
in interfaceFDBRecordStoreBase.BaseBuilder<M extends Message,FDBTypedRecordStore<M extends Message>>
- 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<M extends Message,FDBTypedRecordStore<M extends Message>>
- Returns:
- the checker function to use
-
setUserVersionChecker
@Nonnull public FDBTypedRecordStore.Builder<M> 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<M extends Message,FDBTypedRecordStore<M extends Message>>
- 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<M extends Message,FDBTypedRecordStore<M extends Message>>
- Returns:
- the index registry to use
-
setIndexMaintainerRegistry
@Nonnull public FDBTypedRecordStore.Builder<M> 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<M extends Message,FDBTypedRecordStore<M extends Message>>
- 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<M extends Message,FDBTypedRecordStore<M extends Message>>
- Returns:
- the index filter to use
-
setIndexMaintenanceFilter
@Nonnull public FDBTypedRecordStore.Builder<M> 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<M extends Message,FDBTypedRecordStore<M extends Message>>
- 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<M extends Message,FDBTypedRecordStore<M extends Message>>
- Returns:
- the sizer to use
-
setPipelineSizer
@Nonnull public FDBTypedRecordStore.Builder<M> 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<M extends Message,FDBTypedRecordStore<M extends Message>>
- Parameters:
pipelineSizer
- the sizer to use- Returns:
- this builder
- See Also:
FDBRecordStoreBase.getPipelineSize(com.apple.foundationdb.record.PipelineOperation)
-
getStoreStateCache
@Nonnull 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<M extends Message,FDBTypedRecordStore<M extends Message>>
- Returns:
- the store state cached used by this record store of
null
if it uses the database default
-
setStoreStateCache
@Nonnull public FDBTypedRecordStore.Builder<M> setStoreStateCache(@Nonnull 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<M extends Message,FDBTypedRecordStore<M extends Message>>
- 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
-
uncheckedOpenAsync
@Nonnull public CompletableFuture<FDBTypedRecordStore<M>> 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<M extends Message,FDBTypedRecordStore<M extends Message>>
- Returns:
- a future that will contain a store with the appropriate parameters set when ready
-
createOrOpenAsync
@Nonnull public CompletableFuture<FDBTypedRecordStore<M>> 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<M extends Message,FDBTypedRecordStore<M extends Message>>
- Parameters:
existenceCheck
- whether the store must already exist- Returns:
- a future that will contain a store with the appropriate parameters set when ready
-
build
@Nonnull public FDBTypedRecordStore<M> build()
Description copied from interface:FDBRecordStoreBase.BaseBuilder
Build the record store.- Specified by:
build
in interfaceFDBRecordStoreBase.BaseBuilder<M extends Message,FDBTypedRecordStore<M extends Message>>
- Returns:
- a new record store with the desired state.
-
copyBuilder
@Nonnull public FDBTypedRecordStore.Builder<M> 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<M extends Message,FDBTypedRecordStore<M extends Message>>
- Returns:
- a new builder with the same state as this builder
-
-