Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
doodoocoder
prometheus
提交
32f7825c
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,发现更多精彩内容 >>
提交
32f7825c
编写于
2月 27, 2015
作者:
B
Björn Rabenstein
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #563 from prometheus/beorn7/fix
Some minor tweaks and bug fixes.
上级
78cf64bf
92991026
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
14 addition
and
9 deletion
+14
-9
storage/local/persistence.go
storage/local/persistence.go
+8
-5
storage/local/storage.go
storage/local/storage.go
+6
-4
未找到文件。
storage/local/persistence.go
浏览文件 @
32f7825c
...
...
@@ -22,7 +22,6 @@ import (
"path"
"path/filepath"
"sync"
"sync/atomic"
"time"
"github.com/golang/glog"
...
...
@@ -586,7 +585,7 @@ func (p *persistence) checkpointSeriesMapAndHeads(fingerprintToSeries *seriesMap
// this method during start-up while nothing else is running in storage
// land. This method is utterly goroutine-unsafe.
func
(
p
*
persistence
)
loadSeriesMapAndHeads
()
(
sm
*
seriesMap
,
err
error
)
{
var
chunk
sTotal
,
chunk
DescsTotal
int64
var
chunkDescsTotal
int64
fingerprintToSeries
:=
make
(
map
[
clientmodel
.
Fingerprint
]
*
memorySeries
)
sm
=
&
seriesMap
{
m
:
fingerprintToSeries
}
...
...
@@ -599,7 +598,6 @@ func (p *persistence) loadSeriesMapAndHeads() (sm *seriesMap, err error) {
}
}
if
err
==
nil
{
atomic
.
AddInt64
(
&
numMemChunks
,
chunksTotal
)
numMemChunkDescs
.
Add
(
float64
(
chunkDescsTotal
))
}
}()
...
...
@@ -682,7 +680,6 @@ func (p *persistence) loadSeriesMapAndHeads() (sm *seriesMap, err error) {
return
sm
,
nil
}
chunkDescs
:=
make
([]
*
chunkDesc
,
numChunkDescs
)
chunkDescsTotal
+=
numChunkDescs
for
i
:=
int64
(
0
);
i
<
numChunkDescs
;
i
++
{
if
headChunkPersisted
||
i
<
numChunkDescs
-
1
{
...
...
@@ -704,7 +701,6 @@ func (p *persistence) loadSeriesMapAndHeads() (sm *seriesMap, err error) {
}
}
else
{
// Non-persisted head chunk.
chunksTotal
++
chunkType
,
err
:=
r
.
ReadByte
()
if
err
!=
nil
{
glog
.
Warning
(
"Could not decode chunk type:"
,
err
)
...
...
@@ -721,6 +717,13 @@ func (p *persistence) loadSeriesMapAndHeads() (sm *seriesMap, err error) {
}
}
chunkDescsTotal
+=
numChunkDescs
if
!
headChunkPersisted
{
// In this case, we have created a chunkDesc with
// newChunkDesc, which will count itself automatically.
// Correct for that by decrementing the count.
chunkDescsTotal
--
}
fingerprintToSeries
[
clientmodel
.
Fingerprint
(
fp
)]
=
&
memorySeries
{
metric
:
clientmodel
.
Metric
(
metric
),
chunkDescs
:
chunkDescs
,
...
...
storage/local/storage.go
浏览文件 @
32f7825c
...
...
@@ -154,7 +154,7 @@ func NewMemorySeriesStorage(o *MemorySeriesStorageOptions) (Storage, error) {
persistStopped
:
make
(
chan
struct
{}),
persistence
:
p
,
countPersistedHeadChunks
:
make
(
chan
struct
{},
10
24
),
countPersistedHeadChunks
:
make
(
chan
struct
{},
10
0
),
evictList
:
list
.
New
(),
evictRequests
:
make
(
chan
evictRequest
,
evictRequestsCap
),
...
...
@@ -915,7 +915,7 @@ func (s *memorySeriesStorage) maintainMemorySeries(fp clientmodel.Fingerprint, b
// If we are here, the series is not archived, so check for chunkDesc
// eviction next and then if the head chunk needs to be persisted.
series
.
evictChunkDescs
(
iOldestNotEvicted
)
if
!
series
.
headChunkPersisted
&&
time
.
Now
()
.
Sub
(
series
.
head
()
.
fir
stTime
()
.
Time
())
>
headChunkTimeout
{
if
!
series
.
headChunkPersisted
&&
time
.
Now
()
.
Sub
(
series
.
head
()
.
la
stTime
()
.
Time
())
>
headChunkTimeout
{
series
.
headChunkPersisted
=
true
// Since we cannot modify the head chunk from now on, we
// don't need to bother with cloning anymore.
...
...
@@ -1027,8 +1027,10 @@ func (s *memorySeriesStorage) Collect(ch chan<- prometheus.Metric) {
ch
<-
s
.
ingestedSamplesCount
ch
<-
s
.
invalidPreloadRequestsCount
count
:=
atomic
.
LoadInt64
(
&
numMemChunks
)
ch
<-
prometheus
.
MustNewConstMetric
(
numMemChunksDesc
,
prometheus
.
GaugeValue
,
float64
(
count
))
ch
<-
prometheus
.
MustNewConstMetric
(
numMemChunksDesc
,
prometheus
.
GaugeValue
,
float64
(
atomic
.
LoadInt64
(
&
numMemChunks
)))
}
// chunkMaps is a slice of maps with chunkDescs to be persisted.
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录