Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
milvus
milvus
提交
38266b85
M
milvus
项目概览
milvus
/
milvus
12 个月 前同步成功
通知
261
Star
22476
Fork
2472
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
milvus
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
38266b85
编写于
2月 25, 2021
作者:
X
Xiangyu Wang
提交者:
yefu.chen
2月 25, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Lock channel at produce and consume
Signed-off-by:
N
Xiangyu Wang
<
xiangyu.wang@zilliz.com
>
上级
882c7aaa
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
10 addition
and
6 deletion
+10
-6
cmd/singlenode/main.go
cmd/singlenode/main.go
+3
-0
internal/util/rocksmq/rocksmq.go
internal/util/rocksmq/rocksmq.go
+7
-6
未找到文件。
cmd/singlenode/main.go
浏览文件 @
38266b85
package
main
import
(
"os"
"github.com/zilliztech/milvus-distributed/cmd/distributed/roles"
)
...
...
@@ -20,5 +22,6 @@ func initRoles(roles *roles.MilvusRoles) {
func
main
()
{
var
roles
roles
.
MilvusRoles
initRoles
(
&
roles
)
os
.
Setenv
(
"QUERY_NODE_ID"
,
"1"
)
roles
.
Run
(
true
)
}
internal/util/rocksmq/rocksmq.go
浏览文件 @
38266b85
...
...
@@ -75,8 +75,7 @@ type RocksMQ struct {
channels
map
[
string
]
*
Channel
cgCtxs
map
[
string
]
ConsumerGroupContext
idAllocator
allocator
.
GIDAllocator
produceMu
sync
.
Mutex
consumeMu
sync
.
Mutex
channelMu
map
[
string
]
*
sync
.
Mutex
notify
map
[
string
][]
*
Consumer
//ctx context.Context
...
...
@@ -110,6 +109,7 @@ func NewRocksMQ(name string, idAllocator allocator.GIDAllocator) (*RocksMQ, erro
}
rmq
.
channels
=
make
(
map
[
string
]
*
Channel
)
rmq
.
notify
=
make
(
map
[
string
][]
*
Consumer
)
rmq
.
channelMu
=
make
(
map
[
string
]
*
sync
.
Mutex
)
return
rmq
,
nil
}
...
...
@@ -148,6 +148,7 @@ func (rmq *RocksMQ) CreateChannel(channelName string) error {
endOffset
:
0
,
}
rmq
.
channels
[
channelName
]
=
channel
rmq
.
channelMu
[
channelName
]
=
new
(
sync
.
Mutex
)
return
nil
}
...
...
@@ -200,8 +201,8 @@ func (rmq *RocksMQ) DestroyConsumerGroup(groupName string, channelName string) e
}
func
(
rmq
*
RocksMQ
)
Produce
(
channelName
string
,
messages
[]
ProducerMessage
)
error
{
rmq
.
produceMu
.
Lock
()
defer
rmq
.
produceMu
.
Unlock
()
rmq
.
channelMu
[
channelName
]
.
Lock
()
defer
rmq
.
channelMu
[
channelName
]
.
Unlock
()
msgLen
:=
len
(
messages
)
idStart
,
idEnd
,
err
:=
rmq
.
idAllocator
.
Alloc
(
uint32
(
msgLen
))
...
...
@@ -260,8 +261,8 @@ func (rmq *RocksMQ) Produce(channelName string, messages []ProducerMessage) erro
}
func
(
rmq
*
RocksMQ
)
Consume
(
groupName
string
,
channelName
string
,
n
int
)
([]
ConsumerMessage
,
error
)
{
rmq
.
c
onsumeMu
.
Lock
()
defer
rmq
.
c
onsumeMu
.
Unlock
()
rmq
.
c
hannelMu
[
channelName
]
.
Lock
()
defer
rmq
.
c
hannelMu
[
channelName
]
.
Unlock
()
metaKey
:=
groupName
+
"/"
+
channelName
+
"/current_id"
currentID
,
err
:=
rmq
.
kv
.
Load
(
metaKey
)
if
err
!=
nil
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录