fix: Assorted Oracle fixes (#6570)

This commit is contained in:
Mayukha Vadari
2026-03-22 11:08:18 -07:00
committed by Bart
parent 98bcb570f7
commit 4e5a3f4944
2 changed files with 9 additions and 8 deletions

View File

@@ -116,7 +116,7 @@ SetOracle::preclaim(PreclaimContext const& ctx)
return !v || *v == (*sle)[field];
};
std::uint32_t adjustReserve = 0;
std::int8_t adjustReserve = 0;
if (sle)
{
// update

View File

@@ -248,6 +248,12 @@ doGetAggregatePrice(RPC::JsonContext& context)
return result;
}
// Get the ledger
std::shared_ptr<ReadView const> ledger;
result = RPC::lookupLedger(ledger, context);
if (!ledger)
return result; // LCOV_EXCL_LINE
// Collect the dataset into bimap keyed by lastUpdateTime and
// STAmount (Number is int64 and price is uint64)
Prices prices;
@@ -270,11 +276,6 @@ doGetAggregatePrice(RPC::JsonContext& context)
return result;
}
std::shared_ptr<ReadView const> ledger;
result = RPC::lookupLedger(ledger, context);
if (!ledger)
return result; // LCOV_EXCL_LINE
auto const sle = ledger->read(keylet::oracle(*account, *documentID));
iteratePriceData(context, sle, [&](STObject const& node) {
auto const& series = node.getFieldArray(sfPriceDataSeries);
@@ -316,8 +317,8 @@ doGetAggregatePrice(RPC::JsonContext& context)
if (auto const threshold = std::get<std::uint32_t>(timeThreshold))
{
// threshold defines an acceptable range {max,min} of lastUpdateTime as
// {latestTime, latestTime - threshold}, the prices with lastUpdateTime
// greater than (latestTime - threshold) are erased.
// {latestTime, latestTime - threshold}. Prices with lastUpdateTime
// less than (latestTime - threshold) are erased (outdated prices).
auto const oldestTime = prices.left.rbegin()->first;
auto const upperBound =
latestTime > threshold ? (latestTime - threshold) : oldestTime;