diff --git a/CHANGELOG.md b/CHANGELOG.md index 1e41faced..9f1ba808b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## 0.8.4 + +*June 5, 2018* + +IMPROVEMENTS: + + - [autofile] Flush on Stop; Close() method to Flush and close file + ## 0.8.3 *May 21, 2018* diff --git a/autofile/group.go b/autofile/group.go index 652c33310..1ae545032 100644 --- a/autofile/group.go +++ b/autofile/group.go @@ -71,8 +71,9 @@ type Group struct { // and their dependencies. } +// OpenGroup creates a new Group with head at headPath. It returns an error if +// it fails to open head file. func OpenGroup(headPath string) (g *Group, err error) { - dir := path.Dir(headPath) head, err := OpenAutoFile(headPath) if err != nil { @@ -98,16 +99,27 @@ func OpenGroup(headPath string) (g *Group, err error) { return } +// OnStart implements Service by starting the goroutine that checks file and +// group limits. func (g *Group) OnStart() error { - g.BaseService.OnStart() go g.processTicks() return nil } -// NOTE: g.Head must be closed separately +// OnStop implements Service by stopping the goroutine described above. +// NOTE: g.Head must be closed separately using Close. func (g *Group) OnStop() { - g.BaseService.OnStop() g.ticker.Stop() + g.Flush() // flush any uncommitted data +} + +// Close closes the head file. The group must be stopped by this moment. +func (g *Group) Close() { + g.Flush() // flush any uncommitted data + + g.mtx.Lock() + _ = g.Head.closeFile() + g.mtx.Unlock() } // SetHeadSizeLimit allows you to overwrite default head size limit - 10MB. diff --git a/version/version.go b/version/version.go index 40472c9a9..f36a2a474 100644 --- a/version/version.go +++ b/version/version.go @@ -1,3 +1,3 @@ package version -const Version = "0.8.3" +const Version = "0.8.4"