This document provides an overview of changes that an application developer may need to make or effects that they should consider when upgrading the API version in their code. For each version, a list is provided that details the relevant changes when upgrading to that version from a prior version. To upgrade across multiple versions, make sure you apply changes from each version starting after your start version up to and including your target version.
For more details about API versions, see API versions.
fdb_transaction_get_range_and_flat_map
API is replaced by fdb_transaction_get_mapped_range
in version 710. The function fdb_transaction_get_range_and_flat_map
is not supported in any API version.get_estimated_range_size_bytes
will now throw an error if the begin_key
or end_key
is None
.\xff\xff/worker_interfaces
ignored its arguments and returned keys outside the range requested. In api version 630, you can get similar behavior by reading from \xff\xff/worker_interfaces/
to \xff\xff/worker_interfaces0
and stripping the prefix \xff\xff/worker_interfaces/
from each key in the result.get_addresses_for_key
function now returns strings that include the port in the address. Prior to API version 630, this required using the INCLUDE_PORT_IN_ADDRESS
option, which has now been deprecated.ENABLE_SLOW_TASK_PROFILING
network option has been replaced by ENABLE_RUN_LOOP_PROFILING
and is now deprecated.FDBKeyValue
struct’s key
and value
members have changed type from void*
to uint8_t*
.@fdb.transactional
decorated functions will now throw an error if they return a generator. Previously, it was very easy to write these generators in a way that resulted them committing or retrying earlier than intended.fdb_future_get_version
has been renamed to fdb_future_get_int64
.TIMEOUT
, MAX_RETRY_DELAY
, and RETRY_LIMIT
transaction options are no longer reset by calls to onError
.onError
with a non-retryable error will now put a transaction into an error state. Previously, this would partially reset the transaction.TRANSACTION_LOGGING_ENABLE
option has been deprecated. Its behavior can be replicated by setting the DEBUG_TRANSACTION_IDENTIFIER
and LOG_TRANSACTION
options.fdb_create_database
, which is a synchronous operation.FDBCluster
type has been eliminated and the following functions have been removed: fdb_create_cluster
, fdb_cluster_create_database
, fdb_cluster_set_option
, fdb_cluster_destroy
, fdb_future_get_cluster
, and fdb_future_get_database
.fdb.open
no longer accepts a database_name
parameter.fdb.init
, fdb.create_cluster
, and fdb.Cluster
. fdb.open
should be used instead.FDB.createCluster
and the Cluster
class have been deprecated. FDB.open
should be used instead.FDB.open
no longer accepts a database_name
parameter.FDB.init
, FDB.create_cluster
, and FDB.Cluster
. FDB.open
should be used instead.fdb.OpenDatabase
and fdb.MustOpenDatabase
to open a connection to the database by specifying a cluster file.fdb.StartNetwork
, fdb.Open
, fdb.MustOpen
, and fdb.CreateCluster
. fdb.OpenDatabase
or fdb.OpenDefault
should be used instead.TLS_PLUGIN
option is now a no-op and has been deprecated. TLS support is now included in the published binaries.SET_VERSIONSTAMPED_KEY
atomic operation now uses four bytes instead of two to specify the versionstamp offset.SET_VERSIONSTAMPED_VALUE
atomic operation now requires a four byte versionstamp offset to be specified at the end of the value, similar to the behavior with SET_VERSIONSTAMPED_KEY
.READ_AHEAD_DISABLE
option has been deprecated.AND
and MIN
have changed behavior when used on a key that isn’t present in the database. Previously, these operations would set an unset key to a value of equal length with the specified value but containing all null bytes (0x00). Now, an unset key will be set with the value passed to the operation (equivalent to a set).com.apple.cie.foundationdb
to com.apple.foundationdb
.CompletableFuture
are the only ones that remain.stderr
if an object with native resources is not closed. This can be disabled by calling FDB.setUnclosedWarning()
.Disposable
interface now implement AutoCloseable
instead, with close()
replacing dispose()
.AutoCloseable
objects will continue to be closed in object finalizers, but this behavior is being deprecated. All AutoCloseable
objects should be explicitly closed.AsyncIterator
is no longer closeable.getBoundaryKeys()
now returns a CloseableAsyncIterable
rather than an AsyncIterator
.FDB.open
and Cluster.openDatabase
no longer take a DB name parameter.Transaction.onError
invalidates its transaction and asynchronously return a new replacement Transaction
.Transaction.reset
has been removed.There are no behavior changes in this API version.
There are no behavior changes in this API version.
There are no behavior changes in this API version.
There are no behavior changes in this API version.
There are no behavior changes in this API version.
com.foundationdb
to com.apple.cie.foundationdb
.SNAPSHOT_RYW_DISABLE
transaction option.\xFF
) now requires setting the READ_SYSTEM_KEYS
or ACCESS_SYSTEM_KEYS
option.Transaction.clearRangeStartsWith
has been deprecated. Transaction.clear(Range)
should be used instead.API versions from the beta and alpha releases of Foundationdb (pre-100) are not documented here. See Release Notes for details about changes in those releases.