Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
apache
pulsar
提交
78e794a9
pulsar
项目概览
apache
/
pulsar
通知
129
Star
40
Fork
3
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Wiki
1
Wiki
分析
仓库
DevOps
项目成员
Pages
pulsar
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Pages
分析
分析
仓库分析
DevOps
Wiki
1
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
提交
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
78e794a9
编写于
5月 18, 2019
作者:
R
Rajan Dhabalia
提交者:
Matteo Merli
5月 18, 2019
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[pulsar-broker]Fix: race condition while deleting global topic (#4173)
上级
364ed5e9
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
9 addition
and
5 deletion
+9
-5
pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentTopic.java
...che/pulsar/broker/service/persistent/PersistentTopic.java
+9
-5
未找到文件。
pulsar-broker/src/main/java/org/apache/pulsar/broker/service/persistent/PersistentTopic.java
浏览文件 @
78e794a9
...
...
@@ -795,7 +795,6 @@ public class PersistentTopic implements Topic, AddEntryCallback {
closeClientFuture
.
thenAccept
(
delete
->
{
if
(
USAGE_COUNT_UPDATER
.
get
(
this
)
==
0
)
{
isFenced
=
true
;
List
<
CompletableFuture
<
Void
>>
futures
=
Lists
.
newArrayList
();
if
(
failIfHasSubscriptions
)
{
...
...
@@ -824,9 +823,14 @@ public class PersistentTopic implements Topic, AddEntryCallback {
@Override
public
void
deleteLedgerFailed
(
ManagedLedgerException
exception
,
Object
ctx
)
{
isFenced
=
false
;
log
.
error
(
"[{}] Error deleting topic"
,
topic
,
exception
);
deleteFuture
.
completeExceptionally
(
new
PersistenceException
(
exception
));
if
(
exception
.
getCause
()
instanceof
KeeperException
.
NoNodeException
)
{
log
.
info
(
"[{}] Topic is already deleted {}"
,
topic
,
exception
.
getMessage
());
deleteLedgerComplete
(
ctx
);
}
else
{
isFenced
=
false
;
log
.
error
(
"[{}] Error deleting topic"
,
topic
,
exception
);
deleteFuture
.
completeExceptionally
(
new
PersistenceException
(
exception
));
}
}
},
null
);
}
...
...
@@ -984,7 +988,7 @@ public class PersistentTopic implements Topic, AddEntryCallback {
// doesn't serve global topic without local repl-cluster configured.
if
(
TopicName
.
get
(
topic
).
isGlobal
()
&&
!
configuredClusters
.
contains
(
localCluster
))
{
log
.
info
(
"Deleting topic [{}] because local cluster is not part of global namespace repl list {}"
,
configuredClusters
);
topic
,
configuredClusters
);
return
deleteForcefully
();
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录