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 :ref:`api-versions`.
fdb_future_get_versionhas been renamed tofdb_future_get_int64.
- The concept of opening a cluster has been removed from the API. Instead, databases are opened directly. See binding specific notes for the details as they apply to your language binding.
- The
TIMEOUT,MAX_RETRY_DELAY, andRETRY_LIMITtransaction options are no longer reset by calls toonError. - Calling
onErrorwith a non-retryable error will now put a transaction into an error state. Previously, this would partially reset the transaction. - The
TRANSACTION_LOGGING_ENABLEoption has been deprecated. Its behavior can be replicated by setting theDEBUG_TRANSACTION_IDENTIFIERandLOG_TRANSACTIONoptions.
- Creating a database is now done by calling
fdb_create_database, which is a synchronous operation. - The
FDBClustertype 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, andfdb_future_get_database.
fdb.openno longer accepts adatabase_nameparameter.- Removed
fdb.init,fdb.create_cluster, andfdb.Cluster.fdb.openshould be used instead.
FDB.createClusterand theClusterclass have been deprecated.FDB.openshould be used instead.
FDB.openno longer accepts adatabase_nameparameter.- Removed
FDB.init,FDB.create_cluster, andFDB.Cluster.FDB.openshould be used instead.
- Added
fdb.OpenDatabaseandfdb.MustOpenDatabaseto open a connection to the database by specifying a cluster file. - Deprecated
fdb.StartNetwork,fdb.Open,fdb.MustOpen, andfdb.CreateCluster.fdb.OpenDatabaseorfdb.OpenDefaultshould be used instead.
- The
TLS_PLUGINoption is now a no-op and has been deprecated. TLS support is now included in the published binaries.
- The
SET_VERSIONSTAMPED_KEYatomic operation now uses four bytes instead of two to specify the versionstamp offset. - The
SET_VERSIONSTAMPED_VALUEatomic operation now requires a four byte versionstamp offset to be specified at the end of the value, similar to the behavior withSET_VERSIONSTAMPED_KEY. - The
READ_AHEAD_DISABLEoption has been deprecated.
- Tuples packed with versionstamps will be encoded with four byte offsets instead of two.
- The atomic operations
ANDandMINhave 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).
- Note: the Java bindings as of 5.1 no longer support API versions older that 510.
- The Java bindings have moved packages from
com.apple.cie.foundationdbtocom.apple.foundationdb. - The version of the Java bindings using our custom futures library has been deprecated and is no longer being maintained. The Java bindings using
CompletableFutureare the only ones that remain. - Finalizers now log a warning to
stderrif an object with native resources is not closed. This can be disabled by callingFDB.setUnclosedWarning(). - Implementers of the
Disposableinterface now implementAutoCloseableinstead, withclose()replacingdispose(). AutoCloseableobjects will continue to be closed in object finalizers, but this behavior is being deprecated. AllAutoCloseableobjects should be explicitly closed.AsyncIteratoris no longer closeable.getBoundaryKeys()now returns aCloseableAsyncIterablerather than anAsyncIterator.
- Note: the Java bindings as of 5.0 no longer support API versions older than 500.
FDB.openandCluster.openDatabaseno longer take a DB name parameter.Transaction.onErrorinvalidates its transaction and asynchronously return a new replacementTransaction.Transaction.resethas 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.
- Transactions no longer reset after a successful commit.
- The Java bindings have moved packages from
com.foundationdbtocom.apple.cie.foundationdb.
- Snapshot reads now see the effects of prior writes within the same transaction. The previous behavior can be achieved using the
SNAPSHOT_RYW_DISABLEtransaction option. - The transaction size limit now includes the size of conflict ranges in its calculation. The size of a conflict range is the sum of the lengths of its begin and end keys.
- Adding conflict ranges or watches in the system keyspace (beginning with
\xFF) now requires setting theREAD_SYSTEM_KEYSorACCESS_SYSTEM_KEYSoption.
- Read version requests will now fail when the transaction is reset or has experienced another error.
Transaction.clearRangeStartsWithhas 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 :doc:`old-release-notes/release-notes-023` for details about changes in those releases.