[ https://issues.apache.org/jira/browse/GEODE-9615?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Kirk Lund updated GEODE-9615: ----------------------------- Description: This failure occurs because the locator or server was stopped and then immediately restarted with the same ports. When Gfsh returns from stop locator or stop server, the stopped process is asynchronously stopping and may continue to hold those ports when the next start command for that process is issued. It then fails with an exit value of 1 instead of the expected value of 0. Any test using GfshRule to stop and then immediately start a new process may fail in this way. The underlying exception in the locator or server log is a BindException because the port is still in use by the previous instance of that process which is still in the process of stopping. The only way to close this gap is to have the test get the pid for the process being stopped and then await until the process identified by that pid no longer exists. {code:java} org.apache.geode.management.internal.cli.shell.StatusLocatorExitCodeAcceptanceTest > onlineStatusCommandShouldSucceedWhenConnected_locator_host_and_port FAILED org.junit.ComparisonFailure: [Exit value from process started by [test-frame: gfsh -e connect --locator=localhost[20608] -e status locator --host=localhost --port=20608]] expected:<[0]> but was:<[1]> at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at org.apache.geode.test.junit.rules.gfsh.GfshExecution.awaitTermination(GfshExecution.java:137) at org.apache.geode.test.junit.rules.gfsh.GfshRule.execute(GfshRule.java:128) at org.apache.geode.test.junit.rules.gfsh.GfshScript.execute(GfshScript.java:133) at org.apache.geode.management.internal.cli.shell.StatusLocatorExitCodeAcceptanceTest.executeScriptWithExpectedExitCode(StatusLocatorExitCodeAcceptanceTest.java:255) at org.apache.geode.management.internal.cli.shell.StatusLocatorExitCodeAcceptanceTest.onlineStatusCommandShouldSucceedWhenConnected_locator_host_and_port(StatusLocatorExitCodeAcceptanceTest.java:128) org.apache.geode.management.internal.cli.shell.StatusLocatorExitCodeAcceptanceTest > offlineStatusCommandShouldSucceedWhenConnected_locator_dir FAILED org.junit.ComparisonFailure: [Exit value from process started by [test-frame: gfsh -e connect --locator=localhost[20608] -e status locator --dir=/tmp/junit11722670533134972918/member-controller/locator-chase-obedient-cake]] expected:<[0]> but was:<[1]> at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at org.apache.geode.test.junit.rules.gfsh.GfshExecution.awaitTermination(GfshExecution.java:137) at org.apache.geode.test.junit.rules.gfsh.GfshRule.execute(GfshRule.java:128) at org.apache.geode.test.junit.rules.gfsh.GfshScript.execute(GfshScript.java:133) at org.apache.geode.management.internal.cli.shell.StatusLocatorExitCodeAcceptanceTest.executeScriptWithExpectedExitCode(StatusLocatorExitCodeAcceptanceTest.java:255) at org.apache.geode.management.internal.cli.shell.StatusLocatorExitCodeAcceptanceTest.offlineStatusCommandShouldSucceedWhenConnected_locator_dir(StatusLocatorExitCodeAcceptanceTest.java:140) org.apache.geode.management.internal.cli.shell.StatusLocatorExitCodeAcceptanceTest > onlineStatusCommandShouldSucceedWhenConnected_locator_name FAILED org.junit.ComparisonFailure: [Exit value from process started by [test-frame: gfsh -e connect --locator=localhost[20608] -e status locator --name=locator-chase-obedient-cake]] expected:<[0]> but was:<[1]> at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at org.apache.geode.test.junit.rules.gfsh.GfshExecution.awaitTermination(GfshExecution.java:137) at org.apache.geode.test.junit.rules.gfsh.GfshRule.execute(GfshRule.java:128) at org.apache.geode.test.junit.rules.gfsh.GfshScript.execute(GfshScript.java:133) at org.apache.geode.management.internal.cli.shell.StatusLocatorExitCodeAcceptanceTest.executeScriptWithExpectedExitCode(StatusLocatorExitCodeAcceptanceTest.java:255) at org.apache.geode.management.internal.cli.shell.StatusLocatorExitCodeAcceptanceTest.onlineStatusCommandShouldSucceedWhenConnected_locator_name(StatusLocatorExitCodeAcceptanceTest.java:116) org.apache.geode.management.internal.cli.shell.StatusLocatorExitCodeAcceptanceTest > onlineStatusCommandShouldSucceedWhenConnected_locator_port FAILED org.junit.ComparisonFailure: [Exit value from process started by [test-frame: gfsh -e connect --locator=localhost[20608] -e status locator --port=20608]] expected:<[0]> but was:<[1]> at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at org.apache.geode.test.junit.rules.gfsh.GfshExecution.awaitTermination(GfshExecution.java:137) at org.apache.geode.test.junit.rules.gfsh.GfshRule.execute(GfshRule.java:128) at org.apache.geode.test.junit.rules.gfsh.GfshScript.execute(GfshScript.java:133) at org.apache.geode.management.internal.cli.shell.StatusLocatorExitCodeAcceptanceTest.executeScriptWithExpectedExitCode(StatusLocatorExitCodeAcceptanceTest.java:255) at org.apache.geode.management.internal.cli.shell.StatusLocatorExitCodeAcceptanceTest.onlineStatusCommandShouldSucceedWhenConnected_locator_port(StatusLocatorExitCodeAcceptanceTest.java:122) {code} {noformat} org.apache.geode.modules.DeployJarAcceptanceTest > classMethod FAILED org.junit.ComparisonFailure: [Exit value from process started by [41497e8cf7689a63: gfsh -e start locator --name=locator -e configure pdx --read-serialized=true -e start server --name=server --locators=localhost[10334]]] expected:<[0]> but was:<[1]> at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at org.apache.geode.test.junit.rules.gfsh.GfshExecution.awaitTermination(GfshExecution.java:103) at org.apache.geode.test.junit.rules.gfsh.GfshRule.execute(GfshRule.java:143) at org.apache.geode.test.junit.rules.gfsh.GfshRule.execute(GfshRule.java:152) at org.apache.geode.test.junit.rules.gfsh.GfshScript.execute(GfshScript.java:153) at org.apache.geode.modules.DeployJarAcceptanceTest.setup(DeployJarAcceptanceTest.java:62) {noformat} was: {code:java} org.apache.geode.management.internal.cli.shell.StatusLocatorExitCodeAcceptanceTest > onlineStatusCommandShouldSucceedWhenConnected_locator_host_and_port FAILED org.junit.ComparisonFailure: [Exit value from process started by [test-frame: gfsh -e connect --locator=localhost[20608] -e status locator --host=localhost --port=20608]] expected:<[0]> but was:<[1]> at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at org.apache.geode.test.junit.rules.gfsh.GfshExecution.awaitTermination(GfshExecution.java:137) at org.apache.geode.test.junit.rules.gfsh.GfshRule.execute(GfshRule.java:128) at org.apache.geode.test.junit.rules.gfsh.GfshScript.execute(GfshScript.java:133) at org.apache.geode.management.internal.cli.shell.StatusLocatorExitCodeAcceptanceTest.executeScriptWithExpectedExitCode(StatusLocatorExitCodeAcceptanceTest.java:255) at org.apache.geode.management.internal.cli.shell.StatusLocatorExitCodeAcceptanceTest.onlineStatusCommandShouldSucceedWhenConnected_locator_host_and_port(StatusLocatorExitCodeAcceptanceTest.java:128) org.apache.geode.management.internal.cli.shell.StatusLocatorExitCodeAcceptanceTest > offlineStatusCommandShouldSucceedWhenConnected_locator_dir FAILED org.junit.ComparisonFailure: [Exit value from process started by [test-frame: gfsh -e connect --locator=localhost[20608] -e status locator --dir=/tmp/junit11722670533134972918/member-controller/locator-chase-obedient-cake]] expected:<[0]> but was:<[1]> at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at org.apache.geode.test.junit.rules.gfsh.GfshExecution.awaitTermination(GfshExecution.java:137) at org.apache.geode.test.junit.rules.gfsh.GfshRule.execute(GfshRule.java:128) at org.apache.geode.test.junit.rules.gfsh.GfshScript.execute(GfshScript.java:133) at org.apache.geode.management.internal.cli.shell.StatusLocatorExitCodeAcceptanceTest.executeScriptWithExpectedExitCode(StatusLocatorExitCodeAcceptanceTest.java:255) at org.apache.geode.management.internal.cli.shell.StatusLocatorExitCodeAcceptanceTest.offlineStatusCommandShouldSucceedWhenConnected_locator_dir(StatusLocatorExitCodeAcceptanceTest.java:140) org.apache.geode.management.internal.cli.shell.StatusLocatorExitCodeAcceptanceTest > onlineStatusCommandShouldSucceedWhenConnected_locator_name FAILED org.junit.ComparisonFailure: [Exit value from process started by [test-frame: gfsh -e connect --locator=localhost[20608] -e status locator --name=locator-chase-obedient-cake]] expected:<[0]> but was:<[1]> at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at org.apache.geode.test.junit.rules.gfsh.GfshExecution.awaitTermination(GfshExecution.java:137) at org.apache.geode.test.junit.rules.gfsh.GfshRule.execute(GfshRule.java:128) at org.apache.geode.test.junit.rules.gfsh.GfshScript.execute(GfshScript.java:133) at org.apache.geode.management.internal.cli.shell.StatusLocatorExitCodeAcceptanceTest.executeScriptWithExpectedExitCode(StatusLocatorExitCodeAcceptanceTest.java:255) at org.apache.geode.management.internal.cli.shell.StatusLocatorExitCodeAcceptanceTest.onlineStatusCommandShouldSucceedWhenConnected_locator_name(StatusLocatorExitCodeAcceptanceTest.java:116) org.apache.geode.management.internal.cli.shell.StatusLocatorExitCodeAcceptanceTest > onlineStatusCommandShouldSucceedWhenConnected_locator_port FAILED org.junit.ComparisonFailure: [Exit value from process started by [test-frame: gfsh -e connect --locator=localhost[20608] -e status locator --port=20608]] expected:<[0]> but was:<[1]> at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at org.apache.geode.test.junit.rules.gfsh.GfshExecution.awaitTermination(GfshExecution.java:137) at org.apache.geode.test.junit.rules.gfsh.GfshRule.execute(GfshRule.java:128) at org.apache.geode.test.junit.rules.gfsh.GfshScript.execute(GfshScript.java:133) at org.apache.geode.management.internal.cli.shell.StatusLocatorExitCodeAcceptanceTest.executeScriptWithExpectedExitCode(StatusLocatorExitCodeAcceptanceTest.java:255) at org.apache.geode.management.internal.cli.shell.StatusLocatorExitCodeAcceptanceTest.onlineStatusCommandShouldSucceedWhenConnected_locator_port(StatusLocatorExitCodeAcceptanceTest.java:122) {code} {noformat} org.apache.geode.modules.DeployJarAcceptanceTest > classMethod FAILED org.junit.ComparisonFailure: [Exit value from process started by [41497e8cf7689a63: gfsh -e start locator --name=locator -e configure pdx --read-serialized=true -e start server --name=server --locators=localhost[10334]]] expected:<[0]> but was:<[1]> at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at org.apache.geode.test.junit.rules.gfsh.GfshExecution.awaitTermination(GfshExecution.java:103) at org.apache.geode.test.junit.rules.gfsh.GfshRule.execute(GfshRule.java:143) at org.apache.geode.test.junit.rules.gfsh.GfshRule.execute(GfshRule.java:152) at org.apache.geode.test.junit.rules.gfsh.GfshScript.execute(GfshScript.java:153) at org.apache.geode.modules.DeployJarAcceptanceTest.setup(DeployJarAcceptanceTest.java:62) {noformat} > CI Failure: Acceptance Tests fails with exit value 1 from start locator or > start server > --------------------------------------------------------------------------------------- > > Key: GEODE-9615 > URL: https://issues.apache.org/jira/browse/GEODE-9615 > Project: Geode > Issue Type: Bug > Components: tests > Reporter: Kirk Lund > Priority: Major > > This failure occurs because the locator or server was stopped and then > immediately restarted with the same ports. When Gfsh returns from stop > locator or stop server, the stopped process is asynchronously stopping and > may continue to hold those ports when the next start command for that process > is issued. It then fails with an exit value of 1 instead of the expected > value of 0. > Any test using GfshRule to stop and then immediately start a new process may > fail in this way. The underlying exception in the locator or server log is a > BindException because the port is still in use by the previous instance of > that process which is still in the process of stopping. > The only way to close this gap is to have the test get the pid for the > process being stopped and then await until the process identified by that pid > no longer exists. > {code:java} > org.apache.geode.management.internal.cli.shell.StatusLocatorExitCodeAcceptanceTest > > onlineStatusCommandShouldSucceedWhenConnected_locator_host_and_port FAILED > org.junit.ComparisonFailure: [Exit value from process started by > [test-frame: gfsh -e connect --locator=localhost[20608] -e status locator > --host=localhost --port=20608]] expected:<[0]> but was:<[1]> > at > jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) > at > jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) > at > jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) > at > org.apache.geode.test.junit.rules.gfsh.GfshExecution.awaitTermination(GfshExecution.java:137) > at > org.apache.geode.test.junit.rules.gfsh.GfshRule.execute(GfshRule.java:128) > at > org.apache.geode.test.junit.rules.gfsh.GfshScript.execute(GfshScript.java:133) > at > org.apache.geode.management.internal.cli.shell.StatusLocatorExitCodeAcceptanceTest.executeScriptWithExpectedExitCode(StatusLocatorExitCodeAcceptanceTest.java:255) > at > org.apache.geode.management.internal.cli.shell.StatusLocatorExitCodeAcceptanceTest.onlineStatusCommandShouldSucceedWhenConnected_locator_host_and_port(StatusLocatorExitCodeAcceptanceTest.java:128) > org.apache.geode.management.internal.cli.shell.StatusLocatorExitCodeAcceptanceTest > > offlineStatusCommandShouldSucceedWhenConnected_locator_dir FAILED > org.junit.ComparisonFailure: [Exit value from process started by > [test-frame: gfsh -e connect --locator=localhost[20608] -e status locator > --dir=/tmp/junit11722670533134972918/member-controller/locator-chase-obedient-cake]] > expected:<[0]> but was:<[1]> > at > jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) > at > jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) > at > jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) > at > org.apache.geode.test.junit.rules.gfsh.GfshExecution.awaitTermination(GfshExecution.java:137) > at > org.apache.geode.test.junit.rules.gfsh.GfshRule.execute(GfshRule.java:128) > at > org.apache.geode.test.junit.rules.gfsh.GfshScript.execute(GfshScript.java:133) > at > org.apache.geode.management.internal.cli.shell.StatusLocatorExitCodeAcceptanceTest.executeScriptWithExpectedExitCode(StatusLocatorExitCodeAcceptanceTest.java:255) > at > org.apache.geode.management.internal.cli.shell.StatusLocatorExitCodeAcceptanceTest.offlineStatusCommandShouldSucceedWhenConnected_locator_dir(StatusLocatorExitCodeAcceptanceTest.java:140) > org.apache.geode.management.internal.cli.shell.StatusLocatorExitCodeAcceptanceTest > > onlineStatusCommandShouldSucceedWhenConnected_locator_name FAILED > org.junit.ComparisonFailure: [Exit value from process started by > [test-frame: gfsh -e connect --locator=localhost[20608] -e status locator > --name=locator-chase-obedient-cake]] expected:<[0]> but was:<[1]> > at > jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) > at > jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) > at > jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) > at > org.apache.geode.test.junit.rules.gfsh.GfshExecution.awaitTermination(GfshExecution.java:137) > at > org.apache.geode.test.junit.rules.gfsh.GfshRule.execute(GfshRule.java:128) > at > org.apache.geode.test.junit.rules.gfsh.GfshScript.execute(GfshScript.java:133) > at > org.apache.geode.management.internal.cli.shell.StatusLocatorExitCodeAcceptanceTest.executeScriptWithExpectedExitCode(StatusLocatorExitCodeAcceptanceTest.java:255) > at > org.apache.geode.management.internal.cli.shell.StatusLocatorExitCodeAcceptanceTest.onlineStatusCommandShouldSucceedWhenConnected_locator_name(StatusLocatorExitCodeAcceptanceTest.java:116) > org.apache.geode.management.internal.cli.shell.StatusLocatorExitCodeAcceptanceTest > > onlineStatusCommandShouldSucceedWhenConnected_locator_port FAILED > org.junit.ComparisonFailure: [Exit value from process started by > [test-frame: gfsh -e connect --locator=localhost[20608] -e status locator > --port=20608]] expected:<[0]> but was:<[1]> > at > jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) > at > jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) > at > jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) > at > org.apache.geode.test.junit.rules.gfsh.GfshExecution.awaitTermination(GfshExecution.java:137) > at > org.apache.geode.test.junit.rules.gfsh.GfshRule.execute(GfshRule.java:128) > at > org.apache.geode.test.junit.rules.gfsh.GfshScript.execute(GfshScript.java:133) > at > org.apache.geode.management.internal.cli.shell.StatusLocatorExitCodeAcceptanceTest.executeScriptWithExpectedExitCode(StatusLocatorExitCodeAcceptanceTest.java:255) > at > org.apache.geode.management.internal.cli.shell.StatusLocatorExitCodeAcceptanceTest.onlineStatusCommandShouldSucceedWhenConnected_locator_port(StatusLocatorExitCodeAcceptanceTest.java:122) > {code} > {noformat} > org.apache.geode.modules.DeployJarAcceptanceTest > classMethod FAILED > org.junit.ComparisonFailure: [Exit value from process started by > [41497e8cf7689a63: gfsh -e start locator --name=locator -e configure pdx > --read-serialized=true -e start server --name=server > --locators=localhost[10334]]] expected:<[0]> but was:<[1]> > at > jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) > at > jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) > at > jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) > at > org.apache.geode.test.junit.rules.gfsh.GfshExecution.awaitTermination(GfshExecution.java:103) > at > org.apache.geode.test.junit.rules.gfsh.GfshRule.execute(GfshRule.java:143) > at > org.apache.geode.test.junit.rules.gfsh.GfshRule.execute(GfshRule.java:152) > at > org.apache.geode.test.junit.rules.gfsh.GfshScript.execute(GfshScript.java:153) > at > org.apache.geode.modules.DeployJarAcceptanceTest.setup(DeployJarAcceptanceTest.java:62) > {noformat} -- This message was sent by Atlassian Jira (v8.20.7#820007)