Add WriteTxn interface and convert more functions to ReadTxn
We add a WriteTxn interface for use in updating the usage memdb table, with the forward-looking prospect of incrementally converting other functions to accept interfaces. As well, we use the ReadTxn in new usage code, and as a side effect convert a couple of existing functions to use that interface as well.
This commit is contained in:
parent
45a4057f60
commit
d90d95421d
|
@ -15,6 +15,13 @@ type ReadTxn interface {
|
||||||
Abort()
|
Abort()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// WriteTxn is implemented by memdb.Txn to perform write operations.
|
||||||
|
type WriteTxn interface {
|
||||||
|
ReadTxn
|
||||||
|
Insert(table string, obj interface{}) error
|
||||||
|
Commit() error
|
||||||
|
}
|
||||||
|
|
||||||
// Changes wraps a memdb.Changes to include the index at which these changes
|
// Changes wraps a memdb.Changes to include the index at which these changes
|
||||||
// were made.
|
// were made.
|
||||||
type Changes struct {
|
type Changes struct {
|
||||||
|
|
|
@ -37,7 +37,7 @@ type UsageEntry struct {
|
||||||
|
|
||||||
// updateUsage takes a set of memdb changes and computes a delta for specific
|
// updateUsage takes a set of memdb changes and computes a delta for specific
|
||||||
// usage metrics that we track.
|
// usage metrics that we track.
|
||||||
func updateUsage(tx *txn, changes Changes) error {
|
func updateUsage(tx WriteTxn, changes Changes) error {
|
||||||
usageDeltas := make(map[string]int)
|
usageDeltas := make(map[string]int)
|
||||||
for _, change := range changes.Changes {
|
for _, change := range changes.Changes {
|
||||||
var delta int
|
var delta int
|
||||||
|
@ -140,7 +140,7 @@ func (s *Store) ServiceUsage() (uint64, ServiceUsage, error) {
|
||||||
return 0, ServiceUsage{}, fmt.Errorf("failed services lookup: %s", err)
|
return 0, ServiceUsage{}, fmt.Errorf("failed services lookup: %s", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
results, err := s.compileServiceUsage(tx, usage.Count)
|
results, err := compileServiceUsage(tx, usage.Count)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return 0, ServiceUsage{}, fmt.Errorf("failed services lookup: %s", err)
|
return 0, ServiceUsage{}, fmt.Errorf("failed services lookup: %s", err)
|
||||||
}
|
}
|
||||||
|
@ -148,7 +148,7 @@ func (s *Store) ServiceUsage() (uint64, ServiceUsage, error) {
|
||||||
return usage.Index, results, nil
|
return usage.Index, results, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func firstUsageEntry(tx *txn, id string) (*UsageEntry, error) {
|
func firstUsageEntry(tx ReadTxn, id string) (*UsageEntry, error) {
|
||||||
usage, err := tx.First("usage", "id", id)
|
usage, err := tx.First("usage", "id", id)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
|
|
|
@ -12,7 +12,7 @@ type EnterpriseServiceUsage struct{}
|
||||||
|
|
||||||
func addEnterpriseUsage(map[string]int, memdb.Change) {}
|
func addEnterpriseUsage(map[string]int, memdb.Change) {}
|
||||||
|
|
||||||
func (s *Store) compileServiceUsage(tx *txn, totalInstances int) (ServiceUsage, error) {
|
func compileServiceUsage(tx ReadTxn, totalInstances int) (ServiceUsage, error) {
|
||||||
var totalServices int
|
var totalServices int
|
||||||
results, err := tx.Get(
|
results, err := tx.Get(
|
||||||
"index",
|
"index",
|
||||||
|
|
Loading…
Reference in New Issue