From e11e8c7a23c60827e6df6427fe26c129e1683997 Mon Sep 17 00:00:00 2001 From: Bjoern Rabenstein Date: Thu, 27 Feb 2014 14:34:46 +0100 Subject: [PATCH] Unify LevelDB.*Options. We have seven different types all called like LevelDB.*Options. One of them is the plain LevelDBOptions. All others are just wrapping that type without adding anything except clunkier handling. If there ever was a plan to add more specific options to the various LevelDB.*Options types, history has proven that nothing like that is going to happen anytime soon. To keep the code a bit shorter and more focused on the real (quite significant) complexities we have to deal with here, this commit reduces all uses of LevelDBOptions to the actual LevelDBOptions type. 1576 fewer characters to read... Change-Id: I3d7a2b7ffed78b337aa37f812c53c058329ecaa6 --- storage/metric/index.go | 36 ++++++------------------- storage/metric/leveldb.go | 46 ++++++++++++++++---------------- storage/metric/processor_test.go | 24 ++++++++--------- storage/metric/watermark.go | 18 +++---------- 4 files changed, 47 insertions(+), 77 deletions(-) diff --git a/storage/metric/index.go b/storage/metric/index.go index 4defae1e1..ba6ad2b22 100644 --- a/storage/metric/index.go +++ b/storage/metric/index.go @@ -46,11 +46,6 @@ type LevelDBFingerprintMetricIndex struct { *leveldb.LevelDBPersistence } -// LevelDBFingerprintMetricIndexOptions just wraps leveldb.LevelDBOptions. -type LevelDBFingerprintMetricIndexOptions struct { - leveldb.LevelDBOptions -} - // IndexBatch implements FingerprintMetricIndex. func (i *LevelDBFingerprintMetricIndex) IndexBatch(mapping FingerprintMetricMapping) error { b := leveldb.NewBatch() @@ -90,8 +85,8 @@ func (i *LevelDBFingerprintMetricIndex) Lookup(f *clientmodel.Fingerprint) (m cl // NewLevelDBFingerprintMetricIndex returns a LevelDBFingerprintMetricIndex // object ready to use. -func NewLevelDBFingerprintMetricIndex(o LevelDBFingerprintMetricIndexOptions) (*LevelDBFingerprintMetricIndex, error) { - s, err := leveldb.NewLevelDBPersistence(o.LevelDBOptions) +func NewLevelDBFingerprintMetricIndex(o leveldb.LevelDBOptions) (*LevelDBFingerprintMetricIndex, error) { + s, err := leveldb.NewLevelDBPersistence(o) if err != nil { return nil, err } @@ -175,15 +170,10 @@ func (i *LevelDBLabelNameFingerprintIndex) Has(l clientmodel.LabelName) (ok bool }) } -// LevelDBLabelNameFingerprintIndexOptions just wraps leveldb.LevelDBOptions. -type LevelDBLabelNameFingerprintIndexOptions struct { - leveldb.LevelDBOptions -} - // NewLevelLabelNameFingerprintIndex returns a LevelDBLabelNameFingerprintIndex // ready to use. -func NewLevelLabelNameFingerprintIndex(o LevelDBLabelNameFingerprintIndexOptions) (*LevelDBLabelNameFingerprintIndex, error) { - s, err := leveldb.NewLevelDBPersistence(o.LevelDBOptions) +func NewLevelLabelNameFingerprintIndex(o leveldb.LevelDBOptions) (*LevelDBLabelNameFingerprintIndex, error) { + s, err := leveldb.NewLevelDBPersistence(o) if err != nil { return nil, err } @@ -215,11 +205,6 @@ type LevelDBLabelPairFingerprintIndex struct { *leveldb.LevelDBPersistence } -// LevelDBLabelSetFingerprintIndexOptions just wraps leveldb.LevelDBOptions. -type LevelDBLabelSetFingerprintIndexOptions struct { - leveldb.LevelDBOptions -} - // IndexBatch implements LabelPairFingerprintMapping. func (i *LevelDBLabelPairFingerprintIndex) IndexBatch(m LabelPairFingerprintMapping) error { batch := leveldb.NewBatch() @@ -283,8 +268,8 @@ func (i *LevelDBLabelPairFingerprintIndex) Has(p *LabelPair) (ok bool, err error // NewLevelDBLabelSetFingerprintIndex returns a LevelDBLabelPairFingerprintIndex // object ready to use. -func NewLevelDBLabelSetFingerprintIndex(o LevelDBLabelSetFingerprintIndexOptions) (*LevelDBLabelPairFingerprintIndex, error) { - s, err := leveldb.NewLevelDBPersistence(o.LevelDBOptions) +func NewLevelDBLabelSetFingerprintIndex(o leveldb.LevelDBOptions) (*LevelDBLabelPairFingerprintIndex, error) { + s, err := leveldb.NewLevelDBPersistence(o) if err != nil { return nil, err } @@ -332,15 +317,10 @@ func (i *LevelDBMetricMembershipIndex) Has(m clientmodel.Metric) (ok bool, err e return i.LevelDBPersistence.Has(k) } -// LevelDBMetricMembershipIndexOptions just wraps leveldb.LevelDBOptions -type LevelDBMetricMembershipIndexOptions struct { - leveldb.LevelDBOptions -} - // NewLevelDBMetricMembershipIndex returns a LevelDBMetricMembershipIndex object // ready to use. -func NewLevelDBMetricMembershipIndex(o LevelDBMetricMembershipIndexOptions) (*LevelDBMetricMembershipIndex, error) { - s, err := leveldb.NewLevelDBPersistence(o.LevelDBOptions) +func NewLevelDBMetricMembershipIndex(o leveldb.LevelDBOptions) (*LevelDBMetricMembershipIndex, error) { + s, err := leveldb.NewLevelDBPersistence(o) if err != nil { return nil, err } diff --git a/storage/metric/leveldb.go b/storage/metric/leveldb.go index 0c09f27ac..cb9857e37 100644 --- a/storage/metric/leveldb.go +++ b/storage/metric/leveldb.go @@ -122,14 +122,14 @@ func NewLevelDBMetricPersistence(baseDirectory string) (*LevelDBMetricPersistenc "Label Names and Value Pairs by Fingerprint", func() { var err error - emission.FingerprintToMetrics, err = NewLevelDBFingerprintMetricIndex(LevelDBFingerprintMetricIndexOptions{ - LevelDBOptions: leveldb.LevelDBOptions{ + emission.FingerprintToMetrics, err = NewLevelDBFingerprintMetricIndex( + leveldb.LevelDBOptions{ Name: "Metrics by Fingerprint", Purpose: "Index", Path: baseDirectory + "/label_name_and_value_pairs_by_fingerprint", CacheSizeBytes: *fingerprintsToLabelPairCacheSize, }, - }) + ) workers.MayFail(err) }, }, @@ -150,13 +150,14 @@ func NewLevelDBMetricPersistence(baseDirectory string) (*LevelDBMetricPersistenc "High Watermarks by Fingerprint", func() { var err error - emission.MetricHighWatermarks, err = NewLevelDBHighWatermarker(LevelDBHighWatermarkerOptions{ - LevelDBOptions: leveldb.LevelDBOptions{ + emission.MetricHighWatermarks, err = NewLevelDBHighWatermarker( + leveldb.LevelDBOptions{ Name: "High Watermarks", Purpose: "The youngest sample in the database per metric.", Path: baseDirectory + "/high_watermarks_by_fingerprint", CacheSizeBytes: *highWatermarkCacheSize, - }}) + }, + ) workers.MayFail(err) }, }, @@ -164,14 +165,14 @@ func NewLevelDBMetricPersistence(baseDirectory string) (*LevelDBMetricPersistenc "Fingerprints by Label Name", func() { var err error - emission.LabelNameToFingerprints, err = NewLevelLabelNameFingerprintIndex(LevelDBLabelNameFingerprintIndexOptions{ - LevelDBOptions: leveldb.LevelDBOptions{ + emission.LabelNameToFingerprints, err = NewLevelLabelNameFingerprintIndex( + leveldb.LevelDBOptions{ Name: "Fingerprints by Label Name", Purpose: "Index", Path: baseDirectory + "/fingerprints_by_label_name", CacheSizeBytes: *labelNameToFingerprintsCacheSize, }, - }) + ) workers.MayFail(err) }, }, @@ -179,14 +180,14 @@ func NewLevelDBMetricPersistence(baseDirectory string) (*LevelDBMetricPersistenc "Fingerprints by Label Name and Value Pair", func() { var err error - emission.LabelPairToFingerprints, err = NewLevelDBLabelSetFingerprintIndex(LevelDBLabelSetFingerprintIndexOptions{ - LevelDBOptions: leveldb.LevelDBOptions{ + emission.LabelPairToFingerprints, err = NewLevelDBLabelSetFingerprintIndex( + leveldb.LevelDBOptions{ Name: "Fingerprints by Label Pair", Purpose: "Index", Path: baseDirectory + "/fingerprints_by_label_name_and_value_pair", CacheSizeBytes: *labelPairToFingerprintsCacheSize, }, - }) + ) workers.MayFail(err) }, }, @@ -195,14 +196,13 @@ func NewLevelDBMetricPersistence(baseDirectory string) (*LevelDBMetricPersistenc func() { var err error emission.MetricMembershipIndex, err = NewLevelDBMetricMembershipIndex( - LevelDBMetricMembershipIndexOptions{ - LevelDBOptions: leveldb.LevelDBOptions{ - Name: "Metric Membership", - Purpose: "Index", - Path: baseDirectory + "/metric_membership_index", - CacheSizeBytes: *metricMembershipIndexCacheSize, - }, - }) + leveldb.LevelDBOptions{ + Name: "Metric Membership", + Purpose: "Index", + Path: baseDirectory + "/metric_membership_index", + CacheSizeBytes: *metricMembershipIndexCacheSize, + }, + ) workers.MayFail(err) }, }, @@ -210,14 +210,14 @@ func NewLevelDBMetricPersistence(baseDirectory string) (*LevelDBMetricPersistenc "Sample Curation Remarks", func() { var err error - emission.CurationRemarks, err = NewLevelDBCurationRemarker(LevelDBCurationRemarkerOptions{ - LevelDBOptions: leveldb.LevelDBOptions{ + emission.CurationRemarks, err = NewLevelDBCurationRemarker( + leveldb.LevelDBOptions{ Name: "Sample Curation Remarks", Purpose: "Ledger of Progress for Various Curators", Path: baseDirectory + "/curation_remarks", CacheSizeBytes: *curationRemarksCacheSize, }, - }) + ) workers.MayFail(err) }, }, diff --git a/storage/metric/processor_test.go b/storage/metric/processor_test.go index 70338051f..1dbbeae5a 100644 --- a/storage/metric/processor_test.go +++ b/storage/metric/processor_test.go @@ -849,20 +849,20 @@ func TestCuratorCompactionProcessor(t *testing.T) { sampleDirectory := fixture.NewPreparer(t).Prepare("sample", fixture.NewCassetteFactory(scenario.in.sampleGroups)) defer sampleDirectory.Close() - curatorStates, err := NewLevelDBCurationRemarker(LevelDBCurationRemarkerOptions{ - LevelDBOptions: leveldb.LevelDBOptions{ + curatorStates, err := NewLevelDBCurationRemarker( + leveldb.LevelDBOptions{ Path: curatorDirectory.Path(), }, - }) + ) if err != nil { t.Fatal(err) } - watermarkStates, err := NewLevelDBHighWatermarker(LevelDBHighWatermarkerOptions{ - LevelDBOptions: leveldb.LevelDBOptions{ + watermarkStates, err := NewLevelDBHighWatermarker( + leveldb.LevelDBOptions{ Path: watermarkDirectory.Path(), }, - }) + ) if err != nil { t.Fatal(err) } @@ -1379,21 +1379,21 @@ func TestCuratorDeletionProcessor(t *testing.T) { sampleDirectory := fixture.NewPreparer(t).Prepare("sample", fixture.NewCassetteFactory(scenario.in.sampleGroups)) defer sampleDirectory.Close() - curatorStates, err := NewLevelDBCurationRemarker(LevelDBCurationRemarkerOptions{ - LevelDBOptions: leveldb.LevelDBOptions{ + curatorStates, err := NewLevelDBCurationRemarker( + leveldb.LevelDBOptions{ Path: curatorDirectory.Path(), }, - }) + ) if err != nil { t.Fatal(err) } defer curatorStates.Close() - watermarkStates, err := NewLevelDBHighWatermarker(LevelDBHighWatermarkerOptions{ - LevelDBOptions: leveldb.LevelDBOptions{ + watermarkStates, err := NewLevelDBHighWatermarker( + leveldb.LevelDBOptions{ Path: watermarkDirectory.Path(), }, - }) + ) if err != nil { t.Fatal(err) } diff --git a/storage/metric/watermark.go b/storage/metric/watermark.go index fd45b28dd..f25be7b70 100644 --- a/storage/metric/watermark.go +++ b/storage/metric/watermark.go @@ -104,14 +104,9 @@ func (w *LevelDBHighWatermarker) UpdateBatch(m FingerprintHighWatermarkMapping) return w.LevelDBPersistence.Commit(batch) } -// LevelDBHighWatermarkerOptions just wraps leveldb.LevelDBOptions. -type LevelDBHighWatermarkerOptions struct { - leveldb.LevelDBOptions -} - // NewLevelDBHighWatermarker returns a LevelDBHighWatermarker ready to use. -func NewLevelDBHighWatermarker(o LevelDBHighWatermarkerOptions) (*LevelDBHighWatermarker, error) { - s, err := leveldb.NewLevelDBPersistence(o.LevelDBOptions) +func NewLevelDBHighWatermarker(o leveldb.LevelDBOptions) (*LevelDBHighWatermarker, error) { + s, err := leveldb.NewLevelDBPersistence(o) if err != nil { return nil, err } @@ -136,11 +131,6 @@ type LevelDBCurationRemarker struct { *leveldb.LevelDBPersistence } -// LevelDBCurationRemarkerOptions just wraps leveldb.LevelDBOptions. -type LevelDBCurationRemarkerOptions struct { - leveldb.LevelDBOptions -} - // Get implements CurationRemarker. func (w *LevelDBCurationRemarker) Get(c *curationKey) (t clientmodel.Timestamp, ok bool, err error) { k := &dto.CurationKey{} @@ -166,8 +156,8 @@ func (w *LevelDBCurationRemarker) Update(pair *curationKey, t clientmodel.Timest } // NewLevelDBCurationRemarker returns a LevelDBCurationRemarker ready to use. -func NewLevelDBCurationRemarker(o LevelDBCurationRemarkerOptions) (*LevelDBCurationRemarker, error) { - s, err := leveldb.NewLevelDBPersistence(o.LevelDBOptions) +func NewLevelDBCurationRemarker(o leveldb.LevelDBOptions) (*LevelDBCurationRemarker, error) { + s, err := leveldb.NewLevelDBPersistence(o) if err != nil { return nil, err }