Skip to content

Commit a09e90a

Browse files
authored
Improve DecoratedDistributedTransactionManager and DecoratedTwoPhaseCommitTransactionManager (#2642)
1 parent b20d159 commit a09e90a

6 files changed

+36
-180
lines changed

core/src/main/java/com/scalar/db/common/ActiveTransactionManagedDistributedTransactionManager.java

Lines changed: 3 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,10 @@
66
import com.scalar.db.api.DistributedTransactionManager;
77
import com.scalar.db.api.Get;
88
import com.scalar.db.api.Insert;
9-
import com.scalar.db.api.Isolation;
109
import com.scalar.db.api.Mutation;
1110
import com.scalar.db.api.Put;
1211
import com.scalar.db.api.Result;
1312
import com.scalar.db.api.Scan;
14-
import com.scalar.db.api.SerializableStrategy;
1513
import com.scalar.db.api.Update;
1614
import com.scalar.db.api.Upsert;
1715
import com.scalar.db.common.error.CoreError;
@@ -84,69 +82,9 @@ private void remove(String transactionId) {
8482
}
8583

8684
@Override
87-
public DistributedTransaction begin() throws TransactionException {
88-
return new ActiveTransaction(super.begin());
89-
}
90-
91-
@Override
92-
public DistributedTransaction begin(String txId) throws TransactionException {
93-
return new ActiveTransaction(super.begin(txId));
94-
}
95-
96-
@Override
97-
public DistributedTransaction start() throws TransactionException {
98-
return new ActiveTransaction(super.start());
99-
}
100-
101-
@Override
102-
public DistributedTransaction start(String txId) throws TransactionException {
103-
return new ActiveTransaction(super.start(txId));
104-
}
105-
106-
/** @deprecated As of release 2.4.0. Will be removed in release 4.0.0. */
107-
@Deprecated
108-
@Override
109-
public DistributedTransaction start(Isolation isolation) throws TransactionException {
110-
return new ActiveTransaction(super.start(isolation));
111-
}
112-
113-
/** @deprecated As of release 2.4.0. Will be removed in release 4.0.0. */
114-
@Deprecated
115-
@Override
116-
public DistributedTransaction start(String txId, Isolation isolation)
117-
throws TransactionException {
118-
return new ActiveTransaction(super.start(txId, isolation));
119-
}
120-
121-
/** @deprecated As of release 2.4.0. Will be removed in release 4.0.0. */
122-
@Deprecated
123-
@Override
124-
public DistributedTransaction start(Isolation isolation, SerializableStrategy strategy)
125-
throws TransactionException {
126-
return new ActiveTransaction(super.start(isolation, strategy));
127-
}
128-
129-
/** @deprecated As of release 2.4.0. Will be removed in release 4.0.0. */
130-
@Deprecated
131-
@Override
132-
public DistributedTransaction start(SerializableStrategy strategy) throws TransactionException {
133-
return new ActiveTransaction(super.start(strategy));
134-
}
135-
136-
/** @deprecated As of release 2.4.0. Will be removed in release 4.0.0. */
137-
@Deprecated
138-
@Override
139-
public DistributedTransaction start(String txId, SerializableStrategy strategy)
140-
throws TransactionException {
141-
return new ActiveTransaction(super.start(txId, strategy));
142-
}
143-
144-
/** @deprecated As of release 2.4.0. Will be removed in release 4.0.0. */
145-
@Deprecated
146-
@Override
147-
public DistributedTransaction start(
148-
String txId, Isolation isolation, SerializableStrategy strategy) throws TransactionException {
149-
return new ActiveTransaction(super.start(txId, isolation, strategy));
85+
protected DistributedTransaction decorateTransactionOnBeginOrStart(
86+
DistributedTransaction transaction) throws TransactionException {
87+
return new ActiveTransaction(transaction);
15088
}
15189

15290
@Override

core/src/main/java/com/scalar/db/common/ActiveTransactionManagedTwoPhaseCommitTransactionManager.java

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -85,23 +85,9 @@ private void remove(String transactionId) {
8585
}
8686

8787
@Override
88-
public TwoPhaseCommitTransaction begin() throws TransactionException {
89-
return new ActiveTransaction(super.begin());
90-
}
91-
92-
@Override
93-
public TwoPhaseCommitTransaction begin(String txId) throws TransactionException {
94-
return new ActiveTransaction(super.begin(txId));
95-
}
96-
97-
@Override
98-
public TwoPhaseCommitTransaction start() throws TransactionException {
99-
return new ActiveTransaction(super.start());
100-
}
101-
102-
@Override
103-
public TwoPhaseCommitTransaction start(String txId) throws TransactionException {
104-
return new ActiveTransaction(super.start(txId));
88+
protected TwoPhaseCommitTransaction decorateTransactionOnBeginOrStart(
89+
TwoPhaseCommitTransaction transaction) throws TransactionException {
90+
return new ActiveTransaction(transaction);
10591
}
10692

10793
@Override

core/src/main/java/com/scalar/db/common/DecoratedDistributedTransactionManager.java

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -68,68 +68,73 @@ public Optional<String> getTable() {
6868

6969
@Override
7070
public DistributedTransaction begin() throws TransactionException {
71-
return transactionManager.begin();
71+
return decorateTransactionOnBeginOrStart(transactionManager.begin());
7272
}
7373

7474
@Override
7575
public DistributedTransaction begin(String txId) throws TransactionException {
76-
return transactionManager.begin(txId);
76+
return decorateTransactionOnBeginOrStart(transactionManager.begin(txId));
7777
}
7878

7979
@Override
8080
public DistributedTransaction start() throws TransactionException {
81-
return transactionManager.start();
81+
return decorateTransactionOnBeginOrStart(transactionManager.start());
8282
}
8383

8484
@Override
8585
public DistributedTransaction start(String txId) throws TransactionException {
86-
return transactionManager.start(txId);
86+
return decorateTransactionOnBeginOrStart(transactionManager.start(txId));
8787
}
8888

8989
/** @deprecated As of release 2.4.0. Will be removed in release 4.0.0. */
9090
@Deprecated
9191
@Override
9292
public DistributedTransaction start(Isolation isolation) throws TransactionException {
93-
return transactionManager.start(isolation);
93+
return decorateTransactionOnBeginOrStart(transactionManager.start(isolation));
9494
}
9595

9696
/** @deprecated As of release 2.4.0. Will be removed in release 4.0.0. */
9797
@Deprecated
9898
@Override
9999
public DistributedTransaction start(String txId, Isolation isolation)
100100
throws TransactionException {
101-
return transactionManager.start(txId, isolation);
101+
return decorateTransactionOnBeginOrStart(transactionManager.start(txId, isolation));
102102
}
103103

104104
/** @deprecated As of release 2.4.0. Will be removed in release 4.0.0. */
105105
@Deprecated
106106
@Override
107107
public DistributedTransaction start(Isolation isolation, SerializableStrategy strategy)
108108
throws TransactionException {
109-
return transactionManager.start(isolation, strategy);
109+
return decorateTransactionOnBeginOrStart(transactionManager.start(isolation, strategy));
110110
}
111111

112112
/** @deprecated As of release 2.4.0. Will be removed in release 4.0.0. */
113113
@Deprecated
114114
@Override
115115
public DistributedTransaction start(SerializableStrategy strategy) throws TransactionException {
116-
return transactionManager.start(strategy);
116+
return decorateTransactionOnBeginOrStart(transactionManager.start(strategy));
117117
}
118118

119119
/** @deprecated As of release 2.4.0. Will be removed in release 4.0.0. */
120120
@Deprecated
121121
@Override
122122
public DistributedTransaction start(String txId, SerializableStrategy strategy)
123123
throws TransactionException {
124-
return transactionManager.start(txId, strategy);
124+
return decorateTransactionOnBeginOrStart(transactionManager.start(txId, strategy));
125125
}
126126

127127
/** @deprecated As of release 2.4.0. Will be removed in release 4.0.0. */
128128
@Deprecated
129129
@Override
130130
public DistributedTransaction start(
131131
String txId, Isolation isolation, SerializableStrategy strategy) throws TransactionException {
132-
return transactionManager.start(txId, isolation, strategy);
132+
return decorateTransactionOnBeginOrStart(transactionManager.start(txId, isolation, strategy));
133+
}
134+
135+
protected DistributedTransaction decorateTransactionOnBeginOrStart(
136+
DistributedTransaction transaction) throws TransactionException {
137+
return transaction;
133138
}
134139

135140
@Override

core/src/main/java/com/scalar/db/common/DecoratedTwoPhaseCommitTransactionManager.java

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -68,22 +68,27 @@ public Optional<String> getTable() {
6868

6969
@Override
7070
public TwoPhaseCommitTransaction begin() throws TransactionException {
71-
return transactionManager.begin();
71+
return decorateTransactionOnBeginOrStart(transactionManager.begin());
7272
}
7373

7474
@Override
7575
public TwoPhaseCommitTransaction begin(String txId) throws TransactionException {
76-
return transactionManager.begin(txId);
76+
return decorateTransactionOnBeginOrStart(transactionManager.begin(txId));
7777
}
7878

7979
@Override
8080
public TwoPhaseCommitTransaction start() throws TransactionException {
81-
return transactionManager.start();
81+
return decorateTransactionOnBeginOrStart(transactionManager.start());
8282
}
8383

8484
@Override
8585
public TwoPhaseCommitTransaction start(String txId) throws TransactionException {
86-
return transactionManager.start(txId);
86+
return decorateTransactionOnBeginOrStart(transactionManager.start(txId));
87+
}
88+
89+
protected TwoPhaseCommitTransaction decorateTransactionOnBeginOrStart(
90+
TwoPhaseCommitTransaction transaction) throws TransactionException {
91+
return transaction;
8792
}
8893

8994
@Override

core/src/main/java/com/scalar/db/common/StateManagedDistributedTransactionManager.java

Lines changed: 3 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -6,20 +6,17 @@
66
import com.scalar.db.api.DistributedTransactionManager;
77
import com.scalar.db.api.Get;
88
import com.scalar.db.api.Insert;
9-
import com.scalar.db.api.Isolation;
109
import com.scalar.db.api.Mutation;
1110
import com.scalar.db.api.Put;
1211
import com.scalar.db.api.Result;
1312
import com.scalar.db.api.Scan;
14-
import com.scalar.db.api.SerializableStrategy;
1513
import com.scalar.db.api.Update;
1614
import com.scalar.db.api.Upsert;
1715
import com.scalar.db.common.error.CoreError;
1816
import com.scalar.db.exception.transaction.AbortException;
1917
import com.scalar.db.exception.transaction.CommitException;
2018
import com.scalar.db.exception.transaction.CrudException;
2119
import com.scalar.db.exception.transaction.RollbackException;
22-
import com.scalar.db.exception.transaction.TransactionException;
2320
import com.scalar.db.exception.transaction.UnknownTransactionStatusException;
2421
import java.util.List;
2522
import java.util.Optional;
@@ -33,69 +30,9 @@ public StateManagedDistributedTransactionManager(
3330
}
3431

3532
@Override
36-
public DistributedTransaction begin() throws TransactionException {
37-
return new StateManagedTransaction(super.begin());
38-
}
39-
40-
@Override
41-
public DistributedTransaction begin(String txId) throws TransactionException {
42-
return new StateManagedTransaction(super.begin(txId));
43-
}
44-
45-
@Override
46-
public DistributedTransaction start() throws TransactionException {
47-
return new StateManagedTransaction(super.start());
48-
}
49-
50-
@Override
51-
public DistributedTransaction start(String txId) throws TransactionException {
52-
return new StateManagedTransaction(super.start(txId));
53-
}
54-
55-
/** @deprecated As of release 2.4.0. Will be removed in release 4.0.0. */
56-
@Deprecated
57-
@Override
58-
public DistributedTransaction start(Isolation isolation) throws TransactionException {
59-
return new StateManagedTransaction(super.start(isolation));
60-
}
61-
62-
/** @deprecated As of release 2.4.0. Will be removed in release 4.0.0. */
63-
@Deprecated
64-
@Override
65-
public DistributedTransaction start(String txId, Isolation isolation)
66-
throws TransactionException {
67-
return new StateManagedTransaction(super.start(txId, isolation));
68-
}
69-
70-
/** @deprecated As of release 2.4.0. Will be removed in release 4.0.0. */
71-
@Deprecated
72-
@Override
73-
public DistributedTransaction start(Isolation isolation, SerializableStrategy strategy)
74-
throws TransactionException {
75-
return new StateManagedTransaction(super.start(isolation, strategy));
76-
}
77-
78-
/** @deprecated As of release 2.4.0. Will be removed in release 4.0.0. */
79-
@Deprecated
80-
@Override
81-
public DistributedTransaction start(SerializableStrategy strategy) throws TransactionException {
82-
return new StateManagedTransaction(super.start(strategy));
83-
}
84-
85-
/** @deprecated As of release 2.4.0. Will be removed in release 4.0.0. */
86-
@Deprecated
87-
@Override
88-
public DistributedTransaction start(String txId, SerializableStrategy strategy)
89-
throws TransactionException {
90-
return new StateManagedTransaction(super.start(txId, strategy));
91-
}
92-
93-
/** @deprecated As of release 2.4.0. Will be removed in release 4.0.0. */
94-
@Deprecated
95-
@Override
96-
public DistributedTransaction start(
97-
String txId, Isolation isolation, SerializableStrategy strategy) throws TransactionException {
98-
return new StateManagedTransaction(super.start(txId, isolation, strategy));
33+
protected DistributedTransaction decorateTransactionOnBeginOrStart(
34+
DistributedTransaction transaction) {
35+
return new StateManagedTransaction(transaction);
9936
}
10037

10138
/**

core/src/main/java/com/scalar/db/common/StateManagedTwoPhaseCommitTransactionManager.java

Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
import com.scalar.db.exception.transaction.CrudException;
1919
import com.scalar.db.exception.transaction.PreparationException;
2020
import com.scalar.db.exception.transaction.RollbackException;
21-
import com.scalar.db.exception.transaction.TransactionException;
2221
import com.scalar.db.exception.transaction.UnknownTransactionStatusException;
2322
import com.scalar.db.exception.transaction.ValidationException;
2423
import java.util.List;
@@ -33,23 +32,9 @@ public StateManagedTwoPhaseCommitTransactionManager(
3332
}
3433

3534
@Override
36-
public TwoPhaseCommitTransaction begin() throws TransactionException {
37-
return new StateManagedTransaction(super.begin());
38-
}
39-
40-
@Override
41-
public TwoPhaseCommitTransaction begin(String txId) throws TransactionException {
42-
return new StateManagedTransaction(super.begin(txId));
43-
}
44-
45-
@Override
46-
public TwoPhaseCommitTransaction start() throws TransactionException {
47-
return new StateManagedTransaction(super.start());
48-
}
49-
50-
@Override
51-
public TwoPhaseCommitTransaction start(String txId) throws TransactionException {
52-
return new StateManagedTransaction(super.start(txId));
35+
protected TwoPhaseCommitTransaction decorateTransactionOnBeginOrStart(
36+
TwoPhaseCommitTransaction transaction) {
37+
return new StateManagedTransaction(transaction);
5338
}
5439

5540
/**

0 commit comments

Comments
 (0)