Project

General

Profile

Rados - multi-object transaction support » History » Version 5

Li Wang, 06/15/2015 09:28 AM

1 1 Li Wang
h1. Multi-object transaction support
2 2 Li Wang
3
*Summary*
4
This is for multi-object transaction support.
5
6
*Owners*
7
8
Li Wang (Ubuntukylin)
9 3 Li Wang
Yunchuan Wen (Ubuntukylin)
10 2 Li Wang
Name
11
12
*Interested Parties*
13
If you are interested in contributing to this blueprint, or want to be a "speaker" during the Summit session, list your name here.
14
Name (Affiliation)
15
Name (Affiliation)
16
Name
17
18
*Current Status*
19
Please describe the current status of Ceph as it relates to this blueprint.  Is there something that this replaces?  Are there current features that are related?
20
21
*Detailed Description*
22 5 Li Wang
(1) Allow client to define the following struct, 
23 4 Li Wang
struct MultiObjectTransaction {
24
 map<hobject_t, ObjectWriteOperation> object_ops;
25
 hobject_t master;
26 1 Li Wang
};
27 5 Li Wang
based on this, client could send a group of ops through MOSDOp to the PG coressponding to master object, call it master PG
28
29
(2) Master PG receive the MOSDOp from client, extract the ObjectWriteOperations on objects belonging to different PGs, and them to corresponding PGs, call them slave PGs
30
31
(3) Slave PG receive MOSDOp from master, if there are pending conventional single-object transactions share
32
the operation on the same object, wait until them finished; If there are pending multi-object transactions share the operation on the same object, return EAGAIN (we can not wait here, otherwise may dead lock); Otherwise, contruct the transaction in the conventional way, return master PG PREPARE_ACK, if error occured,
33
for example, a read then comparation failed, then return error number
34
35
36
37 2 Li Wang
38
*Work items*
39
This section should contain a list of work tasks created by this blueprint.  Please include engineering tasks as well as related build/release and documentation work.  If this blueprint requires cleanup of deprecated features, please list those tasks as well.
40
41
*Coding tasks*
42
Task 1
43
Task 2
44
Task 3
45
46
*Build / release tasks*
47
Task 1
48
Task 2
49
Task 3
50
51
*Documentation tasks*
52
Task 1
53
Task 2
54
Task 3
55
56
*Deprecation tasks*
57
Task 1
58
Task 2
59
Task 3