Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Return a meaningful reattach error for non-existent pids on Windows #125

Merged
merged 1 commit into from
Oct 4, 2019

Commits on Aug 8, 2019

  1. Return a meaningful reattach error for non-existent pids on Windows

    This fix causes no change in behavior on Unix systems, and only
    affects the error return type from reattach() when the reattach data
    provided has a non-existent pid on Windows.
    
    With this change in place, reattach() will now consistently return
    ErrProcessNotFound on both Windows and Unix systems when the process
    is indeed not found.
    
    I encountered this while writing a Windows Nomad Task Driver plugin,
    here's more context from the Nomad perspective:
    
    The Reattach info Nomad stores can get stale, whereby the pid no
    longer refers to a live process.
    
    This has happened to me regularly (but not always) when
    troubleshooting plugin development as I'm testingn what happens when
    Nomad is forcefully killed and restarted.
    
    On Windows, when the go-plugin code calls FindProcess with as stale
    pid, the following error is always returned:
    os.SyscallError - 'OpenProcess: the paremter is incorrect'
    
    On Unix systems, FindProcess never returns an error, at least as
    presently defined in the go source code.
    
    In order for Nomad to recognize this condition we need to bubble up
    the ErrProcesNotFound error, with which we can then futher propogate
    the SingletonPluginExited error from singleton.go.
    
    With these changes in place, whenever a stale pid is found in the
    Reattach info, Nomad now properly restarts the plugin exe.
    lachlanorr committed Aug 8, 2019
    Configuration menu
    Copy the full SHA
    dfbe846 View commit details
    Browse the repository at this point in the history