Hacker News new | ask | show | jobs
by sargun 4281 days ago
Why would you fsync logs for a high-level service? Are you afraid a power outage is going to cause you to lose service logs?
2 comments

Making sure your logging data gets written is relatively important.

Say, if you hit a bug somewhere that causes the server itself to crash.

How about installing a SIGSEGV, etc. handler to do the fsync (and perhaps even print a stacktrace)?
Disabling buffering in the file library should provide for a similar mitigation outlook. If the OS accepts the writes it WILL make it to disk unless the some part of the storage sub system(or the os itself) fails. So if the process dies recent writes should make it to disk regardless. But if the process triggers a complete system crash then you're kinda stuck needing fsync's :|
> Disabling buffering in the file library should provide for a similar mitigation outlook

Did you mean logging library? I.e., application-level buffering? In that case, good point.

The fsync() is implicit behavior of the glog framework for Go. We didn't actually want it.