Class FDBRecordContextConfig.Builder
- java.lang.Object
-
- com.apple.foundationdb.record.provider.foundationdb.FDBRecordContextConfig.Builder
-
- Enclosing class:
- FDBRecordContextConfig
public static class FDBRecordContextConfig.Builder extends Object
A builder ofFDBRecordContextConfig
s using the standard builder pattern.
-
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
areAssertionsEnabled()
Return whether or not correctness assertions will enabled for the context.FDBRecordContextConfig
build()
Create anFDBRecordContextConfig
from this builder.FDBRecordContextConfig.Builder
copyBuilder()
Make a copy of this builder.Map<String,String>
getMdcContext()
Get the MDC context.FDBTransactionPriority
getPriority()
Get theFDBTransactionPriority
.FDBStoreTimer
getTimer()
Get the timer to use to instrument events.String
getTransactionId()
Get the ID to use for the transaction within FDB logs.long
getTransactionTimeoutMillis()
Set the transaction timeout time in milliseconds.FDBDatabase.WeakReadSemantics
getWeakReadSemantics()
Get theFDBDatabase.WeakReadSemantics
from this configuration.boolean
isLogTransaction()
Get whether transaction is logged to FDB client logs.boolean
isSaveOpenStackTrace()
Get whether stack trace is recorded when context is opened.boolean
isTrackOpen()
Get whether open context is tracked in the associatedFDBDatabase
.FDBRecordContextConfig.Builder
setEnableAssertions(boolean enableAssertions)
Enables or disables internal correctness assertions for the context, such as validating maximum key and value lengths for all database requests.FDBRecordContextConfig.Builder
setLogTransaction(boolean logTransaction)
Set whether transaction is logged to FDB client logs.FDBRecordContextConfig.Builder
setMdcContext(Map<String,String> mdcContext)
Set the MDC context.FDBRecordContextConfig.Builder
setPriority(FDBTransactionPriority priority)
Set theFDBTransactionPriority
to use when creating a transaction.FDBRecordContextConfig.Builder
setSaveOpenStackTrace(boolean saveOpenStackTrace)
Set whether stack trace is recorded when context is opened.FDBRecordContextConfig.Builder
setTimer(FDBStoreTimer timer)
Set the timer to use when instrumenting events.FDBRecordContextConfig.Builder
setTrackOpen(boolean trackOpen)
Set whether open context is tracked in the associatedFDBDatabase
.FDBRecordContextConfig.Builder
setTransactionId(String transactionId)
Set the transaction ID to use within FDB logs.FDBRecordContextConfig.Builder
setTransactionTimeoutMillis(long transactionTimeoutMillis)
Set the transaction timeout time in milliseconds.FDBRecordContextConfig.Builder
setWeakReadSemantics(FDBDatabase.WeakReadSemantics weakReadSemantics)
Set theFDBDatabase.WeakReadSemantics
to use when creating a transaction.
-
-
-
Method Detail
-
setMdcContext
@Nonnull public FDBRecordContextConfig.Builder setMdcContext(@Nullable Map<String,String> mdcContext)
Set the MDC context. By default, this will be set tonull
, which does not add any additional keys or values to the logs. Additionally, if the "uuid" key of this parameter is set and the transaction ID parameter is not set, then the transaction will set its logging ID based on the value of that key from the MDC context.- Parameters:
mdcContext
- the MDC context to use when logging- Returns:
- this builder
- See Also:
FDBRecordContextConfig.getMdcContext()
,setTransactionId(String)
-
getMdcContext
@Nullable public Map<String,String> getMdcContext()
Get the MDC context.- Returns:
- the MDC context
- See Also:
FDBRecordContextConfig.getMdcContext()
-
setTimer
@Nonnull public FDBRecordContextConfig.Builder setTimer(@Nullable FDBStoreTimer timer)
Set the timer to use when instrumenting events. By default, this will be set tonull
, when means that events will not be instrumented.- Parameters:
timer
- the timer to use to instrument events- Returns:
- this builder
- See Also:
FDBRecordContextConfig.getTimer()
-
getTimer
@Nullable public FDBStoreTimer getTimer()
Get the timer to use to instrument events.- Returns:
- the current timer
- See Also:
FDBRecordContextConfig.getTimer()
-
setWeakReadSemantics
@Nonnull public FDBRecordContextConfig.Builder setWeakReadSemantics(@Nullable FDBDatabase.WeakReadSemantics weakReadSemantics)
Set theFDBDatabase.WeakReadSemantics
to use when creating a transaction. The default value isnull
, which indicates that the transaction should not use a cached read version and will not setTransactionOptions.setCausalReadRisky()
. This guarantees that the transaction will be linearizable, i.e., it will see all commits from all transactions that have committed before it.- Parameters:
weakReadSemantics
- theFDBDatabase.WeakReadSemantics
to use when creating the transaction- Returns:
- this builder
- See Also:
FDBRecordContextConfig.getWeakReadSemantics()
-
getWeakReadSemantics
@Nullable public FDBDatabase.WeakReadSemantics getWeakReadSemantics()
Get theFDBDatabase.WeakReadSemantics
from this configuration.- Returns:
- the
FDBDatabase.WeakReadSemantics
- See Also:
FDBRecordContextConfig.getWeakReadSemantics()
-
setPriority
@Nonnull public FDBRecordContextConfig.Builder setPriority(@Nonnull FDBTransactionPriority priority)
Set theFDBTransactionPriority
to use when creating a transaction. By default, this will be set toFDBTransactionPriority.DEFAULT
. For more details on what this value means, seeFDBTransactionPriority
.- Parameters:
priority
- the priority to use when creating a transaction- Returns:
- the transaction priority
- See Also:
FDBTransactionPriority
,FDBRecordContextConfig.getPriority()
-
getPriority
@Nonnull public FDBTransactionPriority getPriority()
Get theFDBTransactionPriority
.- Returns:
- the transaction priority
- See Also:
FDBRecordContextConfig.getPriority()
-
setTransactionId
@Nonnull public FDBRecordContextConfig.Builder setTransactionId(@Nullable String transactionId)
Set the transaction ID to use within FDB logs. The default value of this parameter isnull
, which indicates that the transaction should look at the "uuid" key of the MDC context (if set) to set the transaction ID.The transaction ID should typically be set to a string of entirely ASCII characters, and it should not exceed 100 bytes in length. If the string is longer than 100 bytes, then the ID may be truncated or dropped. See
FDBRecordContext.getTransactionId()
.- Parameters:
transactionId
- the ID to use for the transaction in FDB logs- Returns:
- this builder
- See Also:
FDBRecordContextConfig.getTransactionId()
,FDBRecordContext.getTransactionId()
-
getTransactionId
@Nullable public String getTransactionId()
Get the ID to use for the transaction within FDB logs.- Returns:
- the ID to use for the transaction within FDB logs
- See Also:
FDBRecordContextConfig.getTransactionId()
-
setTransactionTimeoutMillis
@Nonnull public FDBRecordContextConfig.Builder setTransactionTimeoutMillis(long transactionTimeoutMillis)
Set the transaction timeout time in milliseconds. The default isFDBDatabaseFactory.DEFAULT_TR_TIMEOUT_MILLIS
, which indicates that a created transaction should inherit its default from theFDBDatabaseFactory
used to create it. If set toFDBDatabaseFactory.UNLIMITED_TR_TIMEOUT_MILLIS
, then no timeout will be imposed on the transaction. Otherwise, the transaction will be configured to automatically cancel itself after the configured number of milliseconds.- Parameters:
transactionTimeoutMillis
- the timeout time in milliseconds- Returns:
- this builder
- See Also:
FDBRecordContextConfig.getTransactionTimeoutMillis()
,FDBDatabaseFactory.setTransactionTimeoutMillis(long)
-
getTransactionTimeoutMillis
public long getTransactionTimeoutMillis()
Set the transaction timeout time in milliseconds. A value ofFDBDatabaseFactory.DEFAULT_TR_TIMEOUT_MILLIS
indicates that a created transaction should inherit its default from theFDBDatabaseFactory
used to create it. A value ofFDBDatabaseFactory.UNLIMITED_TR_TIMEOUT_MILLIS
indicates that no timeout will be imposed on the transaction.- Returns:
- the timeout time in milliseconds
-
setEnableAssertions
public FDBRecordContextConfig.Builder setEnableAssertions(boolean enableAssertions)
Enables or disables internal correctness assertions for the context, such as validating maximum key and value lengths for all database requests.- Parameters:
enableAssertions
- whether or not assertions are enabled- Returns:
- this builder
-
areAssertionsEnabled
public boolean areAssertionsEnabled()
Return whether or not correctness assertions will enabled for the context.- Returns:
true
if correctness assertions are to be enabled for the context
-
isLogTransaction
public boolean isLogTransaction()
Get whether transaction is logged to FDB client logs.- Returns:
true
if transaction is logged.
-
setLogTransaction
public FDBRecordContextConfig.Builder setLogTransaction(boolean logTransaction)
Set whether transaction is logged to FDB client logs. In order to enable logging,setTransactionId(java.lang.String)
must also be set or available implicitly insetMdcContext(java.util.Map<java.lang.String, java.lang.String>)
.- Parameters:
logTransaction
-true
if transaction is logged.- Returns:
- this builder
- See Also:
TransactionOptions.setLogTransaction()
-
isTrackOpen
public boolean isTrackOpen()
Get whether open context is tracked in the associatedFDBDatabase
.- Returns:
true
if context is tracked.
-
setTrackOpen
public FDBRecordContextConfig.Builder setTrackOpen(boolean trackOpen)
Set whether open context is tracked in the associatedFDBDatabase
.- Parameters:
trackOpen
-true
if context is tracked.- Returns:
- this builder
-
isSaveOpenStackTrace
public boolean isSaveOpenStackTrace()
Get whether stack trace is recorded when context is opened.- Returns:
true
if stack trace is generated.
-
setSaveOpenStackTrace
public FDBRecordContextConfig.Builder setSaveOpenStackTrace(boolean saveOpenStackTrace)
Set whether stack trace is recorded when context is opened. Generating the stack trace is relatively expensive, so this should probably only be done for a fraction of contexts.- Parameters:
saveOpenStackTrace
-true
if stack trace is generated.- Returns:
- this builder
-
build
@Nonnull public FDBRecordContextConfig build()
Create anFDBRecordContextConfig
from this builder.- Returns:
- an
FDBRecordContextConfig
with its values set based on this builder
-
copyBuilder
public FDBRecordContextConfig.Builder copyBuilder()
Make a copy of this builder.- Returns:
- a new builder with the same values as this builder
-
-