MCPcopy Create free account
hub / github.com/FirebirdSQL/firebird / ~StateWriteGuard

Method ~StateWriteGuard

src/jrd/nbak.cpp:188–207  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

186}
187
188BackupManager::StateWriteGuard::~StateWriteGuard()
189{
190 Database* const dbb = m_tdbb->getDatabase();
191 Jrd::Attachment* const att = m_tdbb->getAttachment();
192
193 // It is important to set state into nbak_state_unknown *before* release of state lock,
194 // otherwise someone could acquire state lock, fetch and modify some page before state will
195 // be set into unknown. But dirty page can't be written when backup state is unknown
196 // because write target (database or delta) is also unknown.
197
198 if (!m_success)
199 {
200 NBAK_TRACE( ("invalidate state") );
201 dbb->dbb_backup_manager->setState(Ods::hdr_nbak_unknown);
202 }
203
204 releaseHeader();
205 dbb->dbb_backup_manager->unlockStateWrite(m_tdbb);
206 dbb->dbb_backup_manager->localStateLock.endWrite();
207}
208
209void BackupManager::StateWriteGuard::releaseHeader()
210{

Callers

nothing calls this directly

Calls 5

getDatabaseMethod · 0.80
unlockStateWriteMethod · 0.80
endWriteMethod · 0.80
getAttachmentMethod · 0.45
setStateMethod · 0.45

Tested by

no test coverage detected