)]}'
{"go/hummingbird/utils.go":[{"author":{"_account_id":995,"name":"David Goetz","email":"david.goetz@rackspace.com","username":"david-goetz"},"change_message_id":"493eddba415b4604a0645f4636514fa5aba3cd8e","unresolved":false,"context_lines":[{"line_number":84,"context_line":"\treturn nil"},{"line_number":85,"context_line":"}"},{"line_number":86,"context_line":""},{"line_number":87,"context_line":"// LockPath locks a directory, with a timeout in seconds."},{"line_number":88,"context_line":"func LockPath(directory string, timeout time.Duration) (*os.File, error) {"},{"line_number":89,"context_line":"\tlockfile :\u003d filepath.Join(directory, \".lock\")"},{"line_number":90,"context_line":"\tfile, err :\u003d os.OpenFile(lockfile, os.O_RDWR|os.O_CREATE, 0660)"}],"source_content_type":"text/x-go","patch_set":1,"id":"1aa78d24_416aebb3","line":87,"range":{"start_line":87,"start_character":49,"end_line":87,"end_character":56},"updated":"2016-07-13 16:29:28.000000000","message":"this is no longer in seconds","commit_id":"3fd2849df13265f6e11cc0183cf16894713adb79"},{"author":{"_account_id":995,"name":"David Goetz","email":"david.goetz@rackspace.com","username":"david-goetz"},"change_message_id":"493eddba415b4604a0645f4636514fa5aba3cd8e","unresolved":false,"context_lines":[{"line_number":98,"context_line":"\t}"},{"line_number":99,"context_line":"\tsuccess :\u003d make(chan error)"},{"line_number":100,"context_line":"\tgo func() {"},{"line_number":101,"context_line":"\t\tsuccess \u003c- syscall.Flock(int(file.Fd()), syscall.LOCK_EX)"},{"line_number":102,"context_line":"\t}()"},{"line_number":103,"context_line":"\ttimer :\u003d time.NewTimer(timeout)"},{"line_number":104,"context_line":"\tdefer timer.Stop()"}],"source_content_type":"text/x-go","patch_set":1,"id":"1aa78d24_a1d46f46","line":101,"range":{"start_line":101,"start_character":2,"end_line":101,"end_character":53},"updated":"2016-07-13 16:29:28.000000000","message":"if this times out this will block. you need a cancel channel thing or whatever","commit_id":"3fd2849df13265f6e11cc0183cf16894713adb79"}],"go/hummingbird/utils_test.go":[{"author":{"_account_id":995,"name":"David Goetz","email":"david.goetz@rackspace.com","username":"david-goetz"},"change_message_id":"923bca6e329438828501a46e6a04854fe0f1baee","unresolved":false,"context_lines":[{"line_number":300,"context_line":"\t\trequire.Nil(t, err)"},{"line_number":301,"context_line":"\t\trequire.NotNil(t, f)"},{"line_number":302,"context_line":"\t\ttime.Sleep(time.Second)"},{"line_number":303,"context_line":"\t\tf.Close()"},{"line_number":304,"context_line":"\t}()"},{"line_number":305,"context_line":"\t\u003c-c"},{"line_number":306,"context_line":"\tf, err :\u003d LockPath(tempDir, time.Millisecond)"}],"source_content_type":"text/x-go","patch_set":2,"id":"dada55a8_797213e7","line":303,"range":{"start_line":303,"start_character":4,"end_line":303,"end_character":9},"updated":"2016-07-18 14:59:36.000000000","message":"this Close won\u0027t fire because there\u0027s nothing waiting for the func to return after it passes c \u003c- true.","commit_id":"1b86f071961cda110dc2a65354af6d01dbd74b07"}]}
