1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.shardingsphere.infra.session.connection.transaction;
19
20 import lombok.Getter;
21 import lombok.Setter;
22
23 import java.util.Optional;
24
25
26
27
28 @Getter
29 public final class TransactionConnectionContext implements AutoCloseable {
30
31 private volatile String transactionType;
32
33 private volatile boolean inTransaction;
34
35 @Setter
36 private volatile long beginMills;
37
38 @Setter
39 private volatile boolean exceptionOccur;
40
41 @Setter
42 private volatile String readWriteSplitReplicaRoute;
43
44
45
46
47
48
49 public void beginTransaction(final String transactionType) {
50 this.transactionType = transactionType;
51 inTransaction = true;
52 }
53
54
55
56
57
58
59 public boolean isInDistributedTransaction() {
60 return inTransaction && ("XA".equals(transactionType) || "BASE".equals(transactionType));
61 }
62
63
64
65
66
67
68 public Optional<String> getTransactionType() {
69 return Optional.ofNullable(transactionType);
70 }
71
72
73
74
75
76
77 public Optional<String> getReadWriteSplitReplicaRoute() {
78 return Optional.ofNullable(readWriteSplitReplicaRoute);
79 }
80
81 @Override
82 public void close() {
83 transactionType = null;
84 inTransaction = false;
85 beginMills = 0L;
86 exceptionOccur = false;
87 readWriteSplitReplicaRoute = null;
88 }
89 }