* commit '25cca465538a56cce501477f9e5e2c1c7ea2d84c':
chore: Set clang-format width to 100 in config file (6387)
chore: Set cmake-format width to 100 (6386)
ci: Add clang tidy workflow to ci (6369)
* XRPLF/pratik/Fix_asan_lsan_flagged_issues: (61 commits)
Apply suggestion from @pratikmankawde
refactor: Modularize app/tx (6228)
do not fix the stack size
refactor: Decouple app/tx from `Application` and `Config` (6227)
increase timeout
chore: Update clang-format to 21.1.8 (6352)
reverted change in Number
halt on error = 0
remove printXXX from asan rt args
remove symbolize option from asan
only run asan
supp. coro releated asan errors
run sanitizer tests in parallel
refactor: Modularize `HashRouter`, `Conditions`, and `OrderBookDB` (6226)
increase timeout for sanitizer jobs
chore: Fix minor issues in comments (6346)
refactor: Modularize the NetworkOPs interface (6225)
removing timeout changes
increase timeout for sanitizer builds, since we are seeing timeouts
increase stack size of coroutine
...
The rdb module was not properly designed, which is fixed in this change. The module had three classes:
1) The abstract class `RelationalDB`.
2) The abstract class `SQLiteDatabase`, which inherited from `RelationalDB` and added some pure virtual methods.
3) The concrete class `SQLiteDatabaseImp`, which inherited from `SQLiteDatabase` and implemented all methods.
The updated code simplifies this as follows:
* The `SQLiteDatabaseImp` has become `SQLiteDatabase`, and
* The former `SQLiteDatabase `has merged with `RelationalDatabase`.
This change modularizes the `WalletDB` and `Manifest`. Note that the wallet db has nothing to do with account wallets and it stores node configuration, which is why it depends on the manifest code.
This change removes the cache in `DatabaseNodeImp` and simplifies the caching logic in `SHAMapStoreImp`. As NuDB and RocksDB internally already use caches, additional caches in the code are not very valuable or may even be unnecessary, as also confirmed during preliminary performance analyses.
In certain cases, such as when modifying headers used by many compilation units, performing a unity build is slower than when performing a regular build with `ccache` enabled. There is also a benefit to a unity build in that it can detect things such as macro redefinitions within the group of files that are compiled together as a unit. This change therefore restores the ability to perform unity builds. However, instead of running every configuration with and without unity enabled, it is now only enabled for a single configuration to maintain lower computational use.
As part of restoring the code, it became clear that currently two configurations have coverage enabled, since the check doesn't focus specifically on Debian Bookworm so it also applies to Debian Trixie. This has been fixed too in this change.
The `ManifestCache::applyManifest` function was returning early without incrementing `seq_`. `OverlayImpl `uses this sequence to identify/invalidate a cached `TMManifests` message, which is exchanged with peers on connection. Depending on network size, startup sequencing, and topology, this can cause syncing issues. This change therefore increments `seq_` when a new manifest is accepted.
* XRPLF/pratik/Fix_asan_lsan_flagged_issues:
fixed asan escape macro before return type
added comments and haltonerror=false
remove suppressions
fix memory leak in LocalValue
run parallel tests
Don't copy the Json::StaticString
fixes to static variable destruction issue.
fix: Deletes expired NFToken offers from ledger (5707)
chore: Add .zed editor config directory to .gitignore (6317)
clang-format updates
ssl context cleanup.
docs: Update API changelog, add APIv2+APIv3 version documentation (6308)
fix: Restore config changes that broke standalone mode (6301)
chore: Add upper-case match for ARM64 in CompilationEnv (6315)
ci: Update hashes of XRPLF/actions (6316)
chore: Format all cmake files without comments (6294)
chore: Add cmake-format pre-commit hook (6279)
chore: Remove unnecessary `boost::system` requirement from conanfile (6290)
chore: Set ColumnLimit to 120 in clang-format (6288)
run tests in serial
Unity builds were intended to speed up builds, by bundling multiple files into compilation units. However, now that ccache is available on all platforms, there is no need for unity builds anymore, as ccache stores compiled individual build objects for reuse. This change therefore removes the ability to make unity builds.
Currently we're passing the `Application` object around, whereby the `Application` class acts more like a service registry that gives other classes access to other services. In order to allow modularization, we should replace `Application` with a service registry class so that modules depending on `Application` for other services can be moved easily. This change adds the `ServiceRegistry` class.
This change introduces the `fixExpiredNFTokenOfferRemoval` amendment that allows expired offers to pass through `preclaim()` and be deleted in `doApply()`, following the same pattern used for expired credentials.
When support was added for `xrpld.cfg` in addition to `rippled.cfg` in https://github.com/XRPLF/rippled/pull/6098, as part of an effort to rename occurrences of ripple(d) to xrpl(d), the clearing and creation of the data directory were modified for what, at the time, seemed to result in an equivalent code flow. This has turned out to not be true, which is why this change restores two modifications to `Config.cpp` that currently break running the binary in standalone mode.