mirror of
https://github.com/XRPLF/rippled.git
synced 2026-06-08 19:26:45 +00:00
Compare commits
5 Commits
tapanito/l
...
bthomee/pr
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
9922f214e9 | ||
|
|
32bb0a6f72 | ||
|
|
d59efa6528 | ||
|
|
a389f922dd | ||
|
|
79f4ddc4a6 |
6
.github/scripts/strategy-matrix/linux.json
vendored
6
.github/scripts/strategy-matrix/linux.json
vendored
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"image_tag": "sha-8abe82e",
|
||||
"image_tag": "sha-63ffdc3",
|
||||
"configs": {
|
||||
"ubuntu": [
|
||||
{
|
||||
@@ -67,7 +67,7 @@
|
||||
"compiler": ["gcc"],
|
||||
"build_type": ["Release"],
|
||||
"arch": ["amd64"],
|
||||
"image": "debian:bookworm"
|
||||
"image": "ghcr.io/xrplf/xrpld/packaging-debian:sha-63ffdc3"
|
||||
}
|
||||
],
|
||||
|
||||
@@ -76,7 +76,7 @@
|
||||
"compiler": ["gcc"],
|
||||
"build_type": ["Release"],
|
||||
"arch": ["amd64"],
|
||||
"image": "registry.access.redhat.com/ubi9/ubi:latest"
|
||||
"image": "ghcr.io/xrplf/xrpld/packaging-rhel:sha-63ffdc3"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
3
.github/workflows/build-nix-images.yml
vendored
3
.github/workflows/build-nix-images.yml
vendored
@@ -22,7 +22,8 @@ on:
|
||||
workflow_dispatch:
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
# Read `on-trigger.yml` for the rationale behind this concurrency group name.
|
||||
group: ${{ github.workflow }}-${{ github.event_name == 'push' && github.ref == 'refs/heads/develop' && github.sha || github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
defaults:
|
||||
|
||||
3
.github/workflows/build-packaging-images.yml
vendored
3
.github/workflows/build-packaging-images.yml
vendored
@@ -20,7 +20,8 @@ on:
|
||||
workflow_dispatch:
|
||||
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
# Read `on-trigger.yml` for the rationale behind this concurrency group name.
|
||||
group: ${{ github.workflow }}-${{ github.event_name == 'push' && github.ref == 'refs/heads/develop' && github.sha || github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
defaults:
|
||||
|
||||
2
.github/workflows/pre-commit.yml
vendored
2
.github/workflows/pre-commit.yml
vendored
@@ -14,7 +14,7 @@ on:
|
||||
jobs:
|
||||
# Call the workflow in the XRPLF/actions repo that runs the pre-commit hooks.
|
||||
run-hooks:
|
||||
uses: XRPLF/actions/.github/workflows/pre-commit.yml@cba1f0891650baf1a9c88624dc2d72573be2eb81
|
||||
uses: XRPLF/actions/.github/workflows/pre-commit.yml@312aaab296060ff89d7f798dcab59f019bea6e02
|
||||
with:
|
||||
runs_on: ubuntu-latest
|
||||
container: '{ "image": "ghcr.io/xrplf/ci/tools-rippled-pre-commit:sha-41ec7c1" }'
|
||||
|
||||
4
.github/workflows/publish-docs.yml
vendored
4
.github/workflows/publish-docs.yml
vendored
@@ -41,13 +41,13 @@ env:
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
container: ghcr.io/xrplf/xrpld/nix-ubuntu:sha-8abe82e
|
||||
container: ghcr.io/xrplf/xrpld/nix-ubuntu:sha-63ffdc3
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||
|
||||
- name: Prepare runner
|
||||
uses: XRPLF/actions/prepare-runner@90f11ee655d1687824fb8793db770477d52afbab
|
||||
uses: XRPLF/actions/prepare-runner@c47daebb2f9db64ffbac71b47d68a661498d5ce8
|
||||
with:
|
||||
enable_ccache: false
|
||||
|
||||
|
||||
@@ -113,7 +113,7 @@ jobs:
|
||||
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||
|
||||
- name: Prepare runner
|
||||
uses: XRPLF/actions/prepare-runner@90f11ee655d1687824fb8793db770477d52afbab
|
||||
uses: XRPLF/actions/prepare-runner@c47daebb2f9db64ffbac71b47d68a661498d5ce8
|
||||
with:
|
||||
enable_ccache: ${{ inputs.ccache_enabled }}
|
||||
|
||||
@@ -370,7 +370,7 @@ jobs:
|
||||
|
||||
- name: Upload coverage report
|
||||
if: ${{ github.repository == 'XRPLF/rippled' && !inputs.build_only && env.COVERAGE_ENABLED == 'true' }}
|
||||
uses: codecov/codecov-action@e79a6962e0d4c0c17b229090214935d2e33f8354 # v6.0.1
|
||||
uses: codecov/codecov-action@fb8b3582c8e4def4969c97caa2f19720cb33a72f # v7.0.0
|
||||
with:
|
||||
disable_search: true
|
||||
disable_telem: true
|
||||
|
||||
6
.github/workflows/reusable-clang-tidy.yml
vendored
6
.github/workflows/reusable-clang-tidy.yml
vendored
@@ -29,14 +29,14 @@ jobs:
|
||||
if: ${{ inputs.check_only_changed }}
|
||||
permissions:
|
||||
contents: read
|
||||
uses: XRPLF/actions/.github/workflows/determine-tidy-files.yml@224f3c48d3014d082a1129237b8291ff0b0a331f
|
||||
uses: XRPLF/actions/.github/workflows/determine-tidy-files.yml@312aaab296060ff89d7f798dcab59f019bea6e02
|
||||
|
||||
run-clang-tidy:
|
||||
name: Run clang tidy
|
||||
needs: [determine-files]
|
||||
if: ${{ always() && !cancelled() && (!inputs.check_only_changed || needs.determine-files.outputs.cpp_changed_files != '' || needs.determine-files.outputs.clang_tidy_config_changed == 'true') }}
|
||||
runs-on: ["self-hosted", "Linux", "X64", "heavy"]
|
||||
container: "ghcr.io/xrplf/xrpld/nix-debian:sha-8abe82e"
|
||||
container: "ghcr.io/xrplf/xrpld/nix-debian:sha-63ffdc3"
|
||||
permissions:
|
||||
contents: read
|
||||
issues: write
|
||||
@@ -45,7 +45,7 @@ jobs:
|
||||
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||
|
||||
- name: Prepare runner
|
||||
uses: XRPLF/actions/prepare-runner@90f11ee655d1687824fb8793db770477d52afbab
|
||||
uses: XRPLF/actions/prepare-runner@c47daebb2f9db64ffbac71b47d68a661498d5ce8
|
||||
with:
|
||||
enable_ccache: false
|
||||
|
||||
|
||||
25
.github/workflows/reusable-package.yml
vendored
25
.github/workflows/reusable-package.yml
vendored
@@ -68,31 +68,6 @@ jobs:
|
||||
timeout-minutes: 30
|
||||
|
||||
steps:
|
||||
# Packaging runs in a vanilla distro image, so the tooling has to come
|
||||
# from the distro's archive: debhelper for deb, rpm-build (and the
|
||||
# systemd / find-debuginfo macros it depends on) for rpm. Run this
|
||||
# before actions/checkout so the latter can use git (real history) for
|
||||
# build_pkg.sh's SOURCE_DATE_EPOCH; otherwise it falls back to a tarball
|
||||
# download and the timestamp comes from wall-clock time.
|
||||
- name: Install packaging tooling (deb)
|
||||
if: ${{ matrix.distro == 'debian' }}
|
||||
run: |
|
||||
export DEBIAN_FRONTEND=noninteractive
|
||||
apt-get update
|
||||
apt-get install -y --no-install-recommends \
|
||||
ca-certificates \
|
||||
debhelper \
|
||||
git
|
||||
|
||||
- name: Install packaging tooling (rpm)
|
||||
if: ${{ matrix.distro == 'rhel' }}
|
||||
run: |
|
||||
dnf install -y --setopt=install_weak_deps=False \
|
||||
git \
|
||||
rpm-build \
|
||||
redhat-rpm-config \
|
||||
systemd-rpm-macros
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||
|
||||
|
||||
2
.github/workflows/reusable-upload-recipe.yml
vendored
2
.github/workflows/reusable-upload-recipe.yml
vendored
@@ -40,7 +40,7 @@ defaults:
|
||||
jobs:
|
||||
upload:
|
||||
runs-on: ubuntu-latest
|
||||
container: ghcr.io/xrplf/xrpld/nix-ubuntu:sha-8abe82e
|
||||
container: ghcr.io/xrplf/xrpld/nix-ubuntu:sha-63ffdc3
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||
|
||||
2
.github/workflows/upload-conan-deps.yml
vendored
2
.github/workflows/upload-conan-deps.yml
vendored
@@ -67,7 +67,7 @@ jobs:
|
||||
uses: actions/checkout@df4cb1c069e1874edd31b4311f1884172cec0e10 # v6.0.3
|
||||
|
||||
- name: Prepare runner
|
||||
uses: XRPLF/actions/prepare-runner@90f11ee655d1687824fb8793db770477d52afbab
|
||||
uses: XRPLF/actions/prepare-runner@c47daebb2f9db64ffbac71b47d68a661498d5ce8
|
||||
with:
|
||||
enable_ccache: false
|
||||
|
||||
|
||||
@@ -36,7 +36,6 @@ public:
|
||||
testcase("Convert protocol version to string");
|
||||
BEAST_EXPECT(to_string(makeProtocol(1, 3)) == "XRPL/1.3");
|
||||
BEAST_EXPECT(to_string(makeProtocol(2, 0)) == "XRPL/2.0");
|
||||
BEAST_EXPECT(to_string(makeProtocol(2, 1)) == "XRPL/2.1");
|
||||
BEAST_EXPECT(to_string(makeProtocol(10, 10)) == "XRPL/10.10");
|
||||
|
||||
{
|
||||
@@ -59,11 +58,10 @@ public:
|
||||
testcase("Protocol version negotiation");
|
||||
|
||||
BEAST_EXPECT(negotiateProtocolVersion("RTXP/1.2") == std::nullopt);
|
||||
BEAST_EXPECT(
|
||||
negotiateProtocolVersion("RTXP/1.2, XRPL/2.0, XRPL/2.1") == makeProtocol(2, 1));
|
||||
BEAST_EXPECT(negotiateProtocolVersion("RTXP/1.2, XRPL/2.0, XRPL/2.1") == std::nullopt);
|
||||
BEAST_EXPECT(negotiateProtocolVersion("XRPL/2.2") == makeProtocol(2, 2));
|
||||
BEAST_EXPECT(
|
||||
negotiateProtocolVersion("RTXP/1.2, XRPL/2.2, XRPL/2.3, XRPL/999.999") ==
|
||||
negotiateProtocolVersion("RTXP/1.2, XRPL/2.1, XRPL/2.2, XRPL/2.3, XRPL/999.999") ==
|
||||
makeProtocol(2, 2));
|
||||
BEAST_EXPECT(negotiateProtocolVersion("XRPL/999.999, WebSocket/1.0") == std::nullopt);
|
||||
BEAST_EXPECT(negotiateProtocolVersion("") == std::nullopt);
|
||||
|
||||
@@ -53,4 +53,4 @@ foreach(module IN LISTS test_modules)
|
||||
)
|
||||
endforeach()
|
||||
|
||||
gtest_discover_tests(xrpl_tests)
|
||||
gtest_discover_tests(xrpl_tests DISCOVERY_TIMEOUT 60)
|
||||
|
||||
@@ -727,17 +727,8 @@ ValidatorList::sendValidatorList(
|
||||
HashRouter& hashRouter,
|
||||
beast::Journal j)
|
||||
{
|
||||
std::size_t messageVersion = 0;
|
||||
if (peer.supportsFeature(ProtocolFeature::ValidatorList2Propagation))
|
||||
{
|
||||
messageVersion = 2;
|
||||
}
|
||||
else if (peer.supportsFeature(ProtocolFeature::ValidatorListPropagation))
|
||||
{
|
||||
messageVersion = 1;
|
||||
}
|
||||
if (messageVersion == 0u)
|
||||
return;
|
||||
// v1 messages are no longer supported.
|
||||
std::size_t const messageVersion = 2;
|
||||
auto const [newPeerSequence, numVLs] = buildValidatorListMessages(
|
||||
messageVersion, peerSequence, maxSequence, rawVersion, rawManifest, blobInfos, messages);
|
||||
if (newPeerSequence != 0u)
|
||||
@@ -766,24 +757,11 @@ ValidatorList::sendValidatorList(
|
||||
"xrpl::ValidatorList::sendValidatorList : sent or one message");
|
||||
if (sent)
|
||||
{
|
||||
if (messageVersion > 1)
|
||||
{
|
||||
JLOG(j.debug()) << "Sent " << messages.size()
|
||||
<< " validator list collection(s) containing " << numVLs
|
||||
<< " validator list(s) for " << strHex(publisherKey)
|
||||
<< " with sequence range " << peerSequence << ", "
|
||||
<< newPeerSequence << " to " << peer.fingerprint();
|
||||
}
|
||||
else
|
||||
{
|
||||
XRPL_ASSERT(
|
||||
numVLs == 1,
|
||||
"xrpl::ValidatorList::sendValidatorList : one validator "
|
||||
"list");
|
||||
JLOG(j.debug()) << "Sent validator list for " << strHex(publisherKey)
|
||||
<< " with sequence " << newPeerSequence << " to "
|
||||
<< peer.fingerprint();
|
||||
}
|
||||
JLOG(j.debug()) << "Sent " << messages.size()
|
||||
<< " validator list collection(s) containing " << numVLs
|
||||
<< " validator list(s) for " << strHex(publisherKey)
|
||||
<< " with sequence range " << peerSequence << ", " << newPeerSequence
|
||||
<< " to " << peer.fingerprint();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -858,16 +836,9 @@ ValidatorList::broadcastBlobs(
|
||||
|
||||
if (toSkip)
|
||||
{
|
||||
// We don't know what messages or message versions we're sending
|
||||
// until we examine our peer's properties. Build the message(s) on
|
||||
// demand, but reuse them when possible.
|
||||
|
||||
// This will hold a v1 message with only the current VL if we have
|
||||
// any peers that don't support v2
|
||||
std::vector<ValidatorList::MessageWithHash> messages1;
|
||||
// This will hold v2 messages indexed by the peer's
|
||||
// `publisherListSequence`. For each `publisherListSequence`, we'll
|
||||
// only send the VLs with higher sequences.
|
||||
// Build v2 messages on demand and reuse them when possible. Messages
|
||||
// are indexed by the peer's `publisherListSequence`; for each sequence,
|
||||
// we only send VLs with higher sequences.
|
||||
std::map<std::size_t, std::vector<ValidatorList::MessageWithHash>> messages2;
|
||||
// If any peers are found that are worth considering, this list will
|
||||
// be built to hold info for all of the valid VLs.
|
||||
@@ -887,8 +858,6 @@ ValidatorList::broadcastBlobs(
|
||||
{
|
||||
if (blobInfos.empty())
|
||||
buildBlobInfos(blobInfos, lists);
|
||||
auto const v2 =
|
||||
peer->supportsFeature(ProtocolFeature::ValidatorList2Propagation);
|
||||
sendValidatorList(
|
||||
*peer,
|
||||
peerSequence,
|
||||
@@ -897,11 +866,10 @@ ValidatorList::broadcastBlobs(
|
||||
lists.rawVersion,
|
||||
lists.rawManifest,
|
||||
blobInfos,
|
||||
v2 ? messages2[peerSequence] : messages1,
|
||||
messages2[peerSequence],
|
||||
hashRouter,
|
||||
j);
|
||||
// Even if the peer doesn't support the messages,
|
||||
// suppress it so it'll be ignored next time.
|
||||
// Don't send it next time.
|
||||
hashRouter.addSuppressionPeer(hash, peer->id());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,8 +14,6 @@ class Charge;
|
||||
} // namespace Resource
|
||||
|
||||
enum class ProtocolFeature {
|
||||
ValidatorListPropagation,
|
||||
ValidatorList2Propagation,
|
||||
LedgerReplay,
|
||||
};
|
||||
|
||||
|
||||
@@ -545,10 +545,6 @@ PeerImp::supportsFeature(ProtocolFeature f) const
|
||||
{
|
||||
switch (f)
|
||||
{
|
||||
case ProtocolFeature::ValidatorListPropagation:
|
||||
return protocol_ >= makeProtocol(2, 1);
|
||||
case ProtocolFeature::ValidatorList2Propagation:
|
||||
return protocol_ >= makeProtocol(2, 2);
|
||||
case ProtocolFeature::LedgerReplay:
|
||||
return ledgerReplayEnabled_;
|
||||
}
|
||||
@@ -892,7 +888,7 @@ PeerImp::doProtocolStart()
|
||||
onReadMessage(error_code(), 0);
|
||||
|
||||
// Send all the validator lists that have been loaded
|
||||
if (inbound_ && supportsFeature(ProtocolFeature::ValidatorListPropagation))
|
||||
if (inbound_)
|
||||
{
|
||||
app_.getValidators().forEachAvailable(
|
||||
[&](std::string const& manifest,
|
||||
@@ -2275,14 +2271,6 @@ PeerImp::onMessage(std::shared_ptr<protocol::TMValidatorList> const& m)
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!supportsFeature(ProtocolFeature::ValidatorListPropagation))
|
||||
{
|
||||
JLOG(pJournal_.debug()) << "ValidatorList: received validator list from peer using "
|
||||
<< "protocol version " << to_string(protocol_)
|
||||
<< " which shouldn't support this feature.";
|
||||
fee_.update(Resource::kFeeUselessData, "unsupported peer");
|
||||
return;
|
||||
}
|
||||
onValidatorListMessage(
|
||||
"ValidatorList", m->manifest(), m->version(), ValidatorList::parseBlobs(*m));
|
||||
}
|
||||
@@ -2299,14 +2287,6 @@ PeerImp::onMessage(std::shared_ptr<protocol::TMValidatorListCollection> const& m
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!supportsFeature(ProtocolFeature::ValidatorList2Propagation))
|
||||
{
|
||||
JLOG(pJournal_.debug()) << "ValidatorListCollection: received validator list from peer "
|
||||
<< "using protocol version " << to_string(protocol_)
|
||||
<< " which shouldn't support this feature.";
|
||||
fee_.update(Resource::kFeeUselessData, "unsupported peer");
|
||||
return;
|
||||
}
|
||||
if (m->version() < 2)
|
||||
{
|
||||
JLOG(pJournal_.debug())
|
||||
|
||||
@@ -26,7 +26,6 @@ namespace xrpl {
|
||||
*/
|
||||
|
||||
constexpr ProtocolVersion const kSupportedProtocolList[]{
|
||||
{2, 1},
|
||||
{2, 2},
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user