[master] repeated rollback savepoint on deleted ls will caused tx aborted
This commit is contained in:
@ -561,7 +561,7 @@ int ObTxDesc::update_part_(ObTxPart &a, const bool append)
|
|||||||
if (p.id_ == a.id_) {
|
if (p.id_ == a.id_) {
|
||||||
hit = true;
|
hit = true;
|
||||||
if (p.epoch_ == ObTxPart::EPOCH_DEAD) {
|
if (p.epoch_ == ObTxPart::EPOCH_DEAD) {
|
||||||
if (a.epoch_ != ObTxPart::EPOCH_DEAD) {
|
if (a.epoch_ > 0) { // unexpected: from dead to alive
|
||||||
flags_.PART_EPOCH_MISMATCH_ = true;
|
flags_.PART_EPOCH_MISMATCH_ = true;
|
||||||
ret = OB_TRANS_NEED_ROLLBACK;
|
ret = OB_TRANS_NEED_ROLLBACK;
|
||||||
TRANS_LOG(WARN, "epoch missmatch", K(ret), K(a), K(p));
|
TRANS_LOG(WARN, "epoch missmatch", K(ret), K(a), K(p));
|
||||||
@ -635,7 +635,7 @@ int ObTxDesc::update_parts(const share::ObLSArray &list)
|
|||||||
auto &it = list[i];
|
auto &it = list[i];
|
||||||
ObTxPart n;
|
ObTxPart n;
|
||||||
n.id_ = it;
|
n.id_ = it;
|
||||||
n.epoch_ = -1;
|
n.epoch_ = ObTxPart::EPOCH_UNKNOWN;
|
||||||
n.first_scn_ = INT64_MAX;
|
n.first_scn_ = INT64_MAX;
|
||||||
n.last_scn_ = INT64_MAX;
|
n.last_scn_ = INT64_MAX;
|
||||||
if (OB_TMP_FAIL(update_part_(n))) {
|
if (OB_TMP_FAIL(update_part_(n))) {
|
||||||
|
|||||||
@ -178,6 +178,7 @@ struct ObTxParam
|
|||||||
|
|
||||||
struct ObTxPart
|
struct ObTxPart
|
||||||
{
|
{
|
||||||
|
static const int64_t EPOCH_UNKNOWN = -1;
|
||||||
static const int64_t EPOCH_DEAD = -2;
|
static const int64_t EPOCH_DEAD = -2;
|
||||||
ObTxPart();
|
ObTxPart();
|
||||||
~ObTxPart();
|
~ObTxPart();
|
||||||
|
|||||||
Reference in New Issue
Block a user