mirror of
https://github.com/prometheus/prometheus.git
synced 2024-12-25 05:34:05 -08:00
Levigo -> LevelDB in terminology and references.
This commit is contained in:
parent
2450cb3b1c
commit
c1f0d8aefd
1
Makefile
1
Makefile
|
@ -28,6 +28,7 @@ clean:
|
||||||
$(MAKE) -C model clean
|
$(MAKE) -C model clean
|
||||||
-find . -type f -iname '*~' -exec rm '{}' ';'
|
-find . -type f -iname '*~' -exec rm '{}' ';'
|
||||||
-find . -type f -iname '*#' -exec rm '{}' ';'
|
-find . -type f -iname '*#' -exec rm '{}' ';'
|
||||||
|
-find . -type f -iname '.#*' -exec rm '{}' ';'
|
||||||
|
|
||||||
format:
|
format:
|
||||||
find . -iname '*.go' | grep -v generated | xargs -n1 gofmt -w
|
find . -iname '*.go' | grep -v generated | xargs -n1 gofmt -w
|
||||||
|
|
2
main.go
2
main.go
|
@ -20,7 +20,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
m, _ := leveldb.NewLevigoMetricPersistence("/tmp/metrics")
|
m, _ := leveldb.NewLevelDBMetricPersistence("/tmp/metrics")
|
||||||
s := &MetricsService{
|
s := &MetricsService{
|
||||||
persistence: m,
|
persistence: m,
|
||||||
}
|
}
|
||||||
|
|
|
@ -22,7 +22,7 @@ import (
|
||||||
type MetricsService struct {
|
type MetricsService struct {
|
||||||
gorest.RestService `root:"/" consumes:"application/json" produces:"application/json"`
|
gorest.RestService `root:"/" consumes:"application/json" produces:"application/json"`
|
||||||
|
|
||||||
persistence *leveldb.LevigoMetricPersistence
|
persistence *leveldb.LevelDBMetricPersistence
|
||||||
|
|
||||||
listLabels gorest.EndPoint `method:"GET" path:"/labels/" output:"[]string"`
|
listLabels gorest.EndPoint `method:"GET" path:"/labels/" output:"[]string"`
|
||||||
listLabelPairs gorest.EndPoint `method:"GET" path:"/label-pairs/" output:"[]model.LabelPairs"`
|
listLabelPairs gorest.EndPoint `method:"GET" path:"/label-pairs/" output:"[]model.LabelPairs"`
|
||||||
|
|
|
@ -19,5 +19,5 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestInterfaceAdherence(t *testing.T) {
|
func TestInterfaceAdherence(t *testing.T) {
|
||||||
var _ metric.MetricPersistence = &LevigoMetricPersistence{}
|
var _ metric.MetricPersistence = &LevelDBMetricPersistence{}
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,20 +29,20 @@ import (
|
||||||
"sort"
|
"sort"
|
||||||
)
|
)
|
||||||
|
|
||||||
type LevigoMetricPersistence struct {
|
type LevelDBMetricPersistence struct {
|
||||||
fingerprintHighWaterMarks *storage.LevigoPersistence
|
fingerprintHighWaterMarks *storage.LevelDBPersistence
|
||||||
fingerprintLabelPairs *storage.LevigoPersistence
|
fingerprintLabelPairs *storage.LevelDBPersistence
|
||||||
fingerprintLowWaterMarks *storage.LevigoPersistence
|
fingerprintLowWaterMarks *storage.LevelDBPersistence
|
||||||
fingerprintSamples *storage.LevigoPersistence
|
fingerprintSamples *storage.LevelDBPersistence
|
||||||
labelNameFingerprints *storage.LevigoPersistence
|
labelNameFingerprints *storage.LevelDBPersistence
|
||||||
labelPairFingerprints *storage.LevigoPersistence
|
labelPairFingerprints *storage.LevelDBPersistence
|
||||||
metricMembershipIndex *index.LevigoMembershipIndex
|
metricMembershipIndex *index.LevelDBMembershipIndex
|
||||||
}
|
}
|
||||||
|
|
||||||
type levigoOpener func()
|
type leveldbOpener func()
|
||||||
|
|
||||||
func (l *LevigoMetricPersistence) Close() error {
|
func (l *LevelDBMetricPersistence) Close() error {
|
||||||
log.Printf("Closing LevigoPersistence storage containers...")
|
log.Printf("Closing LevelDBPersistence storage containers...")
|
||||||
|
|
||||||
var persistences = []struct {
|
var persistences = []struct {
|
||||||
name string
|
name string
|
||||||
|
@ -85,11 +85,11 @@ func (l *LevigoMetricPersistence) Close() error {
|
||||||
closer := persistence.closer
|
closer := persistence.closer
|
||||||
|
|
||||||
if closer != nil {
|
if closer != nil {
|
||||||
log.Printf("Closing LevigoPersistence storage container: %s\n", name)
|
log.Printf("Closing LevelDBPersistence storage container: %s\n", name)
|
||||||
closingError := closer.Close()
|
closingError := closer.Close()
|
||||||
|
|
||||||
if closingError != nil {
|
if closingError != nil {
|
||||||
log.Printf("Could not close a LevigoPersistence storage container; inconsistencies are possible: %q\n", closingError)
|
log.Printf("Could not close a LevelDBPersistence storage container; inconsistencies are possible: %q\n", closingError)
|
||||||
}
|
}
|
||||||
|
|
||||||
errorChannel <- closingError
|
errorChannel <- closingError
|
||||||
|
@ -106,27 +106,27 @@ func (l *LevigoMetricPersistence) Close() error {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Printf("Successfully closed all LevigoPersistence storage containers.")
|
log.Printf("Successfully closed all LevelDBPersistence storage containers.")
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewLevigoMetricPersistence(baseDirectory string) (*LevigoMetricPersistence, error) {
|
func NewLevelDBMetricPersistence(baseDirectory string) (*LevelDBMetricPersistence, error) {
|
||||||
log.Printf("Opening LevigoPersistence storage containers...")
|
log.Printf("Opening LevelDBPersistence storage containers...")
|
||||||
|
|
||||||
errorChannel := make(chan error, 7)
|
errorChannel := make(chan error, 7)
|
||||||
|
|
||||||
emission := &LevigoMetricPersistence{}
|
emission := &LevelDBMetricPersistence{}
|
||||||
|
|
||||||
var subsystemOpeners = []struct {
|
var subsystemOpeners = []struct {
|
||||||
name string
|
name string
|
||||||
opener levigoOpener
|
opener leveldbOpener
|
||||||
}{
|
}{
|
||||||
{
|
{
|
||||||
"High-Water Marks by Fingerprint",
|
"High-Water Marks by Fingerprint",
|
||||||
func() {
|
func() {
|
||||||
var anomaly error
|
var anomaly error
|
||||||
emission.fingerprintHighWaterMarks, anomaly = storage.NewLevigoPersistence(baseDirectory+"/high_water_marks_by_fingerprint", 1000000, 10)
|
emission.fingerprintHighWaterMarks, anomaly = storage.NewLevelDBPersistence(baseDirectory+"/high_water_marks_by_fingerprint", 1000000, 10)
|
||||||
errorChannel <- anomaly
|
errorChannel <- anomaly
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -134,7 +134,7 @@ func NewLevigoMetricPersistence(baseDirectory string) (*LevigoMetricPersistence,
|
||||||
"Label Names and Value Pairs by Fingerprint",
|
"Label Names and Value Pairs by Fingerprint",
|
||||||
func() {
|
func() {
|
||||||
var anomaly error
|
var anomaly error
|
||||||
emission.fingerprintLabelPairs, anomaly = storage.NewLevigoPersistence(baseDirectory+"/label_name_and_value_pairs_by_fingerprint", 1000000, 10)
|
emission.fingerprintLabelPairs, anomaly = storage.NewLevelDBPersistence(baseDirectory+"/label_name_and_value_pairs_by_fingerprint", 1000000, 10)
|
||||||
errorChannel <- anomaly
|
errorChannel <- anomaly
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -142,7 +142,7 @@ func NewLevigoMetricPersistence(baseDirectory string) (*LevigoMetricPersistence,
|
||||||
"Low-Water Marks by Fingerprint",
|
"Low-Water Marks by Fingerprint",
|
||||||
func() {
|
func() {
|
||||||
var anomaly error
|
var anomaly error
|
||||||
emission.fingerprintLowWaterMarks, anomaly = storage.NewLevigoPersistence(baseDirectory+"/low_water_marks_by_fingerprint", 1000000, 10)
|
emission.fingerprintLowWaterMarks, anomaly = storage.NewLevelDBPersistence(baseDirectory+"/low_water_marks_by_fingerprint", 1000000, 10)
|
||||||
errorChannel <- anomaly
|
errorChannel <- anomaly
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -150,7 +150,7 @@ func NewLevigoMetricPersistence(baseDirectory string) (*LevigoMetricPersistence,
|
||||||
"Samples by Fingerprint",
|
"Samples by Fingerprint",
|
||||||
func() {
|
func() {
|
||||||
var anomaly error
|
var anomaly error
|
||||||
emission.fingerprintSamples, anomaly = storage.NewLevigoPersistence(baseDirectory+"/samples_by_fingerprint", 1000000, 10)
|
emission.fingerprintSamples, anomaly = storage.NewLevelDBPersistence(baseDirectory+"/samples_by_fingerprint", 1000000, 10)
|
||||||
errorChannel <- anomaly
|
errorChannel <- anomaly
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -158,7 +158,7 @@ func NewLevigoMetricPersistence(baseDirectory string) (*LevigoMetricPersistence,
|
||||||
"Fingerprints by Label Name",
|
"Fingerprints by Label Name",
|
||||||
func() {
|
func() {
|
||||||
var anomaly error
|
var anomaly error
|
||||||
emission.labelNameFingerprints, anomaly = storage.NewLevigoPersistence(baseDirectory+"/fingerprints_by_label_name", 1000000, 10)
|
emission.labelNameFingerprints, anomaly = storage.NewLevelDBPersistence(baseDirectory+"/fingerprints_by_label_name", 1000000, 10)
|
||||||
errorChannel <- anomaly
|
errorChannel <- anomaly
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -166,7 +166,7 @@ func NewLevigoMetricPersistence(baseDirectory string) (*LevigoMetricPersistence,
|
||||||
"Fingerprints by Label Name and Value Pair",
|
"Fingerprints by Label Name and Value Pair",
|
||||||
func() {
|
func() {
|
||||||
var anomaly error
|
var anomaly error
|
||||||
emission.labelPairFingerprints, anomaly = storage.NewLevigoPersistence(baseDirectory+"/fingerprints_by_label_name_and_value_pair", 1000000, 10)
|
emission.labelPairFingerprints, anomaly = storage.NewLevelDBPersistence(baseDirectory+"/fingerprints_by_label_name_and_value_pair", 1000000, 10)
|
||||||
errorChannel <- anomaly
|
errorChannel <- anomaly
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -174,7 +174,7 @@ func NewLevigoMetricPersistence(baseDirectory string) (*LevigoMetricPersistence,
|
||||||
"Metric Membership Index",
|
"Metric Membership Index",
|
||||||
func() {
|
func() {
|
||||||
var anomaly error
|
var anomaly error
|
||||||
emission.metricMembershipIndex, anomaly = index.NewLevigoMembershipIndex(baseDirectory+"/metric_membership_index", 1000000, 10)
|
emission.metricMembershipIndex, anomaly = index.NewLevelDBMembershipIndex(baseDirectory+"/metric_membership_index", 1000000, 10)
|
||||||
errorChannel <- anomaly
|
errorChannel <- anomaly
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -184,7 +184,7 @@ func NewLevigoMetricPersistence(baseDirectory string) (*LevigoMetricPersistence,
|
||||||
name := subsystem.name
|
name := subsystem.name
|
||||||
opener := subsystem.opener
|
opener := subsystem.opener
|
||||||
|
|
||||||
log.Printf("Opening LevigoPersistence storage container: %s\n", name)
|
log.Printf("Opening LevelDBPersistence storage container: %s\n", name)
|
||||||
|
|
||||||
go opener()
|
go opener()
|
||||||
}
|
}
|
||||||
|
@ -194,13 +194,13 @@ func NewLevigoMetricPersistence(baseDirectory string) (*LevigoMetricPersistence,
|
||||||
|
|
||||||
if openingError != nil {
|
if openingError != nil {
|
||||||
|
|
||||||
log.Printf("Could not open a LevigoPersistence storage container: %q\n", openingError)
|
log.Printf("Could not open a LevelDBPersistence storage container: %q\n", openingError)
|
||||||
|
|
||||||
return nil, openingError
|
return nil, openingError
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
log.Printf("Successfully opened all LevigoPersistence storage containers.\n")
|
log.Printf("Successfully opened all LevelDBPersistence storage containers.\n")
|
||||||
|
|
||||||
return emission, nil
|
return emission, nil
|
||||||
}
|
}
|
||||||
|
@ -269,12 +269,12 @@ func fingerprintDDOFromByteArray(fingerprint []byte) *data.FingerprintDDO {
|
||||||
return fingerprintDDO
|
return fingerprintDDO
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *LevigoMetricPersistence) hasIndexMetric(ddo *data.MetricDDO) (bool, error) {
|
func (l *LevelDBMetricPersistence) hasIndexMetric(ddo *data.MetricDDO) (bool, error) {
|
||||||
ddoKey := coding.NewProtocolBufferEncoder(ddo)
|
ddoKey := coding.NewProtocolBufferEncoder(ddo)
|
||||||
return l.metricMembershipIndex.Has(ddoKey)
|
return l.metricMembershipIndex.Has(ddoKey)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *LevigoMetricPersistence) indexMetric(ddo *data.MetricDDO) error {
|
func (l *LevelDBMetricPersistence) indexMetric(ddo *data.MetricDDO) error {
|
||||||
ddoKey := coding.NewProtocolBufferEncoder(ddo)
|
ddoKey := coding.NewProtocolBufferEncoder(ddo)
|
||||||
return l.metricMembershipIndex.Put(ddoKey)
|
return l.metricMembershipIndex.Put(ddoKey)
|
||||||
}
|
}
|
||||||
|
@ -292,17 +292,17 @@ func fingerprintDDOForMessage(message proto.Message) (*data.FingerprintDDO, erro
|
||||||
return nil, errors.New("Unknown error in generating FingerprintDDO from message.")
|
return nil, errors.New("Unknown error in generating FingerprintDDO from message.")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *LevigoMetricPersistence) HasLabelPair(ddo *data.LabelPairDDO) (bool, error) {
|
func (l *LevelDBMetricPersistence) HasLabelPair(ddo *data.LabelPairDDO) (bool, error) {
|
||||||
ddoKey := coding.NewProtocolBufferEncoder(ddo)
|
ddoKey := coding.NewProtocolBufferEncoder(ddo)
|
||||||
return l.labelPairFingerprints.Has(ddoKey)
|
return l.labelPairFingerprints.Has(ddoKey)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *LevigoMetricPersistence) HasLabelName(ddo *data.LabelNameDDO) (bool, error) {
|
func (l *LevelDBMetricPersistence) HasLabelName(ddo *data.LabelNameDDO) (bool, error) {
|
||||||
ddoKey := coding.NewProtocolBufferEncoder(ddo)
|
ddoKey := coding.NewProtocolBufferEncoder(ddo)
|
||||||
return l.labelNameFingerprints.Has(ddoKey)
|
return l.labelNameFingerprints.Has(ddoKey)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *LevigoMetricPersistence) GetLabelPairFingerprints(ddo *data.LabelPairDDO) (*data.FingerprintCollectionDDO, error) {
|
func (l *LevelDBMetricPersistence) GetLabelPairFingerprints(ddo *data.LabelPairDDO) (*data.FingerprintCollectionDDO, error) {
|
||||||
ddoKey := coding.NewProtocolBufferEncoder(ddo)
|
ddoKey := coding.NewProtocolBufferEncoder(ddo)
|
||||||
if get, getError := l.labelPairFingerprints.Get(ddoKey); getError == nil {
|
if get, getError := l.labelPairFingerprints.Get(ddoKey); getError == nil {
|
||||||
value := &data.FingerprintCollectionDDO{}
|
value := &data.FingerprintCollectionDDO{}
|
||||||
|
@ -317,7 +317,7 @@ func (l *LevigoMetricPersistence) GetLabelPairFingerprints(ddo *data.LabelPairDD
|
||||||
return nil, errors.New("Unknown error while getting label name and value pair fingerprints.")
|
return nil, errors.New("Unknown error while getting label name and value pair fingerprints.")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *LevigoMetricPersistence) GetLabelNameFingerprints(ddo *data.LabelNameDDO) (*data.FingerprintCollectionDDO, error) {
|
func (l *LevelDBMetricPersistence) GetLabelNameFingerprints(ddo *data.LabelNameDDO) (*data.FingerprintCollectionDDO, error) {
|
||||||
ddoKey := coding.NewProtocolBufferEncoder(ddo)
|
ddoKey := coding.NewProtocolBufferEncoder(ddo)
|
||||||
if get, getError := l.labelNameFingerprints.Get(ddoKey); getError == nil {
|
if get, getError := l.labelNameFingerprints.Get(ddoKey); getError == nil {
|
||||||
value := &data.FingerprintCollectionDDO{}
|
value := &data.FingerprintCollectionDDO{}
|
||||||
|
@ -333,19 +333,19 @@ func (l *LevigoMetricPersistence) GetLabelNameFingerprints(ddo *data.LabelNameDD
|
||||||
return nil, errors.New("Unknown error while getting label name fingerprints.")
|
return nil, errors.New("Unknown error while getting label name fingerprints.")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *LevigoMetricPersistence) setLabelPairFingerprints(labelPair *data.LabelPairDDO, fingerprints *data.FingerprintCollectionDDO) error {
|
func (l *LevelDBMetricPersistence) setLabelPairFingerprints(labelPair *data.LabelPairDDO, fingerprints *data.FingerprintCollectionDDO) error {
|
||||||
labelPairEncoded := coding.NewProtocolBufferEncoder(labelPair)
|
labelPairEncoded := coding.NewProtocolBufferEncoder(labelPair)
|
||||||
fingerprintsEncoded := coding.NewProtocolBufferEncoder(fingerprints)
|
fingerprintsEncoded := coding.NewProtocolBufferEncoder(fingerprints)
|
||||||
return l.labelPairFingerprints.Put(labelPairEncoded, fingerprintsEncoded)
|
return l.labelPairFingerprints.Put(labelPairEncoded, fingerprintsEncoded)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *LevigoMetricPersistence) setLabelNameFingerprints(labelName *data.LabelNameDDO, fingerprints *data.FingerprintCollectionDDO) error {
|
func (l *LevelDBMetricPersistence) setLabelNameFingerprints(labelName *data.LabelNameDDO, fingerprints *data.FingerprintCollectionDDO) error {
|
||||||
labelNameEncoded := coding.NewProtocolBufferEncoder(labelName)
|
labelNameEncoded := coding.NewProtocolBufferEncoder(labelName)
|
||||||
fingerprintsEncoded := coding.NewProtocolBufferEncoder(fingerprints)
|
fingerprintsEncoded := coding.NewProtocolBufferEncoder(fingerprints)
|
||||||
return l.labelNameFingerprints.Put(labelNameEncoded, fingerprintsEncoded)
|
return l.labelNameFingerprints.Put(labelNameEncoded, fingerprintsEncoded)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *LevigoMetricPersistence) appendLabelPairFingerprint(labelPair *data.LabelPairDDO, fingerprint *data.FingerprintDDO) error {
|
func (l *LevelDBMetricPersistence) appendLabelPairFingerprint(labelPair *data.LabelPairDDO, fingerprint *data.FingerprintDDO) error {
|
||||||
if has, hasError := l.HasLabelPair(labelPair); hasError == nil {
|
if has, hasError := l.HasLabelPair(labelPair); hasError == nil {
|
||||||
var fingerprints *data.FingerprintCollectionDDO
|
var fingerprints *data.FingerprintCollectionDDO
|
||||||
if has {
|
if has {
|
||||||
|
@ -368,7 +368,7 @@ func (l *LevigoMetricPersistence) appendLabelPairFingerprint(labelPair *data.Lab
|
||||||
return errors.New("Unknown error when appending fingerprint to label name and value pair.")
|
return errors.New("Unknown error when appending fingerprint to label name and value pair.")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *LevigoMetricPersistence) appendLabelNameFingerprint(labelPair *data.LabelPairDDO, fingerprint *data.FingerprintDDO) error {
|
func (l *LevelDBMetricPersistence) appendLabelNameFingerprint(labelPair *data.LabelPairDDO, fingerprint *data.FingerprintDDO) error {
|
||||||
labelName := &data.LabelNameDDO{
|
labelName := &data.LabelNameDDO{
|
||||||
Name: labelPair.Name,
|
Name: labelPair.Name,
|
||||||
}
|
}
|
||||||
|
@ -395,7 +395,7 @@ func (l *LevigoMetricPersistence) appendLabelNameFingerprint(labelPair *data.Lab
|
||||||
return errors.New("Unknown error when appending fingerprint to label name and value pair.")
|
return errors.New("Unknown error when appending fingerprint to label name and value pair.")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *LevigoMetricPersistence) appendFingerprints(ddo *data.MetricDDO) error {
|
func (l *LevelDBMetricPersistence) appendFingerprints(ddo *data.MetricDDO) error {
|
||||||
if fingerprintDDO, fingerprintDDOError := fingerprintDDOForMessage(ddo); fingerprintDDOError == nil {
|
if fingerprintDDO, fingerprintDDOError := fingerprintDDOForMessage(ddo); fingerprintDDOError == nil {
|
||||||
labelPairCollectionDDO := &data.LabelPairCollectionDDO{
|
labelPairCollectionDDO := &data.LabelPairCollectionDDO{
|
||||||
Member: ddo.LabelPair,
|
Member: ddo.LabelPair,
|
||||||
|
@ -446,7 +446,7 @@ func (l *LevigoMetricPersistence) appendFingerprints(ddo *data.MetricDDO) error
|
||||||
return errors.New("Unknown error in appending label pairs to fingerprint.")
|
return errors.New("Unknown error in appending label pairs to fingerprint.")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *LevigoMetricPersistence) AppendSample(sample *model.Sample) error {
|
func (l *LevelDBMetricPersistence) AppendSample(sample *model.Sample) error {
|
||||||
fmt.Printf("Sample: %q\n", sample)
|
fmt.Printf("Sample: %q\n", sample)
|
||||||
|
|
||||||
metricDDO := ddoFromSample(sample)
|
metricDDO := ddoFromSample(sample)
|
||||||
|
@ -494,7 +494,7 @@ func (l *LevigoMetricPersistence) AppendSample(sample *model.Sample) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *LevigoMetricPersistence) GetLabelNames() ([]string, error) {
|
func (l *LevelDBMetricPersistence) GetLabelNames() ([]string, error) {
|
||||||
if getAll, getAllError := l.labelNameFingerprints.GetAll(); getAllError == nil {
|
if getAll, getAllError := l.labelNameFingerprints.GetAll(); getAllError == nil {
|
||||||
result := make([]string, 0, len(getAll))
|
result := make([]string, 0, len(getAll))
|
||||||
labelNameDDO := &data.LabelNameDDO{}
|
labelNameDDO := &data.LabelNameDDO{}
|
||||||
|
@ -516,7 +516,7 @@ func (l *LevigoMetricPersistence) GetLabelNames() ([]string, error) {
|
||||||
return nil, errors.New("Unknown error encountered when querying label names.")
|
return nil, errors.New("Unknown error encountered when querying label names.")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *LevigoMetricPersistence) GetLabelPairs() ([]model.LabelPairs, error) {
|
func (l *LevelDBMetricPersistence) GetLabelPairs() ([]model.LabelPairs, error) {
|
||||||
if getAll, getAllError := l.labelPairFingerprints.GetAll(); getAllError == nil {
|
if getAll, getAllError := l.labelPairFingerprints.GetAll(); getAllError == nil {
|
||||||
result := make([]model.LabelPairs, 0, len(getAll))
|
result := make([]model.LabelPairs, 0, len(getAll))
|
||||||
labelPairDDO := &data.LabelPairDDO{}
|
labelPairDDO := &data.LabelPairDDO{}
|
||||||
|
@ -541,7 +541,7 @@ func (l *LevigoMetricPersistence) GetLabelPairs() ([]model.LabelPairs, error) {
|
||||||
return nil, errors.New("Unknown error encountered when querying label pairs.")
|
return nil, errors.New("Unknown error encountered when querying label pairs.")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *LevigoMetricPersistence) GetMetrics() ([]model.LabelPairs, error) {
|
func (l *LevelDBMetricPersistence) GetMetrics() ([]model.LabelPairs, error) {
|
||||||
log.Printf("GetMetrics()\n")
|
log.Printf("GetMetrics()\n")
|
||||||
|
|
||||||
if getAll, getAllError := l.labelPairFingerprints.GetAll(); getAllError == nil {
|
if getAll, getAllError := l.labelPairFingerprints.GetAll(); getAllError == nil {
|
||||||
|
@ -596,7 +596,7 @@ func (l *LevigoMetricPersistence) GetMetrics() ([]model.LabelPairs, error) {
|
||||||
return nil, errors.New("Unknown error encountered when querying metrics.")
|
return nil, errors.New("Unknown error encountered when querying metrics.")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *LevigoMetricPersistence) GetWatermarksForMetric(metric model.Metric) (*model.Interval, int, error) {
|
func (l *LevelDBMetricPersistence) GetWatermarksForMetric(metric model.Metric) (*model.Interval, int, error) {
|
||||||
metricDDO := ddoFromMetric(metric)
|
metricDDO := ddoFromMetric(metric)
|
||||||
|
|
||||||
if fingerprintDDO, fingerprintDDOErr := fingerprintDDOForMessage(metricDDO); fingerprintDDOErr == nil {
|
if fingerprintDDO, fingerprintDDOErr := fingerprintDDOForMessage(metricDDO); fingerprintDDOErr == nil {
|
||||||
|
@ -670,7 +670,7 @@ func (l *LevigoMetricPersistence) GetWatermarksForMetric(metric model.Metric) (*
|
||||||
|
|
||||||
// TODO(mtp): Holes in the data!
|
// TODO(mtp): Holes in the data!
|
||||||
|
|
||||||
func (l *LevigoMetricPersistence) GetSamplesForMetric(metric model.Metric, interval model.Interval) ([]model.Samples, error) {
|
func (l *LevelDBMetricPersistence) GetSamplesForMetric(metric model.Metric, interval model.Interval) ([]model.Samples, error) {
|
||||||
metricDDO := ddoFromMetric(metric)
|
metricDDO := ddoFromMetric(metric)
|
||||||
|
|
||||||
if fingerprintDDO, fingerprintDDOErr := fingerprintDDOForMessage(metricDDO); fingerprintDDOErr == nil {
|
if fingerprintDDO, fingerprintDDOErr := fingerprintDDOForMessage(metricDDO); fingerprintDDOErr == nil {
|
||||||
|
|
|
@ -28,7 +28,7 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestBasicLifecycle(t *testing.T) {
|
func TestBasicLifecycle(t *testing.T) {
|
||||||
temporaryDirectory, temporaryDirectoryErr := ioutil.TempDir("", "levigo_metric_persistence_test")
|
temporaryDirectory, temporaryDirectoryErr := ioutil.TempDir("", "leveldb_metric_persistence_test")
|
||||||
|
|
||||||
if temporaryDirectoryErr != nil {
|
if temporaryDirectoryErr != nil {
|
||||||
t.Errorf("Could not create test directory: %q\n", temporaryDirectoryErr)
|
t.Errorf("Could not create test directory: %q\n", temporaryDirectoryErr)
|
||||||
|
@ -41,26 +41,26 @@ func TestBasicLifecycle(t *testing.T) {
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
persistence, openErr := NewLevigoMetricPersistence(temporaryDirectory)
|
persistence, openErr := NewLevelDBMetricPersistence(temporaryDirectory)
|
||||||
|
|
||||||
if openErr != nil {
|
if openErr != nil {
|
||||||
t.Errorf("Could not create Levigo Metric Persistence: %q\n", openErr)
|
t.Errorf("Could not create LevelDB Metric Persistence: %q\n", openErr)
|
||||||
}
|
}
|
||||||
|
|
||||||
if persistence == nil {
|
if persistence == nil {
|
||||||
t.Errorf("Received nil Levigo Metric Persistence.\n")
|
t.Errorf("Received nil LevelDB Metric Persistence.\n")
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
closeErr := persistence.Close()
|
closeErr := persistence.Close()
|
||||||
|
|
||||||
if closeErr != nil {
|
if closeErr != nil {
|
||||||
t.Errorf("Could not close Levigo Metric Persistence: %q\n", closeErr)
|
t.Errorf("Could not close LevelDB Metric Persistence: %q\n", closeErr)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestReadEmpty(t *testing.T) {
|
func TestReadEmpty(t *testing.T) {
|
||||||
temporaryDirectory, _ := ioutil.TempDir("", "levigo_metric_persistence_test")
|
temporaryDirectory, _ := ioutil.TempDir("", "leveldb_metric_persistence_test")
|
||||||
|
|
||||||
defer func() {
|
defer func() {
|
||||||
if removeAllErr := os.RemoveAll(temporaryDirectory); removeAllErr != nil {
|
if removeAllErr := os.RemoveAll(temporaryDirectory); removeAllErr != nil {
|
||||||
|
@ -68,7 +68,7 @@ func TestReadEmpty(t *testing.T) {
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
persistence, _ := NewLevigoMetricPersistence(temporaryDirectory)
|
persistence, _ := NewLevelDBMetricPersistence(temporaryDirectory)
|
||||||
|
|
||||||
defer func() {
|
defer func() {
|
||||||
persistence.Close()
|
persistence.Close()
|
||||||
|
@ -167,7 +167,7 @@ func TestReadEmpty(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestAppendSampleAsPureSparseAppend(t *testing.T) {
|
func TestAppendSampleAsPureSparseAppend(t *testing.T) {
|
||||||
temporaryDirectory, _ := ioutil.TempDir("", "levigo_metric_persistence_test")
|
temporaryDirectory, _ := ioutil.TempDir("", "leveldb_metric_persistence_test")
|
||||||
|
|
||||||
defer func() {
|
defer func() {
|
||||||
if removeAllErr := os.RemoveAll(temporaryDirectory); removeAllErr != nil {
|
if removeAllErr := os.RemoveAll(temporaryDirectory); removeAllErr != nil {
|
||||||
|
@ -175,7 +175,7 @@ func TestAppendSampleAsPureSparseAppend(t *testing.T) {
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
persistence, _ := NewLevigoMetricPersistence(temporaryDirectory)
|
persistence, _ := NewLevelDBMetricPersistence(temporaryDirectory)
|
||||||
|
|
||||||
defer func() {
|
defer func() {
|
||||||
persistence.Close()
|
persistence.Close()
|
||||||
|
@ -199,7 +199,7 @@ func TestAppendSampleAsPureSparseAppend(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestAppendSampleAsSparseAppendWithReads(t *testing.T) {
|
func TestAppendSampleAsSparseAppendWithReads(t *testing.T) {
|
||||||
temporaryDirectory, _ := ioutil.TempDir("", "levigo_metric_persistence_test")
|
temporaryDirectory, _ := ioutil.TempDir("", "leveldb_metric_persistence_test")
|
||||||
|
|
||||||
defer func() {
|
defer func() {
|
||||||
if removeAllErr := os.RemoveAll(temporaryDirectory); removeAllErr != nil {
|
if removeAllErr := os.RemoveAll(temporaryDirectory); removeAllErr != nil {
|
||||||
|
@ -207,7 +207,7 @@ func TestAppendSampleAsSparseAppendWithReads(t *testing.T) {
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
persistence, _ := NewLevigoMetricPersistence(temporaryDirectory)
|
persistence, _ := NewLevelDBMetricPersistence(temporaryDirectory)
|
||||||
|
|
||||||
defer func() {
|
defer func() {
|
||||||
persistence.Close()
|
persistence.Close()
|
||||||
|
@ -292,7 +292,7 @@ func TestAppendSampleAsSparseAppendWithReads(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestAppendSampleAsPureSingleEntityAppend(t *testing.T) {
|
func TestAppendSampleAsPureSingleEntityAppend(t *testing.T) {
|
||||||
temporaryDirectory, _ := ioutil.TempDir("", "levigo_metric_persistence_test")
|
temporaryDirectory, _ := ioutil.TempDir("", "leveldb_metric_persistence_test")
|
||||||
|
|
||||||
defer func() {
|
defer func() {
|
||||||
if removeAllErr := os.RemoveAll(temporaryDirectory); removeAllErr != nil {
|
if removeAllErr := os.RemoveAll(temporaryDirectory); removeAllErr != nil {
|
||||||
|
@ -300,7 +300,7 @@ func TestAppendSampleAsPureSingleEntityAppend(t *testing.T) {
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
persistence, _ := NewLevigoMetricPersistence(temporaryDirectory)
|
persistence, _ := NewLevelDBMetricPersistence(temporaryDirectory)
|
||||||
|
|
||||||
defer func() {
|
defer func() {
|
||||||
persistence.Close()
|
persistence.Close()
|
||||||
|
@ -333,7 +333,7 @@ func TestStochastic(t *testing.T) {
|
||||||
numberOfSamples := random.Intn(1024) + 2
|
numberOfSamples := random.Intn(1024) + 2
|
||||||
numberOfRangeScans := random.Intn(3)
|
numberOfRangeScans := random.Intn(3)
|
||||||
|
|
||||||
temporaryDirectory, _ := ioutil.TempDir("", "levigo_metric_persistence_test")
|
temporaryDirectory, _ := ioutil.TempDir("", "leveldb_metric_persistence_test")
|
||||||
|
|
||||||
defer func() {
|
defer func() {
|
||||||
if removeAllErr := os.RemoveAll(temporaryDirectory); removeAllErr != nil {
|
if removeAllErr := os.RemoveAll(temporaryDirectory); removeAllErr != nil {
|
||||||
|
@ -341,7 +341,7 @@ func TestStochastic(t *testing.T) {
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
|
|
||||||
persistence, _ := NewLevigoMetricPersistence(temporaryDirectory)
|
persistence, _ := NewLevelDBMetricPersistence(temporaryDirectory)
|
||||||
|
|
||||||
defer func() {
|
defer func() {
|
||||||
persistence.Close()
|
persistence.Close()
|
||||||
|
|
|
@ -19,5 +19,5 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestInterfaceAdherence(t *testing.T) {
|
func TestInterfaceAdherence(t *testing.T) {
|
||||||
var _ index.MembershipIndex = &LevigoMembershipIndex{}
|
var _ index.MembershipIndex = &LevelDBMembershipIndex{}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,36 +23,36 @@ var (
|
||||||
existenceValue = coding.NewProtocolBufferEncoder(&data.MembershipIndexValueDDO{})
|
existenceValue = coding.NewProtocolBufferEncoder(&data.MembershipIndexValueDDO{})
|
||||||
)
|
)
|
||||||
|
|
||||||
type LevigoMembershipIndex struct {
|
type LevelDBMembershipIndex struct {
|
||||||
persistence *leveldb.LevigoPersistence
|
persistence *leveldb.LevelDBPersistence
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *LevigoMembershipIndex) Close() error {
|
func (l *LevelDBMembershipIndex) Close() error {
|
||||||
return l.persistence.Close()
|
return l.persistence.Close()
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *LevigoMembershipIndex) Has(key coding.Encoder) (bool, error) {
|
func (l *LevelDBMembershipIndex) Has(key coding.Encoder) (bool, error) {
|
||||||
return l.persistence.Has(key)
|
return l.persistence.Has(key)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *LevigoMembershipIndex) Drop(key coding.Encoder) error {
|
func (l *LevelDBMembershipIndex) Drop(key coding.Encoder) error {
|
||||||
return l.persistence.Drop(key)
|
return l.persistence.Drop(key)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *LevigoMembershipIndex) Put(key coding.Encoder) error {
|
func (l *LevelDBMembershipIndex) Put(key coding.Encoder) error {
|
||||||
return l.persistence.Put(key, existenceValue)
|
return l.persistence.Put(key, existenceValue)
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewLevigoMembershipIndex(storageRoot string, cacheCapacity, bitsPerBloomFilterEncoded int) (*LevigoMembershipIndex, error) {
|
func NewLevelDBMembershipIndex(storageRoot string, cacheCapacity, bitsPerBloomFilterEncoded int) (*LevelDBMembershipIndex, error) {
|
||||||
var levigoPersistence *leveldb.LevigoPersistence
|
var leveldbPersistence *leveldb.LevelDBPersistence
|
||||||
var levigoPersistenceError error
|
var persistenceError error
|
||||||
|
|
||||||
if levigoPersistence, levigoPersistenceError = leveldb.NewLevigoPersistence(storageRoot, cacheCapacity, bitsPerBloomFilterEncoded); levigoPersistenceError == nil {
|
if leveldbPersistence, persistenceError = leveldb.NewLevelDBPersistence(storageRoot, cacheCapacity, bitsPerBloomFilterEncoded); persistenceError == nil {
|
||||||
levigoMembershipIndex := &LevigoMembershipIndex{
|
leveldbMembershipIndex := &LevelDBMembershipIndex{
|
||||||
persistence: levigoPersistence,
|
persistence: leveldbPersistence,
|
||||||
}
|
}
|
||||||
return levigoMembershipIndex, nil
|
return leveldbMembershipIndex, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil, levigoPersistenceError
|
return nil, persistenceError
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,5 +19,5 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestInterfaceAdherence(t *testing.T) {
|
func TestInterfaceAdherence(t *testing.T) {
|
||||||
var _ raw.Persistence = &LevigoPersistence{}
|
var _ raw.Persistence = &LevelDBPersistence{}
|
||||||
}
|
}
|
||||||
|
|
|
@ -20,7 +20,7 @@ import (
|
||||||
"io"
|
"io"
|
||||||
)
|
)
|
||||||
|
|
||||||
type LevigoPersistence struct {
|
type LevelDBPersistence struct {
|
||||||
cache *levigo.Cache
|
cache *levigo.Cache
|
||||||
filterPolicy *levigo.FilterPolicy
|
filterPolicy *levigo.FilterPolicy
|
||||||
options *levigo.Options
|
options *levigo.Options
|
||||||
|
@ -36,7 +36,7 @@ type iteratorCloser struct {
|
||||||
storage *levigo.DB
|
storage *levigo.DB
|
||||||
}
|
}
|
||||||
|
|
||||||
func NewLevigoPersistence(storageRoot string, cacheCapacity, bitsPerBloomFilterEncoded int) (*LevigoPersistence, error) {
|
func NewLevelDBPersistence(storageRoot string, cacheCapacity, bitsPerBloomFilterEncoded int) (*LevelDBPersistence, error) {
|
||||||
options := levigo.NewOptions()
|
options := levigo.NewOptions()
|
||||||
options.SetCreateIfMissing(true)
|
options.SetCreateIfMissing(true)
|
||||||
options.SetParanoidChecks(true)
|
options.SetParanoidChecks(true)
|
||||||
|
@ -53,7 +53,7 @@ func NewLevigoPersistence(storageRoot string, cacheCapacity, bitsPerBloomFilterE
|
||||||
writeOptions := levigo.NewWriteOptions()
|
writeOptions := levigo.NewWriteOptions()
|
||||||
writeOptions.SetSync(true)
|
writeOptions.SetSync(true)
|
||||||
|
|
||||||
emission := &LevigoPersistence{
|
emission := &LevelDBPersistence{
|
||||||
cache: cache,
|
cache: cache,
|
||||||
filterPolicy: filterPolicy,
|
filterPolicy: filterPolicy,
|
||||||
options: options,
|
options: options,
|
||||||
|
@ -65,7 +65,7 @@ func NewLevigoPersistence(storageRoot string, cacheCapacity, bitsPerBloomFilterE
|
||||||
return emission, openErr
|
return emission, openErr
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *LevigoPersistence) Close() error {
|
func (l *LevelDBPersistence) Close() error {
|
||||||
if l.storage != nil {
|
if l.storage != nil {
|
||||||
l.storage.Close()
|
l.storage.Close()
|
||||||
}
|
}
|
||||||
|
@ -103,7 +103,7 @@ func (l *LevigoPersistence) Close() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *LevigoPersistence) Get(value coding.Encoder) ([]byte, error) {
|
func (l *LevelDBPersistence) Get(value coding.Encoder) ([]byte, error) {
|
||||||
if key, keyError := value.Encode(); keyError == nil {
|
if key, keyError := value.Encode(); keyError == nil {
|
||||||
return l.storage.Get(l.readOptions, key)
|
return l.storage.Get(l.readOptions, key)
|
||||||
} else {
|
} else {
|
||||||
|
@ -113,7 +113,7 @@ func (l *LevigoPersistence) Get(value coding.Encoder) ([]byte, error) {
|
||||||
panic("unreachable")
|
panic("unreachable")
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *LevigoPersistence) Has(value coding.Encoder) (bool, error) {
|
func (l *LevelDBPersistence) Has(value coding.Encoder) (bool, error) {
|
||||||
if value, getError := l.Get(value); getError != nil {
|
if value, getError := l.Get(value); getError != nil {
|
||||||
return false, getError
|
return false, getError
|
||||||
} else if value == nil {
|
} else if value == nil {
|
||||||
|
@ -123,7 +123,7 @@ func (l *LevigoPersistence) Has(value coding.Encoder) (bool, error) {
|
||||||
return true, nil
|
return true, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *LevigoPersistence) Drop(value coding.Encoder) error {
|
func (l *LevelDBPersistence) Drop(value coding.Encoder) error {
|
||||||
if key, keyError := value.Encode(); keyError == nil {
|
if key, keyError := value.Encode(); keyError == nil {
|
||||||
|
|
||||||
if deleteError := l.storage.Delete(l.writeOptions, key); deleteError != nil {
|
if deleteError := l.storage.Delete(l.writeOptions, key); deleteError != nil {
|
||||||
|
@ -136,7 +136,7 @@ func (l *LevigoPersistence) Drop(value coding.Encoder) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *LevigoPersistence) Put(key, value coding.Encoder) error {
|
func (l *LevelDBPersistence) Put(key, value coding.Encoder) error {
|
||||||
if keyEncoded, keyError := key.Encode(); keyError == nil {
|
if keyEncoded, keyError := key.Encode(); keyError == nil {
|
||||||
if valueEncoded, valueError := value.Encode(); valueError == nil {
|
if valueEncoded, valueError := value.Encode(); valueError == nil {
|
||||||
|
|
||||||
|
@ -153,7 +153,7 @@ func (l *LevigoPersistence) Put(key, value coding.Encoder) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *LevigoPersistence) GetAll() ([]raw.Pair, error) {
|
func (l *LevelDBPersistence) GetAll() ([]raw.Pair, error) {
|
||||||
snapshot := l.storage.NewSnapshot()
|
snapshot := l.storage.NewSnapshot()
|
||||||
defer l.storage.ReleaseSnapshot(snapshot)
|
defer l.storage.ReleaseSnapshot(snapshot)
|
||||||
readOptions := levigo.NewReadOptions()
|
readOptions := levigo.NewReadOptions()
|
||||||
|
@ -203,7 +203,7 @@ func (i *iteratorCloser) Close() error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (l *LevigoPersistence) GetIterator() (*levigo.Iterator, io.Closer, error) {
|
func (l *LevelDBPersistence) GetIterator() (*levigo.Iterator, io.Closer, error) {
|
||||||
snapshot := l.storage.NewSnapshot()
|
snapshot := l.storage.NewSnapshot()
|
||||||
readOptions := levigo.NewReadOptions()
|
readOptions := levigo.NewReadOptions()
|
||||||
readOptions.SetSnapshot(snapshot)
|
readOptions.SetSnapshot(snapshot)
|
||||||
|
|
Loading…
Reference in a new issue