@@ -114,9 +114,12 @@ public void accept(Set<String> names, ActionListener<RoleRetrievalResult> listen
114
114
* Retrieve a list of roles, if rolesToGet is null or empty, fetch all roles
115
115
*/
116
116
public void getRoleDescriptors (Set <String > names , final ActionListener <RoleRetrievalResult > listener ) {
117
- if (securityIndex .indexExists () == false ) {
117
+ final SecurityIndexManager frozenSecurityIndex = this .securityIndex .freeze ();
118
+ if (frozenSecurityIndex .indexExists () == false ) {
118
119
// TODO remove this short circuiting and fix tests that fail without this!
119
120
listener .onResponse (RoleRetrievalResult .success (Collections .emptySet ()));
121
+ } else if (frozenSecurityIndex .isAvailable () == false ) {
122
+ listener .onResponse (RoleRetrievalResult .failure (frozenSecurityIndex .getUnavailableReason ()));
120
123
} else if (names == null || names .isEmpty ()) {
121
124
securityIndex .checkIndexVersionThenExecute (listener ::onFailure , () -> {
122
125
QueryBuilder query = QueryBuilders .termQuery (RoleDescriptor .Fields .TYPE .getPreferredName (), ROLE_TYPE );
@@ -311,17 +314,20 @@ public String toString() {
311
314
}
312
315
313
316
private void getRoleDescriptor (final String roleId , ActionListener <RoleRetrievalResult > resultListener ) {
314
- if (securityIndex .indexExists () == false ) {
317
+ final SecurityIndexManager frozenSecurityIndex = this .securityIndex .freeze ();
318
+ if (frozenSecurityIndex .indexExists () == false ) {
315
319
// TODO remove this short circuiting and fix tests that fail without this!
316
320
resultListener .onResponse (RoleRetrievalResult .success (Collections .emptySet ()));
321
+ } else if (frozenSecurityIndex .isAvailable () == false ) {
322
+ resultListener .onResponse (RoleRetrievalResult .failure (frozenSecurityIndex .getUnavailableReason ()));
317
323
} else {
318
- securityIndex .prepareIndexIfNeededThenExecute (e -> resultListener .onResponse (RoleRetrievalResult .failure (e )), () ->
319
- executeGetRoleRequest (roleId , new ActionListener <GetResponse >() {
324
+ securityIndex .checkIndexVersionThenExecute (e -> resultListener .onResponse (RoleRetrievalResult .failure (e )),
325
+ () -> executeGetRoleRequest (roleId , new ActionListener <GetResponse >() {
320
326
@ Override
321
327
public void onResponse (GetResponse response ) {
322
328
final RoleDescriptor descriptor = transformRole (response );
323
- resultListener .onResponse (RoleRetrievalResult . success (
324
- descriptor == null ? Collections .emptySet () : Collections .singleton (descriptor )));
329
+ resultListener .onResponse (RoleRetrievalResult
330
+ . success ( descriptor == null ? Collections .emptySet () : Collections .singleton (descriptor )));
325
331
}
326
332
327
333
@ Override
0 commit comments