mirror of
https://github.com/XRPLF/rippled.git
synced 2025-12-06 17:27:55 +00:00
Improve shard concurrency:
* Reduce lock scope on all public functions * Use TaskQueue to process shard finalization in separate thread * Store shard last ledger hash and other info in backend * Use temp SQLite DB versus control file when acquiring * Remove boost serialization from cmake files
This commit is contained in:
committed by
manojsdoshi
parent
f00f263852
commit
cc452dfa9b
@@ -19,8 +19,6 @@
|
||||
|
||||
#include <ripple/basics/RangeSet.h>
|
||||
#include <ripple/beast/unit_test.h>
|
||||
#include <boost/archive/binary_iarchive.hpp>
|
||||
#include <boost/archive/binary_oarchive.hpp>
|
||||
|
||||
namespace ripple
|
||||
{
|
||||
@@ -78,39 +76,73 @@ public:
|
||||
}
|
||||
|
||||
void
|
||||
testSerialization()
|
||||
testFromString()
|
||||
{
|
||||
testcase("fromString");
|
||||
|
||||
auto works = [](RangeSet<std::uint32_t> const & orig)
|
||||
{
|
||||
std::stringstream ss;
|
||||
boost::archive::binary_oarchive oa(ss);
|
||||
oa << orig;
|
||||
RangeSet<std::uint32_t> set;
|
||||
|
||||
boost::archive::binary_iarchive ia(ss);
|
||||
RangeSet<std::uint32_t> deser;
|
||||
ia >> deser;
|
||||
BEAST_EXPECT(!from_string(set, ""));
|
||||
BEAST_EXPECT(boost::icl::length(set) == 0);
|
||||
|
||||
return orig == deser;
|
||||
};
|
||||
BEAST_EXPECT(!from_string(set, "#"));
|
||||
BEAST_EXPECT(boost::icl::length(set) == 0);
|
||||
|
||||
RangeSet<std::uint32_t> rs;
|
||||
BEAST_EXPECT(!from_string(set, ","));
|
||||
BEAST_EXPECT(boost::icl::length(set) == 0);
|
||||
|
||||
BEAST_EXPECT(works(rs));
|
||||
BEAST_EXPECT(!from_string(set, ",-"));
|
||||
BEAST_EXPECT(boost::icl::length(set) == 0);
|
||||
|
||||
rs.insert(3);
|
||||
BEAST_EXPECT(works(rs));
|
||||
BEAST_EXPECT(!from_string(set, "1,,2"));
|
||||
BEAST_EXPECT(boost::icl::length(set) == 0);
|
||||
|
||||
rs.insert(range(7u, 10u));
|
||||
BEAST_EXPECT(works(rs));
|
||||
set.clear();
|
||||
BEAST_EXPECT(from_string(set, "1"));
|
||||
BEAST_EXPECT(boost::icl::length(set) == 1);
|
||||
BEAST_EXPECT(boost::icl::first(set) == 1);
|
||||
|
||||
set.clear();
|
||||
BEAST_EXPECT(from_string(set, "1,1"));
|
||||
BEAST_EXPECT(boost::icl::length(set) == 1);
|
||||
BEAST_EXPECT(boost::icl::first(set) == 1);
|
||||
|
||||
set.clear();
|
||||
BEAST_EXPECT(from_string(set, "1-1"));
|
||||
BEAST_EXPECT(boost::icl::length(set) == 1);
|
||||
BEAST_EXPECT(boost::icl::first(set) == 1);
|
||||
|
||||
set.clear();
|
||||
BEAST_EXPECT(from_string(set, "1,4-6"));
|
||||
BEAST_EXPECT(boost::icl::length(set) == 4);
|
||||
BEAST_EXPECT(boost::icl::first(set) == 1);
|
||||
BEAST_EXPECT(!boost::icl::contains(set, 2));
|
||||
BEAST_EXPECT(!boost::icl::contains(set, 3));
|
||||
BEAST_EXPECT(boost::icl::contains(set, 4));
|
||||
BEAST_EXPECT(boost::icl::contains(set, 5));
|
||||
BEAST_EXPECT(boost::icl::last(set) == 6);
|
||||
|
||||
set.clear();
|
||||
BEAST_EXPECT(from_string(set, "1-2,4-6"));
|
||||
BEAST_EXPECT(boost::icl::length(set) == 5);
|
||||
BEAST_EXPECT(boost::icl::first(set) == 1);
|
||||
BEAST_EXPECT(boost::icl::contains(set, 2));
|
||||
BEAST_EXPECT(boost::icl::contains(set, 4));
|
||||
BEAST_EXPECT(boost::icl::last(set) == 6);
|
||||
|
||||
set.clear();
|
||||
BEAST_EXPECT(from_string(set, "1-2,6"));
|
||||
BEAST_EXPECT(boost::icl::length(set) == 3);
|
||||
BEAST_EXPECT(boost::icl::first(set) == 1);
|
||||
BEAST_EXPECT(boost::icl::contains(set, 2));
|
||||
BEAST_EXPECT(boost::icl::last(set) == 6);
|
||||
}
|
||||
void
|
||||
run() override
|
||||
{
|
||||
testPrevMissing();
|
||||
testToString();
|
||||
testSerialization();
|
||||
testFromString();
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -109,7 +109,7 @@ public:
|
||||
std::unique_ptr<perf::PerfLog> perfLog =
|
||||
std::make_unique<perf::PerfLogTest>();
|
||||
|
||||
Workers w(cb, *perfLog, "Test", tc1);
|
||||
Workers w(cb, perfLog.get(), "Test", tc1);
|
||||
BEAST_EXPECT(w.getNumberOfThreads() == tc1);
|
||||
|
||||
auto testForThreadCount = [this, &cb, &w] (int const threadCount)
|
||||
|
||||
@@ -165,7 +165,7 @@ public:
|
||||
std::unique_ptr<Database> db =
|
||||
Manager::instance().make_Database(
|
||||
"test", scheduler, 2, parent, nodeParams, journal_);
|
||||
BEAST_EXPECT(db->earliestSeq() == XRP_LEDGER_EARLIEST_SEQ);
|
||||
BEAST_EXPECT(db->earliestLedgerSeq() == XRP_LEDGER_EARLIEST_SEQ);
|
||||
}
|
||||
|
||||
// Set an invalid earliest ledger sequence
|
||||
@@ -190,7 +190,7 @@ public:
|
||||
"test", scheduler, 2, parent, nodeParams, journal_);
|
||||
|
||||
// Verify database uses the earliest ledger sequence setting
|
||||
BEAST_EXPECT(db->earliestSeq() == 1);
|
||||
BEAST_EXPECT(db->earliestLedgerSeq() == 1);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -195,7 +195,7 @@ public:
|
||||
db.store (object->getType (),
|
||||
std::move (data),
|
||||
object->getHash (),
|
||||
db.earliestSeq());
|
||||
db.earliestLedgerSeq());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -2998,10 +2998,9 @@ static RPCCallTestData const rpcCallTestArray [] =
|
||||
})"
|
||||
},
|
||||
{
|
||||
"download_shard: novalidate.", __LINE__,
|
||||
"download_shard:", __LINE__,
|
||||
{
|
||||
"download_shard",
|
||||
"novalidate",
|
||||
"20",
|
||||
"url_NotValidated",
|
||||
},
|
||||
@@ -3016,8 +3015,7 @@ static RPCCallTestData const rpcCallTestArray [] =
|
||||
"index" : 20,
|
||||
"url" : "url_NotValidated"
|
||||
}
|
||||
],
|
||||
"validate" : false
|
||||
]
|
||||
}
|
||||
]
|
||||
})"
|
||||
@@ -3064,10 +3062,9 @@ static RPCCallTestData const rpcCallTestArray [] =
|
||||
})"
|
||||
},
|
||||
{
|
||||
"download_shard: novalidate many shards.", __LINE__,
|
||||
"download_shard: many shards.", __LINE__,
|
||||
{
|
||||
"download_shard",
|
||||
"novalidate",
|
||||
"2000000",
|
||||
"url_NotValidated0",
|
||||
"2000001",
|
||||
@@ -3106,8 +3103,7 @@ static RPCCallTestData const rpcCallTestArray [] =
|
||||
"index" : 2000004,
|
||||
"url" : "url_NotValidated4"
|
||||
}
|
||||
],
|
||||
"validate" : false
|
||||
]
|
||||
}
|
||||
]
|
||||
})"
|
||||
@@ -3160,8 +3156,7 @@ static RPCCallTestData const rpcCallTestArray [] =
|
||||
"index" : 20,
|
||||
"url" : "url_NotValidated"
|
||||
}
|
||||
],
|
||||
"validate" : false
|
||||
]
|
||||
}
|
||||
]
|
||||
})"
|
||||
|
||||
Reference in New Issue
Block a user