alibaba / alibaba/neug

[Tracking] Refactor UpdateTransaction

Open
#86 0 comments 0 reactions 1 assignee Claimed by @zhanglei1949 View on GitHub
store
Dominant language
C++
Stars
157
Forks
32
Avg merge
1d 11h
Merged PRs (30d)
99

Description

Currently UpdateTransaction holds a global lock and blocks any other insertion/read since the UpdateTransaction starts.
However, it is possible to split UpdateTransaction into two stages.
First stage, UpdateTransaction maintains all changes copy on write, which will not effect the view for snapshots before this timestamp. So both insert transaction and read transaction could be parallelized with UpdateTransaction.
Second stage, UpdateTransaction begins to commit. At this time, a global lock is acquired, and no other transactions are allowed.

In addition, the transaction system currently lacks rollback capability when errors occur during the commit phase. This leads to partial commits that violate transaction atomicity.

Two specific scenarios are affected:

Insert transaction: Partial vertex insertions cannot be rolled back when a subsequent insert fails.
Update transaction: Schema drop operations cannot be undone once data is deleted, because bulk operations (drop/copy) lack WAL support.
See sub-issues #315 and #316 for detailed descriptions of each problem.

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.