Skip to content

Commit

Permalink
ESIntegTestCase always cleans up static fields (#49105)
Browse files Browse the repository at this point in the history
ESIntegTestCase has logic to clean up static fields in a method
annotated with `@AfterClass` so that these fields do not trigger the
StaticFieldsInvariantRule. However, during the exceptional close of the
test cluster, this cleanup can be missed. The StaticFieldsInvariantRule
always runs and will attempt to inspect the size of the static fields
that were not cleaned up. If the `currentCluster` field of
ESIntegTestCase references an InternalTestCluster, this could hold a
reference to an implementation of a `Path` that comes from the
`sun.nio.fs` package, which the security manager will deny access to.
This casues additional noise to be generated since the
AccessControlException will cause the StaticFieldsInvariantRule to fail
and also be reported along with the actual exception that occurred.

This change clears the static fields of ESIntegTestCase in a finally
block inside the `@AfterClass` method to prevent this unnecessary noise.

Closes #41526
  • Loading branch information
jaymode committed Nov 14, 2019
1 parent a666fb2 commit ba5b4f1
Showing 1 changed file with 8 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -1947,19 +1947,19 @@ public final void cleanUpCluster() throws Exception {

@AfterClass
public static void afterClass() throws Exception {
if (!runTestScopeLifecycle()) {
try {
try {
if (runTestScopeLifecycle()) {
clearClusters();
} else {
INSTANCE.printTestMessage("cleaning up after");
INSTANCE.afterInternal(true);
checkStaticState(true);
} finally {
INSTANCE = null;
}
} else {
clearClusters();
} finally {
SUITE_SEED = null;
currentCluster = null;
INSTANCE = null;
}
SUITE_SEED = null;
currentCluster = null;
}

private static void initializeSuiteScope() throws Exception {
Expand Down

0 comments on commit ba5b4f1

Please sign in to comment.