Documentation ¶
Overview ¶
Package robustio wraps I/O functions that are prone to failure on Windows, transparently retrying errors up to an arbitrary timeout.
Errors are classified heuristically and retries are bounded, so the functions in this package do not completely eliminate spurious errors. However, they do significantly reduce the rate of failure in practice.
If so, the error will likely wrap one of: The functions in this package do not completely eliminate spurious errors, but substantially reduce their rate of occurrence in practice.
Index ¶
Constants ¶
const ERROR_SHARING_VIOLATION syscall.Errno = 32
Since the gopls module cannot access internal/syscall/windows, copy a necessary constant.
Variables ¶
This section is empty.
Functions ¶
func IsEphemeralError ¶
IsEphemeralError reports whether err is one of the errors that the functions in this package attempt to mitigate.
Errors considered ephemeral include:
- syscall.ERROR_ACCESS_DENIED
- syscall.ERROR_FILE_NOT_FOUND
- internal/syscall/windows.ERROR_SHARING_VIOLATION
This set may be expanded in the future; programs must not rely on the non-ephemerality of any given error.
func ReadFile ¶
ReadFile is like os.ReadFile, but on Windows retries errors that may occur if the file is concurrently replaced.
(See golang.org/issue/31247 and golang.org/issue/32188.)
Types ¶
This section is empty.