Skip to content

Commit 9a69d24

Browse files
committed
Correction
1 parent 1a2a3c7 commit 9a69d24

File tree

2 files changed

+6
-8
lines changed

2 files changed

+6
-8
lines changed

src/jrd/tpc.cpp

+5-7
Original file line numberDiff line numberDiff line change
@@ -209,7 +209,7 @@ CommitNumber TipCache::cacheState(TraNumber number)
209209
ULONG offset = number % m_transactionsPerBlock;
210210

211211
Sync sync(&m_sync_status, FB_FUNCTION);
212-
TransactionStatusBlock* block = getTransactionStatusBlock(sync, blockNumber);
212+
TransactionStatusBlock* block = getTransactionStatusBlock(header, blockNumber, sync);
213213

214214
// This should not really happen ever
215215
fb_assert(block);
@@ -365,7 +365,7 @@ void TipCache::mapInventoryPages(GlobalTpcHeader* header)
365365
for (; blockNumber <= lastNumber; blockNumber++)
366366
{
367367
Sync sync(&m_sync_status, FB_FUNCTION);
368-
getTransactionStatusBlock(sync, blockNumber);
368+
getTransactionStatusBlock(header, blockNumber, sync);
369369
}
370370
}
371371

@@ -500,7 +500,7 @@ TipCache::TransactionStatusBlock* TipCache::createTransactionStatusBlock(ULONG b
500500
return blockData->memory->getHeader();
501501
}
502502

503-
TipCache::TransactionStatusBlock* TipCache::getTransactionStatusBlock(Sync& sync, TpcBlockNumber blockNumber)
503+
TipCache::TransactionStatusBlock* TipCache::getTransactionStatusBlock(GlobalTpcHeader* header, TpcBlockNumber blockNumber, Sync& sync)
504504
{
505505
fb_assert(sync.getState() == SYNC_NONE);
506506

@@ -523,8 +523,6 @@ TipCache::TransactionStatusBlock* TipCache::getTransactionStatusBlock(Sync& sync
523523
block = acc.current()->memory->getHeader();
524524
else
525525
{
526-
GlobalTpcHeader* header = m_tpcHeader->getHeader();
527-
528526
// Check if block might be too old to be created.
529527
TraNumber oldest = header->oldest_transaction.load(std::memory_order_relaxed);
530528
if (blockNumber >= oldest / m_transactionsPerBlock)
@@ -563,7 +561,7 @@ TraNumber TipCache::findStates(TraNumber minNumber, TraNumber maxNumber, ULONG m
563561

564562
const TpcBlockNumber blockNumber = tran / m_transactionsPerBlock;
565563
transOffset = tran % m_transactionsPerBlock;
566-
statusBlock = getTransactionStatusBlock(sync, blockNumber);
564+
statusBlock = getTransactionStatusBlock(header, blockNumber, sync);
567565

568566
if (sync.getState() == SYNC_EXCLUSIVE)
569567
sync.downgrade(SYNC_SHARED);
@@ -616,7 +614,7 @@ CommitNumber TipCache::setState(TraNumber number, int state)
616614
ULONG offset = number % m_transactionsPerBlock;
617615

618616
Sync sync(&m_sync_status, FB_FUNCTION);
619-
TransactionStatusBlock* block = getTransactionStatusBlock(sync, blockNumber);
617+
TransactionStatusBlock* block = getTransactionStatusBlock(header, blockNumber, sync);
620618

621619
// This should not really happen
622620
if (!block)

src/jrd/tpc_proto.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -313,7 +313,7 @@ class TipCache
313313
// Returns NULL if requested block is too old and is no longer cached.
314314
// Sync should be bound to m_sync_status. On enter, sync must be unlocked.
315315
// If returns not NULL then sync remains locked.
316-
TransactionStatusBlock* getTransactionStatusBlock(Firebird::Sync& sync, TpcBlockNumber blockNumber);
316+
TransactionStatusBlock* getTransactionStatusBlock(GlobalTpcHeader* header, TpcBlockNumber blockNumber, Firebird::Sync& sync);
317317

318318
// Map shared memory for a block.
319319
// Assume exclusive lock of m_sync_status.

0 commit comments

Comments
 (0)