Skip to content

Commit e056ea4

Browse files
committed
Merge branch 'master' into 1.0.0.M5
2 parents 723230c + 1cd9cf8 commit e056ea4

File tree

4 files changed

+74
-70
lines changed

4 files changed

+74
-70
lines changed

ddal-sequence/src/main/java/org/hellojavaer/ddal/sequence/DatabaseSequenceRangeGetter.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ public void init() {
192192
public SequenceRange get(String schemaName, String tableName, int step) throws Exception {
193193
init();
194194
int rows = 0;
195-
SequenceRange idRange = null;
195+
SequenceRange sequenceRange = null;
196196
Connection connection = this.connection;
197197
PreparedStatement selectStatement = null;
198198
PreparedStatement updateStatement = null;
@@ -231,17 +231,17 @@ public SequenceRange get(String schemaName, String tableName, int step) throws E
231231
}
232232
version = ((Number) selectResult.getLong(6)).longValue();
233233
} else {
234-
throw new NoAvailableSequenceRangeFoundException("No available id rang was found for schemaName:'"
234+
throw new NoAvailableSequenceRangeFoundException("No available sequence rang was found for schemaName:'"
235235
+ schemaName + "', tableName:'" + tableName + "'");
236236
}
237237
// 数据库步长优先
238238
if (dbStep != null && dbStep > 0) {
239239
step = dbStep;
240240
}
241-
long idRangeBegin = nextValue;
242-
long idRangeEnd = nextValue + step - 1;
243-
if (endValue != null && idRangeEnd > endValue) {
244-
idRangeEnd = endValue;
241+
long rangeBegin = nextValue;
242+
long rangeEnd = nextValue + step - 1;
243+
if (endValue != null && rangeEnd > endValue) {
244+
rangeEnd = endValue;
245245
}
246246
updateStatement = connection.prepareStatement(targetUpdateSql);
247247
boolean dirtyRow = false;
@@ -270,21 +270,21 @@ public SequenceRange get(String schemaName, String tableName, int step) throws E
270270
if (rows > 0) {
271271
if (dirtyRow) {// 兼容异常数据
272272
throw new IllegalSequenceRangeException(
273-
String.format("Illegal id range {id:%s, nextValue:%s, endValue:%s, version:%s, deleted:0}",
273+
String.format("Illegal sequence range {id:%s, nextValue:%s, endValue:%s, version:%s, deleted:0}",
274274
id, nextValue, endValue, version));
275275
}
276276
if (logger.isInfoEnabled()) {
277-
logger.info("[Get_Range]: " + idRange);
277+
logger.info("[Get_Range]: " + sequenceRange);
278278
}
279279
if (deleted == 1) {
280280
if (logger.isInfoEnabled()) {
281281
logger.info("Id range for schemaName:{},tableName:{} is used up. More detail information is step:{},"
282282
+ "endValue:{},version:{},id:{} and actually allocated range is '{} ~ {}'",
283283
schemaName, tableName, step,//
284-
endValue, version, id, idRangeBegin, idRangeEnd);
284+
endValue, version, id, rangeBegin, rangeEnd);
285285
}
286286
}
287-
return new SequenceRange(idRangeBegin, idRangeEnd);
287+
return new SequenceRange(rangeBegin, rangeEnd);
288288
} else {
289289
throw new ConcurrentModificationException();
290290
}

ddal-sequence/src/main/java/org/hellojavaer/ddal/sequence/SequenceCache.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ public void run() {
8787
}
8888
//
8989
try {
90-
SequenceRange range = getIdRange();
90+
SequenceRange range = getSequenceRange();
9191
if (range == null) {
9292
throw new NoAvailableSequenceRangeFoundException("No available id range was found");
9393
}
@@ -115,17 +115,17 @@ public void run() {
115115
}
116116
}
117117
if (e instanceof IllegalSequenceRangeException) {
118-
logger.error("[GetIdRange] " + e.getMessage());
118+
logger.error("[GetSequenceRange] " + e.getMessage());
119119
} else if (e instanceof NoAvailableSequenceRangeFoundException) {
120-
logger.error("[GetIdRange] " + e.getMessage());
120+
logger.error("[GetSequenceRange] " + e.getMessage());
121121
} else {
122-
logger.error("[GetIdRange]", e);
122+
logger.error("[GetSequenceRange]", e);
123123
}
124124
if (retryCount.get() >= delayRetryBaseLine) {
125125
try {
126126
Thread.sleep(sleepTimes[(int) (retryCount.get() - delayRetryBaseLine)]);
127127
} catch (InterruptedException e1) {
128-
logger.error("[GetIdRange]", e1);
128+
logger.error("[GetSequenceRange]", e1);
129129
}
130130
}
131131
if (retryCount.get() < endCount) {
@@ -137,5 +137,5 @@ public void run() {
137137
}.start();
138138
}
139139

140-
public abstract SequenceRange getIdRange() throws Exception;
140+
public abstract SequenceRange getSequenceRange() throws Exception;
141141
}

ddal-sequence/src/main/java/org/hellojavaer/ddal/sequence/SingleSequence.java

Lines changed: 39 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -34,44 +34,46 @@
3434
*/
3535
public class SingleSequence implements Sequence {
3636

37-
private Logger logger = LoggerFactory.getLogger(this.getClass());
37+
private Logger logger = LoggerFactory.getLogger(this.getClass());
3838

39-
private static final int DEFAULT_DELAY_RETRY_BASE_LINE = 4;
39+
private static final int DEFAULT_DELAY_RETRY_BASE_LINE = 4;
4040

41-
private String schemaName;
42-
private String tableName;
43-
private Integer step; // 单节点步长
44-
private Integer cacheNSteps; // 缓存队列大小
45-
private Integer initTimeout;
46-
private SequenceRangeGetter idRangeGetter;
47-
private ExceptionHandler exceptionHandler;
48-
private Integer delayRetryBaseLine = DEFAULT_DELAY_RETRY_BASE_LINE;
41+
private String schemaName;
42+
private String tableName;
43+
private Integer step; // 单节点步长
44+
private Integer cacheNSteps; // 缓存队列大小
45+
private Integer initTimeout;
46+
private SequenceRangeGetter sequenceRangeGetter;
47+
private ExceptionHandler exceptionHandler;
48+
private Integer delayRetryBaseLine = DEFAULT_DELAY_RETRY_BASE_LINE;
4949

50-
private volatile SequenceCache idCache;
51-
private boolean initialized = false;
50+
private volatile SequenceCache sequenceCache;
51+
private boolean initialized = false;
5252

5353
public SingleSequence() {
5454
}
5555

5656
public SingleSequence(String schemaName, String tableName, Integer step, Integer cacheNSteps, Integer initTimeout,
57-
SequenceRangeGetter idRangeGetter) {
58-
this(schemaName, tableName, step, cacheNSteps, initTimeout, idRangeGetter, null, DEFAULT_DELAY_RETRY_BASE_LINE);
57+
SequenceRangeGetter sequenceRangeGetter) {
58+
this(schemaName, tableName, step, cacheNSteps, initTimeout, sequenceRangeGetter, null,
59+
DEFAULT_DELAY_RETRY_BASE_LINE);
5960
}
6061

6162
public SingleSequence(String schemaName, String tableName, Integer step, Integer cacheNSteps, Integer initTimeout,
62-
SequenceRangeGetter idRangeGetter, ExceptionHandler exceptionHandler) {
63-
this(schemaName, tableName, step, cacheNSteps, initTimeout, idRangeGetter, exceptionHandler,
63+
SequenceRangeGetter sequenceRangeGetter, ExceptionHandler exceptionHandler) {
64+
this(schemaName, tableName, step, cacheNSteps, initTimeout, sequenceRangeGetter, exceptionHandler,
6465
DEFAULT_DELAY_RETRY_BASE_LINE);
6566
}
6667

6768
public SingleSequence(String schemaName, String tableName, Integer step, Integer cacheNSteps, Integer initTimeout,
68-
SequenceRangeGetter idRangeGetter, ExceptionHandler exceptionHandler, Integer delayRetryBaseLine) {
69+
SequenceRangeGetter sequenceRangeGetter, ExceptionHandler exceptionHandler,
70+
Integer delayRetryBaseLine) {
6971
this.schemaName = schemaName;
7072
this.tableName = tableName;
7173
this.step = step;
7274
this.cacheNSteps = cacheNSteps;
7375
this.initTimeout = initTimeout;
74-
this.idRangeGetter = idRangeGetter;
76+
this.sequenceRangeGetter = sequenceRangeGetter;
7577
this.exceptionHandler = exceptionHandler;
7678
this.delayRetryBaseLine = delayRetryBaseLine;
7779
init();
@@ -89,28 +91,30 @@ public void init() {
8991
Assert.isTrue(cacheNSteps > 0, "'cacheNSteps' must be greater than 0");
9092
Assert.notNull(initTimeout, "'initTimeout' can't be null'");
9193
Assert.isTrue(initTimeout > 0, "'initTimeout' must be greater than 0");
92-
Assert.notNull(idRangeGetter, "'idRangeGetter' can't be null'");
94+
Assert.notNull(sequenceRangeGetter, "'sequenceRangeGetter' can't be null'");
9395
Assert.notNull(delayRetryBaseLine, "'delayRetryBaseLine' can't be null'");
9496
Assert.isTrue(delayRetryBaseLine > 0, "'delayRetryBaseLine' must be greater than 0");
9597
try {
96-
this.idCache = new SequenceCache(step, cacheNSteps, initTimeout, exceptionHandler, delayRetryBaseLine) {
98+
this.sequenceCache = new SequenceCache(step, cacheNSteps, initTimeout, exceptionHandler,
99+
delayRetryBaseLine) {
97100

98101
@Override
99-
public SequenceRange getIdRange() throws Exception {
100-
SequenceRange idRange = getIdRangeGetter().get(getSchemaName(), getTableName(), getStep());
101-
if (idRange == null) {
102+
public SequenceRange getSequenceRange() throws Exception {
103+
SequenceRange sequenceRange = getSequenceRangeGetter().get(getSchemaName(), getTableName(),
104+
getStep());
105+
if (sequenceRange == null) {
102106
throw new NoAvailableSequenceRangeFoundException(
103-
"No available id rang was found for schemaName:'"
104-
+ getSchemaName()
105-
+ "', tableName:'"
106-
+ getTableName() + "'");
107+
"No available sequence rang was found for schemaName:'"
108+
+ getSchemaName()
109+
+ "', tableName:'"
110+
+ getTableName() + "'");
107111
}
108-
if (idRange.getBeginValue() > idRange.getEndValue()) {
109-
throw new IllegalSequenceRangeException("Illegal id range " + idRange
112+
if (sequenceRange.getBeginValue() > sequenceRange.getEndValue()) {
113+
throw new IllegalSequenceRangeException("Illegal sequence range " + sequenceRange
110114
+ " for schemaName:'" + getSchemaName()
111115
+ "', tableName:'" + getTableName() + "'");
112116
}
113-
return idRange;
117+
return sequenceRange;
114118
}
115119
};
116120
} catch (InterruptedException e) {
@@ -128,7 +132,7 @@ public SequenceRange getIdRange() throws Exception {
128132
public long nextValue(long timeout, TimeUnit timeUnit) throws GetSequenceTimeoutException {
129133
try {
130134
init();
131-
return idCache.get(timeout, timeUnit);
135+
return sequenceCache.get(timeout, timeUnit);
132136
} catch (TimeoutException e1) {
133137
throw new GetSequenceTimeoutException(e1);
134138
} catch (SequenceException e0) {
@@ -178,12 +182,12 @@ public void setInitTimeout(Integer initTimeout) {
178182
this.initTimeout = initTimeout;
179183
}
180184

181-
public SequenceRangeGetter getIdRangeGetter() {
182-
return idRangeGetter;
185+
public SequenceRangeGetter getSequenceRangeGetter() {
186+
return sequenceRangeGetter;
183187
}
184188

185-
public void setIdRangeGetter(SequenceRangeGetter idRangeGetter) {
186-
this.idRangeGetter = idRangeGetter;
189+
public void setSequenceRangeGetter(SequenceRangeGetter sequenceRangeGetter) {
190+
this.sequenceRangeGetter = sequenceRangeGetter;
187191
}
188192

189193
public ExceptionHandler getExceptionHandler() {

ddal-sequence/src/main/java/org/hellojavaer/ddal/sequence/SummedBlockingQueue.java

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -85,11 +85,11 @@ public AtomicLong getCounter() {
8585
}
8686
}
8787

88-
public void put(SequenceRange idRange) throws InterruptedException {
89-
if (idRange.getEndValue() < idRange.getBeginValue()) {
88+
public void put(SequenceRange sequenceRange) throws InterruptedException {
89+
if (sequenceRange.getEndValue() < sequenceRange.getBeginValue()) {
9090
throw new IllegalArgumentException("end value must be greater than or equal to begin value");
9191
}
92-
Node node = new Node(new InnerSequenceRange(idRange.getBeginValue(), idRange.getEndValue()));
92+
Node node = new Node(new InnerSequenceRange(sequenceRange.getBeginValue(), sequenceRange.getEndValue()));
9393
final ReentrantLock putLock = this.putLock;
9494
final AtomicInteger count = this.countForCapacity;
9595
putLock.lockInterruptibly();
@@ -100,7 +100,7 @@ public void put(SequenceRange idRange) throws InterruptedException {
100100
}
101101
enqueue(node);
102102
c = count.incrementAndGet();
103-
long s = countForSum.addAndGet(idRange.getEndValue() - idRange.getBeginValue() + 1);
103+
long s = countForSum.addAndGet(sequenceRange.getEndValue() - sequenceRange.getBeginValue() + 1);
104104
if (s < sum) {
105105
notFull.signal();
106106
}
@@ -117,21 +117,21 @@ public long get(long timeout, TimeUnit unit) throws InterruptedException, Timeou
117117
if (unit == null) {
118118
throw new IllegalArgumentException("'unit' can't be null");
119119
}
120-
InnerSequenceRange idRange = threadLocal.get();
121-
if (idRange != null) {
122-
long id = idRange.getCounter().getAndIncrement();
123-
if (id <= idRange.getEndValue()) {
120+
InnerSequenceRange range = threadLocal.get();
121+
if (range != null) {
122+
long id = range.getCounter().getAndIncrement();
123+
if (id <= range.getEndValue()) {
124124
long c = countForSum.decrementAndGet();
125125
if (c == sum - 1) {
126126
signalNotFull();
127127
}
128-
if (id == idRange.getEndValue()) {
129-
remove(idRange);
128+
if (id == range.getEndValue()) {
129+
remove(range);
130130
threadLocal.set(null);
131131
}
132132
return id;
133133
} else {
134-
remove(idRange);
134+
remove(range);
135135
threadLocal.set(null);
136136
return recursiveGetFromQueue(timeout, unit);
137137
}
@@ -144,24 +144,24 @@ private long recursiveGetFromQueue(long timeout, TimeUnit unit) throws TimeoutEx
144144
long nanoTimeout = unit.toNanos(timeout);
145145
while (true) {
146146
long now = System.nanoTime();
147-
InnerSequenceRange idRange = get(nanoTimeout);
148-
if (idRange == null) {
147+
InnerSequenceRange sequenceRange = get(nanoTimeout);
148+
if (sequenceRange == null) {
149149
throw new TimeoutException(timeout + " " + unit);
150150
} else {
151-
long id = idRange.getCounter().getAndIncrement();
152-
if (id <= idRange.getEndValue()) {
151+
long id = sequenceRange.getCounter().getAndIncrement();
152+
if (id <= sequenceRange.getEndValue()) {
153153
long c = countForSum.decrementAndGet();
154154
if (c == sum - 1) {
155155
signalNotFull();
156156
}
157-
if (id == idRange.getEndValue()) {
158-
remove(idRange);
157+
if (id == sequenceRange.getEndValue()) {
158+
remove(sequenceRange);
159159
} else {
160-
threadLocal.set(idRange);
160+
threadLocal.set(sequenceRange);
161161
}
162162
return id;
163163
} else {
164-
remove(idRange);
164+
remove(sequenceRange);
165165
nanoTimeout -= System.nanoTime() - now;
166166
if (nanoTimeout <= 0) {
167167
throw new TimeoutException(timeout + " " + unit);

0 commit comments

Comments
 (0)