From 0623a40f0281a6084d9764e62922dc976e383d09 Mon Sep 17 00:00:00 2001 From: Edward Hennis Date: Wed, 12 Jan 2022 10:53:34 -0500 Subject: [PATCH] Refactor to fix levelization: * Remove Application & Database dependency in PerfLog. Replace it with a callback passed into the constructor. * Fixes the circular dependency between ripple/nodestore and ripple/basics --- Builds/CMake/RippledCore.cmake | 6 +++++- Builds/levelization/README.md | 13 +++++++------ Builds/levelization/results/loops.txt | 6 ------ Builds/levelization/results/ordering.txt | 9 +++++++++ src/ripple/app/main/Application.cpp | 2 -- src/ripple/{basics => perflog}/impl/PerfLogImp.cpp | 3 ++- src/ripple/{basics => perflog}/impl/PerfLogImp.h | 0 7 files changed, 23 insertions(+), 16 deletions(-) rename src/ripple/{basics => perflog}/impl/PerfLogImp.cpp (99%) rename src/ripple/{basics => perflog}/impl/PerfLogImp.h (100%) diff --git a/Builds/CMake/RippledCore.cmake b/Builds/CMake/RippledCore.cmake index e8fc5327d..2d6daf47a 100644 --- a/Builds/CMake/RippledCore.cmake +++ b/Builds/CMake/RippledCore.cmake @@ -442,7 +442,6 @@ target_sources (rippled PRIVATE #]===============================] src/ripple/basics/impl/Archive.cpp src/ripple/basics/impl/BasicConfig.cpp - src/ripple/basics/impl/PerfLogImp.cpp src/ripple/basics/impl/ResolverAsio.cpp src/ripple/basics/impl/UptimeClock.cpp src/ripple/basics/impl/make_SSLContext.cpp @@ -640,6 +639,11 @@ target_sources (rippled PRIVATE src/ripple/rpc/impl/ShardVerificationScheduler.cpp src/ripple/rpc/impl/Status.cpp src/ripple/rpc/impl/TransactionSign.cpp + #[===============================[ + main sources: + subdir: perflog + #]===============================] + src/ripple/perflog/impl/PerfLogImp.cpp #[===============================[ main sources: diff --git a/Builds/levelization/README.md b/Builds/levelization/README.md index ef5aa378e..4ff3a5423 100644 --- a/Builds/levelization/README.md +++ b/Builds/levelization/README.md @@ -36,12 +36,13 @@ listed later. | 07 | ripple/shamap ripple/overlay | 08 | ripple/app | 09 | ripple/rpc -| 10 | test/jtx test/beast test/csf -| 11 | test/unit_test -| 12 | test/crypto test/conditions test/json test/resource test/shamap test/peerfinder test/basics test/overlay -| 13 | test -| 14 | test/net test/protocol test/ledger test/consensus test/core test/server test/nodestore -| 15 | test/rpc test/app +| 10 | ripple/perflog +| 11 | test/jtx test/beast test/csf +| 12 | test/unit_test +| 13 | test/crypto test/conditions test/json test/resource test/shamap test/peerfinder test/basics test/overlay +| 14 | test +| 15 | test/net test/protocol test/ledger test/consensus test/core test/server test/nodestore +| 16 | test/rpc test/app (Note that `test` levelization is *much* less important and *much* less strictly enforced than `ripple` levelization, other than the requirement diff --git a/Builds/levelization/results/loops.txt b/Builds/levelization/results/loops.txt index c6c561721..d1838c55c 100644 --- a/Builds/levelization/results/loops.txt +++ b/Builds/levelization/results/loops.txt @@ -28,15 +28,9 @@ Loop: ripple.basics ripple.core Loop: ripple.basics ripple.json ripple.json ~= ripple.basics -Loop: ripple.basics ripple.nodestore - ripple.nodestore > ripple.basics - Loop: ripple.basics ripple.protocol ripple.protocol > ripple.basics -Loop: ripple.basics ripple.rpc - ripple.rpc > ripple.basics - Loop: ripple.core ripple.net ripple.net > ripple.core diff --git a/Builds/levelization/results/ordering.txt b/Builds/levelization/results/ordering.txt index 65281daad..ed6b4e57c 100644 --- a/Builds/levelization/results/ordering.txt +++ b/Builds/levelization/results/ordering.txt @@ -29,6 +29,7 @@ ripple.net > ripple.beast ripple.net > ripple.json ripple.net > ripple.protocol ripple.net > ripple.resource +ripple.nodestore > ripple.basics ripple.nodestore > ripple.beast ripple.nodestore > ripple.core ripple.nodestore > ripple.json @@ -46,6 +47,13 @@ ripple.peerfinder > ripple.basics ripple.peerfinder > ripple.beast ripple.peerfinder > ripple.core ripple.peerfinder > ripple.protocol +ripple.perflog > ripple.basics +ripple.perflog > ripple.beast +ripple.perflog > ripple.core +ripple.perflog > ripple.json +ripple.perflog > ripple.nodestore +ripple.perflog > ripple.protocol +ripple.perflog > ripple.rpc ripple.protocol > ripple.beast ripple.protocol > ripple.crypto ripple.protocol > ripple.json @@ -53,6 +61,7 @@ ripple.resource > ripple.basics ripple.resource > ripple.beast ripple.resource > ripple.json ripple.resource > ripple.protocol +ripple.rpc > ripple.basics ripple.rpc > ripple.beast ripple.rpc > ripple.core ripple.rpc > ripple.crypto diff --git a/src/ripple/app/main/Application.cpp b/src/ripple/app/main/Application.cpp index ac0b6c947..933c49391 100644 --- a/src/ripple/app/main/Application.cpp +++ b/src/ripple/app/main/Application.cpp @@ -1339,8 +1339,6 @@ ApplicationImp::setup() { // Fall back to syncing from the network, such as // when there's no existing data. - if (startUp == Config::NETWORK && !config_->standalone()) - m_networkOPs->setNeedNetworkLedger(); startGenesisLedger(); } else diff --git a/src/ripple/basics/impl/PerfLogImp.cpp b/src/ripple/perflog/impl/PerfLogImp.cpp similarity index 99% rename from src/ripple/basics/impl/PerfLogImp.cpp rename to src/ripple/perflog/impl/PerfLogImp.cpp index 17d2242ec..db5a188fc 100644 --- a/src/ripple/basics/impl/PerfLogImp.cpp +++ b/src/ripple/perflog/impl/PerfLogImp.cpp @@ -17,8 +17,9 @@ */ //============================================================================== +#include + #include -#include #include #include #include diff --git a/src/ripple/basics/impl/PerfLogImp.h b/src/ripple/perflog/impl/PerfLogImp.h similarity index 100% rename from src/ripple/basics/impl/PerfLogImp.h rename to src/ripple/perflog/impl/PerfLogImp.h