|
35 | 35 | import org.elasticsearch.action.support.WriteRequest.RefreshPolicy;
|
36 | 36 | import org.elasticsearch.action.support.master.AcknowledgedRequest;
|
37 | 37 | import org.elasticsearch.action.update.UpdateRequest;
|
| 38 | +import org.elasticsearch.action.update.UpdateRequestBuilder; |
38 | 39 | import org.elasticsearch.action.update.UpdateResponse;
|
39 | 40 | import org.elasticsearch.client.Client;
|
40 | 41 | import org.elasticsearch.cluster.AckedClusterStateUpdateTask;
|
@@ -863,13 +864,17 @@ private void innerRefresh(String tokenDocId, Authentication userAuth, ActionList
|
863 | 864 | try (StreamInput in = StreamInput.wrap(Base64.getDecoder().decode(authString))) {
|
864 | 865 | in.setVersion(authVersion);
|
865 | 866 | Authentication authentication = new Authentication(in);
|
866 |
| - UpdateRequest updateRequest = |
| 867 | + UpdateRequestBuilder updateRequest = |
867 | 868 | client.prepareUpdate(SecurityIndexManager.SECURITY_INDEX_NAME, TYPE, tokenDocId)
|
868 |
| - .setVersion(response.getVersion()) |
869 | 869 | .setDoc("refresh_token", Collections.singletonMap("refreshed", true))
|
870 |
| - .setRefreshPolicy(RefreshPolicy.WAIT_UNTIL) |
871 |
| - .request(); |
872 |
| - executeAsyncWithOrigin(client.threadPool().getThreadContext(), SECURITY_ORIGIN, updateRequest, |
| 870 | + .setRefreshPolicy(RefreshPolicy.WAIT_UNTIL); |
| 871 | + if (clusterService.state().nodes().getMinNodeVersion().onOrAfter(Version.V_6_7_0)) { |
| 872 | + updateRequest.setIfSeqNo(response.getSeqNo()); |
| 873 | + updateRequest.setIfPrimaryTerm(response.getPrimaryTerm()); |
| 874 | + } else { |
| 875 | + updateRequest.setVersion(response.getVersion()); |
| 876 | + } |
| 877 | + executeAsyncWithOrigin(client.threadPool().getThreadContext(), SECURITY_ORIGIN, updateRequest.request(), |
873 | 878 | ActionListener.<UpdateResponse>wrap(
|
874 | 879 | updateResponse -> createUserToken(authentication, userAuth, listener, metadata, true),
|
875 | 880 | e -> {
|
|
0 commit comments