The problem is that os.NewFile makes a new File struct; it doesn't create a file. Also, the first argument should be an open file descriptor, not a flag. I think you want to use os.Create. You certainly don't want NewFile.
-rob On Sat, Jun 15, 2019 at 12:21 AM <a...@cpu.host> wrote: > I have been writing metrics to a NFS, then reading them from another > server. > > In my unit tests everything works fine on a local disk, but not when I > deploy. > > I was previously using JSON streams on NFS, (one object per line), but gob > seems like the idiomatic solution. > > Since no errors were being thrown, and I just had empty files (my files > should never be empty), I decided to try using os.NewFile with some other > file descriptors rather than os.Create. > > Here is my code which catches the metrics and writes a new file every 5 > seconds if there is content. > > Basically I would like to know if there is a specific file descriptor to > use for this scenario of streaming the data to the NFS. > > Thanks, > > > func (client *Client) batchLogs() { > > var received int > > var file *os.File > var enc *gob.Encoder > > for { > t := time.After(5 * time.Second) > > for { > select { > > case metric := <- client.batchQueue: > > if enc == nil { > file = os.NewFile( > syscall.O_ASYNC, > fmt.Sprintf("%s/%s_%v.gobs", client.volumePath, client.clientID, > time.Now().UTC().Unix()), > ) > if file == nil { > err := fmt.Errorf("FAILED TO MAKE NEW LOG FILE") > fmt.Println(err) > panic(err) > } > enc = gob.NewEncoder(file) > } > > received++ > if err := metric.Serialise(enc); err != nil { > panic(err) > } > continue > > case <- t: > > if file != nil { > if err := file.Close(); err != nil { > fmt.Println(err) > } > } > > enc = nil > file = nil > > } > > break > } > } > > } > > > -- > You received this message because you are subscribed to the Google Groups > "golang-nuts" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to golang-nuts+unsubscr...@googlegroups.com. > To view this discussion on the web visit > https://groups.google.com/d/msgid/golang-nuts/cb0bd3e7-3b1f-41f0-bd06-f02f15d44cb6%40googlegroups.com > <https://groups.google.com/d/msgid/golang-nuts/cb0bd3e7-3b1f-41f0-bd06-f02f15d44cb6%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "golang-nuts" group. To unsubscribe from this group and stop receiving emails from it, send an email to golang-nuts+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/golang-nuts/CAOXNBZQh6Jec1UNFFShCS4ke2LRJ7co46XWzUzRM_ZoMJk26SQ%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.