graceful-fs functions as a drop-in replacement for the fs module, making various improvements.
The improvements are meant to normalize behavior across different platforms and environments, and to make filesystem access more resilient to errors.
graceful-fs:
- Queues up
openandreaddircalls, and retries them once something closes if there is an EMFILE error from too many file descriptors. - fixes
lchmodfor Node versions prior to 0.6.2. - implements
fs.lutimesif possible. Otherwise it becomes a noop. - ignores
EINVALandEPERMerrors inchown,fchownorlchownif the user isn't root. - makes
lchmodandlchownbecome noops, if not available. - retries reading a file if
readresults in EAGAIN error.
On Windows, it retries renaming a file for up to one second if EACCESS
or EPERM error occurs, likely because antivirus software has locked
the directory.