mirror of
https://github.com/honeymoose/OpenSearch.git
synced 2025-02-17 10:25:15 +00:00
Do not catch throwable
Today throughout the codebase, catch throwable is used with reckless abandon. This is dangerous because the throwable could be a fatal virtual machine error resulting from an internal error in the JVM, or an out of memory error or a stack overflow error that leaves the virtual machine in an unstable and unpredictable state. This commit removes catch throwable from the codebase and removes the temptation to use it by modifying listener APIs to receive instances of Exception instead of the top-level Throwable. Relates elastic/elasticsearch#2694 Original commit: elastic/x-pack-elasticsearch@7ecdd7d978
This commit is contained in:
parent
29cf28bbde
commit
1cd53c41e2
@ -165,14 +165,15 @@ public class ScriptConditionTests extends ESTestCase {
|
|||||||
public void testScriptConditionThrowException() throws Exception {
|
public void testScriptConditionThrowException() throws Exception {
|
||||||
ScriptServiceProxy scriptService = getScriptServiceProxy(tp);
|
ScriptServiceProxy scriptService = getScriptServiceProxy(tp);
|
||||||
ExecutableScriptCondition condition = new ExecutableScriptCondition(
|
ExecutableScriptCondition condition = new ExecutableScriptCondition(
|
||||||
new ScriptCondition(Script.inline("assert false").build()), logger, scriptService);
|
new ScriptCondition(Script.inline("null.foo").build()), logger, scriptService);
|
||||||
SearchResponse response = new SearchResponse(InternalSearchResponse.empty(), "", 3, 3, 500L, new ShardSearchFailure[0]);
|
SearchResponse response = new SearchResponse(InternalSearchResponse.empty(), "", 3, 3, 500L, new ShardSearchFailure[0]);
|
||||||
WatchExecutionContext ctx = mockExecutionContext("_name", new Payload.XContent(response));
|
WatchExecutionContext ctx = mockExecutionContext("_name", new Payload.XContent(response));
|
||||||
ScriptCondition.Result result = condition.execute(ctx);
|
ScriptCondition.Result result = condition.execute(ctx);
|
||||||
assertThat(result, notNullValue());
|
assertThat(result, notNullValue());
|
||||||
assertThat(result.status(), is(Condition.Result.Status.FAILURE));
|
assertThat(result.status(), is(Condition.Result.Status.FAILURE));
|
||||||
assertThat(result.reason(), notNullValue());
|
assertThat(result.reason(), notNullValue());
|
||||||
assertThat(result.reason(), containsString("Assertion"));
|
assertThat(result.reason(), containsString("NullPointerException"));
|
||||||
|
assertThat(result.reason(), containsString("Cannot get property 'foo' on null object"));
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testScriptConditionReturnObject() throws Exception {
|
public void testScriptConditionReturnObject() throws Exception {
|
||||||
|
@ -509,7 +509,7 @@ public class TransportGraphExploreAction extends HandledTransportAction<GraphExp
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
listener.onFailure(e);
|
listener.onFailure(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -711,13 +711,13 @@ public class TransportGraphExploreAction extends HandledTransportAction<GraphExp
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
listener.onFailure(e);
|
listener.onFailure(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
} catch (Throwable t) {
|
} catch (Exception e) {
|
||||||
logger.error("unable to execute the graph query", t);
|
logger.error("unable to execute the graph query", e);
|
||||||
listener.onFailure(t);
|
listener.onFailure(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -270,11 +270,10 @@ public class GraphTests extends ESSingleNodeTestCase {
|
|||||||
try {
|
try {
|
||||||
GraphExploreResponse response = grb.get();
|
GraphExploreResponse response = grb.get();
|
||||||
if (response.getShardFailures().length > 0) {
|
if (response.getShardFailures().length > 0) {
|
||||||
throw ((ShardSearchFailure) response.getShardFailures()[0]).getCause();
|
expectedError = response.getShardFailures()[0].getCause();
|
||||||
}
|
}
|
||||||
} catch (Throwable rte) {
|
} catch (Exception rte) {
|
||||||
expectedError = rte;
|
expectedError = rte;
|
||||||
|
|
||||||
}
|
}
|
||||||
assertNotNull(expectedError);
|
assertNotNull(expectedError);
|
||||||
String message = expectedError.toString();
|
String message = expectedError.toString();
|
||||||
|
@ -59,7 +59,7 @@ public class TransportDeleteLicenseAction extends TransportMasterNodeAction<Dele
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
listener.onFailure(e);
|
listener.onFailure(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -61,7 +61,7 @@ public class TransportPutLicenseAction extends TransportMasterNodeAction<PutLice
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
listener.onFailure(e);
|
listener.onFailure(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -427,8 +427,8 @@ public class LicensesService extends AbstractLifecycleComponent implements Clust
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(String source, @Nullable Throwable t) {
|
public void onFailure(String source, @Nullable Exception e) {
|
||||||
logger.error("unexpected failure during [{}]", t, source);
|
logger.error("unexpected failure during [{}]", e, source);
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
@ -88,8 +88,8 @@ public abstract class AbstractLicensesIntegrationTestCase extends ESIntegTestCas
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(String source, @Nullable Throwable t) {
|
public void onFailure(String source, @Nullable Exception e) {
|
||||||
logger.error("error on metaData cleanup after test", t);
|
logger.error("error on metaData cleanup after test", e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
latch.await();
|
latch.await();
|
||||||
|
@ -146,7 +146,7 @@ public class TestUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
latch.countDown();
|
latch.countDown();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -157,7 +157,7 @@ public class LicensesAcknowledgementTests extends ESSingleNodeTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable throwable) {
|
public void onFailure(Exception throwable) {
|
||||||
latch.countDown();
|
latch.countDown();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -174,7 +174,7 @@ public class LicensesManagerServiceTests extends ESSingleNodeTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable throwable) {
|
public void onFailure(Exception throwable) {
|
||||||
latch.countDown();
|
latch.countDown();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -84,7 +84,7 @@ public class MonitoringBulkResponse extends ActionResponse {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Error(StreamInput in) throws IOException {
|
Error(StreamInput in) throws IOException {
|
||||||
this(in.<Throwable>readThrowable());
|
this(in.readException());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -114,8 +114,8 @@ public class TransportMonitoringBulkAction extends HandledTransportAction<Monito
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable t) {
|
public void onFailure(Exception e) {
|
||||||
listener.onResponse(new MonitoringBulkResponse(buildTookInMillis(startTimeNanos), new MonitoringBulkResponse.Error(t)));
|
listener.onResponse(new MonitoringBulkResponse(buildTookInMillis(startTimeNanos), new MonitoringBulkResponse.Error(e)));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -204,8 +204,8 @@ public class AgentService extends AbstractLifecycleComponent {
|
|||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
logger.trace("interrupted");
|
logger.trace("interrupted");
|
||||||
Thread.currentThread().interrupt();
|
Thread.currentThread().interrupt();
|
||||||
} catch (Throwable t) {
|
} catch (Exception e) {
|
||||||
logger.error("background thread had an uncaught exception", t);
|
logger.error("background thread had an uncaught exception", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
logger.debug("worker shutdown");
|
logger.debug("worker shutdown");
|
||||||
|
@ -59,9 +59,6 @@ import java.util.Map;
|
|||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.StreamSupport;
|
import java.util.stream.StreamSupport;
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class HttpExporter extends Exporter {
|
public class HttpExporter extends Exporter {
|
||||||
|
|
||||||
public static final String TYPE = "http";
|
public static final String TYPE = "http";
|
||||||
@ -664,9 +661,9 @@ public class HttpExporter extends Exporter {
|
|||||||
}
|
}
|
||||||
} catch (InterruptedException e) {
|
} catch (InterruptedException e) {
|
||||||
// ignore, if closed, good....
|
// ignore, if closed, good....
|
||||||
} catch (Throwable t) {
|
} catch (Exception e) {
|
||||||
logger.debug("error in keep alive thread, shutting down (will be restarted after a successful connection has been " +
|
logger.debug("error in keep alive thread, shutting down (will be restarted after a successful connection has been " +
|
||||||
"made) {}", ExceptionsHelper.detailedMessage(t));
|
"made) {}", ExceptionsHelper.detailedMessage(e));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -211,8 +211,8 @@ public class LocalExporter extends Exporter implements ClusterStateListener, Cle
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable throwable) {
|
public void onFailure(Exception e) {
|
||||||
logger.error("failed to update monitoring index template [{}]", throwable, template);
|
logger.error("failed to update monitoring index template [{}]", e, template);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -296,7 +296,7 @@ public class LocalExporter extends Exporter implements ClusterStateListener, Cle
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
logger.error("failed to delete indices", e);
|
logger.error("failed to delete indices", e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -179,8 +179,8 @@ public class CleanerService extends AbstractLifecycleComponent {
|
|||||||
for (Listener listener : listeners) {
|
for (Listener listener : listeners) {
|
||||||
try {
|
try {
|
||||||
listener.onCleanUpIndices(retention);
|
listener.onCleanUpIndices(retention);
|
||||||
} catch (Throwable t) {
|
} catch (Exception e) {
|
||||||
logger.error("listener failed to clean indices", t);
|
logger.error("listener failed to clean indices", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -209,8 +209,8 @@ public class CleanerService extends AbstractLifecycleComponent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable t) {
|
public void onFailure(Exception e) {
|
||||||
logger.error("failed to clean indices", t);
|
logger.error("failed to clean indices", e);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -81,9 +81,9 @@ public class MonitoringBulkTests extends MonitoringIntegTestCase {
|
|||||||
|
|
||||||
threads[i] = new Thread(new AbstractRunnable() {
|
threads[i] = new Thread(new AbstractRunnable() {
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable t) {
|
public void onFailure(Exception e) {
|
||||||
logger.error("unexpected error in exporting thread", t);
|
logger.error("unexpected error in exporting thread", e);
|
||||||
exceptions.add(t);
|
exceptions.add(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -152,8 +152,8 @@ public class TransportMonitoringBulkActionTests extends ESTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(String source, Throwable t) {
|
public void onFailure(String source, Exception e) {
|
||||||
fail("unexpected exception: " + t);
|
fail("unexpected exception: " + e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -296,9 +296,9 @@ public class ExportersTests extends ESTestCase {
|
|||||||
logger.debug("--> exporting thread [{}] exports {} documents", threadNum, threadDocs);
|
logger.debug("--> exporting thread [{}] exports {} documents", threadNum, threadDocs);
|
||||||
threads[i] = new Thread(new AbstractRunnable() {
|
threads[i] = new Thread(new AbstractRunnable() {
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable t) {
|
public void onFailure(Exception e) {
|
||||||
logger.error("unexpected error in exporting thread", t);
|
logger.error("unexpected error in exporting thread", e);
|
||||||
exceptions.add(t);
|
exceptions.add(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -76,7 +76,7 @@ public class SecurityLifecycleService extends AbstractComponent implements Clust
|
|||||||
if (nativeUserStore.canStart(event.state(), master)) {
|
if (nativeUserStore.canStart(event.state(), master)) {
|
||||||
threadPool.generic().execute(new AbstractRunnable() {
|
threadPool.generic().execute(new AbstractRunnable() {
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable throwable) {
|
public void onFailure(Exception throwable) {
|
||||||
logger.error("failed to start native user store service", throwable);
|
logger.error("failed to start native user store service", throwable);
|
||||||
assert false : "security lifecycle services startup failed";
|
assert false : "security lifecycle services startup failed";
|
||||||
}
|
}
|
||||||
@ -95,7 +95,7 @@ public class SecurityLifecycleService extends AbstractComponent implements Clust
|
|||||||
if (nativeRolesStore.canStart(event.state(), master)) {
|
if (nativeRolesStore.canStart(event.state(), master)) {
|
||||||
threadPool.generic().execute(new AbstractRunnable() {
|
threadPool.generic().execute(new AbstractRunnable() {
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable throwable) {
|
public void onFailure(Exception throwable) {
|
||||||
logger.error("failed to start native roles store services", throwable);
|
logger.error("failed to start native roles store services", throwable);
|
||||||
assert false : "security lifecycle services startup failed";
|
assert false : "security lifecycle services startup failed";
|
||||||
}
|
}
|
||||||
@ -117,7 +117,7 @@ public class SecurityLifecycleService extends AbstractComponent implements Clust
|
|||||||
threadPool.generic().execute(new AbstractRunnable() {
|
threadPool.generic().execute(new AbstractRunnable() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable throwable) {
|
public void onFailure(Exception throwable) {
|
||||||
logger.error("failed to start index audit trail services", throwable);
|
logger.error("failed to start index audit trail services", throwable);
|
||||||
assert false : "security lifecycle services startup failed";
|
assert false : "security lifecycle services startup failed";
|
||||||
}
|
}
|
||||||
|
@ -90,8 +90,8 @@ public class SecurityTemplateService extends AbstractComponent implements Cluste
|
|||||||
if (createTemplate && templateCreationPending.compareAndSet(false, true)) {
|
if (createTemplate && templateCreationPending.compareAndSet(false, true)) {
|
||||||
threadPool.generic().execute(new AbstractRunnable() {
|
threadPool.generic().execute(new AbstractRunnable() {
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable t) {
|
public void onFailure(Exception e) {
|
||||||
logger.warn("failed to create security index template", t);
|
logger.warn("failed to create security index template", e);
|
||||||
templateCreationPending.set(false);
|
templateCreationPending.set(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,9 +44,6 @@ import java.util.function.Predicate;
|
|||||||
|
|
||||||
import static org.elasticsearch.xpack.security.support.Exceptions.authorizationError;
|
import static org.elasticsearch.xpack.security.support.Exceptions.authorizationError;
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class SecurityActionFilter extends AbstractComponent implements ActionFilter {
|
public class SecurityActionFilter extends AbstractComponent implements ActionFilter {
|
||||||
|
|
||||||
private static final Predicate<String> LICENSE_EXPIRATION_ACTION_MATCHER = HealthAndStatsPrivilege.INSTANCE.predicate();
|
private static final Predicate<String> LICENSE_EXPIRATION_ACTION_MATCHER = HealthAndStatsPrivilege.INSTANCE.predicate();
|
||||||
@ -109,8 +106,8 @@ public class SecurityActionFilter extends AbstractComponent implements ActionFil
|
|||||||
} else {
|
} else {
|
||||||
chain.proceed(task, action, request, listener);
|
chain.proceed(task, action, request, listener);
|
||||||
}
|
}
|
||||||
} catch (Throwable t) {
|
} catch (Exception e) {
|
||||||
listener.onFailure(t);
|
listener.onFailure(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -231,7 +228,7 @@ public class SecurityActionFilter extends AbstractComponent implements ActionFil
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
if (threadContext != null) {
|
if (threadContext != null) {
|
||||||
threadContext.restore();
|
threadContext.restore();
|
||||||
}
|
}
|
||||||
|
@ -44,7 +44,7 @@ public class TransportDeleteRoleAction extends HandledTransportAction<DeleteRole
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable t) {
|
public void onFailure(Exception t) {
|
||||||
listener.onFailure(t);
|
listener.onFailure(t);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -77,7 +77,7 @@ public class TransportGetRolesAction extends HandledTransportAction<GetRolesRequ
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable t) {
|
public void onFailure(Exception t) {
|
||||||
logger.error("failed to retrieve role [{}]", t, rolename);
|
logger.error("failed to retrieve role [{}]", t, rolename);
|
||||||
listener.onFailure(t);
|
listener.onFailure(t);
|
||||||
}
|
}
|
||||||
@ -95,7 +95,7 @@ public class TransportGetRolesAction extends HandledTransportAction<GetRolesRequ
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable t) {
|
public void onFailure(Exception t) {
|
||||||
logger.error("failed to retrieve role [{}]", t,
|
logger.error("failed to retrieve role [{}]", t,
|
||||||
Strings.arrayToDelimitedString(request.names(), ","));
|
Strings.arrayToDelimitedString(request.names(), ","));
|
||||||
listener.onFailure(t);
|
listener.onFailure(t);
|
||||||
|
@ -48,7 +48,7 @@ public class TransportPutRoleAction extends HandledTransportAction<PutRoleReques
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable t) {
|
public void onFailure(Exception t) {
|
||||||
listener.onFailure(t);
|
listener.onFailure(t);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -12,7 +12,6 @@ import org.elasticsearch.cluster.metadata.IndexNameExpressionResolver;
|
|||||||
import org.elasticsearch.common.inject.Inject;
|
import org.elasticsearch.common.inject.Inject;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.xpack.security.authc.esnative.NativeUsersStore;
|
import org.elasticsearch.xpack.security.authc.esnative.NativeUsersStore;
|
||||||
import org.elasticsearch.xpack.security.authc.esnative.ReservedRealm;
|
|
||||||
import org.elasticsearch.xpack.security.user.AnonymousUser;
|
import org.elasticsearch.xpack.security.user.AnonymousUser;
|
||||||
import org.elasticsearch.xpack.security.user.SystemUser;
|
import org.elasticsearch.xpack.security.user.SystemUser;
|
||||||
import org.elasticsearch.threadpool.ThreadPool;
|
import org.elasticsearch.threadpool.ThreadPool;
|
||||||
@ -50,7 +49,7 @@ public class TransportChangePasswordAction extends HandledTransportAction<Change
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
listener.onFailure(e);
|
listener.onFailure(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -54,7 +54,7 @@ public class TransportDeleteUserAction extends HandledTransportAction<DeleteUser
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
listener.onFailure(e);
|
listener.onFailure(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -78,7 +78,7 @@ public class TransportGetUsersAction extends HandledTransportAction<GetUsersRequ
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
logger.error("failed to retrieve user [{}]", e, username);
|
logger.error("failed to retrieve user [{}]", e, username);
|
||||||
listener.onFailure(e);
|
listener.onFailure(e);
|
||||||
}
|
}
|
||||||
@ -94,7 +94,7 @@ public class TransportGetUsersAction extends HandledTransportAction<GetUsersRequ
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
logger.error("failed to retrieve user [{}]", e,
|
logger.error("failed to retrieve user [{}]", e,
|
||||||
Strings.arrayToDelimitedString(request.usernames(), ","));
|
Strings.arrayToDelimitedString(request.usernames(), ","));
|
||||||
listener.onFailure(e);
|
listener.onFailure(e);
|
||||||
|
@ -59,7 +59,7 @@ public class TransportPutUserAction extends HandledTransportAction<PutUserReques
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
logger.error("failed to put user [{}]", e, request.username());
|
logger.error("failed to put user [{}]", e, request.username());
|
||||||
listener.onFailure(e);
|
listener.onFailure(e);
|
||||||
}
|
}
|
||||||
|
@ -886,7 +886,7 @@ public class IndexAuditTrail extends AbstractComponent implements AuditTrail, Cl
|
|||||||
INDEX_TEMPLATE_NAME);
|
INDEX_TEMPLATE_NAME);
|
||||||
threadPool.generic().execute(new AbstractRunnable() {
|
threadPool.generic().execute(new AbstractRunnable() {
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable throwable) {
|
public void onFailure(Exception throwable) {
|
||||||
logger.error("failed to update security audit index template [{}]", throwable, INDEX_TEMPLATE_NAME);
|
logger.error("failed to update security audit index template [{}]", throwable, INDEX_TEMPLATE_NAME);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -159,7 +159,7 @@ public class NativeUsersStore extends AbstractComponent implements ClusterStateL
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable t) {
|
public void onFailure(Exception t) {
|
||||||
if (t instanceof IndexNotFoundException) {
|
if (t instanceof IndexNotFoundException) {
|
||||||
logger.trace("failed to retrieve user [{}] since security index does not exist", username);
|
logger.trace("failed to retrieve user [{}] since security index does not exist", username);
|
||||||
// We don't invoke the onFailure listener here, instead
|
// We don't invoke the onFailure listener here, instead
|
||||||
@ -228,7 +228,7 @@ public class NativeUsersStore extends AbstractComponent implements ClusterStateL
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable t) {
|
public void onFailure(Exception t) {
|
||||||
// attempt to clear scroll response
|
// attempt to clear scroll response
|
||||||
if (lastResponse != null && lastResponse.getScrollId() != null) {
|
if (lastResponse != null && lastResponse.getScrollId() != null) {
|
||||||
clearScrollResponse(lastResponse.getScrollId());
|
clearScrollResponse(lastResponse.getScrollId());
|
||||||
@ -260,7 +260,7 @@ public class NativeUsersStore extends AbstractComponent implements ClusterStateL
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable t) {
|
public void onFailure(Exception t) {
|
||||||
if (t instanceof IndexNotFoundException) {
|
if (t instanceof IndexNotFoundException) {
|
||||||
logger.trace("failed to retrieve user [{}] since security index does not exist", t, username);
|
logger.trace("failed to retrieve user [{}] since security index does not exist", t, username);
|
||||||
} else {
|
} else {
|
||||||
@ -287,7 +287,7 @@ public class NativeUsersStore extends AbstractComponent implements ClusterStateL
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable t) {
|
public void onFailure(Exception t) {
|
||||||
if (t instanceof IndexNotFoundException) {
|
if (t instanceof IndexNotFoundException) {
|
||||||
logger.trace("could not retrieve user [{}] because security index does not exist", t, user);
|
logger.trace("could not retrieve user [{}] because security index does not exist", t, user);
|
||||||
} else {
|
} else {
|
||||||
@ -334,7 +334,7 @@ public class NativeUsersStore extends AbstractComponent implements ClusterStateL
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
Throwable cause = e;
|
Throwable cause = e;
|
||||||
if (e instanceof ElasticsearchException) {
|
if (e instanceof ElasticsearchException) {
|
||||||
cause = ExceptionsHelper.unwrapCause(e);
|
cause = ExceptionsHelper.unwrapCause(e);
|
||||||
@ -368,7 +368,7 @@ public class NativeUsersStore extends AbstractComponent implements ClusterStateL
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
listener.onFailure(e);
|
listener.onFailure(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -410,7 +410,7 @@ public class NativeUsersStore extends AbstractComponent implements ClusterStateL
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
Throwable cause = e;
|
Throwable cause = e;
|
||||||
if (e instanceof ElasticsearchException) {
|
if (e instanceof ElasticsearchException) {
|
||||||
cause = ExceptionsHelper.unwrapCause(e);
|
cause = ExceptionsHelper.unwrapCause(e);
|
||||||
@ -455,7 +455,7 @@ public class NativeUsersStore extends AbstractComponent implements ClusterStateL
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
listener.onFailure(e);
|
listener.onFailure(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -479,7 +479,7 @@ public class NativeUsersStore extends AbstractComponent implements ClusterStateL
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
listener.onFailure(e);
|
listener.onFailure(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -550,9 +550,9 @@ public class NativeUsersStore extends AbstractComponent implements ClusterStateL
|
|||||||
if (state.compareAndSet(State.STARTED, State.STOPPING)) {
|
if (state.compareAndSet(State.STARTED, State.STOPPING)) {
|
||||||
try {
|
try {
|
||||||
userPoller.stop();
|
userPoller.stop();
|
||||||
} catch (Throwable t) {
|
} catch (Exception e) {
|
||||||
state.set(State.FAILED);
|
state.set(State.FAILED);
|
||||||
throw t;
|
throw e;
|
||||||
} finally {
|
} finally {
|
||||||
state.set(State.STOPPED);
|
state.set(State.STOPPED);
|
||||||
}
|
}
|
||||||
@ -594,10 +594,10 @@ public class NativeUsersStore extends AbstractComponent implements ClusterStateL
|
|||||||
return securityIndexExists;
|
return securityIndexExists;
|
||||||
}
|
}
|
||||||
|
|
||||||
char[] reservedUserPassword(String username) throws Throwable {
|
char[] reservedUserPassword(String username) throws Exception {
|
||||||
assert started();
|
assert started();
|
||||||
final AtomicReference<char[]> passwordHash = new AtomicReference<>();
|
final AtomicReference<char[]> passwordHash = new AtomicReference<>();
|
||||||
final AtomicReference<Throwable> failure = new AtomicReference<>();
|
final AtomicReference<Exception> failure = new AtomicReference<>();
|
||||||
final CountDownLatch latch = new CountDownLatch(1);
|
final CountDownLatch latch = new CountDownLatch(1);
|
||||||
client.prepareGet(SecurityTemplateService.SECURITY_INDEX_NAME, RESERVED_USER_DOC_TYPE, username)
|
client.prepareGet(SecurityTemplateService.SECURITY_INDEX_NAME, RESERVED_USER_DOC_TYPE, username)
|
||||||
.execute(new LatchedActionListener<>(new ActionListener<GetResponse>() {
|
.execute(new LatchedActionListener<>(new ActionListener<GetResponse>() {
|
||||||
@ -615,7 +615,7 @@ public class NativeUsersStore extends AbstractComponent implements ClusterStateL
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
if (e instanceof IndexNotFoundException) {
|
if (e instanceof IndexNotFoundException) {
|
||||||
logger.trace("could not retrieve built in user [{}] password since security index does not exist", e, username);
|
logger.trace("could not retrieve built in user [{}] password since security index does not exist", e, username);
|
||||||
} else {
|
} else {
|
||||||
@ -634,7 +634,7 @@ public class NativeUsersStore extends AbstractComponent implements ClusterStateL
|
|||||||
failure.set(e);
|
failure.set(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
Throwable failureCause = failure.get();
|
Exception failureCause = failure.get();
|
||||||
if (failureCause != null) {
|
if (failureCause != null) {
|
||||||
// if there is any sort of failure we need to throw an exception to prevent the fallback to the default password...
|
// if there is any sort of failure we need to throw an exception to prevent the fallback to the default password...
|
||||||
throw failureCause;
|
throw failureCause;
|
||||||
@ -651,7 +651,7 @@ public class NativeUsersStore extends AbstractComponent implements ClusterStateL
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable t) {
|
public void onFailure(Exception t) {
|
||||||
// Not really much to do here except for warn about it...
|
// Not really much to do here except for warn about it...
|
||||||
logger.warn("failed to clear scroll [{}]", t, scrollId);
|
logger.warn("failed to clear scroll [{}]", t, scrollId);
|
||||||
}
|
}
|
||||||
@ -669,7 +669,7 @@ public class NativeUsersStore extends AbstractComponent implements ClusterStateL
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
logger.error("unable to clear realm cache for user [{}]", e, username);
|
logger.error("unable to clear realm cache for user [{}]", e, username);
|
||||||
ElasticsearchException exception = new ElasticsearchException("clearing the cache for [" + username
|
ElasticsearchException exception = new ElasticsearchException("clearing the cache for [" + username
|
||||||
+ "] failed. please clear the realm cache manually", e);
|
+ "] failed. please clear the realm cache manually", e);
|
||||||
@ -838,21 +838,22 @@ public class NativeUsersStore extends AbstractComponent implements ClusterStateL
|
|||||||
}
|
}
|
||||||
|
|
||||||
// call listeners
|
// call listeners
|
||||||
Throwable th = null;
|
RuntimeException ex = null;
|
||||||
for (ChangeListener listener : listeners) {
|
for (ChangeListener listener : listeners) {
|
||||||
try {
|
try {
|
||||||
listener.onUsersChanged(changedUsers);
|
listener.onUsersChanged(changedUsers);
|
||||||
} catch (Throwable t) {
|
} catch (Exception e) {
|
||||||
th = ExceptionsHelper.useOrSuppress(th, t);
|
if (ex == null) ex = new RuntimeException("exception while notifying listeners");
|
||||||
|
ex.addSuppressed(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ExceptionsHelper.reThrowIfNotNull(th);
|
if (ex != null) throw ex;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable t) {
|
public void onFailure(Exception e) {
|
||||||
logger.error("error occurred while checking the native users for changes", t);
|
logger.error("error occurred while checking the native users for changes", e);
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isStopped() {
|
private boolean isStopped() {
|
||||||
|
@ -131,7 +131,7 @@ public class ReservedRealm extends CachingUsernamePasswordRealm {
|
|||||||
return DEFAULT_PASSWORD_HASH;
|
return DEFAULT_PASSWORD_HASH;
|
||||||
}
|
}
|
||||||
return passwordHash;
|
return passwordHash;
|
||||||
} catch (Throwable e) {
|
} catch (Exception e) {
|
||||||
logger.error("failed to retrieve password hash for reserved user [{}]", e, username);
|
logger.error("failed to retrieve password hash for reserved user [{}]", e, username);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -37,9 +37,6 @@ import static java.util.Collections.emptyMap;
|
|||||||
import static java.util.Collections.unmodifiableMap;
|
import static java.util.Collections.unmodifiableMap;
|
||||||
import static org.elasticsearch.xpack.security.support.SecurityFiles.openAtomicMoveWriter;
|
import static org.elasticsearch.xpack.security.support.SecurityFiles.openAtomicMoveWriter;
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class FileUserPasswdStore {
|
public class FileUserPasswdStore {
|
||||||
|
|
||||||
private final ESLogger logger;
|
private final ESLogger logger;
|
||||||
@ -111,8 +108,8 @@ public class FileUserPasswdStore {
|
|||||||
static Map<String, char[]> parseFileLenient(Path path, ESLogger logger) {
|
static Map<String, char[]> parseFileLenient(Path path, ESLogger logger) {
|
||||||
try {
|
try {
|
||||||
return parseFile(path, logger);
|
return parseFile(path, logger);
|
||||||
} catch (Throwable t) {
|
} catch (Exception e) {
|
||||||
logger.error("failed to parse users file [{}]. skipping/removing all users...", t, path.toAbsolutePath());
|
logger.error("failed to parse users file [{}]. skipping/removing all users...", e, path.toAbsolutePath());
|
||||||
return emptyMap();
|
return emptyMap();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -37,9 +37,6 @@ import static java.util.Collections.emptyMap;
|
|||||||
import static java.util.Collections.unmodifiableMap;
|
import static java.util.Collections.unmodifiableMap;
|
||||||
import static org.elasticsearch.xpack.security.support.SecurityFiles.openAtomicMoveWriter;
|
import static org.elasticsearch.xpack.security.support.SecurityFiles.openAtomicMoveWriter;
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class FileUserRolesStore {
|
public class FileUserRolesStore {
|
||||||
|
|
||||||
private static final Pattern USERS_DELIM = Pattern.compile("\\s*,\\s*");
|
private static final Pattern USERS_DELIM = Pattern.compile("\\s*,\\s*");
|
||||||
@ -103,8 +100,8 @@ public class FileUserRolesStore {
|
|||||||
static Map<String, String[]> parseFileLenient(Path path, ESLogger logger) {
|
static Map<String, String[]> parseFileLenient(Path path, ESLogger logger) {
|
||||||
try {
|
try {
|
||||||
return parseFile(path, logger);
|
return parseFile(path, logger);
|
||||||
} catch (Throwable t) {
|
} catch (Exception e) {
|
||||||
logger.error("failed to parse users_roles file [{}]. skipping/removing all entries...", t, path.toAbsolutePath());
|
logger.error("failed to parse users_roles file [{}]. skipping/removing all entries...", e, path.toAbsolutePath());
|
||||||
return emptyMap();
|
return emptyMap();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -95,8 +95,8 @@ public class DnRoleMapper {
|
|||||||
public static Map<DN, Set<String>> parseFileLenient(Path path, ESLogger logger, String realmType, String realmName) {
|
public static Map<DN, Set<String>> parseFileLenient(Path path, ESLogger logger, String realmType, String realmName) {
|
||||||
try {
|
try {
|
||||||
return parseFile(path, logger, realmType, realmName);
|
return parseFile(path, logger, realmType, realmName);
|
||||||
} catch (Throwable t) {
|
} catch (Exception e) {
|
||||||
logger.error("failed to parse role mappings file [{}]. skipping/removing all mappings...", t, path.toAbsolutePath());
|
logger.error("failed to parse role mappings file [{}]. skipping/removing all mappings...", e, path.toAbsolutePath());
|
||||||
return emptyMap();
|
return emptyMap();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -46,9 +46,6 @@ import static java.util.Collections.emptySet;
|
|||||||
import static java.util.Collections.unmodifiableMap;
|
import static java.util.Collections.unmodifiableMap;
|
||||||
import static org.elasticsearch.xpack.security.Security.setting;
|
import static org.elasticsearch.xpack.security.Security.setting;
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class FileRolesStore extends AbstractLifecycleComponent implements RolesStore {
|
public class FileRolesStore extends AbstractLifecycleComponent implements RolesStore {
|
||||||
|
|
||||||
public static final Setting<String> ROLES_FILE_SETTING =
|
public static final Setting<String> ROLES_FILE_SETTING =
|
||||||
@ -288,8 +285,8 @@ public class FileRolesStore extends AbstractLifecycleComponent implements RolesS
|
|||||||
try {
|
try {
|
||||||
permissions = parseFile(file, logger, settings);
|
permissions = parseFile(file, logger, settings);
|
||||||
logger.info("updated roles (roles file [{}] changed)", file.toAbsolutePath());
|
logger.info("updated roles (roles file [{}] changed)", file.toAbsolutePath());
|
||||||
} catch (Throwable t) {
|
} catch (Exception e) {
|
||||||
logger.error("could not reload roles file [{}]. Current roles remain unmodified", t, file.toAbsolutePath());
|
logger.error("could not reload roles file [{}]. Current roles remain unmodified", e, file.toAbsolutePath());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
listener.onRefresh();
|
listener.onRefresh();
|
||||||
|
@ -231,7 +231,7 @@ public class NativeRolesStore extends AbstractComponent implements RolesStore, C
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable t) {
|
public void onFailure(Exception t) {
|
||||||
// attempt to clear the scroll request
|
// attempt to clear the scroll request
|
||||||
if (lastResponse != null && lastResponse.getScrollId() != null) {
|
if (lastResponse != null && lastResponse.getScrollId() != null) {
|
||||||
clearScollRequest(lastResponse.getScrollId());
|
clearScollRequest(lastResponse.getScrollId());
|
||||||
@ -277,7 +277,7 @@ public class NativeRolesStore extends AbstractComponent implements RolesStore, C
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
logger.error("failed to delete role from the index", e);
|
logger.error("failed to delete role from the index", e);
|
||||||
listener.onFailure(e);
|
listener.onFailure(e);
|
||||||
}
|
}
|
||||||
@ -311,7 +311,7 @@ public class NativeRolesStore extends AbstractComponent implements RolesStore, C
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
logger.error("failed to put role [{}]", e, request.name());
|
logger.error("failed to put role [{}]", e, request.name());
|
||||||
listener.onFailure(e);
|
listener.onFailure(e);
|
||||||
}
|
}
|
||||||
@ -345,7 +345,7 @@ public class NativeRolesStore extends AbstractComponent implements RolesStore, C
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable t) {
|
public void onFailure(Exception t) {
|
||||||
if (t instanceof IndexNotFoundException) {
|
if (t instanceof IndexNotFoundException) {
|
||||||
logger.trace("failed to retrieve role [{}] since security index does not exist", t, roleId);
|
logger.trace("failed to retrieve role [{}] since security index does not exist", t, roleId);
|
||||||
} else {
|
} else {
|
||||||
@ -403,7 +403,7 @@ public class NativeRolesStore extends AbstractComponent implements RolesStore, C
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable t) {
|
public void onFailure(Exception t) {
|
||||||
// Not really much to do here except for warn about it...
|
// Not really much to do here except for warn about it...
|
||||||
logger.warn("failed to clear scroll [{}] after retrieving roles", t, scrollId);
|
logger.warn("failed to clear scroll [{}] after retrieving roles", t, scrollId);
|
||||||
}
|
}
|
||||||
@ -441,7 +441,7 @@ public class NativeRolesStore extends AbstractComponent implements RolesStore, C
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
logger.error("unable to clear cache for role [{}]", e, role);
|
logger.error("unable to clear cache for role [{}]", e, role);
|
||||||
ElasticsearchException exception = new ElasticsearchException("clearing the cache for [" + role
|
ElasticsearchException exception = new ElasticsearchException("clearing the cache for [" + role
|
||||||
+ "] failed. please clear the role cache manually", e);
|
+ "] failed. please clear the role cache manually", e);
|
||||||
@ -568,8 +568,8 @@ public class NativeRolesStore extends AbstractComponent implements RolesStore, C
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable t) {
|
public void onFailure(Exception e) {
|
||||||
logger.error("error occurred while checking the native roles for changes", t);
|
logger.error("error occurred while checking the native roles for changes", e);
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isStopped() {
|
private boolean isStopped() {
|
||||||
|
@ -12,13 +12,12 @@ import org.elasticsearch.common.inject.Inject;
|
|||||||
import org.elasticsearch.common.settings.Setting;
|
import org.elasticsearch.common.settings.Setting;
|
||||||
import org.elasticsearch.common.settings.Setting.Property;
|
import org.elasticsearch.common.settings.Setting.Property;
|
||||||
import org.elasticsearch.common.settings.Settings;
|
import org.elasticsearch.common.settings.Settings;
|
||||||
import org.elasticsearch.common.settings.SettingsModule;
|
|
||||||
import org.elasticsearch.env.Environment;
|
import org.elasticsearch.env.Environment;
|
||||||
import org.elasticsearch.xpack.security.authc.support.CharArrays;
|
|
||||||
import org.elasticsearch.watcher.FileChangesListener;
|
import org.elasticsearch.watcher.FileChangesListener;
|
||||||
import org.elasticsearch.watcher.FileWatcher;
|
import org.elasticsearch.watcher.FileWatcher;
|
||||||
import org.elasticsearch.watcher.ResourceWatcherService;
|
import org.elasticsearch.watcher.ResourceWatcherService;
|
||||||
import org.elasticsearch.xpack.XPackPlugin;
|
import org.elasticsearch.xpack.XPackPlugin;
|
||||||
|
import org.elasticsearch.xpack.security.authc.support.CharArrays;
|
||||||
|
|
||||||
import javax.crypto.BadPaddingException;
|
import javax.crypto.BadPaddingException;
|
||||||
import javax.crypto.Cipher;
|
import javax.crypto.Cipher;
|
||||||
@ -28,6 +27,7 @@ import javax.crypto.Mac;
|
|||||||
import javax.crypto.SecretKey;
|
import javax.crypto.SecretKey;
|
||||||
import javax.crypto.spec.IvParameterSpec;
|
import javax.crypto.spec.IvParameterSpec;
|
||||||
import javax.crypto.spec.SecretKeySpec;
|
import javax.crypto.spec.SecretKeySpec;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
import java.nio.charset.StandardCharsets;
|
import java.nio.charset.StandardCharsets;
|
||||||
@ -45,12 +45,9 @@ import java.util.Objects;
|
|||||||
import java.util.concurrent.CopyOnWriteArrayList;
|
import java.util.concurrent.CopyOnWriteArrayList;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
import static org.elasticsearch.xpack.security.authc.support.SecuredString.constantTimeEquals;
|
|
||||||
import static org.elasticsearch.xpack.security.Security.setting;
|
import static org.elasticsearch.xpack.security.Security.setting;
|
||||||
|
import static org.elasticsearch.xpack.security.authc.support.SecuredString.constantTimeEquals;
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class InternalCryptoService extends AbstractLifecycleComponent implements CryptoService {
|
public class InternalCryptoService extends AbstractLifecycleComponent implements CryptoService {
|
||||||
|
|
||||||
public static final String KEY_ALGO = "HmacSHA512";
|
public static final String KEY_ALGO = "HmacSHA512";
|
||||||
@ -232,8 +229,8 @@ public class InternalCryptoService extends AbstractLifecycleComponent implements
|
|||||||
base64RandomKey = pieces[2];
|
base64RandomKey = pieces[2];
|
||||||
receivedSignature = pieces[3].substring(0, length);
|
receivedSignature = pieces[3].substring(0, length);
|
||||||
text = pieces[3].substring(length);
|
text = pieces[3].substring(length);
|
||||||
} catch (Throwable t) {
|
} catch (Exception e) {
|
||||||
logger.error("error occurred while parsing signed text", t);
|
logger.error("error occurred while parsing signed text", e);
|
||||||
throw new IllegalArgumentException("tampered signed text");
|
throw new IllegalArgumentException("tampered signed text");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -270,8 +267,8 @@ public class InternalCryptoService extends AbstractLifecycleComponent implements
|
|||||||
if (constantTimeEquals(sig, receivedSignature)) {
|
if (constantTimeEquals(sig, receivedSignature)) {
|
||||||
return text;
|
return text;
|
||||||
}
|
}
|
||||||
} catch (Throwable t) {
|
} catch (Exception e) {
|
||||||
logger.error("error occurred while verifying signed text", t);
|
logger.error("error occurred while verifying signed text", e);
|
||||||
throw new IllegalStateException("error while verifying the signed text");
|
throw new IllegalStateException("error while verifying the signed text");
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -543,29 +540,20 @@ public class InternalCryptoService extends AbstractLifecycleComponent implements
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void callListeners(SecretKey oldSystemKey, SecretKey oldEncryptionKey) {
|
private void callListeners(SecretKey oldSystemKey, SecretKey oldEncryptionKey) {
|
||||||
Throwable th = null;
|
RuntimeException ex = null;
|
||||||
for (Listener listener : listeners) {
|
for (Listener listener : listeners) {
|
||||||
try {
|
try {
|
||||||
listener.onKeyChange(oldSystemKey, oldEncryptionKey);
|
listener.onKeyChange(oldSystemKey, oldEncryptionKey);
|
||||||
} catch (Throwable t) {
|
} catch (Exception e) {
|
||||||
if (th == null) {
|
if (ex == null) ex = new RuntimeException("exception calling key change listeners");
|
||||||
th = t;
|
ex.addSuppressed(e);
|
||||||
} else {
|
|
||||||
th.addSuppressed(t);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// all listeners were notified now rethrow
|
// all listeners were notified now rethrow
|
||||||
if (th != null) {
|
if (ex != null) {
|
||||||
logger.error("called all key change listeners but one or more exceptions was thrown", th);
|
logger.error("called all key change listeners but one or more exceptions was thrown", ex);
|
||||||
if (th instanceof RuntimeException) {
|
throw ex;
|
||||||
throw (RuntimeException) th;
|
|
||||||
} else if (th instanceof Error) {
|
|
||||||
throw (Error) th;
|
|
||||||
} else {
|
|
||||||
throw new RuntimeException(th);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -123,8 +123,8 @@ public abstract class AbstractSSLService extends AbstractComponent {
|
|||||||
sslEngine.setEnabledCipherSuites(supportedCiphers(sslEngine.getSupportedCipherSuites(), ciphers, false));
|
sslEngine.setEnabledCipherSuites(supportedCiphers(sslEngine.getSupportedCipherSuites(), ciphers, false));
|
||||||
} catch (ElasticsearchException e) {
|
} catch (ElasticsearchException e) {
|
||||||
throw e;
|
throw e;
|
||||||
} catch (Throwable t) {
|
} catch (Exception e) {
|
||||||
throw new IllegalArgumentException("failed loading cipher suites [" + Arrays.asList(ciphers) + "]", t);
|
throw new IllegalArgumentException("failed loading cipher suites [" + Arrays.asList(ciphers) + "]", e);
|
||||||
}
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
|
@ -49,8 +49,8 @@ public class SelfReschedulingRunnable extends AbstractRunnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable t) {
|
public void onFailure(Exception e) {
|
||||||
logger.warn("failed to run scheduled task", t);
|
logger.warn("failed to run scheduled task", e);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -34,8 +34,8 @@ public class SecurityClientTransportService extends TransportService {
|
|||||||
try {
|
try {
|
||||||
clientFilter.outbound(action, request);
|
clientFilter.outbound(action, request);
|
||||||
super.sendRequest(node, action, request, options, handler);
|
super.sendRequest(node, action, request, options, handler);
|
||||||
} catch (Throwable t) {
|
} catch (Exception e) {
|
||||||
handler.handleException(new TransportException("failed sending request", t));
|
handler.handleException(new TransportException("failed sending request", e));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -38,9 +38,6 @@ import static org.elasticsearch.xpack.security.transport.netty.SecurityNettyTran
|
|||||||
import static org.elasticsearch.xpack.security.transport.netty.SecurityNettyTransport.PROFILE_CLIENT_AUTH_SETTING;
|
import static org.elasticsearch.xpack.security.transport.netty.SecurityNettyTransport.PROFILE_CLIENT_AUTH_SETTING;
|
||||||
import static org.elasticsearch.xpack.security.transport.netty.SecurityNettyTransport.SSL_SETTING;
|
import static org.elasticsearch.xpack.security.transport.netty.SecurityNettyTransport.SSL_SETTING;
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class SecurityServerTransportService extends TransportService {
|
public class SecurityServerTransportService extends TransportService {
|
||||||
|
|
||||||
public static final String SETTING_NAME = "xpack.security.type";
|
public static final String SETTING_NAME = "xpack.security.type";
|
||||||
@ -81,16 +78,16 @@ public class SecurityServerTransportService extends TransportService {
|
|||||||
try {
|
try {
|
||||||
clientFilter.outbound(action, request);
|
clientFilter.outbound(action, request);
|
||||||
super.sendRequest(node, action, request, options, new ContextRestoreResponseHandler<>(original, handler));
|
super.sendRequest(node, action, request, options, new ContextRestoreResponseHandler<>(original, handler));
|
||||||
} catch (Throwable t) {
|
} catch (Exception e) {
|
||||||
handler.handleException(new TransportException("failed sending request", t));
|
handler.handleException(new TransportException("failed sending request", e));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
clientFilter.outbound(action, request);
|
clientFilter.outbound(action, request);
|
||||||
super.sendRequest(node, action, request, options, handler);
|
super.sendRequest(node, action, request, options, handler);
|
||||||
} catch (Throwable t) {
|
} catch (Exception e) {
|
||||||
handler.handleException(new TransportException("failed sending request", t));
|
handler.handleException(new TransportException("failed sending request", e));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -194,8 +191,8 @@ public class SecurityServerTransportService extends TransportService {
|
|||||||
RequestContext context = new RequestContext(request, threadContext);
|
RequestContext context = new RequestContext(request, threadContext);
|
||||||
RequestContext.setCurrent(context);
|
RequestContext.setCurrent(context);
|
||||||
handler.messageReceived(request, channel, task);
|
handler.messageReceived(request, channel, task);
|
||||||
} catch (Throwable t) {
|
} catch (Exception e) {
|
||||||
channel.sendResponse(t);
|
channel.sendResponse(e);
|
||||||
} finally {
|
} finally {
|
||||||
RequestContext.removeCurrent();
|
RequestContext.removeCurrent();
|
||||||
}
|
}
|
||||||
|
@ -26,14 +26,12 @@ import org.jboss.netty.channel.ChannelHandlerContext;
|
|||||||
import org.jboss.netty.channel.ChannelPipeline;
|
import org.jboss.netty.channel.ChannelPipeline;
|
||||||
import org.jboss.netty.channel.ChannelPipelineFactory;
|
import org.jboss.netty.channel.ChannelPipelineFactory;
|
||||||
import org.jboss.netty.channel.ChannelStateEvent;
|
import org.jboss.netty.channel.ChannelStateEvent;
|
||||||
import org.jboss.netty.channel.ExceptionEvent;
|
|
||||||
import org.jboss.netty.channel.SimpleChannelHandler;
|
import org.jboss.netty.channel.SimpleChannelHandler;
|
||||||
import org.jboss.netty.handler.ssl.SslHandler;
|
import org.jboss.netty.handler.ssl.SslHandler;
|
||||||
|
|
||||||
import javax.net.ssl.SSLEngine;
|
import javax.net.ssl.SSLEngine;
|
||||||
import javax.net.ssl.SSLParameters;
|
import javax.net.ssl.SSLParameters;
|
||||||
import java.net.InetSocketAddress;
|
import java.net.InetSocketAddress;
|
||||||
import java.util.Collections;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import static org.elasticsearch.xpack.security.Security.featureEnabledSetting;
|
import static org.elasticsearch.xpack.security.Security.featureEnabledSetting;
|
||||||
@ -113,7 +111,7 @@ public class SecurityNettyTransport extends NettyTransport {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onException(Channel channel, Throwable e) {
|
protected void onException(Channel channel, Exception e) {
|
||||||
if (isNotSslRecordException(e)) {
|
if (isNotSslRecordException(e)) {
|
||||||
if (logger.isTraceEnabled()) {
|
if (logger.isTraceEnabled()) {
|
||||||
logger.trace("received plaintext traffic on a encrypted channel, closing connection {}", e, channel);
|
logger.trace("received plaintext traffic on a encrypted channel, closing connection {}", e, channel);
|
||||||
|
@ -146,7 +146,7 @@ public class ClearRealmsCacheTests extends SecurityIntegTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
error.set(e);
|
error.set(e);
|
||||||
latch.countDown();
|
latch.countDown();
|
||||||
}
|
}
|
||||||
|
@ -55,7 +55,7 @@ public class TransportDeleteRoleActionTests extends ESTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
throwableRef.set(e);
|
throwableRef.set(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -96,7 +96,7 @@ public class TransportDeleteRoleActionTests extends ESTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
throwableRef.set(e);
|
throwableRef.set(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -108,7 +108,7 @@ public class TransportDeleteRoleActionTests extends ESTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void testException() {
|
public void testException() {
|
||||||
final Throwable t = randomFrom(new ElasticsearchSecurityException(""), new IllegalStateException());
|
final Exception e = randomFrom(new ElasticsearchSecurityException(""), new IllegalStateException());
|
||||||
final String roleName = randomFrom("admin", "dept_a", "restricted");
|
final String roleName = randomFrom("admin", "dept_a", "restricted");
|
||||||
NativeRolesStore rolesStore = mock(NativeRolesStore.class);
|
NativeRolesStore rolesStore = mock(NativeRolesStore.class);
|
||||||
TransportDeleteRoleAction action = new TransportDeleteRoleAction(Settings.EMPTY, mock(ThreadPool.class), mock(ActionFilters.class),
|
TransportDeleteRoleAction action = new TransportDeleteRoleAction(Settings.EMPTY, mock(ThreadPool.class), mock(ActionFilters.class),
|
||||||
@ -124,7 +124,7 @@ public class TransportDeleteRoleActionTests extends ESTestCase {
|
|||||||
Object[] args = invocation.getArguments();
|
Object[] args = invocation.getArguments();
|
||||||
assert args.length == 2;
|
assert args.length == 2;
|
||||||
ActionListener<Boolean> listener = (ActionListener<Boolean>) args[1];
|
ActionListener<Boolean> listener = (ActionListener<Boolean>) args[1];
|
||||||
listener.onFailure(t);
|
listener.onFailure(e);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}).when(rolesStore).deleteRole(eq(request), any(ActionListener.class));
|
}).when(rolesStore).deleteRole(eq(request), any(ActionListener.class));
|
||||||
@ -138,14 +138,14 @@ public class TransportDeleteRoleActionTests extends ESTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
throwableRef.set(e);
|
throwableRef.set(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
assertThat(responseRef.get(), is(nullValue()));
|
assertThat(responseRef.get(), is(nullValue()));
|
||||||
assertThat(throwableRef.get(), is(notNullValue()));
|
assertThat(throwableRef.get(), is(notNullValue()));
|
||||||
assertThat(throwableRef.get(), is(sameInstance(t)));
|
assertThat(throwableRef.get(), is(sameInstance(e)));
|
||||||
verify(rolesStore, times(1)).deleteRole(eq(request), any(ActionListener.class));
|
verify(rolesStore, times(1)).deleteRole(eq(request), any(ActionListener.class));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -89,7 +89,7 @@ public class TransportGetRolesActionTests extends ESTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
throwableRef.set(e);
|
throwableRef.set(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -158,7 +158,7 @@ public class TransportGetRolesActionTests extends ESTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
throwableRef.set(e);
|
throwableRef.set(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -251,7 +251,7 @@ public class TransportGetRolesActionTests extends ESTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
throwableRef.set(e);
|
throwableRef.set(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -273,7 +273,7 @@ public class TransportGetRolesActionTests extends ESTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void testException() {
|
public void testException() {
|
||||||
final Throwable t = randomFrom(new ElasticsearchSecurityException(""), new IllegalStateException());
|
final Exception e = randomFrom(new ElasticsearchSecurityException(""), new IllegalStateException());
|
||||||
final List<RoleDescriptor> storeRoleDescriptors = randomRoleDescriptors();
|
final List<RoleDescriptor> storeRoleDescriptors = randomRoleDescriptors();
|
||||||
NativeRolesStore rolesStore = mock(NativeRolesStore.class);
|
NativeRolesStore rolesStore = mock(NativeRolesStore.class);
|
||||||
SecurityContext context = mock(SecurityContext.class);
|
SecurityContext context = mock(SecurityContext.class);
|
||||||
@ -290,7 +290,7 @@ public class TransportGetRolesActionTests extends ESTestCase {
|
|||||||
Object[] args = invocation.getArguments();
|
Object[] args = invocation.getArguments();
|
||||||
assert args.length == 2;
|
assert args.length == 2;
|
||||||
ActionListener<RoleDescriptor> listener = (ActionListener<RoleDescriptor>) args[1];
|
ActionListener<RoleDescriptor> listener = (ActionListener<RoleDescriptor>) args[1];
|
||||||
listener.onFailure(t);
|
listener.onFailure(e);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}).when(rolesStore).getRoleDescriptor(eq(request.names()[0]), any(ActionListener.class));
|
}).when(rolesStore).getRoleDescriptor(eq(request.names()[0]), any(ActionListener.class));
|
||||||
@ -301,7 +301,7 @@ public class TransportGetRolesActionTests extends ESTestCase {
|
|||||||
Object[] args = invocation.getArguments();
|
Object[] args = invocation.getArguments();
|
||||||
assert args.length == 2;
|
assert args.length == 2;
|
||||||
ActionListener<List<RoleDescriptor>> listener = (ActionListener<List<RoleDescriptor>>) args[1];
|
ActionListener<List<RoleDescriptor>> listener = (ActionListener<List<RoleDescriptor>>) args[1];
|
||||||
listener.onFailure(t);
|
listener.onFailure(e);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}).when(rolesStore).getRoleDescriptors(aryEq(request.names()), any(ActionListener.class));
|
}).when(rolesStore).getRoleDescriptors(aryEq(request.names()), any(ActionListener.class));
|
||||||
@ -316,13 +316,13 @@ public class TransportGetRolesActionTests extends ESTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
throwableRef.set(e);
|
throwableRef.set(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
assertThat(throwableRef.get(), is(notNullValue()));
|
assertThat(throwableRef.get(), is(notNullValue()));
|
||||||
assertThat(throwableRef.get(), is(t));
|
assertThat(throwableRef.get(), is(e));
|
||||||
assertThat(responseRef.get(), is(nullValue()));
|
assertThat(responseRef.get(), is(nullValue()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -56,7 +56,7 @@ public class TransportPutRoleActionTests extends ESTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
throwableRef.set(e);
|
throwableRef.set(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -97,7 +97,7 @@ public class TransportPutRoleActionTests extends ESTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
throwableRef.set(e);
|
throwableRef.set(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -109,7 +109,7 @@ public class TransportPutRoleActionTests extends ESTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void testException() {
|
public void testException() {
|
||||||
final Throwable t = randomFrom(new ElasticsearchSecurityException(""), new IllegalStateException());
|
final Exception e = randomFrom(new ElasticsearchSecurityException(""), new IllegalStateException());
|
||||||
final String roleName = randomFrom("admin", "dept_a", "restricted");
|
final String roleName = randomFrom("admin", "dept_a", "restricted");
|
||||||
NativeRolesStore rolesStore = mock(NativeRolesStore.class);
|
NativeRolesStore rolesStore = mock(NativeRolesStore.class);
|
||||||
TransportPutRoleAction action = new TransportPutRoleAction(Settings.EMPTY, mock(ThreadPool.class), mock(ActionFilters.class),
|
TransportPutRoleAction action = new TransportPutRoleAction(Settings.EMPTY, mock(ThreadPool.class), mock(ActionFilters.class),
|
||||||
@ -124,7 +124,7 @@ public class TransportPutRoleActionTests extends ESTestCase {
|
|||||||
Object[] args = invocation.getArguments();
|
Object[] args = invocation.getArguments();
|
||||||
assert args.length == 3;
|
assert args.length == 3;
|
||||||
ActionListener<Boolean> listener = (ActionListener<Boolean>) args[2];
|
ActionListener<Boolean> listener = (ActionListener<Boolean>) args[2];
|
||||||
listener.onFailure(t);
|
listener.onFailure(e);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}).when(rolesStore).putRole(eq(request), any(RoleDescriptor.class), any(ActionListener.class));
|
}).when(rolesStore).putRole(eq(request), any(RoleDescriptor.class), any(ActionListener.class));
|
||||||
@ -138,14 +138,14 @@ public class TransportPutRoleActionTests extends ESTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
throwableRef.set(e);
|
throwableRef.set(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
assertThat(responseRef.get(), is(nullValue()));
|
assertThat(responseRef.get(), is(nullValue()));
|
||||||
assertThat(throwableRef.get(), is(notNullValue()));
|
assertThat(throwableRef.get(), is(notNullValue()));
|
||||||
assertThat(throwableRef.get(), is(sameInstance(t)));
|
assertThat(throwableRef.get(), is(sameInstance(e)));
|
||||||
verify(rolesStore, times(1)).putRole(eq(request), any(RoleDescriptor.class), any(ActionListener.class));
|
verify(rolesStore, times(1)).putRole(eq(request), any(RoleDescriptor.class), any(ActionListener.class));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -47,7 +47,7 @@ public class TransportAuthenticateActionTests extends ESTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
throwableRef.set(e);
|
throwableRef.set(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -72,7 +72,7 @@ public class TransportAuthenticateActionTests extends ESTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
throwableRef.set(e);
|
throwableRef.set(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -99,7 +99,7 @@ public class TransportAuthenticateActionTests extends ESTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
throwableRef.set(e);
|
throwableRef.set(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -68,7 +68,7 @@ public class TransportChangePasswordActionTests extends ESTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
throwableRef.set(e);
|
throwableRef.set(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -97,7 +97,7 @@ public class TransportChangePasswordActionTests extends ESTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
throwableRef.set(e);
|
throwableRef.set(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -135,7 +135,7 @@ public class TransportChangePasswordActionTests extends ESTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
throwableRef.set(e);
|
throwableRef.set(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -152,13 +152,13 @@ public class TransportChangePasswordActionTests extends ESTestCase {
|
|||||||
ChangePasswordRequest request = new ChangePasswordRequest();
|
ChangePasswordRequest request = new ChangePasswordRequest();
|
||||||
request.username(user.principal());
|
request.username(user.principal());
|
||||||
request.passwordHash(Hasher.BCRYPT.hash(new SecuredString("changeme".toCharArray())));
|
request.passwordHash(Hasher.BCRYPT.hash(new SecuredString("changeme".toCharArray())));
|
||||||
final Throwable t = randomFrom(new ElasticsearchSecurityException(""), new IllegalStateException(), new RuntimeException());
|
final Exception e = randomFrom(new ElasticsearchSecurityException(""), new IllegalStateException(), new RuntimeException());
|
||||||
doAnswer(new Answer() {
|
doAnswer(new Answer() {
|
||||||
public Void answer(InvocationOnMock invocation) {
|
public Void answer(InvocationOnMock invocation) {
|
||||||
Object[] args = invocation.getArguments();
|
Object[] args = invocation.getArguments();
|
||||||
assert args.length == 2;
|
assert args.length == 2;
|
||||||
ActionListener<Void> listener = (ActionListener<Void>) args[1];
|
ActionListener<Void> listener = (ActionListener<Void>) args[1];
|
||||||
listener.onFailure(t);
|
listener.onFailure(e);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}).when(usersStore).changePassword(eq(request), any(ActionListener.class));
|
}).when(usersStore).changePassword(eq(request), any(ActionListener.class));
|
||||||
@ -174,14 +174,14 @@ public class TransportChangePasswordActionTests extends ESTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
throwableRef.set(e);
|
throwableRef.set(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
assertThat(responseRef.get(), is(nullValue()));
|
assertThat(responseRef.get(), is(nullValue()));
|
||||||
assertThat(throwableRef.get(), is(notNullValue()));
|
assertThat(throwableRef.get(), is(notNullValue()));
|
||||||
assertThat(throwableRef.get(), sameInstance(t));
|
assertThat(throwableRef.get(), sameInstance(e));
|
||||||
verify(usersStore, times(1)).changePassword(eq(request), any(ActionListener.class));
|
verify(usersStore, times(1)).changePassword(eq(request), any(ActionListener.class));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -63,7 +63,7 @@ public class TransportDeleteUserActionTests extends ESTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
throwableRef.set(e);
|
throwableRef.set(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -90,7 +90,7 @@ public class TransportDeleteUserActionTests extends ESTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
throwableRef.set(e);
|
throwableRef.set(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -118,7 +118,7 @@ public class TransportDeleteUserActionTests extends ESTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
throwableRef.set(e);
|
throwableRef.set(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -156,7 +156,7 @@ public class TransportDeleteUserActionTests extends ESTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
throwableRef.set(e);
|
throwableRef.set(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -168,7 +168,7 @@ public class TransportDeleteUserActionTests extends ESTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void testException() {
|
public void testException() {
|
||||||
final Throwable t = randomFrom(new ElasticsearchSecurityException(""), new IllegalStateException(), new RuntimeException());
|
final Exception e = randomFrom(new ElasticsearchSecurityException(""), new IllegalStateException(), new RuntimeException());
|
||||||
final User user = new User("joe");
|
final User user = new User("joe");
|
||||||
NativeUsersStore usersStore = mock(NativeUsersStore.class);
|
NativeUsersStore usersStore = mock(NativeUsersStore.class);
|
||||||
TransportDeleteUserAction action = new TransportDeleteUserAction(Settings.EMPTY, mock(ThreadPool.class),
|
TransportDeleteUserAction action = new TransportDeleteUserAction(Settings.EMPTY, mock(ThreadPool.class),
|
||||||
@ -180,7 +180,7 @@ public class TransportDeleteUserActionTests extends ESTestCase {
|
|||||||
Object[] args = invocation.getArguments();
|
Object[] args = invocation.getArguments();
|
||||||
assert args.length == 2;
|
assert args.length == 2;
|
||||||
ActionListener<Boolean> listener = (ActionListener<Boolean>) args[1];
|
ActionListener<Boolean> listener = (ActionListener<Boolean>) args[1];
|
||||||
listener.onFailure(t);
|
listener.onFailure(e);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}).when(usersStore).deleteUser(eq(request), any(ActionListener.class));
|
}).when(usersStore).deleteUser(eq(request), any(ActionListener.class));
|
||||||
@ -194,14 +194,14 @@ public class TransportDeleteUserActionTests extends ESTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
throwableRef.set(e);
|
throwableRef.set(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
assertThat(responseRef.get(), is(nullValue()));
|
assertThat(responseRef.get(), is(nullValue()));
|
||||||
assertThat(throwableRef.get(), is(notNullValue()));
|
assertThat(throwableRef.get(), is(notNullValue()));
|
||||||
assertThat(throwableRef.get(), sameInstance(t));
|
assertThat(throwableRef.get(), sameInstance(e));
|
||||||
verify(usersStore, times(1)).deleteUser(eq(request), any(ActionListener.class));
|
verify(usersStore, times(1)).deleteUser(eq(request), any(ActionListener.class));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -84,7 +84,7 @@ public class TransportGetUsersActionTests extends ESTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
throwableRef.set(e);
|
throwableRef.set(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -116,7 +116,7 @@ public class TransportGetUsersActionTests extends ESTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
throwableRef.set(e);
|
throwableRef.set(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -147,7 +147,7 @@ public class TransportGetUsersActionTests extends ESTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
throwableRef.set(e);
|
throwableRef.set(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -185,7 +185,7 @@ public class TransportGetUsersActionTests extends ESTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
throwableRef.set(e);
|
throwableRef.set(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -242,7 +242,7 @@ public class TransportGetUsersActionTests extends ESTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
throwableRef.set(e);
|
throwableRef.set(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -261,7 +261,7 @@ public class TransportGetUsersActionTests extends ESTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void testException() {
|
public void testException() {
|
||||||
final Throwable t = randomFrom(new ElasticsearchSecurityException(""), new IllegalStateException(), new ValidationException());
|
final Exception e = randomFrom(new ElasticsearchSecurityException(""), new IllegalStateException(), new ValidationException());
|
||||||
final List<User> storeUsers =
|
final List<User> storeUsers =
|
||||||
randomFrom(Collections.singletonList(new User("joe")), Arrays.asList(new User("jane"), new User("fred")), randomUsers());
|
randomFrom(Collections.singletonList(new User("joe")), Arrays.asList(new User("jane"), new User("fred")), randomUsers());
|
||||||
final String[] storeUsernames = storeUsers.stream().map(User::principal).collect(Collectors.toList()).toArray(Strings.EMPTY_ARRAY);
|
final String[] storeUsernames = storeUsers.stream().map(User::principal).collect(Collectors.toList()).toArray(Strings.EMPTY_ARRAY);
|
||||||
@ -277,7 +277,7 @@ public class TransportGetUsersActionTests extends ESTestCase {
|
|||||||
Object[] args = invocation.getArguments();
|
Object[] args = invocation.getArguments();
|
||||||
assert args.length == 2;
|
assert args.length == 2;
|
||||||
ActionListener<List<User>> listener = (ActionListener<List<User>>) args[1];
|
ActionListener<List<User>> listener = (ActionListener<List<User>>) args[1];
|
||||||
listener.onFailure(t);
|
listener.onFailure(e);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}).when(usersStore).getUsers(aryEq(storeUsernames), any(ActionListener.class));
|
}).when(usersStore).getUsers(aryEq(storeUsernames), any(ActionListener.class));
|
||||||
@ -288,7 +288,7 @@ public class TransportGetUsersActionTests extends ESTestCase {
|
|||||||
Object[] args = invocation.getArguments();
|
Object[] args = invocation.getArguments();
|
||||||
assert args.length == 2;
|
assert args.length == 2;
|
||||||
ActionListener<User> listener = (ActionListener<User>) args[1];
|
ActionListener<User> listener = (ActionListener<User>) args[1];
|
||||||
listener.onFailure(t);
|
listener.onFailure(e);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}).when(usersStore).getUser(eq(storeUsernames[0]), any(ActionListener.class));
|
}).when(usersStore).getUser(eq(storeUsernames[0]), any(ActionListener.class));
|
||||||
@ -303,13 +303,13 @@ public class TransportGetUsersActionTests extends ESTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
throwableRef.set(e);
|
throwableRef.set(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
assertThat(throwableRef.get(), is(notNullValue()));
|
assertThat(throwableRef.get(), is(notNullValue()));
|
||||||
assertThat(throwableRef.get(), is(sameInstance(t)));
|
assertThat(throwableRef.get(), is(sameInstance(e)));
|
||||||
assertThat(responseRef.get(), is(nullValue()));
|
assertThat(responseRef.get(), is(nullValue()));
|
||||||
if (request.usernames().length == 1) {
|
if (request.usernames().length == 1) {
|
||||||
verify(usersStore, times(1)).getUser(eq(request.usernames()[0]), any(ActionListener.class));
|
verify(usersStore, times(1)).getUser(eq(request.usernames()[0]), any(ActionListener.class));
|
||||||
|
@ -67,7 +67,7 @@ public class TransportPutUserActionTests extends ESTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
throwableRef.set(e);
|
throwableRef.set(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -95,7 +95,7 @@ public class TransportPutUserActionTests extends ESTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
throwableRef.set(e);
|
throwableRef.set(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -124,7 +124,7 @@ public class TransportPutUserActionTests extends ESTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
throwableRef.set(e);
|
throwableRef.set(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -167,7 +167,7 @@ public class TransportPutUserActionTests extends ESTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
throwableRef.set(e);
|
throwableRef.set(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -179,7 +179,7 @@ public class TransportPutUserActionTests extends ESTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void testException() {
|
public void testException() {
|
||||||
final Throwable t = randomFrom(new ElasticsearchSecurityException(""), new IllegalStateException(), new ValidationException());
|
final Exception e = randomFrom(new ElasticsearchSecurityException(""), new IllegalStateException(), new ValidationException());
|
||||||
final User user = new User("joe");
|
final User user = new User("joe");
|
||||||
NativeUsersStore usersStore = mock(NativeUsersStore.class);
|
NativeUsersStore usersStore = mock(NativeUsersStore.class);
|
||||||
TransportPutUserAction action = new TransportPutUserAction(Settings.EMPTY, mock(ThreadPool.class),
|
TransportPutUserAction action = new TransportPutUserAction(Settings.EMPTY, mock(ThreadPool.class),
|
||||||
@ -192,7 +192,7 @@ public class TransportPutUserActionTests extends ESTestCase {
|
|||||||
Object[] args = invocation.getArguments();
|
Object[] args = invocation.getArguments();
|
||||||
assert args.length == 2;
|
assert args.length == 2;
|
||||||
ActionListener<Boolean> listener = (ActionListener<Boolean>) args[1];
|
ActionListener<Boolean> listener = (ActionListener<Boolean>) args[1];
|
||||||
listener.onFailure(t);
|
listener.onFailure(e);
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}).when(usersStore).putUser(eq(request), any(ActionListener.class));
|
}).when(usersStore).putUser(eq(request), any(ActionListener.class));
|
||||||
@ -206,14 +206,14 @@ public class TransportPutUserActionTests extends ESTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
throwableRef.set(e);
|
throwableRef.set(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
assertThat(responseRef.get(), is(nullValue()));
|
assertThat(responseRef.get(), is(nullValue()));
|
||||||
assertThat(throwableRef.get(), is(notNullValue()));
|
assertThat(throwableRef.get(), is(notNullValue()));
|
||||||
assertThat(throwableRef.get(), sameInstance(t));
|
assertThat(throwableRef.get(), sameInstance(e));
|
||||||
verify(usersStore, times(1)).putUser(eq(request), any(ActionListener.class));
|
verify(usersStore, times(1)).putUser(eq(request), any(ActionListener.class));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,6 @@
|
|||||||
*/
|
*/
|
||||||
package org.elasticsearch.xpack.security.audit;
|
package org.elasticsearch.xpack.security.audit;
|
||||||
|
|
||||||
import org.elasticsearch.Version;
|
|
||||||
import org.elasticsearch.common.inject.Guice;
|
import org.elasticsearch.common.inject.Guice;
|
||||||
import org.elasticsearch.common.inject.Injector;
|
import org.elasticsearch.common.inject.Injector;
|
||||||
import org.elasticsearch.common.io.stream.NamedWriteableRegistry;
|
import org.elasticsearch.common.io.stream.NamedWriteableRegistry;
|
||||||
@ -15,20 +14,17 @@ import org.elasticsearch.common.settings.Settings;
|
|||||||
import org.elasticsearch.common.settings.SettingsModule;
|
import org.elasticsearch.common.settings.SettingsModule;
|
||||||
import org.elasticsearch.indices.breaker.CircuitBreakerService;
|
import org.elasticsearch.indices.breaker.CircuitBreakerService;
|
||||||
import org.elasticsearch.node.Node;
|
import org.elasticsearch.node.Node;
|
||||||
import org.elasticsearch.xpack.security.audit.logfile.LoggingAuditTrail;
|
|
||||||
import org.elasticsearch.test.ESTestCase;
|
import org.elasticsearch.test.ESTestCase;
|
||||||
import org.elasticsearch.threadpool.TestThreadPool;
|
import org.elasticsearch.threadpool.TestThreadPool;
|
||||||
import org.elasticsearch.threadpool.ThreadPool;
|
import org.elasticsearch.threadpool.ThreadPool;
|
||||||
import org.elasticsearch.transport.Transport;
|
import org.elasticsearch.transport.Transport;
|
||||||
import org.elasticsearch.transport.local.LocalTransport;
|
import org.elasticsearch.transport.local.LocalTransport;
|
||||||
|
import org.elasticsearch.xpack.security.audit.logfile.LoggingAuditTrail;
|
||||||
|
|
||||||
import static org.hamcrest.Matchers.instanceOf;
|
import static org.hamcrest.Matchers.instanceOf;
|
||||||
import static org.hamcrest.Matchers.is;
|
import static org.hamcrest.Matchers.is;
|
||||||
import static org.hamcrest.Matchers.notNullValue;
|
import static org.hamcrest.Matchers.notNullValue;
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class AuditTrailModuleTests extends ESTestCase {
|
public class AuditTrailModuleTests extends ESTestCase {
|
||||||
public void testEnabled() throws Exception {
|
public void testEnabled() throws Exception {
|
||||||
Settings settings = Settings.builder()
|
Settings settings = Settings.builder()
|
||||||
@ -93,7 +89,7 @@ public class AuditTrailModuleTests extends ESTestCase {
|
|||||||
try {
|
try {
|
||||||
Guice.createInjector(settingsModule, new AuditTrailModule(settings));
|
Guice.createInjector(settingsModule, new AuditTrailModule(settings));
|
||||||
fail("Expect initialization to fail when an unknown audit trail output is configured");
|
fail("Expect initialization to fail when an unknown audit trail output is configured");
|
||||||
} catch (Throwable t) {
|
} catch (Exception e) {
|
||||||
// expected
|
// expected
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -49,9 +49,6 @@ import static org.mockito.Mockito.spy;
|
|||||||
import static org.mockito.Mockito.times;
|
import static org.mockito.Mockito.times;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class FileUserRolesStoreTests extends ESTestCase {
|
public class FileUserRolesStoreTests extends ESTestCase {
|
||||||
private Settings settings;
|
private Settings settings;
|
||||||
private Environment env;
|
private Environment env;
|
||||||
@ -217,8 +214,8 @@ public class FileUserRolesStoreTests extends ESTestCase {
|
|||||||
try {
|
try {
|
||||||
FileUserRolesStore.parseFile(file, logger);
|
FileUserRolesStore.parseFile(file, logger);
|
||||||
fail("expected a parse failure");
|
fail("expected a parse failure");
|
||||||
} catch (Throwable t) {
|
} catch (Exception e) {
|
||||||
this.logger.info("expected", t);
|
this.logger.info("expected", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -56,9 +56,9 @@ public class LdapSessionFactoryTests extends LdapTestCase {
|
|||||||
ldapServer.setProcessingDelayMillis(500L);
|
ldapServer.setProcessingDelayMillis(500L);
|
||||||
try (LdapSession session = sessionFactory.session(user, userPass)) {
|
try (LdapSession session = sessionFactory.session(user, userPass)) {
|
||||||
fail("expected connection timeout error here");
|
fail("expected connection timeout error here");
|
||||||
} catch (Throwable t) {
|
} catch (Exception e) {
|
||||||
assertThat(t, instanceOf(ElasticsearchSecurityException.class));
|
assertThat(e, instanceOf(ElasticsearchSecurityException.class));
|
||||||
assertThat(t.getCause().getMessage(), containsString("A client-side timeout was encountered while waiting "));
|
assertThat(e.getCause().getMessage(), containsString("A client-side timeout was encountered while waiting "));
|
||||||
} finally {
|
} finally {
|
||||||
ldapServer.setProcessingDelayMillis(0L);
|
ldapServer.setProcessingDelayMillis(0L);
|
||||||
}
|
}
|
||||||
@ -85,11 +85,11 @@ public class LdapSessionFactoryTests extends LdapTestCase {
|
|||||||
long start = System.currentTimeMillis();
|
long start = System.currentTimeMillis();
|
||||||
try (LdapSession session = sessionFactory.session(user, userPass)) {
|
try (LdapSession session = sessionFactory.session(user, userPass)) {
|
||||||
fail("expected connection timeout error here");
|
fail("expected connection timeout error here");
|
||||||
} catch (Throwable t) {
|
} catch (Exception e) {
|
||||||
long time = System.currentTimeMillis() - start;
|
long time = System.currentTimeMillis() - start;
|
||||||
assertThat(time, lessThan(10000L));
|
assertThat(time, lessThan(10000L));
|
||||||
assertThat(t, instanceOf(IOException.class));
|
assertThat(e, instanceOf(IOException.class));
|
||||||
assertThat(t.getCause().getCause().getMessage(), containsString("within the configured timeout of"));
|
assertThat(e.getCause().getCause().getMessage(), containsString("within the configured timeout of"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -55,7 +55,7 @@ public class SelfReschedulingRunnableTests extends ESTestCase {
|
|||||||
final ThreadPool threadPool = mock(ThreadPool.class);
|
final ThreadPool threadPool = mock(ThreadPool.class);
|
||||||
final AbstractRunnable runnable = new AbstractRunnable() {
|
final AbstractRunnable runnable = new AbstractRunnable() {
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable throwable) {
|
public void onFailure(Exception throwable) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -88,7 +88,7 @@ public class SelfReschedulingRunnableTests extends ESTestCase {
|
|||||||
final CountDownLatch pauseLatch = new CountDownLatch(1);
|
final CountDownLatch pauseLatch = new CountDownLatch(1);
|
||||||
final AbstractRunnable runnable = new AbstractRunnable() {
|
final AbstractRunnable runnable = new AbstractRunnable() {
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable throwable) {
|
public void onFailure(Exception throwable) {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -195,7 +195,7 @@ public class SelfReschedulingRunnableTests extends ESTestCase {
|
|||||||
final AtomicInteger runCounter = new AtomicInteger(0);
|
final AtomicInteger runCounter = new AtomicInteger(0);
|
||||||
final AbstractRunnable runnable = new AbstractRunnable() {
|
final AbstractRunnable runnable = new AbstractRunnable() {
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable throwable) {
|
public void onFailure(Exception throwable) {
|
||||||
failureCounter.incrementAndGet();
|
failureCounter.incrementAndGet();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -238,7 +238,7 @@ public class SelfReschedulingRunnableTests extends ESTestCase {
|
|||||||
final CountDownLatch stopCalledLatch = new CountDownLatch(1);
|
final CountDownLatch stopCalledLatch = new CountDownLatch(1);
|
||||||
final AbstractRunnable runnable = new AbstractRunnable() {
|
final AbstractRunnable runnable = new AbstractRunnable() {
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable throwable) {
|
public void onFailure(Exception throwable) {
|
||||||
throw new IllegalStateException("we should never be in this method!");
|
throw new IllegalStateException("we should never be in this method!");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -192,13 +192,13 @@ public class HandshakeWaitingHandlerTests extends ESTestCase {
|
|||||||
try {
|
try {
|
||||||
serverBootstrap.bind(new InetSocketAddress(InetAddress.getLoopbackAddress(), randomPort));
|
serverBootstrap.bind(new InetSocketAddress(InetAddress.getLoopbackAddress(), randomPort));
|
||||||
break;
|
break;
|
||||||
} catch (Throwable t) {
|
} catch (Exception e) {
|
||||||
if (t.getCause() instanceof BindException) {
|
if (e.getCause() instanceof BindException) {
|
||||||
logger.error("Tried to bind to port [{}], going to retry", randomPort);
|
logger.error("Tried to bind to port [{}], going to retry", randomPort);
|
||||||
randomPort = randomIntBetween(49000, 65500);
|
randomPort = randomIntBetween(49000, 65500);
|
||||||
}
|
}
|
||||||
if (tries >= maxTries) {
|
if (tries >= maxTries) {
|
||||||
throw new RuntimeException("Failed to start server bootstrap [" + tries + "] times, stopping", t);
|
throw new RuntimeException("Failed to start server bootstrap [" + tries + "] times, stopping", e);
|
||||||
}
|
}
|
||||||
tries++;
|
tries++;
|
||||||
}
|
}
|
||||||
|
@ -28,9 +28,6 @@ import java.util.Arrays;
|
|||||||
|
|
||||||
import static org.elasticsearch.common.io.FileSystemUtils.isAccessibleDirectory;
|
import static org.elasticsearch.common.io.FileSystemUtils.isAccessibleDirectory;
|
||||||
|
|
||||||
/**
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class XPackExtensionsService {
|
public class XPackExtensionsService {
|
||||||
private final Settings settings;
|
private final Settings settings;
|
||||||
|
|
||||||
@ -186,7 +183,7 @@ public class XPackExtensionsService {
|
|||||||
"Settings instance");
|
"Settings instance");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} catch (Throwable e) {
|
} catch (Exception e) {
|
||||||
throw new ElasticsearchException("Failed to load extension class [" + extClass.getName() + "]", e);
|
throw new ElasticsearchException("Failed to load extension class [" + extClass.getName() + "]", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -105,7 +105,7 @@ public class TransportXPackInfoActionTests extends ESTestCase {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
error.set(e);
|
error.set(e);
|
||||||
latch.countDown();
|
latch.countDown();
|
||||||
}
|
}
|
||||||
|
@ -166,7 +166,7 @@ public class WatcherLifeCycleService extends AbstractComponent implements Cluste
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable throwable) {
|
public void onFailure(Exception throwable) {
|
||||||
logger.warn("updating manually stopped isn't acked", throwable);
|
logger.warn("updating manually stopped isn't acked", throwable);
|
||||||
latch.countDown();
|
latch.countDown();
|
||||||
}
|
}
|
||||||
@ -199,7 +199,7 @@ public class WatcherLifeCycleService extends AbstractComponent implements Cluste
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(String source, Throwable throwable) {
|
public void onFailure(String source, Exception throwable) {
|
||||||
latch.countDown();
|
latch.countDown();
|
||||||
logger.warn("couldn't update watcher metadata [{}]", throwable, source);
|
logger.warn("couldn't update watcher metadata [{}]", throwable, source);
|
||||||
}
|
}
|
||||||
|
@ -206,7 +206,7 @@ public class ExecutionService extends AbstractComponent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
Throwable cause = ExceptionsHelper.unwrapCause(e);
|
Throwable cause = ExceptionsHelper.unwrapCause(e);
|
||||||
if (cause instanceof EsRejectedExecutionException) {
|
if (cause instanceof EsRejectedExecutionException) {
|
||||||
logger.debug("failed to store watch records due to overloaded threadpool [{}]", ExceptionsHelper.detailedMessage(e));
|
logger.debug("failed to store watch records due to overloaded threadpool [{}]", ExceptionsHelper.detailedMessage(e));
|
||||||
|
@ -125,7 +125,7 @@ public class TriggeredWatchStore extends AbstractComponent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
listener.onFailure(e);
|
listener.onFailure(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -149,7 +149,7 @@ public class TriggeredWatchStore extends AbstractComponent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
listener.onFailure(e);
|
listener.onFailure(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -183,7 +183,7 @@ public class TriggeredWatchStore extends AbstractComponent {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onFailure(Throwable e) {
|
public void onFailure(Exception e) {
|
||||||
listener.onFailure(e);
|
listener.onFailure(e);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -42,8 +42,8 @@ public final class SearchRequestEquivalence {
|
|||||||
r2.writeTo(output1);
|
r2.writeTo(output1);
|
||||||
byte[] bytes2 = BytesReference.toBytes(output1.bytes());
|
byte[] bytes2 = BytesReference.toBytes(output1.bytes());
|
||||||
return Arrays.equals(bytes1, bytes2);
|
return Arrays.equals(bytes1, bytes2);
|
||||||
} catch (Throwable t) {
|
} catch (Exception e) {
|
||||||
throw illegalState("could not compare search requests", t);
|
throw illegalState("could not compare search requests", e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -85,9 +85,9 @@ public class TransportGetWatchAction extends WatcherTransportAction<GetWatchRequ
|
|||||||
listener.onFailure(e);
|
listener.onFailure(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch (Throwable t) {
|
} catch (Exception e) {
|
||||||
logger.error("failed to get watch [{}]", t, request.getId());
|
logger.error("failed to get watch [{}]", e, request.getId());
|
||||||
throw t;
|
throw e;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -332,8 +332,8 @@ public class ManualExecutionTests extends AbstractWatcherIntegrationTestCase {
|
|||||||
WatchRecord record = executionService.execute(ctxBuilder.build());
|
WatchRecord record = executionService.execute(ctxBuilder.build());
|
||||||
assertThat(record, notNullValue());
|
assertThat(record, notNullValue());
|
||||||
assertThat(record.state(), is(ExecutionState.NOT_EXECUTED_WATCH_MISSING));
|
assertThat(record.state(), is(ExecutionState.NOT_EXECUTED_WATCH_MISSING));
|
||||||
} catch (Throwable t) {
|
} catch (Exception e) {
|
||||||
throw new ElasticsearchException("Failure mode execution of [{}] failed in an unexpected way", t, watchId);
|
throw new ElasticsearchException("Failure mode execution of [{}] failed in an unexpected way", e, watchId);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user