Coins: Add kHeader to CDBBatch::size_estimate

The initialization of the manual `size_estimate` in `CDBBatch::Clear()` is corrected from `0` to `kHeader` (LevelDB's fixed batch header size).
This aligns the manual estimate with LevelDB's actual size immediately after clearing, fixing discrepancies that would otherwise be caught by tests in the next commit (e.g., `coins_tests`, `validation_chainstatemanager_tests`).
This commit is contained in:
Lőrinc 2025-04-01 15:46:23 +02:00
parent 0dc74c92c0
commit 751077c6e2
2 changed files with 8 additions and 2 deletions

View file

@ -158,14 +158,18 @@ struct CDBBatch::WriteBatchImpl {
CDBBatch::CDBBatch(const CDBWrapper& _parent) CDBBatch::CDBBatch(const CDBWrapper& _parent)
: parent{_parent}, : parent{_parent},
m_impl_batch{std::make_unique<CDBBatch::WriteBatchImpl>()} {}; m_impl_batch{std::make_unique<CDBBatch::WriteBatchImpl>()}
{
Clear();
};
CDBBatch::~CDBBatch() = default; CDBBatch::~CDBBatch() = default;
void CDBBatch::Clear() void CDBBatch::Clear()
{ {
m_impl_batch->batch.Clear(); m_impl_batch->batch.Clear();
size_estimate = 0; assert(m_impl_batch->batch.ApproximateSize() == kHeader);
size_estimate = kHeader; // TODO remove
} }
void CDBBatch::WriteImpl(std::span<const std::byte> key, DataStream& ssValue) void CDBBatch::WriteImpl(std::span<const std::byte> key, DataStream& ssValue)

View file

@ -75,6 +75,8 @@ class CDBBatch
friend class CDBWrapper; friend class CDBWrapper;
private: private:
static constexpr size_t kHeader{12}; // See: src/leveldb/db/write_batch.cc#L27
const CDBWrapper &parent; const CDBWrapper &parent;
struct WriteBatchImpl; struct WriteBatchImpl;