Skip to content

Commit

Permalink
remove error return from Wait and Stop
Browse files Browse the repository at this point in the history
  • Loading branch information
mvo5 committed Mar 16, 2016
1 parent c8ac5e5 commit 7cc2fa1
Show file tree
Hide file tree
Showing 7 changed files with 16 additions and 60 deletions.
6 changes: 2 additions & 4 deletions overlord/assertstate/assertmgr.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,11 +47,9 @@ func (m *AssertManager) Ensure() error {
}

// Stop implements StateManager.Stop.
func (m *AssertManager) Stop() error {
return nil
func (m *AssertManager) Stop() {
}

// Wait implements StateManager.Wait.
func (m *AssertManager) Wait() error {
return nil
func (m *AssertManager) Wait() {
}
4 changes: 0 additions & 4 deletions overlord/ifacestate/export_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,3 @@ import (
func (m *InterfaceManager) Repository() *interfaces.Repository {
return m.repo
}

func (m *InterfaceManager) Wait() {
m.runner.Wait()
}
7 changes: 3 additions & 4 deletions overlord/ifacestate/ifacemgr.go
Original file line number Diff line number Diff line change
Expand Up @@ -104,13 +104,12 @@ func (m *InterfaceManager) Ensure() error {
}

// Wait implements StateManager.Wait.
func (m *InterfaceManager) Wait() error {
func (m *InterfaceManager) Wait() {
m.runner.Wait()
return nil
}

// Stop implements StateManager.Stop.
func (m *InterfaceManager) Stop() error {
func (m *InterfaceManager) Stop() {
m.runner.Stop()
return nil

}
7 changes: 2 additions & 5 deletions overlord/overlord.go
Original file line number Diff line number Diff line change
Expand Up @@ -126,11 +126,8 @@ func (o *Overlord) Run() {
func (o *Overlord) Stop() error {
o.loopTomb.Kill(nil)
err1 := o.loopTomb.Wait()
err2 := o.stateEng.Stop()
if err1 != nil {
return err1
}
return err2
o.stateEng.Stop()
return err1
}

// StateEngine returns the state engine used by the overlord.
Expand Down
6 changes: 2 additions & 4 deletions overlord/snapstate/snapmgr.go
Original file line number Diff line number Diff line change
Expand Up @@ -119,13 +119,11 @@ func (m *SnapManager) Ensure() error {
}

// Wait implements StateManager.Wait.
func (m *SnapManager) Wait() error {
func (m *SnapManager) Wait() {
m.runner.Wait()
return nil
}

// Stop implements StateManager.Stop.
func (m *SnapManager) Stop() error {
func (m *SnapManager) Stop() {
m.runner.Stop()
return nil
}
12 changes: 4 additions & 8 deletions overlord/stateengine.go
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,11 @@ type StateManager interface {
Ensure() error

// Wait asks manager to wait for all running activities to finish.
Wait() error
Wait()

// Stop asks the manager to terminate all activities running concurrently.
// It must not return before these activities are finished.
Stop() error
Stop()
}

// StateEngine controls the dispatching of state changes to state managers.
Expand Down Expand Up @@ -105,16 +105,12 @@ func (se *StateEngine) AddManager(m StateManager) {

// Stop asks all managers to terminate activities running concurrently.
// It returns the first error found after all managers are stopped.
func (se *StateEngine) Stop() error {
func (se *StateEngine) Stop() {
if len(se.managers) > 0 {
for _, m := range se.managers {
err := m.Stop()
if err != nil {
return err
}
m.Stop()
}
se.initialize = append(se.initialize, se.managers...)
se.managers = nil
}
return nil
}
34 changes: 3 additions & 31 deletions overlord/stateengine_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,14 +57,12 @@ func (fm *fakeManager) Ensure() error {
return fm.ensureError
}

func (fm *fakeManager) Stop() error {
func (fm *fakeManager) Stop() {
*fm.calls = append(*fm.calls, "stop:"+fm.name)
return fm.stopError
}

func (fm *fakeManager) Wait() error {
func (fm *fakeManager) Wait() {
*fm.calls = append(*fm.calls, "wait:"+fm.name)
return fm.stopError
}

var _ overlord.StateManager = (*fakeManager)(nil)
Expand Down Expand Up @@ -148,36 +146,10 @@ func (ses *stateEngineSuite) TestStop(c *C) {
c.Assert(err, IsNil)
c.Check(calls, HasLen, 4)

err = se.Stop()
c.Assert(err, IsNil)
se.Stop()
c.Check(calls, DeepEquals, []string{"init:mgr1", "init:mgr2", "ensure:mgr1", "ensure:mgr2", "stop:mgr1", "stop:mgr2"})

err = se.Ensure()
c.Assert(err, IsNil)
c.Check(calls, DeepEquals, []string{"init:mgr1", "init:mgr2", "ensure:mgr1", "ensure:mgr2", "stop:mgr1", "stop:mgr2", "init:mgr1", "init:mgr2", "ensure:mgr1", "ensure:mgr2"})
}

func (ses *stateEngineSuite) TestStopError(c *C) {
s := state.New(nil)
se := overlord.NewStateEngine(s)

calls := []string{}

err1 := errors.New("boom1")
err2 := errors.New("boom2")

mgr1 := &fakeManager{name: "mgr1", calls: &calls, stopError: err1}
mgr2 := &fakeManager{name: "mgr2", calls: &calls, stopError: err2}

se.AddManager(mgr1)
se.AddManager(mgr2)

err := se.Ensure()
c.Assert(err, IsNil)
c.Check(calls, HasLen, 4)

err = se.Stop()
c.Check(err, Equals, err1)
c.Check(calls, DeepEquals, []string{"init:mgr1", "init:mgr2", "ensure:mgr1", "ensure:mgr2", "stop:mgr1"})

}

0 comments on commit 7cc2fa1

Please sign in to comment.