Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Apache RocketMQ
Rocketmq
提交
da589b19
R
Rocketmq
项目概览
Apache RocketMQ
/
Rocketmq
上一次同步 大约 3 年
通知
267
Star
16139
Fork
68
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
Rocketmq
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
da589b19
编写于
5月 25, 2021
作者:
斜
斜阳
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[ISSUE #2708] Client may submit wrong offset when network instability
上级
6ab6afd0
变更
4
显示空白变更内容
内联
并排
Showing
4 changed file
with
15 addition
and
10 deletion
+15
-10
client/src/main/java/org/apache/rocketmq/client/impl/consumer/DefaultLitePullConsumerImpl.java
...tmq/client/impl/consumer/DefaultLitePullConsumerImpl.java
+4
-1
client/src/main/java/org/apache/rocketmq/client/impl/consumer/DefaultMQPushConsumerImpl.java
...ketmq/client/impl/consumer/DefaultMQPushConsumerImpl.java
+5
-3
client/src/main/java/org/apache/rocketmq/client/impl/consumer/PullRequest.java
...org/apache/rocketmq/client/impl/consumer/PullRequest.java
+5
-5
client/src/main/java/org/apache/rocketmq/client/impl/consumer/RebalanceImpl.java
...g/apache/rocketmq/client/impl/consumer/RebalanceImpl.java
+1
-1
未找到文件。
client/src/main/java/org/apache/rocketmq/client/impl/consumer/DefaultLitePullConsumerImpl.java
浏览文件 @
da589b19
...
@@ -115,6 +115,8 @@ public class DefaultLitePullConsumerImpl implements MQConsumerInner {
...
@@ -115,6 +115,8 @@ public class DefaultLitePullConsumerImpl implements MQConsumerInner {
*/
*/
private
static
final
long
PULL_TIME_DELAY_MILLS_WHEN_PAUSE
=
1000
;
private
static
final
long
PULL_TIME_DELAY_MILLS_WHEN_PAUSE
=
1000
;
private
static
final
long
PULL_TIME_DELAY_MILLS_ON_EXCEPTION
=
3
*
1000
;
private
DefaultLitePullConsumer
defaultLitePullConsumer
;
private
DefaultLitePullConsumer
defaultLitePullConsumer
;
private
final
ConcurrentMap
<
MessageQueue
,
PullTaskImpl
>
taskTable
=
private
final
ConcurrentMap
<
MessageQueue
,
PullTaskImpl
>
taskTable
=
...
@@ -743,7 +745,8 @@ public class DefaultLitePullConsumerImpl implements MQConsumerInner {
...
@@ -743,7 +745,8 @@ public class DefaultLitePullConsumerImpl implements MQConsumerInner {
try
{
try
{
offset
=
nextPullOffset
(
messageQueue
);
offset
=
nextPullOffset
(
messageQueue
);
}
catch
(
MQClientException
e
)
{
}
catch
(
MQClientException
e
)
{
log
.
error
(
"get next pull offset failed, maybe timeout exception"
);
log
.
error
(
"Failed to get next pull offset"
,
e
);
scheduledThreadPoolExecutor
.
schedule
(
this
,
PULL_TIME_DELAY_MILLS_ON_EXCEPTION
,
TimeUnit
.
MILLISECONDS
);
return
;
return
;
}
}
...
...
client/src/main/java/org/apache/rocketmq/client/impl/consumer/DefaultMQPushConsumerImpl.java
浏览文件 @
da589b19
...
@@ -269,12 +269,14 @@ public class DefaultMQPushConsumerImpl implements MQConsumerInner {
...
@@ -269,12 +269,14 @@ public class DefaultMQPushConsumerImpl implements MQConsumerInner {
}
}
}
else
{
}
else
{
if
(
processQueue
.
isLocked
())
{
if
(
processQueue
.
isLocked
())
{
if
(!
pullRequest
.
is
LockedFirst
())
{
if
(!
pullRequest
.
is
PreviouslyLocked
())
{
long
offset
=
-
1L
;
long
offset
=
-
1L
;
try
{
try
{
offset
=
this
.
rebalanceImpl
.
computePullFromWhereWithException
(
pullRequest
.
getMessageQueue
());
offset
=
this
.
rebalanceImpl
.
computePullFromWhereWithException
(
pullRequest
.
getMessageQueue
());
}
catch
(
MQClientException
e
)
{
}
catch
(
MQClientException
e
)
{
log
.
error
(
"compute consume offset failed, maybe timeout exception"
);
this
.
executePullRequestLater
(
pullRequest
,
pullTimeDelayMillsWhenException
);
log
.
error
(
"Failed to compute pull offset"
,
e
);
return
;
}
}
boolean
brokerBusy
=
offset
<
pullRequest
.
getNextOffset
();
boolean
brokerBusy
=
offset
<
pullRequest
.
getNextOffset
();
log
.
info
(
"the first time to pull message, so fix offset from broker. pullRequest: {} NewOffset: {} brokerBusy: {}"
,
log
.
info
(
"the first time to pull message, so fix offset from broker. pullRequest: {} NewOffset: {} brokerBusy: {}"
,
...
@@ -284,7 +286,7 @@ public class DefaultMQPushConsumerImpl implements MQConsumerInner {
...
@@ -284,7 +286,7 @@ public class DefaultMQPushConsumerImpl implements MQConsumerInner {
pullRequest
,
offset
);
pullRequest
,
offset
);
}
}
pullRequest
.
set
LockedFirst
(
true
);
pullRequest
.
set
PreviouslyLocked
(
true
);
pullRequest
.
setNextOffset
(
offset
);
pullRequest
.
setNextOffset
(
offset
);
}
}
}
else
{
}
else
{
...
...
client/src/main/java/org/apache/rocketmq/client/impl/consumer/PullRequest.java
浏览文件 @
da589b19
...
@@ -23,14 +23,14 @@ public class PullRequest {
...
@@ -23,14 +23,14 @@ public class PullRequest {
private
MessageQueue
messageQueue
;
private
MessageQueue
messageQueue
;
private
ProcessQueue
processQueue
;
private
ProcessQueue
processQueue
;
private
long
nextOffset
;
private
long
nextOffset
;
private
boolean
lockedFirst
=
false
;
private
boolean
previouslyLocked
=
false
;
public
boolean
is
LockedFirst
()
{
public
boolean
is
PreviouslyLocked
()
{
return
lockedFirst
;
return
previouslyLocked
;
}
}
public
void
set
LockedFirst
(
boolean
lockedFirst
)
{
public
void
set
PreviouslyLocked
(
boolean
previouslyLocked
)
{
this
.
lockedFirst
=
lockedFirst
;
this
.
previouslyLocked
=
previouslyLocked
;
}
}
public
String
getConsumerGroup
()
{
public
String
getConsumerGroup
()
{
...
...
client/src/main/java/org/apache/rocketmq/client/impl/consumer/RebalanceImpl.java
浏览文件 @
da589b19
...
@@ -375,7 +375,7 @@ public abstract class RebalanceImpl {
...
@@ -375,7 +375,7 @@ public abstract class RebalanceImpl {
this
.
removeDirtyOffset
(
mq
);
this
.
removeDirtyOffset
(
mq
);
ProcessQueue
pq
=
new
ProcessQueue
();
ProcessQueue
pq
=
new
ProcessQueue
();
long
nextOffset
=
0
L
;
long
nextOffset
=
-
1
L
;
try
{
try
{
nextOffset
=
this
.
computePullFromWhereWithException
(
mq
);
nextOffset
=
this
.
computePullFromWhereWithException
(
mq
);
}
catch
(
MQClientException
e
)
{
}
catch
(
MQClientException
e
)
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录