[master] XA resume and then Query free routed will failed with NOT_SUPPORTED error
This commit is contained in:
parent
f41110ff1b
commit
8d8c7bd53d
@ -344,6 +344,7 @@ void ObTxDesc::reset()
|
||||
state_ = State::INVL;
|
||||
|
||||
flags_.v_ = 0;
|
||||
flags_.SHADOW_ = true;
|
||||
state_change_flags_.reset();
|
||||
|
||||
alloc_ts_ = -1;
|
||||
@ -1284,6 +1285,7 @@ int ObTxDescMgr::add(ObTxDesc &tx_desc)
|
||||
if (OB_FAIL(ret) && tx_id.is_valid()) {
|
||||
tx_desc.reset_tx_id();
|
||||
}
|
||||
OX(tx_desc.flags_.SHADOW_ = false);
|
||||
TRANS_LOG(TRACE, "txDescMgr.register trans", K(ret), K(tx_id), K(tx_desc));
|
||||
return ret;
|
||||
}
|
||||
@ -1313,6 +1315,7 @@ int ObTxDescMgr::add_with_txid(const ObTransID &tx_id, ObTxDesc &tx_desc)
|
||||
}
|
||||
// if fail revert tx_desc.tx_id_ member
|
||||
if (OB_FAIL(ret) && !desc_tx_id.is_valid()) { tx_desc.reset_tx_id(); }
|
||||
if (OB_SUCC(ret) && tx_desc.flags_.SHADOW_) { tx_desc.flags_.SHADOW_ = false; }
|
||||
}
|
||||
TRANS_LOG(INFO, "txDescMgr.register trans with txid", K(ret), K(tx_id),
|
||||
K(map_.alloc_cnt()));
|
||||
@ -1349,6 +1352,7 @@ int ObTxDescMgr::remove(ObTxDesc &tx)
|
||||
TRANS_LOG(TRACE, "txDescMgr.unregister trans:", K(tx_id));
|
||||
OV(inited_, OB_NOT_INIT);
|
||||
OX(map_.del(tx_id, &tx));
|
||||
OX(tx.flags_.SHADOW_ = true);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@ -371,7 +371,7 @@ protected:
|
||||
struct
|
||||
{
|
||||
bool EXPLICIT_:1; // txn is explicted start
|
||||
bool SHADOW_:1; // this tx desc is a shadow copy
|
||||
bool SHADOW_:1; // this tx desc is a shadow copy, is not registered with tx_desc_mgr
|
||||
bool REPLICA_:1; // a replica of primary/original, its state is transient, without whole lifecyle
|
||||
bool TRACING_:1; // tracing the Tx
|
||||
bool INTERRUPTED_: 1; // a single for blocking operation
|
||||
|
@ -837,7 +837,7 @@ int ObTransService::create_implicit_savepoint(ObTxDesc &tx,
|
||||
} else if (tx.state_ >= ObTxDesc::State::IN_TERMINATE) {
|
||||
ret = OB_TRANS_INVALID_STATE;
|
||||
TRANS_LOG(WARN, "create implicit savepoint but tx terminated", K(ret), K(tx));
|
||||
} else if (tx.flags_.SHADOW_) {
|
||||
} else if (tx.flags_.SHADOW_ && tx.get_tx_id().is_valid()) {
|
||||
ret = create_local_implicit_savepoint_(tx, savepoint);
|
||||
} else {
|
||||
ret = create_global_implicit_savepoint_(tx, tx_param, savepoint, release);
|
||||
|
Loading…
x
Reference in New Issue
Block a user