Skip to content
项目
群组
代码片段
帮助
正在加载...
帮助
为 GitLab 提交贡献
登录/注册
切换导航
H
h2database
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
分枝图
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
计划
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
分枝图
统计图
创建新议题
作业
提交
议题看板
打开侧边栏
Administrator
h2database
Commits
73e45928
提交
73e45928
authored
7 年前
作者:
andrei
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix boundary check
上级
36ac7567
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
6 行增加
和
5 行删除
+6
-5
Transaction.java
h2/src/main/org/h2/mvstore/tx/Transaction.java
+6
-5
没有找到文件。
h2/src/main/org/h2/mvstore/tx/Transaction.java
浏览文件 @
73e45928
...
...
@@ -70,7 +70,8 @@ public class Transaction {
};
static
final
int
LOG_ID_BITS
=
40
;
private
static
final
int
LOG_ID_BITS1
=
LOG_ID_BITS
+
1
;
private
static
final
long
LOG_ID_MASK
=
(
1L
<<
LOG_ID_BITS
)
-
1
;
private
static
final
long
LOG_ID_LIMIT
=
1L
<<
LOG_ID_BITS
;
private
static
final
long
LOG_ID_MASK
=
(
1L
<<
LOG_ID_BITS1
)
-
1
;
private
static
final
int
STATUS_BITS
=
4
;
private
static
final
int
STATUS_MASK
=
(
1
<<
STATUS_BITS
)
-
1
;
...
...
@@ -89,7 +90,7 @@ public class Transaction {
* Transation state is an atomic composite field:
* bit 45 : flag whether transaction had rollback(s)
* bits 44-41 : status
* bits 40 : overflow control bit,
always 0
* bits 40 : overflow control bit,
1 indicates overflow
* bits 39-0 : log id of the last entry in the undo log map
*/
private
final
AtomicLong
statusAndLogId
;
...
...
@@ -209,7 +210,7 @@ public class Transaction {
void
log
(
int
mapId
,
Object
key
,
VersionedValue
oldValue
)
{
long
currentState
=
statusAndLogId
.
getAndIncrement
();
long
logId
=
getLogId
(
currentState
);
if
(
logId
>
LOG_ID_MASK
)
{
if
(
logId
>
=
LOG_ID_LIMIT
)
{
throw
DataUtils
.
newIllegalStateException
(
DataUtils
.
ERROR_TRANSACTION_TOO_BIG
,
"Transaction {0} has too many changes"
,
...
...
@@ -224,7 +225,7 @@ public class Transaction {
void
logUndo
()
{
long
currentState
=
statusAndLogId
.
decrementAndGet
();
long
logId
=
getLogId
(
currentState
);
if
(
logId
==
LOG_ID_MASK
)
{
if
(
logId
>=
LOG_ID_LIMIT
)
{
throw
DataUtils
.
newIllegalStateException
(
DataUtils
.
ERROR_TRANSACTION_CORRUPT
,
"Transaction {0} has internal error"
,
...
...
@@ -393,7 +394,7 @@ public class Transaction {
}
private
static
long
composeState
(
int
status
,
long
logId
,
boolean
hasRollback
)
{
assert
(
logId
&
~
LOG_ID_MASK
)
==
0
:
logId
;
assert
logId
<
LOG_ID_LIMIT
:
logId
;
assert
(
status
&
~
STATUS_MASK
)
==
0
:
status
;
if
(
hasRollback
)
{
...
...
This diff is collapsed.
Click to expand it.
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论