From 15e67d56bc19d28b412327b414f7b15db9ee00a8 Mon Sep 17 00:00:00 2001 From: Rajesh Date: Thu, 29 Oct 2026 15:14:44 +0530 Subject: [PATCH] HDDS-17595. Use the KeyManager interface instead of KeyManagerImpl casts --- .../org/apache/hadoop/ozone/om/TestKeyManagerImpl.java | 4 ++-- .../hadoop/ozone/om/snapshot/OmSnapshotTests.java | 6 +++--- .../ozone/om/snapshot/TestOzoneManagerSnapshotAcl.java | 4 ++-- .../ozone/om/snapshot/TestOzoneSnapshotRestore.java | 4 ++-- .../hadoop/ozone/reconfig/TestOmReconfiguration.java | 10 ++-------- .../java/org/apache/hadoop/ozone/om/KeyManager.java | 5 +++++ .../org/apache/hadoop/ozone/om/KeyManagerImpl.java | 6 ++++++ .../java/org/apache/hadoop/ozone/om/OzoneManager.java | 10 +--------- .../org/apache/hadoop/ozone/om/OmTestManagers.java | 4 ++-- .../org/apache/hadoop/ozone/om/TestKeyManagerUnit.java | 4 ++-- 10 files changed, 27 insertions(+), 30 deletions(-) diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestKeyManagerImpl.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestKeyManagerImpl.java index 5ccb8f71406c..00db00d37390 100644 --- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestKeyManagerImpl.java +++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestKeyManagerImpl.java @@ -155,7 +155,7 @@ public class TestKeyManagerImpl { @TempDir private static File dir; private static PrefixManager prefixManager; - private static KeyManagerImpl keyManager; + private static KeyManager keyManager; private static StorageContainerManager scm; private static ScmBlockLocationProtocol mockScmBlockLocationProtocol; private static StorageContainerLocationInternalInterface mockScmContainerClient; @@ -215,7 +215,7 @@ public static void setUp() throws Exception { mockScmContainerClient); om = omTestManagers.getOzoneManager(); metadataManager = omTestManagers.getMetadataManager(); - keyManager = (KeyManagerImpl)omTestManagers.getKeyManager(); + keyManager = omTestManagers.getKeyManager(); prefixManager = omTestManagers.getPrefixManager(); writeClient = omTestManagers.getWriteClient(); rpcClient = omTestManagers.getRpcClient(); diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/snapshot/OmSnapshotTests.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/snapshot/OmSnapshotTests.java index 7c3e31c6557e..05ff42c6a152 100644 --- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/snapshot/OmSnapshotTests.java +++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/snapshot/OmSnapshotTests.java @@ -133,7 +133,7 @@ import org.apache.hadoop.ozone.client.io.OzoneInputStream; import org.apache.hadoop.ozone.client.io.OzoneOutputStream; import org.apache.hadoop.ozone.om.IOmMetadataReader; -import org.apache.hadoop.ozone.om.KeyManagerImpl; +import org.apache.hadoop.ozone.om.KeyManager; import org.apache.hadoop.ozone.om.OMConfigKeys; import org.apache.hadoop.ozone.om.OMStorage; import org.apache.hadoop.ozone.om.OMUpgradeTestUtils; @@ -293,13 +293,13 @@ private void createBucket(OzoneVolume volume, String bucketVal) throws IOExcepti } private void stopKeyManager() throws IOException { - KeyManagerImpl keyManager = (KeyManagerImpl) HddsWhiteboxTestUtils + KeyManager keyManager = (KeyManager) HddsWhiteboxTestUtils .getInternalState(ozoneManager, "keyManager"); keyManager.stop(); } private void startKeyManager() throws IOException { - KeyManagerImpl keyManager = (KeyManagerImpl) HddsWhiteboxTestUtils + KeyManager keyManager = (KeyManager) HddsWhiteboxTestUtils .getInternalState(ozoneManager, "keyManager"); keyManager.start(conf); } diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/snapshot/TestOzoneManagerSnapshotAcl.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/snapshot/TestOzoneManagerSnapshotAcl.java index 6d03dae30f0f..10f083c33f7b 100644 --- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/snapshot/TestOzoneManagerSnapshotAcl.java +++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/snapshot/TestOzoneManagerSnapshotAcl.java @@ -51,7 +51,7 @@ import org.apache.hadoop.ozone.client.OzoneVolume; import org.apache.hadoop.ozone.client.VolumeArgs; import org.apache.hadoop.ozone.client.io.OzoneOutputStream; -import org.apache.hadoop.ozone.om.KeyManagerImpl; +import org.apache.hadoop.ozone.om.KeyManager; import org.apache.hadoop.ozone.om.OMConfigKeys; import org.apache.hadoop.ozone.om.OMStorage; import org.apache.hadoop.ozone.om.OmSnapshotManager; @@ -138,7 +138,7 @@ public static void init() throws Exception { objectStore = client.getObjectStore(); ozoneManager = cluster.getOzoneManager(); - final KeyManagerImpl keyManager = (KeyManagerImpl) HddsWhiteboxTestUtils + final KeyManager keyManager = (KeyManager) HddsWhiteboxTestUtils .getInternalState(ozoneManager, "keyManager"); // stop the deletion services so that keys can still be read diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/snapshot/TestOzoneSnapshotRestore.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/snapshot/TestOzoneSnapshotRestore.java index b2fde1f01960..9491f287d584 100644 --- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/snapshot/TestOzoneSnapshotRestore.java +++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/snapshot/TestOzoneSnapshotRestore.java @@ -45,7 +45,7 @@ import org.apache.hadoop.ozone.client.OzoneKey; import org.apache.hadoop.ozone.client.OzoneVolume; import org.apache.hadoop.ozone.client.io.OzoneOutputStream; -import org.apache.hadoop.ozone.om.KeyManagerImpl; +import org.apache.hadoop.ozone.om.KeyManager; import org.apache.hadoop.ozone.om.OMConfigKeys; import org.apache.hadoop.ozone.om.OMStorage; import org.apache.hadoop.ozone.om.OmSnapshotManager; @@ -116,7 +116,7 @@ public void init() throws Exception { client = cluster.newClient(); store = client.getObjectStore(); - KeyManagerImpl keyManager = (KeyManagerImpl) HddsWhiteboxTestUtils + KeyManager keyManager = (KeyManager) HddsWhiteboxTestUtils .getInternalState(leaderOzoneManager, "keyManager"); // stop the deletion services so that keys can still be read keyManager.stop(); diff --git a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/reconfig/TestOmReconfiguration.java b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/reconfig/TestOmReconfiguration.java index c2a657e2970e..39da6fe0383d 100644 --- a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/reconfig/TestOmReconfiguration.java +++ b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/reconfig/TestOmReconfiguration.java @@ -50,7 +50,7 @@ import org.apache.hadoop.conf.ReconfigurationException; import org.apache.hadoop.hdds.conf.ReconfigurationHandler; import org.apache.hadoop.hdds.tracing.TracingConfig; -import org.apache.hadoop.ozone.om.KeyManagerImpl; +import org.apache.hadoop.ozone.om.KeyManager; import org.apache.hadoop.ozone.om.OmConfig; import org.apache.hadoop.ozone.om.OzoneManager; import org.apache.hadoop.ozone.om.service.KeyLifecycleService; @@ -222,7 +222,7 @@ void unsetAllowListAllVolumes(String newValue) throws ReconfigurationException { void sstFilteringServiceInterval() throws ReconfigurationException { // Tests reconfiguration of SST filtering service interval final OzoneManager om = cluster().getOzoneManager(); - final KeyManagerImpl keyManagerImpl = (KeyManagerImpl) om.getKeyManager(); + final KeyManager keyManagerImpl = om.getKeyManager(); // Get the original interval value String originalValue = om.getConfiguration().get(OZONE_SNAPSHOT_SST_FILTERING_SERVICE_INTERVAL); @@ -239,8 +239,6 @@ void sstFilteringServiceInterval() throws ReconfigurationException { assertEquals(newIntervalValue, om.getConfiguration() .get(OZONE_SNAPSHOT_SST_FILTERING_SERVICE_INTERVAL)); // Verify the service is still enabled with the new interval - assertTrue(keyManagerImpl.isSstFilteringSvcEnabled(), - "SstFilteringService should remain enabled with new interval"); assertNotNull(keyManagerImpl.getSnapshotSstFilteringService(), "SstFilteringService should not be null with new interval"); // Verify the new interval is applied (30 seconds = 30000 milliseconds) @@ -254,8 +252,6 @@ void sstFilteringServiceInterval() throws ReconfigurationException { getSubject().reconfigureProperty(OZONE_SNAPSHOT_SST_FILTERING_SERVICE_INTERVAL, disableValue); assertEquals(disableValue, om.getConfiguration().get(OZONE_SNAPSHOT_SST_FILTERING_SERVICE_INTERVAL)); // Verify that the SstFilteringService is stopped - assertFalse(keyManagerImpl.isSstFilteringSvcEnabled(), - "SstFilteringService should be disabled when interval is -1"); assertNull(keyManagerImpl.getSnapshotSstFilteringService(), "SstFilteringService should be null when disabled"); @@ -264,8 +260,6 @@ void sstFilteringServiceInterval() throws ReconfigurationException { getSubject().reconfigureProperty(OZONE_SNAPSHOT_SST_FILTERING_SERVICE_INTERVAL, originalValue); assertEquals(originalValue, om.getConfiguration().get(OZONE_SNAPSHOT_SST_FILTERING_SERVICE_INTERVAL)); // Verify that the SstFilteringService is running again - assertTrue(keyManagerImpl.isSstFilteringSvcEnabled(), - "SstFilteringService should be enabled after restoring original interval"); assertNotNull(keyManagerImpl.getSnapshotSstFilteringService(), "SstFilteringService should not be null when enabled"); } diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/KeyManager.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/KeyManager.java index 2c959cb4c018..b60d388c1dbd 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/KeyManager.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/KeyManager.java @@ -377,6 +377,11 @@ DeleteKeysResult getPendingDeletionSubFiles(long volumeId, long bucketId, OmKeyI */ SstFilteringService getSnapshotSstFilteringService(); + /** + * Restart the snapshot SST filtering service with the interval in {@code conf}; it stays stopped if disabled. + */ + void restartSnapshotSstFilteringService(OzoneConfiguration conf); + /** * Returns the instance of Snapshot Defrag service. * @return Background service. diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/KeyManagerImpl.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/KeyManagerImpl.java index 445160972d82..71f77647575a 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/KeyManagerImpl.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/KeyManagerImpl.java @@ -433,6 +433,12 @@ public void stopSnapshotSstFilteringService() { } } + @Override + public void restartSnapshotSstFilteringService(OzoneConfiguration conf) { + stopSnapshotSstFilteringService(); + startSnapshotSstFilteringService(conf); + } + /** * Start the snapshot defrag service if interval is not set to disabled value. * @param conf diff --git a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java index 67c522361916..e7b4060fe9d5 100644 --- a/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java +++ b/hadoop-ozone/ozone-manager/src/main/java/org/apache/hadoop/ozone/om/OzoneManager.java @@ -6297,18 +6297,10 @@ private void reconfKeyLifecycleService(Map changedKeys, Configu } private String reconfOzoneSnapshotSSTFilteringServiceInterval(String newVal) { - boolean wasSstFilteringSvcEnabled = ((KeyManagerImpl) keyManager).isSstFilteringSvcEnabled(); getConfiguration().set(OZONE_SNAPSHOT_SST_FILTERING_SERVICE_INTERVAL, newVal); if (this.isFilesystemSnapshotEnabled()) { - if (wasSstFilteringSvcEnabled) { - // Sanity check - Objects.requireNonNull(keyManager.getSnapshotSstFilteringService(), - "sstFilteringService should not be null when SST filtering service is enabled."); - ((KeyManagerImpl) keyManager).stopSnapshotSstFilteringService(); - } - // Note startSnapshotSstFilteringService checks whether the config is set to a value that enables the service - ((KeyManagerImpl) keyManager).startSnapshotSstFilteringService(getConfiguration()); + keyManager.restartSnapshotSstFilteringService(getConfiguration()); } else { LOG.warn("Ozone filesystem snapshot is not enabled. {} is reconfigured but will not make any difference.", OZONE_SNAPSHOT_SST_FILTERING_SERVICE_INTERVAL); diff --git a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/OmTestManagers.java b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/OmTestManagers.java index 8efa3ba11a1a..4161eaaaf500 100644 --- a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/OmTestManagers.java +++ b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/OmTestManagers.java @@ -138,9 +138,9 @@ public OmTestManagers(OzoneConfiguration conf, .getObjectStore().getClientProxy().getOzoneManagerClient(); metadataManager = (OmMetadataManagerImpl) HddsWhiteboxTestUtils .getInternalState(om, "metadataManager"); - volumeManager = (VolumeManagerImpl)HddsWhiteboxTestUtils + volumeManager = (VolumeManager)HddsWhiteboxTestUtils .getInternalState(om, "volumeManager"); - bucketManager = (BucketManagerImpl)HddsWhiteboxTestUtils + bucketManager = (BucketManager)HddsWhiteboxTestUtils .getInternalState(om, "bucketManager"); prefixManager = (PrefixManagerImpl)HddsWhiteboxTestUtils .getInternalState(om, "prefixManager"); diff --git a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestKeyManagerUnit.java b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestKeyManagerUnit.java index ea6d7096cd9b..65ede1da0aaa 100644 --- a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestKeyManagerUnit.java +++ b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/TestKeyManagerUnit.java @@ -104,7 +104,7 @@ class TestKeyManagerUnit extends OzoneTestBase { private OMMetadataManager metadataManager; private StorageContainerLocationInternalInterface containerClient; - private KeyManagerImpl keyManager; + private KeyManager keyManager; private Instant startDate; private ScmBlockLocationProtocol blockClient; @@ -127,7 +127,7 @@ void setup(@TempDir Path testDir) throws Exception { = new OmTestManagers(configuration, blockClient, containerClient); om = omTestManagers.getOzoneManager(); metadataManager = omTestManagers.getMetadataManager(); - keyManager = (KeyManagerImpl)omTestManagers.getKeyManager(); + keyManager = omTestManagers.getKeyManager(); writeClient = omTestManagers.getWriteClient(); }