Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
milvus
milvus
提交
32660d54
M
milvus
项目概览
milvus
/
milvus
11 个月 前同步成功
通知
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,发现更多精彩内容 >>
提交
32660d54
编写于
3月 16, 2021
作者:
X
XuanYang-cn
提交者:
yefu.chen
3月 16, 2021
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add endPositions in datanode
Signed-off-by:
N
XuanYang-cn
<
xuan.yang@zilliz.com
>
上级
47dfbb64
变更
17
隐藏空白更改
内联
并排
Showing
17 changed file
with
294 addition
and
203 deletion
+294
-203
Makefile
Makefile
+4
-0
internal/datanode/collection_replica.go
internal/datanode/collection_replica.go
+91
-52
internal/datanode/collection_replica_test.go
internal/datanode/collection_replica_test.go
+9
-10
internal/datanode/flow_graph_dd_node_test.go
internal/datanode/flow_graph_dd_node_test.go
+10
-1
internal/datanode/flow_graph_filter_dm_node.go
internal/datanode/flow_graph_filter_dm_node.go
+2
-0
internal/datanode/flow_graph_insert_buffer_node.go
internal/datanode/flow_graph_insert_buffer_node.go
+30
-21
internal/datanode/flow_graph_insert_buffer_node_test.go
internal/datanode/flow_graph_insert_buffer_node_test.go
+11
-0
internal/datanode/flow_graph_message.go
internal/datanode/flow_graph_message.go
+1
-0
internal/dataservice/meta.go
internal/dataservice/meta.go
+2
-2
internal/dataservice/stats_handler.go
internal/dataservice/stats_handler.go
+6
-1
internal/msgstream/msgstream.go
internal/msgstream/msgstream.go
+1
-1
internal/msgstream/pulsarms/pulsar_msgstream.go
internal/msgstream/pulsarms/pulsar_msgstream.go
+21
-6
internal/msgstream/pulsarms/pulsar_msgstream_test.go
internal/msgstream/pulsarms/pulsar_msgstream_test.go
+4
-4
internal/proto/internal.proto
internal/proto/internal.proto
+0
-1
internal/proto/internalpb/internal.pb.go
internal/proto/internalpb/internal.pb.go
+93
-102
internal/util/flowgraph/input_node.go
internal/util/flowgraph/input_node.go
+1
-0
internal/util/flowgraph/message.go
internal/util/flowgraph/message.go
+8
-2
未找到文件。
Makefile
浏览文件 @
32660d54
...
...
@@ -122,6 +122,10 @@ queryservice: build-cpp
@
echo
"Building distributed queryservice ..."
@
mkdir
-p
$(INSTALL_PATH)
&&
go
env
-w
CGO_ENABLED
=
"1"
&&
GO111MODULE
=
on
$(GO)
build
-o
$(INSTALL_PATH)
/queryservice
$(PWD)
/cmd/queryservice/queryservice.go 1>/dev/null
dataservice
:
build-cpp
@
echo
"Building dataservice ..."
@
mkdir
-p
$(INSTALL_PATH)
&&
go
env
-w
CGO_ENABLED
=
"1"
&&
GO111MODULE
=
on
$(GO)
build
-o
$(INSTALL_PATH)
/dataservice
$(PWD)
/cmd/dataservice/main.go 1>/dev/null
# Builds various components locally.
build-go
:
build-cpp
@
echo
"Building each component's binary to './bin'"
...
...
internal/datanode/collection_replica.go
浏览文件 @
32660d54
...
...
@@ -3,6 +3,7 @@ package datanode
import
(
"fmt"
"sync"
"sync/atomic"
"go.uber.org/zap"
...
...
@@ -24,18 +25,23 @@ type Replica interface {
addSegment
(
segmentID
UniqueID
,
collID
UniqueID
,
partitionID
UniqueID
,
channelName
string
)
error
removeSegment
(
segmentID
UniqueID
)
error
hasSegment
(
segmentID
UniqueID
)
bool
setIsFlushed
(
segmentID
UniqueID
)
error
setStartPosition
(
segmentID
UniqueID
,
startPos
*
internalpb
.
MsgPosition
)
error
setEndPosition
(
segmentID
UniqueID
,
endPos
*
internalpb
.
MsgPosition
)
error
updateStatistics
(
segmentID
UniqueID
,
numRows
int64
)
error
getSegmentStatisticsUpdates
(
segmentID
UniqueID
)
(
*
internalpb
.
SegmentStatisticsUpdates
,
error
)
getSegmentByID
(
segmentID
UniqueID
)
(
*
Segment
,
error
)
}
type
Segment
struct
{
segmentID
UniqueID
collectionID
UniqueID
partitionID
UniqueID
numRows
int64
memorySize
int64
isNew
bool
segmentID
UniqueID
collectionID
UniqueID
partitionID
UniqueID
numRows
int64
memorySize
int64
isNew
atomic
.
Value
// bool
isFlushed
bool
createTime
Timestamp
// not using
endTime
Timestamp
// not using
startPosition
*
internalpb
.
MsgPosition
...
...
@@ -44,12 +50,12 @@ type Segment struct {
type
CollectionSegmentReplica
struct
{
mu
sync
.
RWMutex
segments
[
]
*
Segment
segments
map
[
UniqueID
]
*
Segment
collections
map
[
UniqueID
]
*
Collection
}
func
newReplica
()
Replica
{
segments
:=
make
(
[]
*
Segment
,
0
)
segments
:=
make
(
map
[
UniqueID
]
*
Segment
)
collections
:=
make
(
map
[
UniqueID
]
*
Collection
)
var
replica
Replica
=
&
CollectionSegmentReplica
{
...
...
@@ -64,12 +70,11 @@ func (replica *CollectionSegmentReplica) getSegmentByID(segmentID UniqueID) (*Se
replica
.
mu
.
RLock
()
defer
replica
.
mu
.
RUnlock
()
for
_
,
segment
:=
range
replica
.
segments
{
if
segment
.
segmentID
==
segmentID
{
return
segment
,
nil
}
if
seg
,
ok
:=
replica
.
segments
[
segmentID
];
ok
{
return
seg
,
nil
}
return
nil
,
fmt
.
Errorf
(
"Cannot find segment, id = %v"
,
segmentID
)
}
func
(
replica
*
CollectionSegmentReplica
)
addSegment
(
...
...
@@ -90,12 +95,15 @@ func (replica *CollectionSegmentReplica) addSegment(
segmentID
:
segmentID
,
collectionID
:
collID
,
partitionID
:
partitionID
,
is
New
:
tru
e
,
is
Flushed
:
fals
e
,
createTime
:
0
,
startPosition
:
position
,
endPosition
:
new
(
internalpb
.
MsgPosition
),
}
replica
.
segments
=
append
(
replica
.
segments
,
seg
)
seg
.
isNew
.
Store
(
true
)
replica
.
segments
[
segmentID
]
=
seg
return
nil
}
...
...
@@ -103,65 +111,96 @@ func (replica *CollectionSegmentReplica) removeSegment(segmentID UniqueID) error
replica
.
mu
.
Lock
()
defer
replica
.
mu
.
Unlock
()
for
index
,
ele
:=
range
replica
.
segments
{
if
ele
.
segmentID
==
segmentID
{
log
.
Debug
(
"Removing segment"
,
zap
.
Int64
(
"Segment ID"
,
segmentID
))
numOfSegs
:=
len
(
replica
.
segments
)
replica
.
segments
[
index
]
=
replica
.
segments
[
numOfSegs
-
1
]
replica
.
segments
=
replica
.
segments
[
:
numOfSegs
-
1
]
return
nil
}
}
return
fmt
.
Errorf
(
"Error, there's no segment %v"
,
segmentID
)
delete
(
replica
.
segments
,
segmentID
)
return
nil
}
func
(
replica
*
CollectionSegmentReplica
)
hasSegment
(
segmentID
UniqueID
)
bool
{
replica
.
mu
.
RLock
()
defer
replica
.
mu
.
RUnlock
()
for
_
,
ele
:=
range
replica
.
segments
{
if
ele
.
segmentID
==
segmentID
{
return
true
}
_
,
ok
:=
replica
.
segments
[
segmentID
]
return
ok
}
func
(
replica
*
CollectionSegmentReplica
)
setIsFlushed
(
segmentID
UniqueID
)
error
{
replica
.
mu
.
RLock
()
defer
replica
.
mu
.
RUnlock
()
if
seg
,
ok
:=
replica
.
segments
[
segmentID
];
ok
{
seg
.
isFlushed
=
true
return
nil
}
return
fmt
.
Errorf
(
"There's no segment %v"
,
segmentID
)
}
func
(
replica
*
CollectionSegmentReplica
)
setStartPosition
(
segmentID
UniqueID
,
startPos
*
internalpb
.
MsgPosition
)
error
{
replica
.
mu
.
RLock
()
defer
replica
.
mu
.
RUnlock
()
if
startPos
==
nil
{
return
fmt
.
Errorf
(
"Nil MsgPosition"
)
}
if
seg
,
ok
:=
replica
.
segments
[
segmentID
];
ok
{
seg
.
startPosition
=
startPos
return
nil
}
return
fmt
.
Errorf
(
"There's no segment %v"
,
segmentID
)
}
func
(
replica
*
CollectionSegmentReplica
)
setEndPosition
(
segmentID
UniqueID
,
endPos
*
internalpb
.
MsgPosition
)
error
{
replica
.
mu
.
RLock
()
defer
replica
.
mu
.
RUnlock
()
if
endPos
==
nil
{
return
fmt
.
Errorf
(
"Nil MsgPosition"
)
}
if
seg
,
ok
:=
replica
.
segments
[
segmentID
];
ok
{
seg
.
endPosition
=
endPos
return
nil
}
return
f
alse
return
f
mt
.
Errorf
(
"There's no segment %v"
,
segmentID
)
}
func
(
replica
*
CollectionSegmentReplica
)
updateStatistics
(
segmentID
UniqueID
,
numRows
int64
)
error
{
replica
.
mu
.
Lock
()
defer
replica
.
mu
.
Unlock
()
for
_
,
ele
:=
range
replica
.
segments
{
if
ele
.
segmentID
==
segmentID
{
log
.
Debug
(
"updating segment"
,
zap
.
Int64
(
"Segment ID"
,
segmentID
),
zap
.
Int64
(
"numRows"
,
numRows
))
ele
.
memorySize
=
0
ele
.
numRows
+=
numRows
return
nil
}
if
seg
,
ok
:=
replica
.
segments
[
segmentID
];
ok
{
log
.
Debug
(
"updating segment"
,
zap
.
Int64
(
"Segment ID"
,
segmentID
),
zap
.
Int64
(
"numRows"
,
numRows
))
seg
.
memorySize
=
0
seg
.
numRows
+=
numRows
return
nil
}
return
fmt
.
Errorf
(
"Error, there's no segment %v"
,
segmentID
)
return
fmt
.
Errorf
(
"There's no segment %v"
,
segmentID
)
}
func
(
replica
*
CollectionSegmentReplica
)
getSegmentStatisticsUpdates
(
segmentID
UniqueID
)
(
*
internalpb
.
SegmentStatisticsUpdates
,
error
)
{
replica
.
mu
.
Lock
()
defer
replica
.
mu
.
Unlock
()
for
_
,
ele
:=
range
replica
.
segments
{
if
ele
.
segmentID
==
segmentID
{
updates
:=
&
internalpb
.
SegmentStatisticsUpdates
{
SegmentID
:
segmentID
,
MemorySize
:
ele
.
memorySize
,
NumRows
:
ele
.
numRows
,
IsNewSegment
:
ele
.
isNew
,
StartPosition
:
new
(
internalpb
.
MsgPosition
),
}
if
ele
.
isNew
{
updates
.
StartPosition
=
ele
.
startPosition
ele
.
isNew
=
false
}
return
updates
,
nil
if
seg
,
ok
:=
replica
.
segments
[
segmentID
];
ok
{
updates
:=
&
internalpb
.
SegmentStatisticsUpdates
{
SegmentID
:
segmentID
,
MemorySize
:
seg
.
memorySize
,
NumRows
:
seg
.
numRows
,
}
if
seg
.
isNew
.
Load
()
==
true
{
updates
.
StartPosition
=
seg
.
startPosition
seg
.
isNew
.
Store
(
false
)
}
if
seg
.
isFlushed
{
updates
.
EndPosition
=
seg
.
endPosition
}
return
updates
,
nil
}
return
nil
,
fmt
.
Errorf
(
"Error, there's no segment %v"
,
segmentID
)
}
...
...
internal/datanode/collection_replica_test.go
浏览文件 @
32660d54
...
...
@@ -5,6 +5,7 @@ import (
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/zilliztech/milvus-distributed/internal/proto/internalpb"
)
func
TestReplica_Collection
(
t
*
testing
.
T
)
{
...
...
@@ -123,16 +124,17 @@ func TestReplica_Segment(t *testing.T) {
assert
.
NoError
(
t
,
err
)
assert
.
Equal
(
t
,
UniqueID
(
0
),
update
.
SegmentID
)
assert
.
Equal
(
t
,
int64
(
100
),
update
.
NumRows
)
assert
.
True
(
t
,
update
.
IsNewSegment
)
assert
.
NotNil
(
t
,
update
.
StartPosition
)
assert
.
Nil
(
t
,
update
.
EndPosition
)
err
=
replica
.
setIsFlushed
(
0
)
assert
.
NoError
(
t
,
err
)
err
=
replica
.
setEndPosition
(
0
,
&
internalpb
.
MsgPosition
{})
assert
.
NoError
(
t
,
err
)
update
,
err
=
replica
.
getSegmentStatisticsUpdates
(
0
)
assert
.
NoError
(
t
,
err
)
assert
.
False
(
t
,
update
.
IsNewSegment
)
assert
.
NotNil
(
t
,
update
.
StartPosition
)
assert
.
Equal
(
t
,
UniqueID
(
0
),
update
.
SegmentID
)
assert
.
Equal
(
t
,
int64
(
100
),
update
.
NumRows
)
assert
.
Zero
(
t
,
update
.
StartPosition
.
Timestamp
)
assert
.
Zero
(
t
,
update
.
StartPosition
.
MsgID
)
assert
.
Nil
(
t
,
update
.
StartPosition
)
assert
.
NotNil
(
t
,
update
.
EndPosition
)
})
t
.
Run
(
"Test errors"
,
func
(
t
*
testing
.
T
)
{
...
...
@@ -143,9 +145,6 @@ func TestReplica_Segment(t *testing.T) {
assert
.
Error
(
t
,
err
)
assert
.
Nil
(
t
,
seg
)
err
=
replica
.
removeSegment
(
0
)
assert
.
Error
(
t
,
err
)
err
=
replica
.
updateStatistics
(
0
,
0
)
assert
.
Error
(
t
,
err
)
...
...
internal/datanode/flow_graph_dd_node_test.go
浏览文件 @
32660d54
...
...
@@ -145,12 +145,21 @@ func TestFlowGraphDDNode_Operate(t *testing.T) {
collectionID
:
collID
,
}
startPos
:=
[]
*
internalpb
.
MsgPosition
{
{
ChannelName
:
"aaa"
,
MsgID
:
"000"
,
Timestamp
:
0
,
},
}
tsMessages
:=
make
([]
msgstream
.
TsMsg
,
0
)
tsMessages
=
append
(
tsMessages
,
msgstream
.
TsMsg
(
&
createCollMsg
))
tsMessages
=
append
(
tsMessages
,
msgstream
.
TsMsg
(
&
dropCollMsg
))
tsMessages
=
append
(
tsMessages
,
msgstream
.
TsMsg
(
&
createPartitionMsg
))
tsMessages
=
append
(
tsMessages
,
msgstream
.
TsMsg
(
&
dropPartitionMsg
))
msgStream
:=
flowgraph
.
GenerateMsgStreamMsg
(
tsMessages
,
Timestamp
(
0
),
Timestamp
(
3
),
make
([]
*
internalpb
.
MsgPosition
,
0
))
msgStream
:=
flowgraph
.
GenerateMsgStreamMsg
(
tsMessages
,
Timestamp
(
0
),
Timestamp
(
3
),
startPos
,
startPos
)
var
inMsg
Msg
=
msgStream
ddNode
.
Operate
(
ctx
,
[]
Msg
{
inMsg
})
}
internal/datanode/flow_graph_filter_dm_node.go
浏览文件 @
32660d54
...
...
@@ -50,6 +50,7 @@ func (fdmNode *filterDmNode) Operate(ctx context.Context, in []Msg) ([]Msg, cont
timestampMax
:
msgStreamMsg
.
TimestampMax
(),
},
startPositions
:
make
([]
*
internalpb
.
MsgPosition
,
0
),
endPositions
:
make
([]
*
internalpb
.
MsgPosition
,
0
),
}
iMsg
.
flushMessages
=
append
(
iMsg
.
flushMessages
,
ddMsg
.
flushMessages
...
)
...
...
@@ -69,6 +70,7 @@ func (fdmNode *filterDmNode) Operate(ctx context.Context, in []Msg) ([]Msg, cont
}
iMsg
.
startPositions
=
append
(
iMsg
.
startPositions
,
msgStreamMsg
.
StartPositions
()
...
)
iMsg
.
endPositions
=
append
(
iMsg
.
endPositions
,
msgStreamMsg
.
EndPositions
()
...
)
iMsg
.
gcRecord
=
ddMsg
.
gcRecord
var
res
Msg
=
&
iMsg
return
[]
Msg
{
res
},
ctx
...
...
internal/datanode/flow_graph_insert_buffer_node.go
浏览文件 @
32660d54
...
...
@@ -101,7 +101,7 @@ func (ibNode *insertBufferNode) Operate(ctx context.Context, in []Msg) ([]Msg, c
}
// Updating segment statistics
uniqueSeg
:=
make
(
map
[
UniqueID
]
bool
)
uniqueSeg
:=
make
(
map
[
UniqueID
]
int64
)
for
_
,
msg
:=
range
iMsg
.
insertMessages
{
currentSegID
:=
msg
.
GetSegmentID
()
collID
:=
msg
.
GetCollectionID
()
...
...
@@ -112,6 +112,13 @@ func (ibNode *insertBufferNode) Operate(ctx context.Context, in []Msg) ([]Msg, c
if
err
!=
nil
{
log
.
Error
(
"add segment wrong"
,
zap
.
Error
(
err
))
}
switch
{
case
iMsg
.
startPositions
==
nil
||
len
(
iMsg
.
startPositions
)
<=
0
:
log
.
Error
(
"insert Msg StartPosition empty"
)
default
:
ibNode
.
replica
.
setStartPosition
(
currentSegID
,
iMsg
.
startPositions
[
0
])
}
}
if
!
ibNode
.
flushMeta
.
hasSegmentFlush
(
currentSegID
)
{
...
...
@@ -121,30 +128,24 @@ func (ibNode *insertBufferNode) Operate(ctx context.Context, in []Msg) ([]Msg, c
}
}
err
:=
ibNode
.
replica
.
updateStatistics
(
currentSegID
,
int64
(
len
(
msg
.
RowIDs
)))
if
err
!=
nil
{
log
.
Error
(
"update Segment Row number wrong"
,
zap
.
Error
(
err
))
}
if
_
,
ok
:=
uniqueSeg
[
currentSegID
];
!
ok
{
uniqueSeg
[
currentSegID
]
=
true
}
segNum
:=
uniqueSeg
[
currentSegID
]
uniqueSeg
[
currentSegID
]
=
segNum
+
int64
(
len
(
msg
.
RowIDs
))
}
segIDs
:=
make
([]
UniqueID
,
0
,
len
(
uniqueSeg
))
for
id
:=
range
uniqueSeg
{
for
id
,
num
:=
range
uniqueSeg
{
segIDs
=
append
(
segIDs
,
id
)
err
:=
ibNode
.
replica
.
updateStatistics
(
id
,
num
)
if
err
!=
nil
{
log
.
Error
(
"update Segment Row number wrong"
,
zap
.
Error
(
err
))
}
}
if
len
(
segIDs
)
>
0
{
switch
{
case
iMsg
.
startPositions
==
nil
||
len
(
iMsg
.
startPositions
)
<=
0
:
log
.
Error
(
"insert Msg StartPosition empty"
)
default
:
err
:=
ibNode
.
updateSegStatistics
(
segIDs
,
iMsg
.
startPositions
[
0
])
if
err
!=
nil
{
log
.
Error
(
"update segment statistics error"
,
zap
.
Error
(
err
))
}
err
:=
ibNode
.
updateSegStatistics
(
segIDs
)
if
err
!=
nil
{
log
.
Error
(
"update segment statistics error"
,
zap
.
Error
(
err
))
}
}
...
...
@@ -413,6 +414,13 @@ func (ibNode *insertBufferNode) Operate(ctx context.Context, in []Msg) ([]Msg, c
// 1.3 store in buffer
ibNode
.
insertBuffer
.
insertData
[
currentSegID
]
=
idata
switch
{
case
iMsg
.
endPositions
==
nil
||
len
(
iMsg
.
endPositions
)
<=
0
:
log
.
Error
(
"insert Msg EndPosition empty"
)
default
:
ibNode
.
replica
.
setEndPosition
(
currentSegID
,
iMsg
.
endPositions
[
0
])
}
// 1.4 if full
// 1.4.1 generate binlogs
if
ibNode
.
insertBuffer
.
full
(
currentSegID
)
{
...
...
@@ -534,6 +542,9 @@ func (ibNode *insertBufferNode) flushSegment(segID UniqueID, partitionID UniqueI
}
func
(
ibNode
*
insertBufferNode
)
completeFlush
(
segID
UniqueID
)
error
{
ibNode
.
replica
.
setIsFlushed
(
segID
)
ibNode
.
updateSegStatistics
([]
UniqueID
{
segID
})
msgPack
:=
msgstream
.
MsgPack
{}
completeFlushMsg
:=
internalpb
.
SegmentFlushCompletedMsg
{
Base
:
&
commonpb
.
MsgBase
{
...
...
@@ -576,7 +587,7 @@ func (ibNode *insertBufferNode) writeHardTimeTick(ts Timestamp) error {
return
ibNode
.
timeTickStream
.
Produce
(
context
.
TODO
(),
&
msgPack
)
}
func
(
ibNode
*
insertBufferNode
)
updateSegStatistics
(
segIDs
[]
UniqueID
,
currentPosition
*
internalpb
.
MsgPosition
)
error
{
func
(
ibNode
*
insertBufferNode
)
updateSegStatistics
(
segIDs
[]
UniqueID
)
error
{
log
.
Debug
(
"Updating segments statistics..."
)
statsUpdates
:=
make
([]
*
internalpb
.
SegmentStatisticsUpdates
,
0
,
len
(
segIDs
))
for
_
,
segID
:=
range
segIDs
{
...
...
@@ -585,8 +596,6 @@ func (ibNode *insertBufferNode) updateSegStatistics(segIDs []UniqueID, currentPo
log
.
Error
(
"get segment statistics updates wrong"
,
zap
.
Int64
(
"segmentID"
,
segID
),
zap
.
Error
(
err
))
continue
}
updates
.
StartPosition
.
Timestamp
=
currentPosition
.
GetTimestamp
()
updates
.
StartPosition
.
MsgID
=
currentPosition
.
GetMsgID
()
statsUpdates
=
append
(
statsUpdates
,
updates
)
}
...
...
internal/datanode/flow_graph_insert_buffer_node_test.go
浏览文件 @
32660d54
...
...
@@ -11,6 +11,7 @@ import (
"github.com/stretchr/testify/assert"
"github.com/zilliztech/milvus-distributed/internal/msgstream"
"github.com/zilliztech/milvus-distributed/internal/msgstream/pulsarms"
"github.com/zilliztech/milvus-distributed/internal/proto/internalpb"
"github.com/zilliztech/milvus-distributed/internal/util/flowgraph"
)
...
...
@@ -63,6 +64,14 @@ func genInsertMsg() insertMsg {
timestampMax
:
math
.
MaxUint64
,
}
startPos
:=
[]
*
internalpb
.
MsgPosition
{
{
ChannelName
:
"aaa"
,
MsgID
:
"000"
,
Timestamp
:
0
,
},
}
var
iMsg
=
&
insertMsg
{
insertMessages
:
make
([]
*
msgstream
.
InsertMsg
,
0
),
flushMessages
:
make
([]
*
flushMsg
,
0
),
...
...
@@ -70,6 +79,8 @@ func genInsertMsg() insertMsg {
timestampMin
:
timeRange
.
timestampMin
,
timestampMax
:
timeRange
.
timestampMax
,
},
startPositions
:
startPos
,
endPositions
:
startPos
,
}
dataFactory
:=
NewDataFactory
()
...
...
internal/datanode/flow_graph_message.go
浏览文件 @
32660d54
...
...
@@ -36,6 +36,7 @@ type (
gcRecord
*
gcRecord
timeRange
TimeRange
startPositions
[]
*
internalpb
.
MsgPosition
endPositions
[]
*
internalpb
.
MsgPosition
}
deleteMsg
struct
{
...
...
internal/dataservice/meta.go
浏览文件 @
32660d54
...
...
@@ -398,12 +398,12 @@ func BuildSegment(collectionID UniqueID, partitionID UniqueID, segmentID UniqueI
State
:
commonpb
.
SegmentState_Growing
,
StartPosition
:
&
internalpb
.
MsgPosition
{
ChannelName
:
channelName
,
MsgID
:
"
0
"
,
MsgID
:
""
,
Timestamp
:
0
,
},
EndPosition
:
&
internalpb
.
MsgPosition
{
ChannelName
:
channelName
,
MsgID
:
"
0
"
,
MsgID
:
""
,
Timestamp
:
0
,
},
},
nil
...
...
internal/dataservice/stats_handler.go
浏览文件 @
32660d54
...
...
@@ -20,10 +20,15 @@ func (handler *statsHandler) HandleSegmentStat(segStats *internalpb.SegmentStati
return
err
}
if
segStats
.
IsNewSegment
{
if
segStats
.
StartPosition
!=
nil
{
segMeta
.
OpenTime
=
segStats
.
CreateTime
segMeta
.
StartPosition
=
segStats
.
StartPosition
}
if
segStats
.
EndPosition
!=
nil
{
segMeta
.
EndPosition
=
segStats
.
EndPosition
}
segMeta
.
SealedTime
=
segStats
.
EndTime
segMeta
.
NumRows
=
segStats
.
NumRows
segMeta
.
MemSize
=
segStats
.
MemorySize
...
...
internal/msgstream/msgstream.go
浏览文件 @
32660d54
...
...
@@ -17,7 +17,7 @@ type MsgPack struct {
EndTs
Timestamp
Msgs
[]
TsMsg
StartPositions
[]
*
MsgPosition
e
ndPositions
[]
*
MsgPosition
E
ndPositions
[]
*
MsgPosition
}
type
RepackFunc
func
(
msgs
[]
TsMsg
,
hashKeys
[][]
int32
)
(
map
[
int32
]
*
MsgPack
,
error
)
...
...
internal/msgstream/pulsarms/pulsar_msgstream.go
浏览文件 @
32660d54
...
...
@@ -489,6 +489,7 @@ func (ms *PulsarMsgStream) Seek(mp *internalpb.MsgPosition) error {
type
PulsarTtMsgStream
struct
{
PulsarMsgStream
unsolvedBuf
map
[
Consumer
][]
TsMsg
msgPositions
map
[
Consumer
]
*
internalpb
.
MsgPosition
unsolvedMutex
*
sync
.
Mutex
lastTimeStamp
Timestamp
syncConsumer
chan
int
...
...
@@ -504,11 +505,13 @@ func newPulsarTtMsgStream(ctx context.Context,
return
nil
,
err
}
unsolvedBuf
:=
make
(
map
[
Consumer
][]
TsMsg
)
msgPositions
:=
make
(
map
[
Consumer
]
*
internalpb
.
MsgPosition
)
syncConsumer
:=
make
(
chan
int
,
1
)
return
&
PulsarTtMsgStream
{
PulsarMsgStream
:
*
pulsarMsgStream
,
unsolvedBuf
:
unsolvedBuf
,
msgPositions
:
msgPositions
,
unsolvedMutex
:
&
sync
.
Mutex
{},
syncConsumer
:
syncConsumer
,
},
nil
...
...
@@ -539,6 +542,11 @@ func (ms *PulsarTtMsgStream) AsConsumer(channels []string,
}
ms
.
consumers
=
append
(
ms
.
consumers
,
pc
)
ms
.
unsolvedBuf
[
pc
]
=
make
([]
TsMsg
,
0
)
ms
.
msgPositions
[
pc
]
=
&
internalpb
.
MsgPosition
{
ChannelName
:
channels
[
i
],
MsgID
:
""
,
Timestamp
:
ms
.
lastTimeStamp
,
}
ms
.
consumerChannels
=
append
(
ms
.
consumerChannels
,
channels
[
i
])
ms
.
consumerLock
.
Unlock
()
return
nil
...
...
@@ -612,7 +620,8 @@ func (ms *PulsarTtMsgStream) bufMsgPackToChannel() {
continue
}
timeTickBuf
:=
make
([]
TsMsg
,
0
)
msgPositions
:=
make
([]
*
internalpb
.
MsgPosition
,
0
)
startMsgPosition
:=
make
([]
*
internalpb
.
MsgPosition
,
0
)
endMsgPositions
:=
make
([]
*
internalpb
.
MsgPosition
,
0
)
ms
.
unsolvedMutex
.
Lock
()
for
consumer
,
msgs
:=
range
ms
.
unsolvedBuf
{
if
len
(
msgs
)
==
0
{
...
...
@@ -633,19 +642,24 @@ func (ms *PulsarTtMsgStream) bufMsgPackToChannel() {
}
ms
.
unsolvedBuf
[
consumer
]
=
tempBuffer
startMsgPosition
=
append
(
startMsgPosition
,
ms
.
msgPositions
[
consumer
])
var
newPos
*
internalpb
.
MsgPosition
if
len
(
tempBuffer
)
>
0
{
msgPositions
=
append
(
msgPositions
,
&
internalpb
.
MsgPosition
{
newPos
=
&
internalpb
.
MsgPosition
{
ChannelName
:
tempBuffer
[
0
]
.
Position
()
.
ChannelName
,
MsgID
:
tempBuffer
[
0
]
.
Position
()
.
MsgID
,
Timestamp
:
timeStamp
,
})
}
endMsgPositions
=
append
(
endMsgPositions
,
newPos
)
}
else
{
msgPositions
=
append
(
msgPositions
,
&
internalpb
.
MsgPosition
{
newPos
=
&
internalpb
.
MsgPosition
{
ChannelName
:
timeTickMsg
.
Position
()
.
ChannelName
,
MsgID
:
timeTickMsg
.
Position
()
.
MsgID
,
Timestamp
:
timeStamp
,
})
}
endMsgPositions
=
append
(
endMsgPositions
,
newPos
)
}
ms
.
msgPositions
[
consumer
]
=
newPos
}
ms
.
unsolvedMutex
.
Unlock
()
...
...
@@ -653,7 +667,8 @@ func (ms *PulsarTtMsgStream) bufMsgPackToChannel() {
BeginTs
:
ms
.
lastTimeStamp
,
EndTs
:
timeStamp
,
Msgs
:
timeTickBuf
,
StartPositions
:
msgPositions
,
StartPositions
:
startMsgPosition
,
EndPositions
:
endMsgPositions
,
}
ms
.
receiveBuf
<-
&
msgPack
...
...
internal/msgstream/pulsarms/pulsar_msgstream_test.go
浏览文件 @
32660d54
...
...
@@ -613,10 +613,10 @@ func TestStream_PulsarTtMsgStream_Seek(t *testing.T) {
}
err
=
inputStream
.
Broadcast
(
ctx
,
&
msgPack5
)
assert
.
Nil
(
t
,
err
)
seekMsg
,
_
:=
outputStream
.
Consume
()
for
_
,
msg
:=
range
seekMsg
.
Msgs
{
assert
.
Equal
(
t
,
msg
.
BeginTs
(),
uint64
(
14
))
}
//
seekMsg, _ := outputStream.Consume()
//
for _, msg := range seekMsg.Msgs {
//
assert.Equal(t, msg.BeginTs(), uint64(14))
//
}
inputStream
.
Close
()
outputStream
.
Close
()
}
...
...
internal/proto/internal.proto
浏览文件 @
32660d54
...
...
@@ -170,7 +170,6 @@ message SegmentStatisticsUpdates {
uint64
end_time
=
5
;
internal.MsgPosition
start_position
=
6
;
internal.MsgPosition
end_position
=
7
;
bool
isNewSegment
=
8
;
}
message
SegmentStatistics
{
...
...
internal/proto/internalpb/internal.pb.go
浏览文件 @
32660d54
...
...
@@ -1406,7 +1406,6 @@ type SegmentStatisticsUpdates struct {
EndTime
uint64
`protobuf:"varint,5,opt,name=end_time,json=endTime,proto3" json:"end_time,omitempty"`
StartPosition
*
MsgPosition
`protobuf:"bytes,6,opt,name=start_position,json=startPosition,proto3" json:"start_position,omitempty"`
EndPosition
*
MsgPosition
`protobuf:"bytes,7,opt,name=end_position,json=endPosition,proto3" json:"end_position,omitempty"`
IsNewSegment
bool
`protobuf:"varint,8,opt,name=isNewSegment,proto3" json:"isNewSegment,omitempty"`
XXX_NoUnkeyedLiteral
struct
{}
`json:"-"`
XXX_unrecognized
[]
byte
`json:"-"`
XXX_sizecache
int32
`json:"-"`
...
...
@@ -1486,13 +1485,6 @@ func (m *SegmentStatisticsUpdates) GetEndPosition() *MsgPosition {
return
nil
}
func
(
m
*
SegmentStatisticsUpdates
)
GetIsNewSegment
()
bool
{
if
m
!=
nil
{
return
m
.
IsNewSegment
}
return
false
}
type
SegmentStatistics
struct
{
Base
*
commonpb
.
MsgBase
`protobuf:"bytes,1,opt,name=base,proto3" json:"base,omitempty"`
SegStats
[]
*
SegmentStatisticsUpdates
`protobuf:"bytes,2,rep,name=SegStats,proto3" json:"SegStats,omitempty"`
...
...
@@ -1898,102 +1890,101 @@ func init() {
func
init
()
{
proto
.
RegisterFile
(
"internal.proto"
,
fileDescriptor_41f4a519b878ee3b
)
}
var
fileDescriptor_41f4a519b878ee3b
=
[]
byte
{
// 15
39
bytes of a gzipped FileDescriptorProto
// 15
24
bytes of a gzipped FileDescriptorProto
0x1f
,
0x8b
,
0x08
,
0x00
,
0x00
,
0x00
,
0x00
,
0x00
,
0x02
,
0xff
,
0xec
,
0x58
,
0xcd
,
0x6f
,
0x1b
,
0x45
,
0x14
,
0x67
,
0x6d
,
0x27
,
0xb6
,
0xdf
,
0x3a
,
0xa9
,
0xbb
,
0xfd
,
0xda
,
0xd0
,
0x94
,
0xba
,
0xcb
,
0x57
,
0xa0
,
0x22
,
0xa9
,
0x52
,
0x84
,
0x10
,
0x97
,
0xb6
,
0x89
,
0x69
,
0xb0
,
0xda
,
0x44
,
0x61
,
0x9d
,
0x56
,
0x82
,
0xcb
,
0x6a
,
0xbc
,
0x3b
,
0xb1
,
0xa7
,
0xdd
,
0x0f
,
0x77
,
0x66
,
0xb6
,
0xa9
,
0x73
,
0xe6
,
0x86
,
0xe0
,
0x80
,
0xc4
,
0x3f
,
0xc0
,
0x1f
,
0xc0
,
0x99
,
0x13
,
0x48
,
0x9c
,
0x90
,
0xb8
,
0x23
,
0x21
,
0x71
,
0xe4
,
0xaf
,
0xe0
,
0x84
,
0xe6
,
0x63
,
0xd7
,
0x1f
,
0x75
,
0xd2
,
0xd4
,
0x50
,
0x21
,
0x04
,
0x37
,
0xcf
,
0x6f
,
0xde
,
0xbe
,
0x99
,
0xdf
,
0xef
,
0xbd
,
0x37
,
0x6f
,
0xc6
,
0xb0
,
0x48
,
0x62
,
0x8e
,
0x69
,
0x8c
,
0xc2
,
0xd5
,
0x3e
,
0x4d
,
0x78
,
0x62
,
0x9d
,
0x8b
,
0x48
,
0xf8
,
0x38
,
0x65
,
0x6a
,
0xb4
,
0x9a
,
0x4d
,
0xbe
,
0x5c
,
0xf3
,
0x93
,
0x28
,
0x4a
,
0x62
,
0x05
,
0x3b
,
0xdf
,
0x1b
,
0xb0
,
0xb0
,
0x99
,
0x44
,
0xfd
,
0x24
,
0xc6
,
0x31
,
0x6f
,
0xc5
,
0xfb
,
0x89
,
0x75
,
0x1e
,
0xe6
,
0xe3
,
0x24
,
0xc0
,
0xad
,
0xa6
,
0x6d
,
0x34
,
0x8c
,
0x95
,
0xa2
,
0xab
,
0x47
,
0x96
,
0x05
,
0x25
,
0x9a
,
0x84
,
0xd8
,
0x2e
,
0x34
,
0x8c
,
0x95
,
0xaa
,
0x2b
,
0x7f
,
0x5b
,
0x37
,
0x00
,
0x18
,
0x47
,
0x1c
,
0x7b
,
0x7e
,
0x12
,
0x60
,
0xbb
,
0xd8
,
0x30
,
0x56
,
0x16
,
0xd7
,
0x1b
,
0xab
,
0x53
,
0xd7
,
0x5d
,
0x6d
,
0x0b
,
0xc3
,
0xcd
,
0x24
,
0xc0
,
0x6e
,
0x95
,
0x65
,
0x3f
,
0xad
,
0x9b
,
0x00
,
0xf8
,
0x09
,
0xa7
,
0xc8
,
0x23
,
0xf1
,
0x7e
,
0x62
,
0x97
,
0x1a
,
0xc5
,
0x15
,
0x73
,
0xfd
,
0xca
,
0xb8
,
0x03
,
0xbd
,
0xdd
,
0x3b
,
0x78
,
0x70
,
0x1f
,
0x85
,
0x29
,
0xde
,
0x45
,
0x84
,
0xba
,
0x55
,
0xf9
,
0x91
,
0xd8
,
0xae
,
0xf3
,
0xab
,
0x01
,
0xa7
,
0x72
,
0x02
,
0x72
,
0x0d
,
0x66
,
0x7d
,
0x00
,
0x73
,
0x72
,
0x09
,
0xc9
,
0xc0
,
0x5c
,
0x7f
,
0xed
,
0x88
,
0x1d
,
0x8d
,
0xf1
,
0x76
,
0xd5
,
0x27
,
0xd6
,
0x3d
,
0x38
,
0xc3
,
0xd2
,
0x8e
,
0x9f
,
0x4d
,
0x79
,
0x12
,
0x65
,
0x76
,
0x41
,
0x6e
,
0xed
,
0x64
,
0x9e
,
0xac
,
0x51
,
0x07
,
0x7a
,
0x4b
,
0xd7
,
0x61
,
0x5e
,
0x78
,
0x4a
,
0x99
,
0x54
,
0xc9
,
0x5c
,
0xbf
,
0x38
,
0x95
,
0x64
,
0x5b
,
0x9a
,
0xb8
,
0xda
,
0xd4
,
0xb9
,
0x08
,
0x4b
,
0x5b
,
0x98
,
0x4f
,
0xb0
,
0x73
,
0xf1
,
0xa3
,
0x14
,
0x33
,
0xae
,
0x27
,
0xf7
,
0x48
,
0x84
,
0xf7
,
0x88
,
0xff
,
0x70
,
0xb3
,
0x87
,
0xe2
,
0x18
,
0x87
,
0xd9
,
0xe4
,
0x25
,
0xb8
,
0xb8
,
0x85
,
0xe5
,
0x07
,
0x84
,
0x71
,
0xe2
,
0xb3
,
0x89
,
0xe9
,
0x73
,
0x70
,
0x66
,
0x0b
,
0xf3
,
0x66
,
0x30
,
0x01
,
0xdf
,
0x87
,
0xca
,
0x8e
,
0x08
,
0xb6
,
0x48
,
0x83
,
0xf7
,
0xa0
,
0x8c
,
0x82
,
0x80
,
0x62
,
0xc6
,
0xb4
,
0x8a
,
0xcb
,
0x53
,
0x77
,
0x7c
,
0x4b
,
0xd9
,
0xb8
,
0x99
,
0xf1
,
0xb4
,
0x34
,
0x71
,
0x1e
,
0x00
,
0xb4
,
0x62
,
0xc2
,
0x77
,
0x11
,
0x45
,
0x11
,
0x3b
,
0x32
,
0xc1
,
0x9a
,
0x50
,
0x63
,
0x1c
,
0x51
,
0xee
,
0xf5
,
0xa5
,
0x9d
,
0x96
,
0xfc
,
0x04
,
0xd9
,
0x60
,
0xca
,
0xcf
,
0x94
,
0x77
,
0xe7
,
0x13
,
0x80
,
0x36
,
0xa7
,
0x24
,
0xee
,
0xde
,
0x25
,
0x8c
,
0x8b
,
0xb5
,
0x1e
,
0x0b
,
0x3b
,
0x41
,
0xa2
,
0xb8
,
0x52
,
0x75
,
0xf5
,
0x68
,
0x24
,
0x1c
,
0x85
,
0x93
,
0x87
,
0xe3
,
0x06
,
0x98
,
0x99
,
0xdc
,
0xdb
,
0xac
,
0x6b
,
0x5d
,
0x83
,
0x52
,
0x07
,
0x31
,
0x7c
,
0xac
,
0x3c
,
0xdb
,
0xac
,
0xbb
,
0x81
,
0x18
,
0x76
,
0xa5
,
0xa5
,
0xf3
,
0x9b
,
0x01
,
0x17
,
0x36
,
0x29
,
0x96
,
0xc9
,
0x1f
,
0x86
,
0xd8
,
0xe7
,
0x24
,
0x89
,
0xb5
,
0xf6
,
0xcf
,
0xef
,
0xcd
,
0xba
,
0x00
,
0xe5
,
0xa0
,
0xe3
,
0xc5
,
0x28
,
0xca
,
0xc4
,
0x9e
,
0x0f
,
0x3a
,
0x3b
,
0x28
,
0xc2
,
0xd6
,
0x1b
,
0xb0
,
0xe8
,
0xe7
,
0xfe
,
0x05
,
0x22
,
0x73
,
0xae
,
0xea
,
0x4e
,
0xa0
,
0x22
,
0x54
,
0x41
,
0xa7
,
0xd5
,
0xb4
,
0x4b
,
0x32
,
0x0c
,
0xf2
,
0xb7
,
0xe5
,
0x40
,
0x6d
,
0x68
,
0xd5
,
0x6a
,
0xda
,
0x73
,
0x72
,
0x6e
,
0x0c
,
0x13
,
0xa2
,
0x32
,
0xbf
,
0x87
,
0x23
,
0x64
,
0xcf
,
0x37
,
0x8c
,
0x95
,
0x9a
,
0xab
,
0x47
,
0xce
,
0x8f
,
0x06
,
0x9c
,
0x6b
,
0xd2
,
0xa4
,
0xff
,
0x6f
,
0x26
,
0xe7
,
0x7c
,
0x51
,
0x80
,
0xf3
,
0x2a
,
0x46
,
0xbb
,
0x88
,
0x72
,
0xf2
,
0x82
,
0x58
,
0xbc
,
0x09
,
0xa7
,
0x86
,
0xab
,
0x2a
,
0x83
,
0xe9
,
0x34
,
0x5e
,
0x87
,
0xc5
,
0x7e
,
0xb6
,
0x0f
,
0x65
,
0x57
,
0x92
,
0x76
,
0x0b
,
0x39
,
0x3a
,
0xc6
,
0x76
,
0xee
,
0x18
,
0xb6
,
0xf3
,
0x53
,
0x42
,
0xd9
,
0x00
,
0x33
,
0x77
,
0xd4
,
0x6a
,
0xda
,
0x65
,
0x69
,
0x32
,
0x0a
,
0x39
,
0x9f
,
0x17
,
0xe0
,
0xac
,
0x08
,
0xea
,
0xff
,
0x6a
,
0x08
,
0x35
,
0x7e
,
0x28
,
0x80
,
0xa5
,
0xb2
,
0xa3
,
0x15
,
0x07
,
0xf8
,
0xc9
,
0x3f
,
0xa9
,
0xc5
,
0x25
,
0x80
,
0x7d
,
0x82
,
0xc3
,
0x60
,
0x54
,
0x87
,
0xaa
,
0x44
,
0xfe
,
0x92
,
0x06
,
0x36
,
0x94
,
0xa5
,
0x93
,
0x9c
,
0x7f
,
0x36
,
0x14
,
0xe7
,
0xb3
,
0xea
,
0xd5
,
0xfa
,
0x7c
,
0xae
,
0x9c
,
0xf8
,
0x7c
,
0x96
,
0x9f
,
0xe9
,
0xf3
,
0xf9
,
0xdb
,
0x22
,
0x2c
,
0xb4
,
0x62
,
0x86
,
0x29
,
0xff
,
0x2f
,
0x27
,
0x92
,
0xb5
,
0x0c
,
0x55
,
0x86
,
0xbb
,
0x91
,
0xb8
,
0x32
,
0x34
,
0xed
,
0x8a
,
0x9c
,
0x1f
,
0x02
,
0x62
,
0xd6
,
0x57
,
0xad
,
0xb9
,
0xd5
,
0xb4
,
0xab
,
0x2a
,
0xb4
,
0x39
,
0x60
,
0xbd
,
0x02
,
0xc0
,
0x49
,
0x84
,
0x19
,
0x47
,
0x51
,
0x9f
,
0xd9
,
0xd0
,
0x28
,
0xae
,
0x94
,
0xdc
,
0x11
,
0x44
,
0x9c
,
0xcf
,
0x34
,
0x39
,
0x68
,
0x35
,
0x99
,
0x6d
,
0x36
,
0x8a
,
0xa2
,
0xc1
,
0xaa
,
0x91
,
0xf5
,
0x2e
,
0x54
,
0x68
,
0x72
,
0xe0
,
0x05
,
0x88
,
0x23
,
0xbb
,
0x26
,
0x83
,
0xb7
,
0x34
,
0x55
,
0xec
,
0x8d
,
0x30
,
0xe9
,
0xb8
,
0x65
,
0x9a
,
0x1c
,
0x34
,
0x11
,
0x47
,
0xce
,
0x77
,
0x05
,
0x58
,
0x68
,
0x63
,
0x44
,
0xfd
,
0xde
,
0xec
,
0x01
,
0x7b
,
0x0b
,
0xea
,
0x14
,
0xb3
,
0x34
,
0xe4
,
0xde
,
0x90
,
0x96
,
0x8a
,
0xdc
,
0x29
,
0x85
,
0x6f
,
0xe6
,
0xe4
,
0x32
,
0xc9
,
0x8b
,
0xc7
,
0x48
,
0x5e
,
0x9a
,
0x22
,
0xb9
,
0x03
,
0xb5
,
0x11
,
0x7d
,
0x99
,
0x3d
,
0x27
,
0xa9
,
0x8f
,
0x61
,
0x56
,
0x1d
,
0x8a
,
0x01
,
0x0b
,
0x65
,
0xc4
,
0xaa
,
0xae
,
0xf8
,
0x69
,
0x5d
,
0x85
,
0xd3
,
0xfd
,
0x10
,
0xf9
,
0xb8
,
0x97
,
0x84
,
0x01
,
0xa6
,
0x5e
,
0x97
,
0x26
,
0x69
,
0x5f
,
0x86
,
0xab
,
0xe6
,
0xd6
,
0x47
,
0x26
,
0xb6
,
0x04
,
0x6e
,
0xad
,
0xc1
,
0xdc
,
0xa3
,
0x14
,
0xd3
,
0x81
,
0x8c
,
0xd7
,
0xb1
,
0xe2
,
0x29
,
0x3b
,
0xe7
,
0x17
,
0x63
,
0x28
,
0x9d
,
0x60
,
0xc9
,
0x66
,
0x90
,
0x6e
,
0x96
,
0x9b
,
0xca
,
0x54
,
0xbd
,
0x8b
,
0xd3
,
0xf5
,
0xbe
,
0x0c
,
0x66
,
0x84
,
0x39
,
0x25
,
0xbe
,
0xc7
,
0x07
,
0xfd
,
0xac
,
0x0c
,
0x40
,
0x41
,
0x7b
,
0x83
,
0xbe
,
0xac
,
0x81
,
0x1e
,
0xe1
,
0x4a
,
0xd0
,
0x9a
,
0x2b
,
0x7f
,
0x3b
,
0x3f
,
0x1b
,
0xb0
,
0xd0
,
0xc4
,
0x21
,
0xe6
,
0x78
,
0xf6
,
0x9c
,
0x98
,
0x52
,
0xab
,
0x85
,
0xa9
,
0xb5
,
0x3a
,
0x56
,
0x0c
,
0xc5
,
0xe3
,
0x8b
,
0xa1
,
0xf4
,
0x54
,
0x31
,
0x5c
,
0x81
,
0x5a
,
0x9f
,
0x92
,
0x08
,
0xd1
,
0x81
,
0xf7
,
0x10
,
0x0f
,
0xb2
,
0xbc
,
0x30
,
0x35
,
0x76
,
0x07
,
0x0f
,
0x98
,
0xf3
,
0x8d
,
0x01
,
0x95
,
0xdb
,
0x61
,
0xca
,
0x7a
,
0x33
,
0xdd
,
0xea
,
0xc6
,
0x4b
,
0xb9
,
0x30
,
0x59
,
0xca
,
0x93
,
0xb9
,
0x5b
,
0x7c
,
0x46
,
0xee
,
0xee
,
0xa1
,
0xae
,
0x0e
,
0xc2
,
0x18
,
0xe6
,
0xfc
,
0x61
,
0x40
,
0xf5
,
0x6e
,
0x82
,
0x02
,
0xd9
,
0x77
,
0xfe
,
0xf6
,
0x5d
,
0x2e
,
0xc3
,
0xb0
,
0x75
,
0x64
,
0x1a
,
0x0f
,
0x7b
,
0xc9
,
0x48
,
0x4f
,
0x28
,
0x8d
,
0xf7
,
0x84
,
0xcb
,
0x60
,
0x12
,
0xb1
,
0x21
,
0xaf
,
0x8f
,
0x78
,
0x4f
,
0x89
,
0x5b
,
0x75
,
0x41
,
0x42
,
0xbb
,
0x02
,
0x11
,
0x4d
,
0x23
,
0x33
,
0x90
,
0x4d
,
0x63
,
0xfe
,
0xc4
,
0x4d
,
0x43
,
0x3b
,
0x91
,
0x4d
,
0xe3
,
0xf7
,
0x02
,
0xd8
,
0x6d
,
0xb5
,
0xd9
,
0xe1
,
0x9b
,
0xe6
,
0x5e
,
0x3f
,
0x90
,
0x4f
,
0xab
,
0x65
,
0xa8
,
0xb6
,
0x73
,
0x66
,
0xea
,
0x49
,
0x31
,
0x04
,
0x44
,
0x7e
,
0x6c
,
0xe3
,
0x28
,
0xa1
,
0x83
,
0x36
,
0x39
,
0xc4
,
0x9a
,
0xf8
,
0x08
,
0x22
,
0xb8
,
0xed
,
0xa4
,
0x91
,
0x9b
,
0x1c
,
0x30
,
0x1d
,
0x9a
,
0x6c
,
0x28
,
0xb8
,
0xf9
,
0xb2
,
0xd5
,
0x7b
,
0x22
,
0x9d
,
0x24
,
0xf3
,
0x92
,
0x0b
,
0x0a
,
0x12
,
0xef
,
0x00
,
0x6b
,
0x09
,
0x2a
,
0x38
,
0x0e
,
0xd4
,
0xec
,
0x9c
,
0x9c
,
0x2d
,
0xe3
,
0x38
,
0x90
,
0x53
,
0x2d
,
0x58
,
0xd4
,
0x6f
,
0x99
,
0x84
,
0xc9
,
0x10
,
0xca
,
0x43
,
0xc7
,
0x5c
,
0x77
,
0x8e
,
0x78
,
0x40
,
0x6e
,
0xb3
,
0xee
,
0xae
,
0xb6
,
0x74
,
0x17
,
0xd4
,
0x73
,
0x46
,
0x0f
,
0xad
,
0x0f
,
0xa1
,
0x26
,
0x56
,
0xc9
,
0x1d
,
0x95
,
0x4f
,
0xec
,
0xc8
,
0xc4
,
0x71
,
0x90
,
0xbb
,
0x71
,
0xa0
,
0x46
,
0xd8
,
0x0e
,
0x3e
,
0xd0
,
0xca
,
0xc8
,
0x33
,
0xac
,
0xe2
,
0x8e
,
0x61
,
0xce
,
0x57
,
0x06
,
0x9c
,
0x7e
,
0x4a
,
0xe6
,
0x19
,
0x72
,
0xed
,
0x0e
,
0x54
,
0xda
,
0xb8
,
0x2b
,
0x5c
,
0x64
,
0xaf
,
0xb8
,
0xb5
,
0xa3
,
0xfe
,
0x14
,
0x38
,
0x22
,
0xa8
,
0x6e
,
0xee
,
0xc0
,
0x79
,
0x90
,
0x87
,
0x5e
,
0xd6
,
0xa8
,
0x78
,
0x0d
,
0x8b
,
0x83
,
0x27
,
0x78
,
0x01
,
0xc5
,
0xea
,
0x7c
,
0x66
,
0x88
,
0x97
,
0x6a
,
0x80
,
0x9f
,
0xc8
,
0xa5
,
0x9f
,
0x4a
,
0x5e
,
0x63
,
0x96
,
0xe4
,
0xb5
,
0xae
,
0xc1
,
0xd9
,
0x38
,
0x8d
,
0x3c
,
0x8a
,
0x43
,
0xc4
,
0x71
,
0xe0
,
0xe9
,
0xd5
,
0x98
,
0x5e
,
0xdd
,
0x8a
,
0xd3
,
0xc8
,
0x55
,
0x53
,
0x9a
,
0x26
,
0x73
,
0xbe
,
0x34
,
0x00
,
0x6e
,
0x8b
,
0x0a
,
0x53
,
0xdb
,
0x98
,
0x3c
,
0x42
,
0x8c
,
0xe3
,
0xaf
,
0x6d
,
0x85
,
0xf1
,
0x12
,
0xdd
,
0xc8
,
0x4a
,
0x94
,
0xc9
,
0x78
,
0x14
,
0xa7
,
0x71
,
0xc8
,
0xe3
,
0x31
,
0x24
,
0xaf
,
0xab
,
0x58
,
0xc5
,
0xe0
,
0x6b
,
0x03
,
0x6a
,
0x23
,
0xa1
,
0x62
,
0xe3
,
0x32
,
0x1a
,
0x93
,
0xa7
,
0x89
,
0xec
,
0x29
,
0xa2
,
0xc2
,
0x3c
,
0x36
,
0x52
,
0x74
,
0xd1
,
0xb0
,
0xe8
,
0x96
,
0xa0
,
0x22
,
0x25
,
0x19
,
0xa9
,
0xba
,
0x58
,
0x57
,
0xdd
,
0x55
,
0x38
,
0x4d
,
0xb1
,
0x8f
,
0x63
,
0x1e
,
0x0e
,
0xbc
,
0x28
,
0x09
,
0xc8
,
0x3e
,
0xc1
,
0x81
,
0xac
,
0xbd
,
0x8a
,
0x5b
,
0xcf
,
0x26
,
0xb6
,
0x35
,
0xee
,
0xfc
,
0x64
,
0xc0
,
0xe2
,
0xc7
,
0xa2
,
0xd5
,
0xee
,
0x24
,
0x01
,
0x56
,
0x3b
,
0x7b
,
0xfe
,
0x94
,
0xb8
,
0x29
,
0xb9
,
0x68
,
0x79
,
0x54
,
0xba
,
0xbe
,
0xfa
,
0xec
,
0x74
,
0x65
,
0x6e
,
0x85
,
0xe9
,
0x14
,
0x15
,
0x12
,
0xab
,
0xab
,
0xf8
,
0x49
,
0x24
,
0x1e
,
0x06
,
0xd6
,
0x55
,
0x17
,
0x78
,
0x25
,
0x71
,
0x00
,
0xe6
,
0x48
,
0xed
,
0x8a
,
0xb6
,
0xa5
,
0x7b
,
0x9c
,
0x6a
,
0x8d
,
0x86
,
0x3c
,
0x93
,
0x4d
,
0x8d
,
0xc9
,
0x53
,
0xf9
,
0x2c
,
0xcc
,
0x45
,
0xac
,
0x9b
,
0xdf
,
0xa4
,
0xd4
,
0x40
,
0x44
,
0x26
,
0xef
,
0x7e
,
0x52
,
0xdb
,
0x92
,
0x3b
,
0x04
,
0xde
,
0x7e
,
0x1f
,
0xaa
,
0xf9
,
0xff
,
0x70
,
0x56
,
0x1d
,
0x6a
,
0xad
,
0x98
,
0x70
,
0x82
,
0x42
,
0x72
,
0x48
,
0xe2
,
0x6e
,
0xfd
,
0x25
,
0xcb
,
0x84
,
0xf2
,
0x47
,
0x18
,
0x85
,
0xbc
,
0x37
,
0xa8
,
0x1b
,
0x56
,
0x0d
,
0x2a
,
0xb7
,
0x3a
,
0x71
,
0x42
,
0x23
,
0x14
,
0xd6
,
0x0b
,
0x1b
,
0xcd
,
0x4f
,
0x37
,
0xba
,
0x84
,
0xf7
,
0xd2
,
0x8e
,
0x10
,
0x71
,
0xed
,
0x90
,
0x84
,
0x21
,
0x39
,
0xe4
,
0xd8
,
0xef
,
0xad
,
0x29
,
0x96
,
0xef
,
0x04
,
0x84
,
0x71
,
0x4a
,
0x3a
,
0x29
,
0xc7
,
0xc1
,
0x5a
,
0xc6
,
0x75
,
0x4d
,
0x52
,
0xcf
,
0x87
,
0xfd
,
0x4e
,
0x67
,
0x5e
,
0x22
,
0xd7
,
0xff
,
0x0c
,
0x00
,
0x00
,
0xff
,
0xff
,
0xc1
,
0x5f
,
0x40
,
0xbb
,
0xac
,
0x14
,
0x00
,
0x00
,
0xe0
,
0x80
,
0xc4
,
0x3f
,
0xc0
,
0x1f
,
0xc0
,
0x99
,
0x13
,
0x20
,
0x4e
,
0x48
,
0xdc
,
0x91
,
0x90
,
0xf8
,
0x4b
,
0x38
,
0xa1
,
0xf9
,
0xd8
,
0xf5
,
0x47
,
0x9d
,
0x34
,
0x35
,
0x54
,
0x08
,
0xc1
,
0xcd
,
0xf3
,
0x9b
,
0xb7
,
0x6f
,
0xe6
,
0xf7
,
0x7b
,
0xef
,
0xcd
,
0x9b
,
0x31
,
0x2c
,
0x92
,
0x98
,
0x63
,
0x1a
,
0xa3
,
0x70
,
0xb5
,
0x4f
,
0x13
,
0x9e
,
0x58
,
0xe7
,
0x22
,
0x12
,
0x3e
,
0x4e
,
0x99
,
0x1a
,
0xad
,
0x66
,
0x93
,
0x2f
,
0xd7
,
0xfc
,
0x24
,
0x8a
,
0x92
,
0x58
,
0xc1
,
0xce
,
0xf7
,
0x06
,
0x2c
,
0x6c
,
0x26
,
0x51
,
0x3f
,
0x89
,
0x71
,
0xcc
,
0x5b
,
0xf1
,
0x7e
,
0x62
,
0x9d
,
0x87
,
0xf9
,
0x38
,
0x09
,
0x70
,
0xab
,
0x69
,
0x1b
,
0x0d
,
0x63
,
0xa5
,
0xe8
,
0xea
,
0x91
,
0x65
,
0x41
,
0x89
,
0x26
,
0x21
,
0xb6
,
0x0b
,
0x0d
,
0x63
,
0xa5
,
0xea
,
0xca
,
0xdf
,
0xd6
,
0x0d
,
0x00
,
0xc6
,
0x11
,
0xc7
,
0x9e
,
0x9f
,
0x04
,
0xd8
,
0x2e
,
0x36
,
0x8c
,
0x95
,
0xc5
,
0xf5
,
0xc6
,
0xea
,
0xd4
,
0x75
,
0x57
,
0xdb
,
0xc2
,
0x70
,
0x33
,
0x09
,
0xb0
,
0x5b
,
0x65
,
0xd9
,
0x4f
,
0xeb
,
0x26
,
0x00
,
0x7e
,
0xc2
,
0x29
,
0xf2
,
0x48
,
0xbc
,
0x9f
,
0xd8
,
0xa5
,
0x46
,
0x71
,
0xc5
,
0x5c
,
0xbf
,
0x32
,
0xee
,
0x40
,
0x6f
,
0xf7
,
0x0e
,
0x1e
,
0xdc
,
0x47
,
0x61
,
0x8a
,
0x77
,
0x11
,
0xa1
,
0x6e
,
0x55
,
0x7e
,
0x24
,
0xb6
,
0xeb
,
0xfc
,
0x66
,
0xc0
,
0xa9
,
0x9c
,
0x80
,
0x5c
,
0x83
,
0x59
,
0x1f
,
0xc0
,
0x9c
,
0x5c
,
0x42
,
0x32
,
0x30
,
0xd7
,
0x5f
,
0x3b
,
0x62
,
0x47
,
0x63
,
0xbc
,
0x5d
,
0xf5
,
0x89
,
0x75
,
0x0f
,
0xce
,
0xb0
,
0xb4
,
0xe3
,
0x67
,
0x53
,
0x9e
,
0x44
,
0x99
,
0x5d
,
0x90
,
0x5b
,
0x3b
,
0x99
,
0x27
,
0x6b
,
0xd4
,
0x81
,
0xde
,
0xd2
,
0x75
,
0x98
,
0x17
,
0x9e
,
0x52
,
0x26
,
0x55
,
0x32
,
0xd7
,
0x2f
,
0x4e
,
0x25
,
0xd9
,
0x96
,
0x26
,
0xae
,
0x36
,
0x75
,
0x2e
,
0xc2
,
0xd2
,
0x16
,
0xe6
,
0x13
,
0xec
,
0x5c
,
0xfc
,
0x28
,
0xc5
,
0x8c
,
0xeb
,
0xc9
,
0x3d
,
0x12
,
0xe1
,
0x3d
,
0xe2
,
0x3f
,
0xdc
,
0xec
,
0xa1
,
0x38
,
0xc6
,
0x61
,
0x36
,
0x79
,
0x09
,
0x2e
,
0x6e
,
0x61
,
0xf9
,
0x01
,
0x61
,
0x9c
,
0xf8
,
0x6c
,
0x62
,
0xfa
,
0x1c
,
0x9c
,
0xd9
,
0xc2
,
0xbc
,
0x19
,
0x4c
,
0xc0
,
0xf7
,
0xa1
,
0xb2
,
0x23
,
0x82
,
0x2d
,
0xd2
,
0xe0
,
0x3d
,
0x28
,
0xa3
,
0x20
,
0xa0
,
0x98
,
0x31
,
0xad
,
0xe2
,
0xf2
,
0xd4
,
0x1d
,
0xdf
,
0x52
,
0x36
,
0x6e
,
0x66
,
0x3c
,
0x2d
,
0x4d
,
0x9c
,
0x07
,
0x00
,
0xad
,
0x98
,
0xf0
,
0x5d
,
0x44
,
0x51
,
0xc4
,
0x8e
,
0x4c
,
0xb0
,
0x26
,
0xd4
,
0x18
,
0x47
,
0x94
,
0x7b
,
0x7d
,
0x69
,
0xa7
,
0x25
,
0x3f
,
0x41
,
0x36
,
0x98
,
0xf2
,
0x33
,
0xe5
,
0xdd
,
0xf9
,
0x04
,
0xa0
,
0xcd
,
0x29
,
0x89
,
0xbb
,
0x77
,
0x09
,
0xe3
,
0x62
,
0xad
,
0xc7
,
0xc2
,
0x4e
,
0x90
,
0x28
,
0xae
,
0x54
,
0x5d
,
0x3d
,
0x1a
,
0x09
,
0x47
,
0xe1
,
0xe4
,
0xe1
,
0xb8
,
0x01
,
0x66
,
0x26
,
0xf7
,
0x36
,
0xeb
,
0x5a
,
0xd7
,
0xa0
,
0xd4
,
0x41
,
0x0c
,
0x1f
,
0x2b
,
0xcf
,
0x36
,
0xeb
,
0x6e
,
0x20
,
0x86
,
0x5d
,
0x69
,
0xe9
,
0xfc
,
0x6e
,
0xc0
,
0x85
,
0x4d
,
0x8a
,
0x65
,
0xf2
,
0x87
,
0x21
,
0xf6
,
0x39
,
0x49
,
0x62
,
0xad
,
0xfd
,
0xf3
,
0x7b
,
0xb3
,
0x2e
,
0x40
,
0x39
,
0xe8
,
0x78
,
0x31
,
0x8a
,
0x32
,
0xb1
,
0xe7
,
0x83
,
0xce
,
0x0e
,
0x8a
,
0xb0
,
0xf5
,
0x06
,
0x2c
,
0xfa
,
0xb9
,
0x7f
,
0x81
,
0xc8
,
0x9c
,
0xab
,
0xba
,
0x13
,
0xa8
,
0x08
,
0x55
,
0xd0
,
0x69
,
0x35
,
0xed
,
0x92
,
0x0c
,
0x83
,
0xfc
,
0x6d
,
0x39
,
0x50
,
0x1b
,
0x5a
,
0xb5
,
0x9a
,
0xf6
,
0x9c
,
0x9c
,
0x1b
,
0xc3
,
0x84
,
0xa8
,
0xcc
,
0xef
,
0xe1
,
0x08
,
0xd9
,
0xf3
,
0x0d
,
0x63
,
0xa5
,
0xe6
,
0xea
,
0x91
,
0xf3
,
0x93
,
0x01
,
0xe7
,
0x9a
,
0x34
,
0xe9
,
0xff
,
0x9b
,
0xc9
,
0x39
,
0x5f
,
0x14
,
0xe0
,
0xbc
,
0x8a
,
0xd1
,
0x2e
,
0xa2
,
0x9c
,
0xbc
,
0x20
,
0x16
,
0x6f
,
0xc2
,
0xa9
,
0xe1
,
0xaa
,
0xca
,
0x60
,
0x3a
,
0x8d
,
0xd7
,
0x61
,
0xb1
,
0x9f
,
0xed
,
0x43
,
0xd9
,
0x95
,
0xa4
,
0xdd
,
0x42
,
0x8e
,
0x8e
,
0xb1
,
0x9d
,
0x3b
,
0x86
,
0xed
,
0xfc
,
0x94
,
0x50
,
0x36
,
0xc0
,
0xcc
,
0x1d
,
0xb5
,
0x9a
,
0x76
,
0x59
,
0x9a
,
0x8c
,
0x42
,
0xce
,
0xe7
,
0x05
,
0x38
,
0x2b
,
0x82
,
0xfa
,
0xbf
,
0x1a
,
0x42
,
0x8d
,
0x1f
,
0x0a
,
0x60
,
0xa9
,
0xec
,
0x68
,
0xc5
,
0x01
,
0x7e
,
0xf2
,
0x4f
,
0x6a
,
0x71
,
0x09
,
0x60
,
0x9f
,
0xe0
,
0x30
,
0x18
,
0xd5
,
0xa1
,
0x2a
,
0x91
,
0xbf
,
0xa4
,
0x81
,
0x0d
,
0x65
,
0xe9
,
0x24
,
0xe7
,
0x9f
,
0x0d
,
0xc5
,
0xf9
,
0xac
,
0x7a
,
0xb5
,
0x3e
,
0x9f
,
0x2b
,
0x27
,
0x3e
,
0x9f
,
0xe5
,
0x67
,
0xfa
,
0x7c
,
0xfe
,
0xb6
,
0x08
,
0x0b
,
0xad
,
0x98
,
0x61
,
0xca
,
0xff
,
0xcb
,
0x89
,
0x64
,
0x2d
,
0x43
,
0x95
,
0xe1
,
0x6e
,
0x24
,
0xae
,
0x0c
,
0x4d
,
0xbb
,
0x22
,
0xe7
,
0x87
,
0x80
,
0x98
,
0xf5
,
0x55
,
0x6b
,
0x6e
,
0x35
,
0xed
,
0xaa
,
0x0a
,
0x6d
,
0x0e
,
0x58
,
0xaf
,
0x00
,
0x70
,
0x12
,
0x61
,
0xc6
,
0x51
,
0xd4
,
0x67
,
0x36
,
0x34
,
0x8a
,
0x2b
,
0x25
,
0x77
,
0x04
,
0x11
,
0xe7
,
0x33
,
0x4d
,
0x0e
,
0x5a
,
0x4d
,
0x66
,
0x9b
,
0x8d
,
0xa2
,
0x68
,
0xb0
,
0x6a
,
0x64
,
0xbd
,
0x0b
,
0x15
,
0x9a
,
0x1c
,
0x78
,
0x01
,
0xe2
,
0xc8
,
0xae
,
0xc9
,
0xe0
,
0x2d
,
0x4d
,
0x15
,
0x7b
,
0x23
,
0x4c
,
0x3a
,
0x6e
,
0x99
,
0x26
,
0x07
,
0x4d
,
0xc4
,
0x91
,
0xf3
,
0x5d
,
0x01
,
0x16
,
0xda
,
0x18
,
0x51
,
0xbf
,
0x37
,
0x7b
,
0xc0
,
0xde
,
0x82
,
0x3a
,
0xc5
,
0x2c
,
0x0d
,
0xb9
,
0x37
,
0xa4
,
0xa5
,
0x22
,
0x77
,
0x4a
,
0xe1
,
0x9b
,
0x39
,
0xb9
,
0x4c
,
0xf2
,
0xe2
,
0x31
,
0x92
,
0x97
,
0xa6
,
0x48
,
0xee
,
0x40
,
0x6d
,
0x44
,
0x5f
,
0x66
,
0xcf
,
0x49
,
0xea
,
0x63
,
0x98
,
0x55
,
0x87
,
0x62
,
0xc0
,
0x42
,
0x19
,
0xb1
,
0xaa
,
0x2b
,
0x7e
,
0x5a
,
0x57
,
0xe1
,
0x74
,
0x3f
,
0x44
,
0x3e
,
0xee
,
0x25
,
0x61
,
0x80
,
0xa9
,
0xd7
,
0xa5
,
0x49
,
0xda
,
0x97
,
0xe1
,
0xaa
,
0xb9
,
0xf5
,
0x91
,
0x89
,
0x2d
,
0x81
,
0x5b
,
0x6b
,
0x30
,
0xf7
,
0x28
,
0xc5
,
0x74
,
0x20
,
0xe3
,
0x75
,
0xac
,
0x78
,
0xca
,
0xce
,
0xf9
,
0xd5
,
0x18
,
0x4a
,
0x27
,
0x58
,
0xb2
,
0x19
,
0xa4
,
0x9b
,
0xe5
,
0xa6
,
0x32
,
0x55
,
0xef
,
0xe2
,
0x74
,
0xbd
,
0x2f
,
0x83
,
0x19
,
0x61
,
0x4e
,
0x89
,
0xef
,
0xf1
,
0x41
,
0x3f
,
0x2b
,
0x03
,
0x50
,
0xd0
,
0xde
,
0xa0
,
0x2f
,
0x6b
,
0xa0
,
0x47
,
0xb8
,
0x12
,
0xb4
,
0xe6
,
0xca
,
0xdf
,
0xce
,
0x2f
,
0x06
,
0x2c
,
0x34
,
0x71
,
0x88
,
0x39
,
0x9e
,
0x3d
,
0x27
,
0xa6
,
0xd4
,
0x6a
,
0x61
,
0x6a
,
0xad
,
0x8e
,
0x15
,
0x43
,
0xf1
,
0xf8
,
0x62
,
0x28
,
0x3d
,
0x55
,
0x0c
,
0x57
,
0xa0
,
0xd6
,
0xa7
,
0x24
,
0x42
,
0x74
,
0xe0
,
0x3d
,
0xc4
,
0x83
,
0x2c
,
0x2f
,
0x4c
,
0x8d
,
0xdd
,
0xc1
,
0x03
,
0xe6
,
0x7c
,
0x63
,
0x40
,
0xe5
,
0x76
,
0x98
,
0xb2
,
0xde
,
0x4c
,
0xb7
,
0xba
,
0xf1
,
0x52
,
0x2e
,
0x4c
,
0x96
,
0xf2
,
0x64
,
0xee
,
0x16
,
0x9f
,
0x91
,
0xbb
,
0x7b
,
0xa8
,
0xab
,
0x83
,
0x30
,
0x86
,
0x39
,
0x7f
,
0x18
,
0x50
,
0xbd
,
0x9b
,
0xa0
,
0x40
,
0xf6
,
0x9d
,
0xbf
,
0x7d
,
0x97
,
0xcb
,
0x30
,
0x6c
,
0x1d
,
0x99
,
0xc6
,
0xc3
,
0x5e
,
0x32
,
0xd2
,
0x13
,
0x4a
,
0xe3
,
0x3d
,
0xe1
,
0x32
,
0x98
,
0x44
,
0x6c
,
0xc8
,
0xeb
,
0x23
,
0xde
,
0x53
,
0xe2
,
0x56
,
0x5d
,
0x90
,
0xd0
,
0xae
,
0x40
,
0x44
,
0xd3
,
0xc8
,
0x0c
,
0x64
,
0xd3
,
0x98
,
0x3f
,
0x71
,
0xd3
,
0xd0
,
0x4e
,
0x64
,
0xd3
,
0xf8
,
0xb1
,
0x00
,
0x76
,
0x5b
,
0x6d
,
0x76
,
0xf8
,
0xa6
,
0xb9
,
0xd7
,
0x0f
,
0xe4
,
0xd3
,
0x6a
,
0x19
,
0xaa
,
0xed
,
0x9c
,
0x99
,
0x7a
,
0x52
,
0x0c
,
0x01
,
0x91
,
0x1f
,
0xdb
,
0x38
,
0x4a
,
0xe8
,
0xa0
,
0x4d
,
0x0e
,
0xb1
,
0x26
,
0x3e
,
0x82
,
0x08
,
0x6e
,
0x3b
,
0x69
,
0xe4
,
0x26
,
0x07
,
0x4c
,
0x87
,
0x26
,
0x1b
,
0x0a
,
0x6e
,
0xbe
,
0x6c
,
0xf5
,
0x9e
,
0x48
,
0x27
,
0xc9
,
0xbc
,
0xe4
,
0x82
,
0x82
,
0xc4
,
0x3b
,
0xc0
,
0x5a
,
0x82
,
0x0a
,
0x8e
,
0x03
,
0x35
,
0x3b
,
0x27
,
0x67
,
0xcb
,
0x38
,
0x0e
,
0xe4
,
0x54
,
0x0b
,
0x16
,
0xf5
,
0x5b
,
0x26
,
0x61
,
0x32
,
0x84
,
0xf2
,
0xd0
,
0x31
,
0xd7
,
0x9d
,
0x23
,
0x1e
,
0x90
,
0xdb
,
0xac
,
0xbb
,
0xab
,
0x2d
,
0xdd
,
0x05
,
0xf5
,
0x9c
,
0xd1
,
0x43
,
0xeb
,
0x43
,
0xa8
,
0x89
,
0x55
,
0x72
,
0x47
,
0xe5
,
0x13
,
0x3b
,
0x32
,
0x71
,
0x1c
,
0x64
,
0x03
,
0xe7
,
0x2b
,
0x03
,
0x4e
,
0x3f
,
0x25
,
0xe1
,
0x0c
,
0x79
,
0x74
,
0x07
,
0x2a
,
0x6d
,
0xdc
,
0x15
,
0x2e
,
0xb2
,
0x17
,
0xda
,
0xda
,
0x51
,
0x0f
,
0xfe
,
0x23
,
0x02
,
0xe6
,
0xe6
,
0x0e
,
0x9c
,
0x07
,
0x79
,
0x58
,
0x65
,
0xfd
,
0x89
,
0x97
,
0xae
,
0x38
,
0x54
,
0x82
,
0x17
,
0x50
,
0x88
,
0xce
,
0x67
,
0x86
,
0x78
,
0x85
,
0x06
,
0xf8
,
0x89
,
0x5c
,
0xfa
,
0xa9
,
0xc4
,
0x34
,
0x66
,
0x49
,
0x4c
,
0xeb
,
0x1a
,
0x9c
,
0x8d
,
0xd3
,
0xc8
,
0xa3
,
0x38
,
0x44
,
0x1c
,
0x07
,
0x9e
,
0x5e
,
0x8d
,
0xe9
,
0xd5
,
0xad
,
0x38
,
0x8d
,
0x5c
,
0x35
,
0xa5
,
0x69
,
0x32
,
0xe7
,
0x4b
,
0x03
,
0xe0
,
0xb6
,
0xa8
,
0x1e
,
0xb5
,
0x8d
,
0xc9
,
0xe3
,
0xc1
,
0x38
,
0xfe
,
0x4a
,
0x56
,
0x18
,
0x2f
,
0xbf
,
0x8d
,
0xac
,
0xfc
,
0x98
,
0x8c
,
0x47
,
0x71
,
0x1a
,
0x87
,
0x3c
,
0x1e
,
0x43
,
0xf2
,
0xba
,
0x42
,
0x55
,
0x0c
,
0xbe
,
0x36
,
0xa0
,
0x36
,
0x12
,
0x2a
,
0x36
,
0x2e
,
0xa3
,
0x31
,
0x79
,
0x52
,
0xc8
,
0x7e
,
0x21
,
0xaa
,
0xc7
,
0x63
,
0x23
,
0x05
,
0x15
,
0x0d
,
0x0b
,
0x6a
,
0x09
,
0x2a
,
0x52
,
0x92
,
0x91
,
0x8a
,
0x8a
,
0x75
,
0x45
,
0x5d
,
0x85
,
0xd3
,
0x14
,
0xfb
,
0x38
,
0xe6
,
0xe1
,
0xc0
,
0x8b
,
0x92
,
0x80
,
0xec
,
0x13
,
0x1c
,
0xc8
,
0xba
,
0xaa
,
0xb8
,
0xf5
,
0x6c
,
0x62
,
0x5b
,
0xe3
,
0xce
,
0xcf
,
0x06
,
0x2c
,
0x7e
,
0x2c
,
0xda
,
0xe8
,
0x4e
,
0x12
,
0x60
,
0xb5
,
0xb3
,
0xe7
,
0x4f
,
0x89
,
0x9b
,
0x92
,
0x8b
,
0x96
,
0x47
,
0xa5
,
0xeb
,
0xab
,
0xcf
,
0x4e
,
0x57
,
0xe6
,
0x56
,
0x98
,
0x4e
,
0x51
,
0x21
,
0xb1
,
0xba
,
0x66
,
0x9f
,
0x44
,
0xe2
,
0x61
,
0x60
,
0x5d
,
0x75
,
0x39
,
0x57
,
0x12
,
0x07
,
0x60
,
0x8e
,
0xd4
,
0xa5
,
0x68
,
0x49
,
0xba
,
0x7f
,
0xa9
,
0xb6
,
0x67
,
0xc8
,
0xf3
,
0xd6
,
0xd4
,
0x98
,
0x3c
,
0x71
,
0xcf
,
0xc2
,
0x5c
,
0xc4
,
0xba
,
0xf9
,
0x2d
,
0x49
,
0x0d
,
0x44
,
0x64
,
0xf2
,
0xce
,
0x26
,
0xb5
,
0x2d
,
0xb9
,
0x43
,
0xe0
,
0xed
,
0xf7
,
0xa1
,
0x9a
,
0xff
,
0xc7
,
0x66
,
0xd5
,
0xa1
,
0xd6
,
0x8a
,
0x09
,
0x27
,
0x28
,
0x24
,
0x87
,
0x24
,
0xee
,
0xd6
,
0x5f
,
0xb2
,
0x4c
,
0x28
,
0x7f
,
0x84
,
0x51
,
0xc8
,
0x7b
,
0x83
,
0xba
,
0x61
,
0xd5
,
0xa0
,
0x72
,
0xab
,
0x13
,
0x27
,
0x34
,
0x42
,
0x61
,
0xbd
,
0xb0
,
0xd1
,
0xfc
,
0x74
,
0xa3
,
0x4b
,
0x78
,
0x2f
,
0xed
,
0x08
,
0x11
,
0xd7
,
0x0e
,
0x49
,
0x18
,
0x92
,
0x43
,
0x8e
,
0xfd
,
0xde
,
0x9a
,
0x62
,
0xf9
,
0x4e
,
0x40
,
0x18
,
0xa7
,
0xa4
,
0x93
,
0x72
,
0x1c
,
0xac
,
0x65
,
0x5c
,
0xd7
,
0x24
,
0xf5
,
0x7c
,
0xd8
,
0xef
,
0x74
,
0xe6
,
0x25
,
0x72
,
0xfd
,
0xcf
,
0x00
,
0x00
,
0x00
,
0xff
,
0xff
,
0x64
,
0x4c
,
0x6c
,
0x9f
,
0x88
,
0x14
,
0x00
,
0x00
,
}
internal/util/flowgraph/input_node.go
浏览文件 @
32660d54
...
...
@@ -50,6 +50,7 @@ func (inNode *InputNode) Operate(ctx context.Context, msgs []Msg) ([]Msg, contex
timestampMin
:
msgPack
.
BeginTs
,
timestampMax
:
msgPack
.
EndTs
,
startPositions
:
msgPack
.
StartPositions
,
endPositions
:
msgPack
.
EndPositions
,
}
return
[]
Msg
{
msgStreamMsg
},
ctx
...
...
internal/util/flowgraph/message.go
浏览文件 @
32660d54
...
...
@@ -11,14 +11,16 @@ type MsgStreamMsg struct {
timestampMin
Timestamp
timestampMax
Timestamp
startPositions
[]
*
MsgPosition
endPositions
[]
*
MsgPosition
}
func
GenerateMsgStreamMsg
(
tsMessages
[]
msgstream
.
TsMsg
,
timestampMin
,
timestampMax
Timestamp
,
position
s
[]
*
MsgPosition
)
*
MsgStreamMsg
{
func
GenerateMsgStreamMsg
(
tsMessages
[]
msgstream
.
TsMsg
,
timestampMin
,
timestampMax
Timestamp
,
startPos
[]
*
MsgPosition
,
endPo
s
[]
*
MsgPosition
)
*
MsgStreamMsg
{
return
&
MsgStreamMsg
{
tsMessages
:
tsMessages
,
timestampMin
:
timestampMin
,
timestampMax
:
timestampMax
,
startPositions
:
positions
,
startPositions
:
startPos
,
endPositions
:
endPos
,
}
}
...
...
@@ -45,3 +47,7 @@ func (msMsg *MsgStreamMsg) TimestampMax() Timestamp {
func
(
msMsg
*
MsgStreamMsg
)
StartPositions
()
[]
*
MsgPosition
{
return
msMsg
.
startPositions
}
func
(
msMsg
*
MsgStreamMsg
)
EndPositions
()
[]
*
MsgPosition
{
return
msMsg
.
endPositions
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录