Skip to content

Timeout does not cause exception / error escalation #129

@c0dw

Description

@c0dw

The timeout implemented in RunCommand.java does not trigger a proper error escalation. I still don't get an exitcode after a timeout in the onvoking process. My java skills are slightly rusty - so correct me if I'm wrong, but from your code (lines 203-209) I understand you're using java.util.concurrent.ExecutorService.shutdown() which causes an orderly shutdown and after that in line 209 you return 'returnCode[0]' which I suppose is initialized to literally zero as well. Therefore an invoking process does not get notified, that an irregular termination (due to a timeout) occurred, which makes error handling cumbersome. IMHO a timeout should push an error/exception up the call-stack.

...and here's a suggestion, how this issue might get resolved. Take it with a grain of salt, as I'm not a Java expert though...
I think the solution is using the return Value of the awaitTermination Method to determine the returnValue of your own function, like ...

if (!executorService.awaitTermination(timeoutInMinutes, TimeUnit.MINUTES)) {
        returnCode[0] = 1; // or whatever exitcode you might assign a timeout - except zero!
}

According to the API doc awaitTermination() returns true if this executor terminated and false if the timeout elapsed before termination.

Activity

self-assigned this
on Feb 19, 2019
added this to the 3.1.3 milestone on Feb 19, 2019
added a commit that references this issue on Mar 14, 2019
079e021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Relationships

None yet

    Development

    No branches or pull requests

      Participants

      @pesse@c0dw

      Issue actions

        Timeout does not cause exception / error escalation · Issue #129 · utPLSQL/utPLSQL-cli