Use errorChannels only for services not for drivers, reduce them to use simple functions

This commit is contained in:
Harshavardhana
2015-06-28 23:53:53 -07:00
parent b2bf90afbd
commit 42c0287943
9 changed files with 44 additions and 59 deletions

View File

@@ -101,18 +101,18 @@ func createNodeDiskMap(paths []string) map[string][]string {
return nodes
}
func initialize(d *donutDriver) {
func initialize(d *donutDriver) error {
// Soon to be user configurable, when Management API is available
// we should remove "default" to something which is passed down
// from configuration paramters
var err error
d.donut, err = donut.NewDonut("default", createNodeDiskMap(d.paths))
if err != nil {
panic(iodine.New(err, nil))
return iodine.New(err, nil)
}
buckets, err := d.donut.ListBuckets()
if err != nil {
panic(iodine.New(err, nil))
return iodine.New(err, nil)
}
for bucketName, metadata := range buckets {
d.lock.RLock()
@@ -136,13 +136,11 @@ func initialize(d *donutDriver) {
d.storedBuckets[bucketName] = storedBucket
d.lock.Unlock()
}
return nil
}
// Start a single disk subsystem
func Start(paths []string, maxSize uint64, expiration time.Duration) (chan<- string, <-chan error, drivers.Driver) {
ctrlChannel := make(chan string)
errorChannel := make(chan error)
// NewDriver instantiate a donut driver
func NewDriver(paths []string, maxSize uint64, expiration time.Duration) (drivers.Driver, error) {
driver := new(donutDriver)
driver.storedBuckets = make(map[string]storedBucket)
driver.objects = trove.NewCache(maxSize, expiration)
@@ -160,14 +158,8 @@ func Start(paths []string, maxSize uint64, expiration time.Duration) (chan<- str
driver.paths = paths
driver.lock = new(sync.RWMutex)
initialize(driver)
go start(ctrlChannel, errorChannel, driver)
return ctrlChannel, errorChannel, driver
}
func start(ctrlChannel <-chan string, errorChannel chan<- error, driver *donutDriver) {
defer close(errorChannel)
err := initialize(driver)
return driver, err
}
func (d donutDriver) expiredObject(a ...interface{}) {

View File

@@ -40,7 +40,8 @@ func (s *MySuite) TestAPISuite(c *C) {
c.Check(err, IsNil)
storageList = append(storageList, p)
paths = append(paths, p)
_, _, store := Start(paths, 1000000, 3*time.Hour)
store, err := NewDriver(paths, 1000000, 3*time.Hour)
c.Check(err, IsNil)
return store
}
drivers.APITestSuite(c, create)