Merge pull request #192 from cmasone-attic/issue176

Use d.Try less granularly

Towards issue #176
This commit is contained in:
cmasone-attic
2015-08-17 10:48:41 -07:00
5 changed files with 34 additions and 42 deletions

View File

@@ -7,7 +7,6 @@ import (
"github.com/attic-labs/noms/clients/util"
"github.com/attic-labs/noms/d"
"github.com/attic-labs/noms/dataset"
"github.com/attic-labs/noms/ref"
"github.com/attic-labs/noms/sync"
)
@@ -25,26 +24,21 @@ func main() {
flag.Usage()
return
}
started := false
if err := d.Try(func() { started = util.MaybeStartCPUProfile() }); started {
defer util.StopCPUProfile()
} else if err != nil {
log.Fatalf("Can't create cpu profile file:\n%v\n", err)
}
newHead := source.Heads().Ref()
var refs []ref.Ref
if err := d.Try(func() { refs = sync.DiffHeadsByRef(sink.Heads().Ref(), newHead, source) }); err != nil {
log.Fatalln(err)
}
if err := d.Try(func() { sync.CopyChunks(refs, source, sink) }); err != nil {
log.Fatalln(err)
}
if err := d.Try(func() { sync.SetNewHeads(newHead, *sink) }); err != nil {
log.Fatalln(err)
}
err := d.Try(func() {
if util.MaybeStartCPUProfile() {
defer util.StopCPUProfile()
}
if err := d.Try(util.MaybeWriteMemProfile); err != nil {
log.Fatalf("Can't create memory profile file:\n%v\n", err)
newHead := source.Heads().Ref()
refs := sync.DiffHeadsByRef(sink.Heads().Ref(), newHead, source)
sync.CopyChunks(refs, source, sink)
sync.SetNewHeads(newHead, *sink)
util.MaybeWriteMemProfile()
})
if err != nil {
log.Fatal(err)
}
}

View File

@@ -156,24 +156,23 @@ func main() {
flag.Usage()
return
}
started := false
if err := d.Try(func() { started = util.MaybeStartCPUProfile() }); started {
defer util.StopCPUProfile()
} else if err != nil {
log.Fatalf("Can't create cpu profile file:\n%v\n", err)
}
err := d.Try(func() {
if util.MaybeStartCPUProfile() {
defer util.StopCPUProfile()
}
dataStore := datas.NewDataStore(cs)
inputDataset := dataset.NewDataset(dataStore, *inputID)
outputDataset := dataset.NewDataset(dataStore, *outputID)
dataStore := datas.NewDataStore(cs)
inputDataset := dataset.NewDataset(dataStore, *inputID)
outputDataset := dataset.NewDataset(dataStore, *outputID)
input := types.ListFromVal(inputDataset.Heads().Any().Value())
output := getIndex(input)
input := types.ListFromVal(inputDataset.Heads().Any().Value())
output := getIndex(input)
outputDataset.Commit(datas.NewSetOfCommit().Insert(
datas.NewCommit().SetParents(outputDataset.Heads().NomsValue()).SetValue(output.NomsValue())))
outputDataset.Commit(datas.NewSetOfCommit().Insert(
datas.NewCommit().SetParents(outputDataset.Heads().NomsValue()).SetValue(output.NomsValue())))
if err := d.Try(util.MaybeWriteMemProfile); err != nil {
log.Fatalf("Can't create memory profile file:\n%v\n", err)
util.MaybeWriteMemProfile()
})
if err != nil {
log.Fatal(err)
}
}

View File

@@ -23,5 +23,5 @@ type recoverablePanicker struct {
}
func (s recoverablePanicker) Errorf(format string, args ...interface{}) {
panic(nomsError{fmt.Sprintf(format, args...)})
panic(UsageError{fmt.Sprintf(format, args...)})
}

View File

@@ -7,18 +7,17 @@ func Try(f func()) (err error) {
return
}
// TODO: I think a better name for this might be like UsageError. That's really what it's intended for: telling the caller "you're holding it wrong".
type nomsError struct {
type UsageError struct {
msg string
}
func (e nomsError) Error() string {
func (e UsageError) Error() string {
return e.msg
}
func nomsRecover(errp *error) {
if r := recover(); r != nil {
if _, ok := r.(nomsError); !ok {
if _, ok := r.(UsageError); !ok {
panic(r)
}
*errp = r.(error)

View File

@@ -10,7 +10,7 @@ func TestTry(t *testing.T) {
assert := assert.New(t)
e := Try(func() { Exp.Fail("hey-o") })
assert.IsType(nomsError{}, e)
assert.IsType(UsageError{}, e)
assert.Panics(func() {
Try(func() { Chk.Fail("hey-o") })