pzampino commented on a change in pull request #337:
URL: https://github.com/apache/knox/pull/337#discussion_r433855809



##########
File path: 
gateway-server/src/main/java/org/apache/knox/gateway/services/token/impl/DefaultTokenStateService.java
##########
@@ -237,12 +249,37 @@ protected boolean isUnknown(final String token) {
 
   protected void updateExpiration(final String tokenId, long expiration) {
     synchronized (tokenExpirations) {
-      tokenExpirations.replace(tokenId, expiration);
+      if (tokenExpirations.containsKey(tokenId)) {
+        tokenExpirations.replace(tokenId, expiration);
+      } else {
+        tokenExpirations.put(tokenId, expiration);
+      }
     }
   }
 
   protected void removeToken(final String tokenId) throws 
UnknownTokenException {
     validateToken(tokenId);
+    removeTokenState(tokenId);
+  }
+
+  /**
+   * Bulk removal of the specified tokens.
+   *
+   * @param tokenIds The unique identifiers of the tokens whose state should 
be removed.
+   *
+   * @throws UnknownTokenException
+   */
+  protected void removeTokens(final Set<String> tokenIds) throws 
UnknownTokenException {
+    // Duplicating the logic from removeToken(String) here because this method 
is supposed to be an optimization for
+    // sub-classes that access an external store, for which bulk token removal 
performs better than individual removal.
+    // Sub-classes will have implemented removeToken(String), and calling that 
here will undo any optimizations provided
+    // by the sub-class's implementation of this method.
+    for (String tokenId : tokenIds) {
+      removeTokenState(tokenId);
+    }
+  }
+
+  private void removeTokenState(final String tokenId) {

Review comment:
       +1




----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

For queries about this service, please contact Infrastructure at:
[email protected]


Reply via email to