diff --git a/core/etcd.go b/core/etcd.go index 76bda70ea..287d140f7 100644 --- a/core/etcd.go +++ b/core/etcd.go @@ -100,7 +100,7 @@ func (service *Service) MetaWatcher() { for _, database_ref := range resp.Node.Nodes { database_name := database_ref.Key[len(namespace)+4:] - database := cluster.AddDatabase(database_name) + database := cluster.GetOrCreateDatabase(database_name) for _, database_attr_ref := range database_ref.Nodes { key := database_attr_ref.Key[len(database_ref.Key)+1:] if key == "frame" { @@ -136,7 +136,7 @@ func (service *Service) MetaWatcher() { log.Fatal(err) } process := uuid - database.AddFragment(frame, slice, process) + database.GetOrCreateFragment(frame, slice, process) } } } @@ -149,7 +149,7 @@ func (service *Service) MetaWatcher() { } } } - database, _ := cluster.GetDatabase("main") + database := cluster.GetOrCreateDatabase("main") spew.Dump(database) database.OldGetFragment(db.Bitmap{1200, "general"}, 1) diff --git a/db/topology.go b/db/topology.go index 6c8856bc3..38de0ab1d 100644 --- a/db/topology.go +++ b/db/topology.go @@ -81,9 +81,7 @@ type Database struct { } // Add a database to a cluster -func (c *Cluster) AddDatabase(name string) *Database { - c.mutex.Lock() - defer c.mutex.Unlock() +func (c *Cluster) addDatabase(name string) *Database { database := Database{Name: name} if c.databases == nil { c.databases = make(map[string]*Database) @@ -92,9 +90,7 @@ func (c *Cluster) AddDatabase(name string) *Database { return &database } -func (c *Cluster) GetDatabase(name string) (*Database, error) { - c.mutex.Lock() - defer c.mutex.Unlock() +func (c *Cluster) getDatabase(name string) (*Database, error) { value, ok := c.databases[name] if !ok { return nil, errors.New("The database does not exist!") @@ -106,11 +102,11 @@ func (c *Cluster) GetDatabase(name string) (*Database, error) { func (c *Cluster) GetOrCreateDatabase(name string) *Database { c.mutex.Lock() defer c.mutex.Unlock() - database, err := c.GetDatabase(name) + database, err := c.getDatabase(name) if err == nil { return database } - return c.AddDatabase(name) + return c.addDatabase(name) } // Count the number of slices in a database @@ -274,9 +270,7 @@ func (d *Database) OldGetFragment(bitmap Bitmap, profile_id int) (*Fragment, err func (d *Database) GetFragmentById(fragment_id *uuid.UUID) *Fragment { } */ -func (d *Database) GetFragment(frame *Frame, slice *Slice, fragment_id *uuid.UUID) (*Fragment, error) { - d.mutex.Lock() - defer d.mutex.Unlock() +func (d *Database) getFragment(frame *Frame, slice *Slice, fragment_id *uuid.UUID) (*Fragment, error) { fsi, err := d.GetFrameSliceIntersect(frame, slice) if err != nil { log.Fatal(err) @@ -284,9 +278,7 @@ func (d *Database) GetFragment(frame *Frame, slice *Slice, fragment_id *uuid.UUI return fsi.GetFragment(fragment_id) } -func (d *Database) AddFragment(frame *Frame, slice *Slice, fragment_id *uuid.UUID) *Fragment { - d.mutex.Lock() - defer d.mutex.Unlock() +func (d *Database) addFragment(frame *Frame, slice *Slice, fragment_id *uuid.UUID) *Fragment { fsi, err := d.GetFrameSliceIntersect(frame, slice) if err != nil { log.Fatal(err) @@ -331,11 +323,11 @@ func (d *Database) AddFragmentByProcess(frame *Frame, slice *Slice, process *Pro func (d *Database) GetOrCreateFragment(frame *Frame, slice *Slice, fragment_id *uuid.UUID) *Fragment { d.mutex.Lock() defer d.mutex.Unlock() - fragment, err := d.GetFragment(frame, slice, fragment_id) + fragment, err := d.getFragment(frame, slice, fragment_id) if err == nil { return fragment } - return d.AddFragment(frame, slice, fragment_id) + return d.addFragment(frame, slice, fragment_id) } func (f *Fragment) SetProcess(process *Process) { diff --git a/db/topology_test.go b/db/topology_test.go index ed4c13ec9..532e3c61b 100644 --- a/db/topology_test.go +++ b/db/topology_test.go @@ -24,14 +24,14 @@ func TestTopology(t *testing.T) { */ cluster := NewCluster() - database := cluster.AddDatabase("main") + database := cluster.GetOrCreateDatabase("main") frame := database.GetOrCreateFrame("general") slice := database.GetOrCreateSlice(0) fragment_id, _ := uuid.ParseHex("6a9aea17-2915-4eb4-858f-a8d7d4dc0a1e") spew.Dump(fragment_id) - database.AddFragment(frame, slice, fragment_id) + database.GetOrCreateFragment(frame, slice, fragment_id) spew.Dump(database)