This is an automated email from the ASF dual-hosted git repository.

sodonnell pushed a commit to branch HDDS-13323-sts
in repository https://gitbox.apache.org/repos/asf/ozone.git


The following commit(s) were added to refs/heads/HDDS-13323-sts by this push:
     new 8f7ec1011a4 HDDS-14066. [STS] Database updates for revoked STS tokens 
(#9420)
8f7ec1011a4 is described below

commit 8f7ec1011a49622afb60dd6e225b1bde1837b7de
Author: fmorg-git <[email protected]>
AuthorDate: Fri Dec 5 04:49:18 2025 -0800

    HDDS-14066. [STS] Database updates for revoked STS tokens (#9420)
---
 .../apache/hadoop/ozone/om/OMMetadataManager.java  |  8 ++++++
 .../hadoop/ozone/om/OmMetadataManagerImpl.java     | 10 ++++++++
 .../hadoop/ozone/om/codec/OMDBDefinition.java      | 23 ++++++++++++-----
 .../hadoop/ozone/om/TestOmMetadataManager.java     | 30 +++++++++++++++++++++-
 4 files changed, 63 insertions(+), 8 deletions(-)

diff --git 
a/hadoop-ozone/interface-storage/src/main/java/org/apache/hadoop/ozone/om/OMMetadataManager.java
 
b/hadoop-ozone/interface-storage/src/main/java/org/apache/hadoop/ozone/om/OMMetadataManager.java
index baac362da74..7afe2c6249a 100644
--- 
a/hadoop-ozone/interface-storage/src/main/java/org/apache/hadoop/ozone/om/OMMetadataManager.java
+++ 
b/hadoop-ozone/interface-storage/src/main/java/org/apache/hadoop/ozone/om/OMMetadataManager.java
@@ -484,6 +484,14 @@ String getMultipartKeyFSO(String volume, String bucket, 
String key, String
    */
   Table<String, String> getMetaTable();
 
+  /**
+   * Gets the S3RevokedStsTokenTable.
+   *
+   * @return Table.
+   */
+  Table<String, String> getS3RevokedStsTokenTable();
+
+
   /**
    * Returns number of rows in a table.  This should not be used for very
    * large tables.
diff --git 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OmMetadataManagerImpl.java
 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OmMetadataManagerImpl.java
index e7826708b89..b28f8bcb9d6 100644
--- 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OmMetadataManagerImpl.java
+++ 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OmMetadataManagerImpl.java
@@ -181,6 +181,8 @@ public class OmMetadataManagerImpl implements 
OMMetadataManager,
   private TypedTable<String, String> snapshotRenamedTable;
   private TypedTable<String, CompactionLogEntry> compactionLogTable;
 
+  private TypedTable<String, String> s3RevokedStsTokenTable;
+
   private OzoneManager ozoneManager;
 
   // Epoch is used to generate the objectIDs. The most significant 2 bits of
@@ -486,6 +488,9 @@ protected void initializeOmTables(CacheType cacheType,
     // TODO: [SNAPSHOT] Initialize table lock for snapshotRenamedTable.
 
     compactionLogTable = 
initializer.get(OMDBDefinition.COMPACTION_LOG_TABLE_DEF);
+
+    // temporaryAccessKeyId -> sessionToken
+    s3RevokedStsTokenTable = 
initializer.get(OMDBDefinition.S3_REVOKED_STS_TOKEN_TABLE_DEF);
   }
 
   /**
@@ -1683,6 +1688,11 @@ public Table<String, CompactionLogEntry> 
getCompactionLogTable() {
     return compactionLogTable;
   }
 
+  @Override
+  public Table<String, String> getS3RevokedStsTokenTable() {
+    return s3RevokedStsTokenTable;
+  }
+
   /**
    * Get Snapshot Chain Manager.
    *
diff --git 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/codec/OMDBDefinition.java
 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/codec/OMDBDefinition.java
index 9894e8f5d6b..8b4632ef45b 100644
--- 
a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/codec/OMDBDefinition.java
+++ 
b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/codec/OMDBDefinition.java
@@ -49,13 +49,14 @@
  * OM database definitions.
  * <pre>
  * {@code
- * User, Token and Secret Tables:
+ * User, Token, Secret and Revoked STS Token Tables:
  * |------------------------------------------------------------------------|
- * |        Column Family |                 Mapping                         |
+ * |          Column Family |                 Mapping                       |
  * |------------------------------------------------------------------------|
- * |            userTable |             /user :- UserVolumeInfo             |
- * |          dTokenTable |      OzoneTokenID :- renew_time                 |
- * |        s3SecretTable | s3g_access_key_id :- s3Secret                   |
+ * |              userTable |             /user :- UserVolumeInfo           |
+ * |            dTokenTable |      OzoneTokenID :- renew_time               |
+ * |          s3SecretTable | s3g_access_key_id :- s3Secret                 |
+ * | s3RevokedStsTokenTable | sts_access_key_id :- sessionToken             |
  * |------------------------------------------------------------------------|
  * }
  * </pre>
@@ -139,7 +140,7 @@
 public final class OMDBDefinition extends DBDefinition.WithMap {
 
   //---------------------------------------------------------------------------
-  // User, Token and Secret Tables:
+  // User, Token, Secret and Revoked STS Token Tables:
   public static final String USER_TABLE = "userTable";
   /** userTable: /user :- UserVolumeInfo. */
   public static final DBColumnFamilyDefinition<String, 
PersistedUserVolumeInfo> USER_TABLE_DEF
@@ -161,6 +162,13 @@ public final class OMDBDefinition extends 
DBDefinition.WithMap {
           StringCodec.get(),
           S3SecretValue.getCodec());
 
+  public static final String S3_REVOKED_STS_TOKEN_TABLE = 
"s3RevokedStsTokenTable";
+  /** s3RevokedStsTokenTable: sts_access_key_id :- sessionToken.*/
+  public static final DBColumnFamilyDefinition<String, String> 
S3_REVOKED_STS_TOKEN_TABLE_DEF
+      = new DBColumnFamilyDefinition<>(S3_REVOKED_STS_TOKEN_TABLE,
+          StringCodec.get(),
+          StringCodec.get());
+
   //---------------------------------------------------------------------------
   // Volume, Bucket, Prefix and Transaction Tables:
   public static final String VOLUME_TABLE = "volumeTable";
@@ -339,7 +347,8 @@ public final class OMDBDefinition extends 
DBDefinition.WithMap {
           TENANT_STATE_TABLE_DEF,
           TRANSACTION_INFO_TABLE_DEF,
           USER_TABLE_DEF,
-          VOLUME_TABLE_DEF);
+          VOLUME_TABLE_DEF,
+          S3_REVOKED_STS_TOKEN_TABLE_DEF);
 
   private static final OMDBDefinition INSTANCE = new OMDBDefinition();
 
diff --git 
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestOmMetadataManager.java
 
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestOmMetadataManager.java
index bebc5880788..6f37afd0674 100644
--- 
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestOmMetadataManager.java
+++ 
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestOmMetadataManager.java
@@ -38,6 +38,7 @@
 import static org.apache.hadoop.ozone.om.codec.OMDBDefinition.OPEN_KEY_TABLE;
 import static org.apache.hadoop.ozone.om.codec.OMDBDefinition.PREFIX_TABLE;
 import static 
org.apache.hadoop.ozone.om.codec.OMDBDefinition.PRINCIPAL_TO_ACCESS_IDS_TABLE;
+import static 
org.apache.hadoop.ozone.om.codec.OMDBDefinition.S3_REVOKED_STS_TOKEN_TABLE;
 import static org.apache.hadoop.ozone.om.codec.OMDBDefinition.S3_SECRET_TABLE;
 import static 
org.apache.hadoop.ozone.om.codec.OMDBDefinition.SNAPSHOT_INFO_TABLE;
 import static 
org.apache.hadoop.ozone.om.codec.OMDBDefinition.SNAPSHOT_RENAMED_TABLE;
@@ -52,6 +53,7 @@
 import static org.junit.jupiter.api.Assertions.assertEquals;
 import static org.junit.jupiter.api.Assertions.assertFalse;
 import static org.junit.jupiter.api.Assertions.assertNotEquals;
+import static org.junit.jupiter.api.Assertions.assertNotNull;
 import static org.junit.jupiter.api.Assertions.assertNull;
 import static org.junit.jupiter.api.Assertions.assertThrows;
 import static org.junit.jupiter.api.Assertions.assertTrue;
@@ -137,7 +139,8 @@ public class TestOmMetadataManager {
       TENANT_STATE_TABLE,
       SNAPSHOT_INFO_TABLE,
       SNAPSHOT_RENAMED_TABLE,
-      COMPACTION_LOG_TABLE
+      COMPACTION_LOG_TABLE,
+      S3_REVOKED_STS_TOKEN_TABLE
   };
 
   private OMMetadataManager omMetadataManager;
@@ -1289,4 +1292,29 @@ public void testGetMultipartUploadKeys() throws 
Exception {
 
     assertEquals(25, noPagination.size());
   }
+
+  @Test
+  public void testS3RevokedStsTokenTablePutAndGet() throws Exception {
+    // Ensure the table is initialized
+    assertNotNull(omMetadataManager.getS3RevokedStsTokenTable(), 
"s3RevokedStsTokenTable should be initialized");
+
+    final String tempAccessKeyId1 = "ASIA7VUS1EOBCW8RRJVR";
+    final String sessionToken1 = "test-session-token-1";
+    final String tempAccessKeyId2 = "ASIA904E65QIGL9ON305";
+    final String sessionToken2 = "test-session-token-2";
+
+    omMetadataManager.getS3RevokedStsTokenTable()
+        .put(tempAccessKeyId1, sessionToken1);
+    omMetadataManager.getS3RevokedStsTokenTable()
+        .put(tempAccessKeyId2, sessionToken2);
+
+    // Verify get and getIfExist return the stored value
+    assertEquals(sessionToken1, 
omMetadataManager.getS3RevokedStsTokenTable().get(tempAccessKeyId1));
+    assertEquals(sessionToken1, 
omMetadataManager.getS3RevokedStsTokenTable().getIfExist(tempAccessKeyId1));
+    assertEquals(sessionToken2, 
omMetadataManager.getS3RevokedStsTokenTable().get(tempAccessKeyId2));
+    assertEquals(sessionToken2, 
omMetadataManager.getS3RevokedStsTokenTable().getIfExist(tempAccessKeyId2));
+
+    // Unknown key should return null for getIfExist
+    
assertNull(omMetadataManager.getS3RevokedStsTokenTable().getIfExist("ASIA_UNKNOWN_ACCESS_KEY"));
+  }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to