Skip to content

Commit 7ff4730

Browse files
authored
Backport of #38311: Move TokenService to seqno powered cas
1 parent a84744a commit 7ff4730

File tree

2 files changed

+19
-5
lines changed

2 files changed

+19
-5
lines changed

server/src/main/java/org/elasticsearch/action/search/SearchRequestBuilder.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,15 @@ public SearchRequestBuilder setVersion(boolean version) {
223223
return this;
224224
}
225225

226+
/**
227+
* Should each {@link org.elasticsearch.search.SearchHit} be returned with the
228+
* sequence number and primary term of the last modification of the document.
229+
*/
230+
public SearchRequestBuilder seqNoAndPrimaryTerm(boolean seqNoAndPrimaryTerm) {
231+
sourceBuilder().seqNoAndPrimaryTerm(seqNoAndPrimaryTerm);
232+
return this;
233+
}
234+
226235
/**
227236
* Sets the boost a specific index will receive when the query is executed against it.
228237
*

x-pack/plugin/security/src/main/java/org/elasticsearch/xpack/security/authc/TokenService.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@
3535
import org.elasticsearch.action.support.WriteRequest.RefreshPolicy;
3636
import org.elasticsearch.action.support.master.AcknowledgedRequest;
3737
import org.elasticsearch.action.update.UpdateRequest;
38+
import org.elasticsearch.action.update.UpdateRequestBuilder;
3839
import org.elasticsearch.action.update.UpdateResponse;
3940
import org.elasticsearch.client.Client;
4041
import org.elasticsearch.cluster.AckedClusterStateUpdateTask;
@@ -863,13 +864,17 @@ private void innerRefresh(String tokenDocId, Authentication userAuth, ActionList
863864
try (StreamInput in = StreamInput.wrap(Base64.getDecoder().decode(authString))) {
864865
in.setVersion(authVersion);
865866
Authentication authentication = new Authentication(in);
866-
UpdateRequest updateRequest =
867+
UpdateRequestBuilder updateRequest =
867868
client.prepareUpdate(SecurityIndexManager.SECURITY_INDEX_NAME, TYPE, tokenDocId)
868-
.setVersion(response.getVersion())
869869
.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(),
873878
ActionListener.<UpdateResponse>wrap(
874879
updateResponse -> createUserToken(authentication, userAuth, listener, metadata, true),
875880
e -> {

0 commit comments

Comments
 (0)