本文整理汇总了C++中SharedDatabase::recoverOnline方法的典型用法代码示例。如果您正苦于以下问题:C++ SharedDatabase::recoverOnline方法的具体用法?C++ SharedDatabase::recoverOnline怎么用?C++ SharedDatabase::recoverOnline使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SharedDatabase
的用法示例。
在下文中一共展示了SharedDatabase::recoverOnline方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: visit
void CmdInterpreter::visit(ProxyCmdRollback &cmd)
{
TxnHandle *pTxnHandle = getTxnHandle(cmd.getTxnHandle());
SharedDatabase pDb = pTxnHandle->pDb;
// block checkpoints during this method
bool txnBlocksCheckpoint = !pTxnHandle->readOnly && pDb->shouldForceTxns();
SXMutexSharedGuard actionMutexGuard(
pDb->getCheckpointThread()->getActionMutex());
if (pDb->areSnapshotsEnabled()) {
SnapshotRandomAllocationSegment *pSegment =
SegmentFactory::dynamicCast<SnapshotRandomAllocationSegment *>(
pTxnHandle->pSnapshotSegment);
pSegment->rollbackChanges();
}
if (cmd.getSvptHandle()) {
SavepointId svptId = getSavepointId(cmd.getSvptHandle());
pTxnHandle->pTxn->rollback(&svptId);
} else {
pTxnHandle->pTxn->rollback();
deleteAndNullify(pTxnHandle);
if (txnBlocksCheckpoint && !pDb->areSnapshotsEnabled()) {
// Implement rollback by simulating crash recovery,
// reverting all pages modified by transaction. No need
// to do this when snapshots are in use because no permanent
// pages were modified.
pDb->recoverOnline();
}
}
}