Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
YottaChain
YTBP
提交
77b1a691
Y
YTBP
项目概览
YottaChain
/
YTBP
通知
0
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Y
YTBP
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
77b1a691
编写于
5月 11, 2018
作者:
A
arhag
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
add leeway_deadline_exception #2898
上级
c89aee80
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
15 addition
and
11 deletion
+15
-11
libraries/chain/controller.cpp
libraries/chain/controller.cpp
+2
-1
libraries/chain/include/eosio/chain/exceptions.hpp
libraries/chain/include/eosio/chain/exceptions.hpp
+2
-2
libraries/chain/transaction_context.cpp
libraries/chain/transaction_context.cpp
+6
-5
plugins/producer_plugin/producer_plugin.cpp
plugins/producer_plugin/producer_plugin.cpp
+2
-1
unittests/CMakeLists.txt
unittests/CMakeLists.txt
+2
-0
unittests/wasm_tests.cpp
unittests/wasm_tests.cpp
+1
-2
未找到文件。
libraries/chain/controller.cpp
浏览文件 @
77b1a691
...
...
@@ -436,7 +436,8 @@ struct controller_impl {
auto
code
=
e
.
code
();
return
(
code
==
block_net_usage_exceeded
::
code_value
)
||
(
code
==
block_cpu_usage_exceeded
::
code_value
)
||
(
code
==
deadline_exception
::
code_value
);
(
code
==
deadline_exception
::
code_value
)
||
(
code
==
leeway_deadline_exception
::
code_value
);
}
transaction_trace_ptr
push_scheduled_transaction
(
const
transaction_id_type
&
trxid
,
fc
::
time_point
deadline
,
uint32_t
billed_cpu_time_us
)
{
...
...
libraries/chain/include/eosio/chain/exceptions.hpp
浏览文件 @
77b1a691
...
...
@@ -211,8 +211,8 @@ namespace eosio { namespace chain {
3080005
,
"transaction CPU usage is too much for the remaining allowable usage of the current block"
)
FC_DECLARE_DERIVED_EXCEPTION
(
deadline_exception
,
resource_exhausted_exception
,
3080006
,
"transaction took too long"
)
FC_DECLARE_DERIVED_EXCEPTION
(
action_cpu_usage_exceeded
,
resource_exhausted
_exception
,
308
0007
,
"action took too long
"
)
FC_DECLARE_DERIVED_EXCEPTION
(
leeway_deadline_exception
,
deadline
_exception
,
308
1001
,
"transaction reached the deadline set due to leeway on account CPU limits
"
)
FC_DECLARE_DERIVED_EXCEPTION
(
authorization_exception
,
chain_exception
,
3090000
,
"Authorization exception"
)
...
...
libraries/chain/transaction_context.cpp
浏览文件 @
77b1a691
...
...
@@ -113,8 +113,7 @@ namespace eosio { namespace chain {
// Possibly limit deadline if the duration accounts can be billed for (+ a subjective leeway) does not exceed current delta
if
(
(
fc
::
microseconds
(
account_cpu_limit
)
+
leeway
)
<=
(
deadline
-
start
)
)
{
deadline
=
start
+
fc
::
microseconds
(
account_cpu_limit
)
+
leeway
;
if
(
deadline_exception_code
!=
tx_cpu_usage_exceeded
::
code_value
)
deadline_exception_code
=
deadline_exception
::
code_value
;
deadline_exception_code
=
leeway_deadline_exception
::
code_value
;
}
eager_net_limit
=
(
eager_net_limit
/
8
)
*
8
;
// Round down to nearest multiple of word size (8 bytes) so check_net_usage can be efficient
...
...
@@ -289,6 +288,11 @@ namespace eosio { namespace chain {
EOS_THROW
(
tx_cpu_usage_exceeded
,
"transaction was executing for too long"
,
(
"now"
,
now
)(
"deadline"
,
deadline
)(
"start"
,
start
)
);
}
else
if
(
deadline_exception_code
==
leeway_deadline_exception
::
code_value
)
{
EOS_THROW
(
leeway_deadline_exception
,
"the transaction was unable to complete by deadline, "
"but it is possible it could have succeeded if it were allow to run to completion"
,
(
"now"
,
now
)(
"deadline"
,
deadline
)(
"start"
,
start
)
);
}
FC_ASSERT
(
false
,
"unexpected deadline exception code"
);
}
...
...
@@ -330,9 +334,6 @@ namespace eosio { namespace chain {
try
{
acontext
.
exec
();
}
catch
(
const
action_cpu_usage_exceeded
&
e
)
{
trace
=
move
(
acontext
.
trace
);
FC_ASSERT
(
false
,
"should not have reached here"
);
}
catch
(
...
)
{
trace
=
move
(
acontext
.
trace
);
throw
;
...
...
plugins/producer_plugin/producer_plugin.cpp
浏览文件 @
77b1a691
...
...
@@ -47,7 +47,8 @@ namespace {
auto
code
=
e
.
code
();
return
(
code
==
block_cpu_usage_exceeded
::
code_value
)
||
(
code
==
block_net_usage_exceeded
::
code_value
)
||
(
code
==
deadline_exception
::
code_value
&&
deadline_is_subjective
);
(
code
==
deadline_exception
::
code_value
&&
deadline_is_subjective
)
||
(
code
==
leeway_deadline_exception
::
code_value
&&
deadline_is_subjective
);
}
}
...
...
unittests/CMakeLists.txt
浏览文件 @
77b1a691
...
...
@@ -33,9 +33,11 @@ add_dependencies(unit_test asserter test_api test_api_mem test_api_db test_api_m
#To run unit_test with all log from blockchain displayed, put --verbose after --, i.e. unit_test -- --verbose
add_test
(
NAME unit_test_binaryen COMMAND unit_test
-t \!eosio_system_tests/*
-t \!wasm_tests/weighted_cpu_limit_tests
--report_level=detailed --color_output -- --binaryen
)
add_test
(
NAME unit_test_wavm COMMAND unit_test
-t \!eosio_system_tests/*
-t \!wasm_tests/weighted_cpu_limit_tests
--report_level=detailed --color_output --catch_system_errors=no -- --wavm
)
if
(
ENABLE_COVERAGE_TESTING
)
...
...
unittests/wasm_tests.cpp
浏览文件 @
77b1a691
...
...
@@ -633,8 +633,7 @@ BOOST_FIXTURE_TEST_CASE(weighted_cpu_limit_tests, tester ) try {
BOOST_REQUIRE_EQUAL
(
true
,
chain_has_transaction
(
trx
.
id
()));
pass
=
true
;
count
++
;
}
catch
(
eosio
::
chain
::
deadline_exception
&
)
{
#warning It does not seem right to catch deadline_exception and yet the test passes. Need to investigate this.
}
catch
(
eosio
::
chain
::
leeway_deadline_exception
&
)
{
BOOST_REQUIRE_EQUAL
(
count
,
3
);
break
;
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录