Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
doodoocoder
prometheus
提交
65b846ae
P
prometheus
项目概览
doodoocoder
/
prometheus
与 Fork 源项目一致
从无法访问的项目Fork
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
prometheus
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
65b846ae
编写于
3月 17, 2017
作者:
F
Fabian Reinartz
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Remove unreturned locks, detect writes on closed heads
上级
e0b33a7a
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
15 addition
and
13 deletion
+15
-13
db.go
db.go
+1
-2
head.go
head.go
+8
-2
querier.go
querier.go
+6
-9
未找到文件。
db.go
浏览文件 @
65b846ae
...
...
@@ -401,9 +401,8 @@ func (db *DB) Close() error {
close
(
db
.
stopc
)
<-
db
.
donec
// Lock mutex and leave it locked so we panic if there's a bug causing
// the block to be used afterwards.
db
.
mtx
.
Lock
()
defer
db
.
mtx
.
Unlock
()
var
g
errgroup
.
Group
...
...
head.go
浏览文件 @
65b846ae
...
...
@@ -42,6 +42,7 @@ type headBlock struct {
wal
*
WAL
activeWriters
uint64
closed
bool
// descs holds all chunk descs for the head block. Each chunk implicitly
// is assigned the index as its ID.
...
...
@@ -137,9 +138,8 @@ func (h *headBlock) inBounds(t int64) bool {
// Close syncs all data and closes underlying resources of the head block.
func
(
h
*
headBlock
)
Close
()
error
{
// Lock mutex and leave it locked so we panic if there's a bug causing
// the block to be used afterwards.
h
.
mtx
.
Lock
()
defer
h
.
mtx
.
Unlock
()
if
err
:=
h
.
wal
.
Close
();
err
!=
nil
{
return
errors
.
Wrapf
(
err
,
"close WAL for head %s"
,
h
.
dir
)
...
...
@@ -156,6 +156,8 @@ func (h *headBlock) Close() error {
if
meta
.
ULID
==
h
.
meta
.
ULID
{
return
writeMetaFile
(
h
.
dir
,
&
h
.
meta
)
}
h
.
closed
=
true
return
nil
}
...
...
@@ -175,6 +177,10 @@ func (h *headBlock) Appender() Appender {
atomic
.
AddUint64
(
&
h
.
activeWriters
,
1
)
h
.
mtx
.
RLock
()
if
h
.
closed
{
panic
(
fmt
.
Sprintf
(
"block %s already closed"
,
h
.
dir
))
}
return
&
headAppender
{
headBlock
:
h
,
samples
:
getHeadAppendBuffer
()}
}
...
...
querier.go
浏览文件 @
65b846ae
...
...
@@ -66,6 +66,12 @@ func (s *DB) Querier(mint, maxt int64) Querier {
// TODO(fabxc): find nicer solution.
if
hb
,
ok
:=
b
.
(
*
headBlock
);
ok
{
// TODO(fabxc): temporary refactored.
hb
.
mtx
.
RLock
()
if
hb
.
closed
{
panic
(
fmt
.
Sprintf
(
"block %s already closed"
,
hb
.
dir
))
}
hb
.
mtx
.
RUnlock
()
q
.
postingsMapper
=
hb
.
remapPostings
}
...
...
@@ -135,15 +141,6 @@ type blockQuerier struct {
mint
,
maxt
int64
}
func
newBlockQuerier
(
ix
IndexReader
,
c
ChunkReader
,
mint
,
maxt
int64
)
*
blockQuerier
{
return
&
blockQuerier
{
mint
:
mint
,
maxt
:
maxt
,
index
:
ix
,
chunks
:
c
,
}
}
func
(
q
*
blockQuerier
)
Select
(
ms
...
labels
.
Matcher
)
SeriesSet
{
var
(
its
[]
Postings
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录