All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.
- Create new package
ingest/cdp
for new components which will assist towards writing data transformation pipelines as part of Composable Data Platform. - Add new functional producer,
cdp.ApplyLedgerMetadata
. A new function which enables a private instance ofBufferedStorageBackend
to perfrom the role of a producer operator in streaming pipeline designs. It will emit pre-computedLedgerCloseMeta
from a chosenDataStore
. The stream can useApplyLedgerMetadata
as the origin ofLedgerCloseMeta
, providing a callback function which acts as the next operator in the stream, receiving theLedgerCloseMeta
. 5462.
- BucketlistDB is now the default database for stellar-core, replacing the experimental option. As a result, the
EXPERIMENTAL_BUCKETLIST_DB
configuration parameter has been deprecated. - A new mandatory parameter,
DEPRECATED_SQL_LEDGER_STATE
, has been added with a default value of false which equivalent toEXPERIMENTAL_BUCKETLIST_DB
being set to true. - The parameter
EXPERIMENTAL_BUCKETLIST_DB_INDEX_PAGE_SIZE_EXPONENT
has been renamed toBUCKETLIST_DB_INDEX_PAGE_SIZE_EXPONENT
. - The parameter
EXPERIMENTAL_BUCKETLIST_DB_INDEX_CUTOFF
has been renamed toBUCKETLIST_DB_INDEX_CUTOFF
.
- Support for Soroban and Protocol 20!
- The
LedgerTransactionReader
now has aSeek(index int)
method to provide reading from arbitrary parts of the ledger 5274. Change
now has a canonical stringification and a set of them is deterministically sortable.NewCompactingChangeReader
will give you a wrappedChangeReader
that compacts the changes.- Let filewatcher use binary hash instead of timestamp to detect core version update 4050.
- The Captive Core backend now reuses bucket files whenever it finds existing ones in the corresponding
--captive-core-storage-path
(introduced in v2.0) rather than generating a one-time temporary sub-directory (#3670). Note that taking advantage of this feature requires Stellar-Core v17.1.0 or later. - There have been miscallaneous memory and processing speed improvements.
- The Stellar Core runner now parses logs from its underlying subprocess better #3746.
- Ensures that the underlying Stellar Core is terminated before restarting.
- Backends will now connect with a user agent.
- Better handling of various error and restart scenarios.
- Captive Core is now the only available backend.
- The Captive Core configuration should be provided via a TOML file.
Change.AccountSignersChanged
has been removed.
This release is related to the release of Horizon v2.3.0 and introduces some breaking changes to the ingest
package for those building their own tools.
-
Many APIs now require a
context.Context
parameter, allowing you to interact with the backends and control calls in a more finely-controlled manner. This includes the readers (ChangeReader
et al.) as well as the backends themselves (CaptiveStellarCore
et al.). -
GetLedger()
always blocks now, even for anUnboundedRange
. -
The
CaptiveCoreBackend
now requires an all-inclusiveCaptiveCoreToml
object to configure Captive Core rather than an assortment of individual parameters. This object can be built from a TOML file (seeNewCaptiveCoreTomlFromFile
) or from parameters (seeNewCaptiveCoreToml
) as was done before. -
LedgerTransaction.Meta
has been renamed toUnsafeMeta
to highlight that users should be careful when interacting with it. -
Remote Captive Core no longer includes the
present
field in the ledger response JSON.
NewLedgerChangeReaderFromLedgerCloseMeta
andNewLedgerTransactionReaderFromLedgerCloseMeta
are new ways to construct readers from a particular single ledger.
-
The remote Captive Core client timeout has doubled.
-
Captive Core now creates a temporary directory (
captive-core-...
) in the specified storage path (current directory by default) that it cleans it up on shutdown rather than in the OS's temp directory.