This is an automated email from the ASF dual-hosted git repository.
adoroszlai pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/master by this push:
new a0af93e2108 HDDS-13292. Change `<? extends KeyValue>` to `<KeyValue>`
in test (#8657)
a0af93e2108 is described below
commit a0af93e2108e2a6eaaf7d863c69bbf0b1e0f56bc
Author: Tsz-Wo Nicholas Sze <[email protected]>
AuthorDate: Wed Jun 18 23:09:37 2025 -0700
HDDS-13292. Change `<? extends KeyValue>` to `<KeyValue>` in test (#8657)
---
.../recon/TestReconInsightsForDeletedDirectories.java | 12 +++++-------
.../hadoop/ozone/recon/TestReconWithOzoneManagerHA.java | 15 ++++++---------
.../test/java/org/apache/hadoop/fs/ozone/TestHSync.java | 14 ++++++--------
.../test/java/org/apache/hadoop/ozone/TestDataUtil.java | 5 ++---
.../hadoop/ozone/client/rpc/TestSecureOzoneRpcClient.java | 8 +++-----
.../hadoop/ozone/om/TestObjectStoreWithLegacyFS.java | 3 +--
.../ozone/om/TestOzoneManagerHAWithStoppedNodes.java | 3 +--
.../om/service/TestDirectoryDeletingServiceWithFSO.java | 11 +++++------
.../TestSnapshotDeletingServiceIntegrationTest.java | 4 +---
.../ozone/om/snapshot/TestOzoneManagerHASnapshot.java | 4 +---
.../ozone/om/snapshot/TestSnapshotBackgroundServices.java | 6 ++----
.../om/snapshot/TestSnapshotDirectoryCleaningService.java | 3 +--
.../apache/hadoop/ozone/repair/om/TestFSORepairTool.java | 5 ++---
.../TestOMSnapshotSetPropertyRequestAndResponse.java | 5 ++---
.../response/snapshot/TestOMSnapshotCreateResponse.java | 5 ++---
.../response/snapshot/TestOMSnapshotDeleteResponse.java | 6 ++----
.../hadoop/ozone/om/service/TestKeyDeletingService.java | 7 +++----
.../ozone/om/service/TestOpenKeyCleanupService.java | 3 +--
.../ozone/om/snapshot/TestFSODirectoryPathResolver.java | 4 +---
.../ozone/recon/spi/ReconContainerMetadataManager.java | 6 ------
.../recon/spi/impl/ReconContainerMetadataManagerImpl.java | 5 ++---
21 files changed, 49 insertions(+), 85 deletions(-)
diff --git
a/hadoop-ozone/integration-test-recon/src/test/java/org/apache/hadoop/ozone/recon/TestReconInsightsForDeletedDirectories.java
b/hadoop-ozone/integration-test-recon/src/test/java/org/apache/hadoop/ozone/recon/TestReconInsightsForDeletedDirectories.java
index 904a1a91932..487bd116d9a 100644
---
a/hadoop-ozone/integration-test-recon/src/test/java/org/apache/hadoop/ozone/recon/TestReconInsightsForDeletedDirectories.java
+++
b/hadoop-ozone/integration-test-recon/src/test/java/org/apache/hadoop/ozone/recon/TestReconInsightsForDeletedDirectories.java
@@ -43,7 +43,6 @@
import org.apache.hadoop.hdds.scm.server.OzoneStorageContainerManager;
import org.apache.hadoop.hdds.utils.IOUtils;
import org.apache.hadoop.hdds.utils.db.Table;
-import org.apache.hadoop.hdds.utils.db.TableIterator;
import org.apache.hadoop.ozone.MiniOzoneCluster;
import org.apache.hadoop.ozone.OzoneConsts;
import org.apache.hadoop.ozone.TestDataUtil;
@@ -192,8 +191,7 @@ public void testGetDeletedDirectoryInfo()
// Retrieve the object ID of dir1 from directory table.
Long directoryObjectId = null;
- try (
- TableIterator<?, ? extends Table.KeyValue<?, OmDirectoryInfo>> iterator
+ try (Table.KeyValueIterator<?, OmDirectoryInfo> iterator
= reconDirTable.iterator()) {
if (iterator.hasNext()) {
directoryObjectId = iterator.next().getValue().getObjectID();
@@ -421,22 +419,22 @@ private void cleanupTables() throws IOException {
Table<String, OmKeyInfo> deletedDirTable =
metadataManager.getDeletedDirTable();
- try (TableIterator<String, ? extends Table.KeyValue<String, ?>> it =
deletedDirTable.iterator()) {
+ try (Table.KeyValueIterator<String, OmKeyInfo> it =
deletedDirTable.iterator()) {
removeAllFromDB(it, deletedDirTable);
}
Table<String, OmKeyInfo> fileTable = metadataManager.getFileTable();
- try (TableIterator<String, ? extends Table.KeyValue<String, ?>> it =
fileTable.iterator()) {
+ try (Table.KeyValueIterator<String, OmKeyInfo> it = fileTable.iterator()) {
removeAllFromDB(it, fileTable);
}
Table<String, OmDirectoryInfo> directoryTable =
metadataManager.getDirectoryTable();
- try (TableIterator<String, ? extends Table.KeyValue<String, ?>> it =
directoryTable.iterator()) {
+ try (Table.KeyValueIterator<String, OmDirectoryInfo> it =
directoryTable.iterator()) {
removeAllFromDB(it, directoryTable);
}
}
private static void removeAllFromDB(
- TableIterator<String, ? extends Table.KeyValue<String, ?>> iterator,
+ Table.KeyValueIterator<String, ?> iterator,
Table<String, ?> table) throws IOException {
List<String> keysToDelete = new ArrayList<>();
while (iterator.hasNext()) {
diff --git
a/hadoop-ozone/integration-test-recon/src/test/java/org/apache/hadoop/ozone/recon/TestReconWithOzoneManagerHA.java
b/hadoop-ozone/integration-test-recon/src/test/java/org/apache/hadoop/ozone/recon/TestReconWithOzoneManagerHA.java
index da693083371..4426876e596 100644
---
a/hadoop-ozone/integration-test-recon/src/test/java/org/apache/hadoop/ozone/recon/TestReconWithOzoneManagerHA.java
+++
b/hadoop-ozone/integration-test-recon/src/test/java/org/apache/hadoop/ozone/recon/TestReconWithOzoneManagerHA.java
@@ -31,7 +31,6 @@
import org.apache.hadoop.hdds.utils.IOUtils;
import org.apache.hadoop.hdds.utils.db.RocksDBConfiguration;
import org.apache.hadoop.hdds.utils.db.Table;
-import org.apache.hadoop.hdds.utils.db.TableIterator;
import org.apache.hadoop.ozone.MiniOzoneCluster;
import org.apache.hadoop.ozone.MiniOzoneHAClusterImpl;
import org.apache.hadoop.ozone.client.BucketArgs;
@@ -42,8 +41,8 @@
import org.apache.hadoop.ozone.om.OzoneManager;
import org.apache.hadoop.ozone.om.helpers.BucketLayout;
import org.apache.hadoop.ozone.recon.api.types.ContainerKeyPrefix;
-import org.apache.hadoop.ozone.recon.spi.ReconContainerMetadataManager;
import org.apache.hadoop.ozone.recon.spi.impl.OzoneManagerServiceProviderImpl;
+import
org.apache.hadoop.ozone.recon.spi.impl.ReconContainerMetadataManagerImpl;
import org.apache.ozone.test.GenericTestUtils;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
@@ -132,15 +131,13 @@ public void testReconGetsSnapshotFromLeader() throws
Exception {
// Sync data to Recon
impl.syncDataFromOM();
- ReconContainerMetadataManager reconContainerMetadataManager =
- recon.getReconServer().getReconContainerMetadataManager();
- try (TableIterator iterator =
- reconContainerMetadataManager.getContainerTableIterator()) {
+ final ReconContainerMetadataManagerImpl reconContainerMetadataManager =
+ (ReconContainerMetadataManagerImpl)
recon.getReconServer().getReconContainerMetadataManager();
+ try (Table.KeyValueIterator<ContainerKeyPrefix, Integer> iterator
+ =
reconContainerMetadataManager.getContainerKeyTableForTesting().iterator()) {
String reconKeyPrefix = null;
while (iterator.hasNext()) {
- Table.KeyValue<ContainerKeyPrefix, Integer> keyValue =
- (Table.KeyValue<ContainerKeyPrefix, Integer>) iterator.next();
- reconKeyPrefix = keyValue.getKey().getKeyPrefix();
+ reconKeyPrefix = iterator.next().getKey().getKeyPrefix();
}
assertEquals(
String.format("/%s/%s/%s", VOL_NAME, VOL_NAME, keyPrefix),
diff --git
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/TestHSync.java
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/TestHSync.java
index ff11c612926..7ed1e1012b0 100644
---
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/TestHSync.java
+++
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/fs/ozone/TestHSync.java
@@ -91,7 +91,6 @@
import org.apache.hadoop.hdds.scm.pipeline.Pipeline;
import org.apache.hadoop.hdds.utils.IOUtils;
import org.apache.hadoop.hdds.utils.db.Table;
-import org.apache.hadoop.hdds.utils.db.TableIterator;
import org.apache.hadoop.ozone.ClientConfigForTesting;
import org.apache.hadoop.ozone.HddsDatanodeService;
import org.apache.hadoop.ozone.MiniOzoneCluster;
@@ -366,8 +365,7 @@ public void testKeyHSyncThenClose() throws Exception {
OMMetadataManager metadataManager = ozoneManager.getMetadataManager();
// deletedTable should not have an entry for file at all in this case
- try (TableIterator<String,
- ? extends Table.KeyValue<String, RepeatedOmKeyInfo>>
+ try (Table.KeyValueIterator<String, RepeatedOmKeyInfo>
tableIter = metadataManager.getDeletedTable().iterator()) {
while (tableIter.hasNext()) {
Table.KeyValue<String, RepeatedOmKeyInfo> kv = tableIter.next();
@@ -609,7 +607,7 @@ private List<OmKeyInfo> getOpenKeyInfo(BucketLayout
bucketLayout) {
Table<String, OmKeyInfo> openFileTable =
cluster.getOzoneManager().getMetadataManager().getOpenKeyTable(bucketLayout);
- try (TableIterator<String, ? extends Table.KeyValue<String, OmKeyInfo>>
+ try (Table.KeyValueIterator<String, OmKeyInfo>
iterator = openFileTable.iterator()) {
while (iterator.hasNext()) {
omKeyInfo.add(iterator.next().getValue());
@@ -624,7 +622,7 @@ private List<OmKeyInfo> getKeyInfo(BucketLayout
bucketLayout) {
Table<String, OmKeyInfo> openFileTable =
cluster.getOzoneManager().getMetadataManager().getKeyTable(bucketLayout);
- try (TableIterator<String, ? extends Table.KeyValue<String, OmKeyInfo>>
+ try (Table.KeyValueIterator<String, OmKeyInfo>
iterator = openFileTable.iterator()) {
while (iterator.hasNext()) {
omKeyInfo.add(iterator.next().getValue());
@@ -1134,7 +1132,7 @@ public void testDisableHsync() throws Exception {
* @return OmKeyInfo
*/
private OmKeyInfo getFirstKeyInTable(String keyName, Table<String,
OmKeyInfo> openKeyTable) throws IOException {
- try (TableIterator<String, ? extends Table.KeyValue<String, OmKeyInfo>> it
= openKeyTable.iterator()) {
+ try (Table.KeyValueIterator<String, OmKeyInfo> it =
openKeyTable.iterator()) {
assertTrue(it.hasNext());
Table.KeyValue<String, OmKeyInfo> kv = it.next();
String dbOpenKey = kv.getKey();
@@ -1543,7 +1541,7 @@ public void testHSyncKeyOverwriteHSyncKey() throws
Exception {
private Map<String, OmKeyInfo> getAllOpenKeys(Table<String, OmKeyInfo>
table) throws IOException {
Map<String, OmKeyInfo> keys = new HashMap<String, OmKeyInfo>();
- try (TableIterator<String, ? extends Table.KeyValue<String, OmKeyInfo>>
tableIter = table.iterator()) {
+ try (Table.KeyValueIterator<String, OmKeyInfo> tableIter =
table.iterator()) {
while (tableIter.hasNext()) {
Table.KeyValue<String, OmKeyInfo> kv = tableIter.next();
String key = kv.getKey();
@@ -1555,7 +1553,7 @@ private Map<String, OmKeyInfo>
getAllOpenKeys(Table<String, OmKeyInfo> table) th
private Map<String, RepeatedOmKeyInfo> getAllDeletedKeys(Table<String,
RepeatedOmKeyInfo> table) throws IOException {
Map<String, RepeatedOmKeyInfo> keys = new HashMap<String,
RepeatedOmKeyInfo>();
- try (TableIterator<String, ? extends Table.KeyValue<String,
RepeatedOmKeyInfo>> tableIter = table.iterator()) {
+ try (Table.KeyValueIterator<String, RepeatedOmKeyInfo> tableIter =
table.iterator()) {
while (tableIter.hasNext()) {
Table.KeyValue<String, RepeatedOmKeyInfo> kv = tableIter.next();
String key = kv.getKey();
diff --git
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/TestDataUtil.java
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/TestDataUtil.java
index ef83ee19d68..a30fc356057 100644
---
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/TestDataUtil.java
+++
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/TestDataUtil.java
@@ -38,7 +38,6 @@
import org.apache.hadoop.hdds.client.ReplicationType;
import org.apache.hadoop.hdds.protocol.StorageType;
import org.apache.hadoop.hdds.utils.db.Table;
-import org.apache.hadoop.hdds.utils.db.TableIterator;
import org.apache.hadoop.ozone.client.BucketArgs;
import org.apache.hadoop.ozone.client.ObjectStore;
import org.apache.hadoop.ozone.client.OzoneBucket;
@@ -247,7 +246,7 @@ public static Map<String, OmKeyInfo>
createKeys(MiniOzoneCluster cluster, int nu
public static void cleanupDeletedTable(OzoneManager ozoneManager) throws
IOException {
Table<String, RepeatedOmKeyInfo> deletedTable =
ozoneManager.getMetadataManager().getDeletedTable();
List<String> nameList = new ArrayList<>();
- try (TableIterator<String, ? extends Table.KeyValue<String,
RepeatedOmKeyInfo>> keyIter = deletedTable.iterator()) {
+ try (Table.KeyValueIterator<String, RepeatedOmKeyInfo> keyIter =
deletedTable.iterator()) {
while (keyIter.hasNext()) {
Table.KeyValue<String, RepeatedOmKeyInfo> kv = keyIter.next();
nameList.add(kv.getKey());
@@ -265,7 +264,7 @@ public static void cleanupDeletedTable(OzoneManager
ozoneManager) throws IOExcep
public static void cleanupOpenKeyTable(OzoneManager ozoneManager,
BucketLayout bucketLayout) throws IOException {
Table<String, OmKeyInfo> openKeyTable =
ozoneManager.getMetadataManager().getOpenKeyTable(bucketLayout);
List<String> nameList = new ArrayList<>();
- try (TableIterator<String, ? extends Table.KeyValue<String, OmKeyInfo>>
keyIter = openKeyTable.iterator()) {
+ try (Table.KeyValueIterator<String, OmKeyInfo> keyIter =
openKeyTable.iterator()) {
while (keyIter.hasNext()) {
Table.KeyValue<String, OmKeyInfo> kv = keyIter.next();
nameList.add(kv.getKey());
diff --git
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestSecureOzoneRpcClient.java
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestSecureOzoneRpcClient.java
index 2753d833419..b16b9effae8 100644
---
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestSecureOzoneRpcClient.java
+++
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/client/rpc/TestSecureOzoneRpcClient.java
@@ -54,7 +54,6 @@
import org.apache.hadoop.hdds.scm.ScmConfigKeys;
import
org.apache.hadoop.hdds.security.x509.certificate.client.CertificateClientTestImpl;
import org.apache.hadoop.hdds.utils.db.Table;
-import org.apache.hadoop.hdds.utils.db.TableIterator;
import org.apache.hadoop.hdds.utils.db.cache.CacheKey;
import org.apache.hadoop.hdds.utils.db.cache.CacheValue;
import org.apache.hadoop.ozone.ClientVersion;
@@ -179,11 +178,10 @@ private void
testPutKeySuccessWithBlockTokenWithBucketLayout(
omMetadataManager.getBucketTable().get(bucketKey).getObjectID());
String keyPrefix =
bucketLayout.isFileSystemOptimized() ? bucketId : bucketKey;
- Table table = omMetadataManager.getKeyTable(bucketLayout);
+ Table<String, OmKeyInfo> table =
omMetadataManager.getKeyTable(bucketLayout);
// Check table entry.
- try (
- TableIterator<String, ? extends Table.KeyValue<String, OmKeyInfo>>
+ try (Table.KeyValueIterator<String, OmKeyInfo>
keyIterator = table.iterator()) {
Table.KeyValue<String, OmKeyInfo> kv =
keyIterator.seek(keyPrefix + "/" + keyName);
@@ -315,7 +313,7 @@ public void testPreallocateFileRecovery(long dataSize)
throws Exception {
// check unused pre-allocated blocks are reclaimed
Table<String, RepeatedOmKeyInfo> deletedTable =
getCluster().getOzoneManager().getMetadataManager().getDeletedTable();
- try (TableIterator<String, ? extends Table.KeyValue<String,
RepeatedOmKeyInfo>>
+ try (Table.KeyValueIterator<String, RepeatedOmKeyInfo>
keyIter = deletedTable.iterator()) {
while (keyIter.hasNext()) {
Table.KeyValue<String, RepeatedOmKeyInfo> kv = keyIter.next();
diff --git
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestObjectStoreWithLegacyFS.java
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestObjectStoreWithLegacyFS.java
index 5b64e4b25c0..71a3ac2af7b 100644
---
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestObjectStoreWithLegacyFS.java
+++
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestObjectStoreWithLegacyFS.java
@@ -37,7 +37,6 @@
import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
import org.apache.hadoop.hdds.utils.IOUtils;
import org.apache.hadoop.hdds.utils.db.Table;
-import org.apache.hadoop.hdds.utils.db.TableIterator;
import org.apache.hadoop.ozone.OzoneConsts;
import org.apache.hadoop.ozone.TestDataUtil;
import org.apache.hadoop.ozone.client.BucketArgs;
@@ -142,7 +141,7 @@ private boolean assertKeyCount(
String dbKey, int expectedCnt, String keyName) {
int countKeys = 0;
int matchingKeys = 0;
- try (TableIterator<String, ? extends Table.KeyValue<String, OmKeyInfo>>
+ try (Table.KeyValueIterator<String, OmKeyInfo>
itr = keyTable.iterator()) {
itr.seek(dbKey);
while (itr.hasNext()) {
diff --git
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOzoneManagerHAWithStoppedNodes.java
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOzoneManagerHAWithStoppedNodes.java
index 89ca385bf8b..30de3f3f74d 100644
---
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOzoneManagerHAWithStoppedNodes.java
+++
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/TestOzoneManagerHAWithStoppedNodes.java
@@ -46,7 +46,6 @@
import org.apache.hadoop.hdds.client.ReplicationType;
import org.apache.hadoop.hdds.ratis.RatisHelper;
import org.apache.hadoop.hdds.utils.db.Table;
-import org.apache.hadoop.hdds.utils.db.TableIterator;
import org.apache.hadoop.hdfs.LogVerificationAppender;
import org.apache.hadoop.ipc.RPC;
import org.apache.hadoop.ipc.Server;
@@ -455,7 +454,7 @@ public void testKeyDeletion() throws Exception {
GenericTestUtils.waitFor(() -> {
Table<String, RepeatedOmKeyInfo> deletedTable =
om.getMetadataManager().getDeletedTable();
- try (TableIterator<?, ?> iterator = deletedTable.iterator()) {
+ try (Table.KeyValueIterator<String, RepeatedOmKeyInfo> iterator =
deletedTable.iterator()) {
return !iterator.hasNext();
} catch (Exception ex) {
return false;
diff --git
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/service/TestDirectoryDeletingServiceWithFSO.java
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/service/TestDirectoryDeletingServiceWithFSO.java
index 3364939f8bc..44678059f97 100644
---
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/service/TestDirectoryDeletingServiceWithFSO.java
+++
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/service/TestDirectoryDeletingServiceWithFSO.java
@@ -52,7 +52,6 @@
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
import org.apache.hadoop.hdds.utils.IOUtils;
import org.apache.hadoop.hdds.utils.db.Table;
-import org.apache.hadoop.hdds.utils.db.TableIterator;
import org.apache.hadoop.ozone.MiniOzoneCluster;
import org.apache.hadoop.ozone.OzoneConsts;
import org.apache.hadoop.ozone.TestDataUtil;
@@ -197,7 +196,7 @@ public void testDeleteEmptyDirectory() throws Exception {
assertEquals(1, metrics.getNumDirsPurged());
assertEquals(1, metrics.getNumDirsSentForPurge());
- try (TableIterator<?, ? extends Table.KeyValue<?, OmDirectoryInfo>>
+ try (Table.KeyValueIterator<?, OmDirectoryInfo>
iterator = dirTable.iterator()) {
assertTrue(iterator.hasNext());
assertEquals(root.getName(), iterator.next().getValue().getName());
@@ -779,20 +778,20 @@ private void cleanupTables() throws IOException {
OMMetadataManager metadataManager =
cluster.getOzoneManager().getMetadataManager();
- try (TableIterator<?, ?> it = metadataManager.getDeletedDirTable()
+ try (Table.KeyValueIterator<String, OmKeyInfo> it =
metadataManager.getDeletedDirTable()
.iterator()) {
removeAllFromDB(it);
}
- try (TableIterator<?, ?> it = metadataManager.getFileTable().iterator()) {
+ try (Table.KeyValueIterator<String, OmKeyInfo> it =
metadataManager.getFileTable().iterator()) {
removeAllFromDB(it);
}
- try (TableIterator<?, ?> it = metadataManager.getDirectoryTable()
+ try (Table.KeyValueIterator<String, OmDirectoryInfo> it =
metadataManager.getDirectoryTable()
.iterator()) {
removeAllFromDB(it);
}
}
- private static void removeAllFromDB(TableIterator<?, ?> iterator)
+ private static void removeAllFromDB(Table.KeyValueIterator<?, ?> iterator)
throws IOException {
while (iterator.hasNext()) {
iterator.next();
diff --git
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/service/TestSnapshotDeletingServiceIntegrationTest.java
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/service/TestSnapshotDeletingServiceIntegrationTest.java
index 080844d1f5f..fa4c1395a0e 100644
---
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/service/TestSnapshotDeletingServiceIntegrationTest.java
+++
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/service/TestSnapshotDeletingServiceIntegrationTest.java
@@ -55,7 +55,6 @@
import org.apache.hadoop.hdds.conf.StorageUnit;
import org.apache.hadoop.hdds.utils.IOUtils;
import org.apache.hadoop.hdds.utils.db.Table;
-import org.apache.hadoop.hdds.utils.db.TableIterator;
import org.apache.hadoop.ozone.MiniOzoneCluster;
import org.apache.hadoop.ozone.OzoneConfigKeys;
import org.apache.hadoop.ozone.TestDataUtil;
@@ -504,8 +503,7 @@ public void testSnapshotWithFSO() throws Exception {
OmSnapshot snap1 = rcSnap1.get();
Table<String, OmKeyInfo> snap1KeyTable =
snap1.getMetadataManager().getFileTable();
- try (TableIterator<String, ? extends Table.KeyValue<String,
- RepeatedOmKeyInfo>> iterator = deletedTable.iterator()) {
+ try (Table.KeyValueIterator<String, RepeatedOmKeyInfo> iterator =
deletedTable.iterator()) {
while (iterator.hasNext()) {
Table.KeyValue<String, RepeatedOmKeyInfo> next = iterator.next();
String activeDBDeletedKey = next.getKey();
diff --git
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/snapshot/TestOzoneManagerHASnapshot.java
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/snapshot/TestOzoneManagerHASnapshot.java
index 8a5e4ed81ad..60f113e4e91 100644
---
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/snapshot/TestOzoneManagerHASnapshot.java
+++
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/snapshot/TestOzoneManagerHASnapshot.java
@@ -43,7 +43,6 @@
import org.apache.hadoop.hdds.utils.IOUtils;
import org.apache.hadoop.hdds.utils.db.RDBCheckpointUtils;
import org.apache.hadoop.hdds.utils.db.Table;
-import org.apache.hadoop.hdds.utils.db.TableIterator;
import org.apache.hadoop.ozone.MiniOzoneCluster;
import org.apache.hadoop.ozone.MiniOzoneHAClusterImpl;
import org.apache.hadoop.ozone.OzoneConfigKeys;
@@ -207,8 +206,7 @@ public void testSnapshotNameConsistency() throws Exception {
String snapshotPrefix = OM_KEY_PREFIX + volumeName +
OM_KEY_PREFIX + bucketName;
SnapshotInfo snapshotInfo = null;
- try (TableIterator<String, ?
- extends Table.KeyValue<String, SnapshotInfo>>
+ try (Table.KeyValueIterator<String, SnapshotInfo>
iterator = ozoneManager.getMetadataManager()
.getSnapshotInfoTable().iterator(snapshotPrefix)) {
while (iterator.hasNext()) {
diff --git
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/snapshot/TestSnapshotBackgroundServices.java
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/snapshot/TestSnapshotBackgroundServices.java
index 1f12697d669..a67a4599bee 100644
---
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/snapshot/TestSnapshotBackgroundServices.java
+++
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/snapshot/TestSnapshotBackgroundServices.java
@@ -49,7 +49,6 @@
import org.apache.hadoop.hdds.utils.TransactionInfo;
import org.apache.hadoop.hdds.utils.db.RDBCheckpointUtils;
import org.apache.hadoop.hdds.utils.db.Table;
-import org.apache.hadoop.hdds.utils.db.TableIterator;
import org.apache.hadoop.hdfs.protocol.SnapshotDiffReport;
import org.apache.hadoop.ozone.MiniOzoneCluster;
import org.apache.hadoop.ozone.MiniOzoneHAClusterImpl;
@@ -308,7 +307,7 @@ public void testSnapshotAndKeyDeletionBackgroundServices()
}
private static <V> boolean isKeyInTable(String key, Table<String, V> table) {
- try (TableIterator<String, ? extends Table.KeyValue<String, V>> iterator
+ try (Table.KeyValueIterator<String, V> iterator
= table.iterator()) {
while (iterator.hasNext()) {
Table.KeyValue<String, V> next = iterator.next();
@@ -429,8 +428,7 @@ public void testCompactionLogBackgroundService()
private List<CompactionLogEntry> getCompactionLogEntries(OzoneManager om)
throws IOException {
List<CompactionLogEntry> compactionLogEntries = new ArrayList<>();
- try (TableIterator<String,
- ? extends Table.KeyValue<String, CompactionLogEntry>>
+ try (Table.KeyValueIterator<String, CompactionLogEntry>
iterator = om.getMetadataManager().getCompactionLogTable()
.iterator()) {
iterator.seekToFirst();
diff --git
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/snapshot/TestSnapshotDirectoryCleaningService.java
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/snapshot/TestSnapshotDirectoryCleaningService.java
index 80a88871590..1e7981dbec7 100644
---
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/snapshot/TestSnapshotDirectoryCleaningService.java
+++
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/om/snapshot/TestSnapshotDirectoryCleaningService.java
@@ -38,7 +38,6 @@
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
import org.apache.hadoop.hdds.utils.IOUtils;
import org.apache.hadoop.hdds.utils.db.Table;
-import org.apache.hadoop.hdds.utils.db.TableIterator;
import org.apache.hadoop.ozone.MiniOzoneCluster;
import org.apache.hadoop.ozone.OzoneConsts;
import org.apache.hadoop.ozone.TestDataUtil;
@@ -238,7 +237,7 @@ public void testExclusiveSizeWithDirectoryDeepClean()
throws Exception {
put("snap3", 0L);
}};
- try (TableIterator<String, ? extends Table.KeyValue<String, SnapshotInfo>>
+ try (Table.KeyValueIterator<String, SnapshotInfo>
iterator = snapshotInfoTable.iterator()) {
while (iterator.hasNext()) {
Table.KeyValue<String, SnapshotInfo> snapshotEntry = iterator.next();
diff --git
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/repair/om/TestFSORepairTool.java
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/repair/om/TestFSORepairTool.java
index ebbda458f3d..3950add5b10 100644
---
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/repair/om/TestFSORepairTool.java
+++
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/repair/om/TestFSORepairTool.java
@@ -39,7 +39,6 @@
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
import org.apache.hadoop.hdds.utils.IOUtils;
import org.apache.hadoop.hdds.utils.db.Table;
-import org.apache.hadoop.hdds.utils.db.TableIterator;
import org.apache.hadoop.ozone.MiniOzoneCluster;
import org.apache.hadoop.ozone.client.BucketArgs;
import org.apache.hadoop.ozone.client.ObjectStore;
@@ -355,7 +354,7 @@ private int execute(boolean dryRun, String... args) {
private <K, V> int countTableEntries(Table<K, V> table) throws Exception {
int count = 0;
- try (TableIterator<K, ? extends Table.KeyValue<K, V>> iterator =
table.iterator()) {
+ try (Table.KeyValueIterator<K, V> iterator = table.iterator()) {
while (iterator.hasNext()) {
iterator.next();
count++;
@@ -497,7 +496,7 @@ private static FSORepairTool.Report
buildDisconnectedTree(String volume, String
private static void disconnectDirectory(String dirName) throws Exception {
Table<String, OmDirectoryInfo> dirTable =
cluster.getOzoneManager().getMetadataManager().getDirectoryTable();
- try (TableIterator<String, ? extends Table.KeyValue<String,
OmDirectoryInfo>> iterator = dirTable.iterator()) {
+ try (Table.KeyValueIterator<String, OmDirectoryInfo> iterator =
dirTable.iterator()) {
while (iterator.hasNext()) {
Table.KeyValue<String, OmDirectoryInfo> entry = iterator.next();
String key = entry.getKey();
diff --git
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/snapshot/TestOMSnapshotSetPropertyRequestAndResponse.java
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/snapshot/TestOMSnapshotSetPropertyRequestAndResponse.java
index 50d5417c3f2..e9934404650 100644
---
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/snapshot/TestOMSnapshotSetPropertyRequestAndResponse.java
+++
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/request/snapshot/TestOMSnapshotSetPropertyRequestAndResponse.java
@@ -29,7 +29,6 @@
import java.util.List;
import java.util.UUID;
import org.apache.hadoop.hdds.utils.db.Table;
-import org.apache.hadoop.hdds.utils.db.TableIterator;
import org.apache.hadoop.hdds.utils.db.cache.CacheKey;
import org.apache.hadoop.hdds.utils.db.cache.CacheValue;
import org.apache.hadoop.ozone.om.OmMetadataManagerImpl;
@@ -94,7 +93,7 @@ public void testValidateAndUpdateCache() throws IOException {
getOmSnapshotIntMetrics().getNumSnapshotSetProperties());
assertEquals(initialSnapshotSetPropertyFailCount,
getOmSnapshotIntMetrics().getNumSnapshotSetPropertyFails());
// Check if the exclusive size is set.
- try (TableIterator<String, ? extends Table.KeyValue<String, SnapshotInfo>>
+ try (Table.KeyValueIterator<String, SnapshotInfo>
iterator =
getOmMetadataManager().getSnapshotInfoTable().iterator()) {
while (iterator.hasNext()) {
Table.KeyValue<String, SnapshotInfo> snapshotEntry = iterator.next();
@@ -155,7 +154,7 @@ private void assertCacheValues(String dbKey) {
private List<OMRequest> createSnapshotUpdateSizeRequest()
throws IOException {
List<OMRequest> omRequests = new ArrayList<>();
- try (TableIterator<String, ? extends Table.KeyValue<String, SnapshotInfo>>
+ try (Table.KeyValueIterator<String, SnapshotInfo>
iterator =
getOmMetadataManager().getSnapshotInfoTable().iterator()) {
while (iterator.hasNext()) {
String snapDbKey = iterator.next().getKey();
diff --git
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/snapshot/TestOMSnapshotCreateResponse.java
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/snapshot/TestOMSnapshotCreateResponse.java
index 031e6656b4b..72a5efb5e09 100644
---
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/snapshot/TestOMSnapshotCreateResponse.java
+++
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/snapshot/TestOMSnapshotCreateResponse.java
@@ -34,7 +34,6 @@
import org.apache.hadoop.hdds.utils.TransactionInfo;
import org.apache.hadoop.hdds.utils.db.BatchOperation;
import org.apache.hadoop.hdds.utils.db.Table;
-import org.apache.hadoop.hdds.utils.db.TableIterator;
import org.apache.hadoop.ozone.om.OMConfigKeys;
import org.apache.hadoop.ozone.om.OMMetadataManager;
import org.apache.hadoop.ozone.om.OmMetadataManagerImpl;
@@ -126,7 +125,7 @@ public void testAddToDBBatch(int numberOfKeys) throws
Exception {
// Check contents of entry
SnapshotInfo storedInfo;
- try (TableIterator<String, ? extends Table.KeyValue<String, SnapshotInfo>>
+ try (Table.KeyValueIterator<String, SnapshotInfo>
it = omMetadataManager.getSnapshotInfoTable().iterator()) {
Table.KeyValue<String, SnapshotInfo> keyValue = it.next();
storedInfo = keyValue.getValue();
@@ -260,7 +259,7 @@ private void verifyEntriesLeftInDeletedDirTable(Set<String>
expectedKeys)
private void verifyEntriesLeftInTable(
Table<String, ?> table, Set<String> expectedKeys) throws IOException {
- try (TableIterator<String, ? extends Table.KeyValue<String, ?>>
+ try (Table.KeyValueIterator<String, ?>
keyIter = table.iterator()) {
keyIter.seekToFirst();
while (keyIter.hasNext()) {
diff --git
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/snapshot/TestOMSnapshotDeleteResponse.java
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/snapshot/TestOMSnapshotDeleteResponse.java
index 4ff8dac375f..92fc9c0a372 100644
---
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/snapshot/TestOMSnapshotDeleteResponse.java
+++
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/response/snapshot/TestOMSnapshotDeleteResponse.java
@@ -28,8 +28,6 @@
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
import org.apache.hadoop.hdds.utils.db.BatchOperation;
import org.apache.hadoop.hdds.utils.db.Table;
-import org.apache.hadoop.hdds.utils.db.Table.KeyValue;
-import org.apache.hadoop.hdds.utils.db.TableIterator;
import org.apache.hadoop.ozone.om.OMConfigKeys;
import org.apache.hadoop.ozone.om.OMMetadataManager;
import org.apache.hadoop.ozone.om.OmMetadataManagerImpl;
@@ -116,7 +114,7 @@ public void testAddToDBBatch() throws Exception {
assertEquals(1, omMetadataManager
.countRowsInTable(omMetadataManager.getSnapshotInfoTable()));
- try (TableIterator<String, ? extends KeyValue<String, SnapshotInfo>> iter =
+ try (Table.KeyValueIterator<String, SnapshotInfo> iter =
omMetadataManager.getSnapshotInfoTable().iterator()) {
// Check snapshotInfo entry content
Table.KeyValue<String, SnapshotInfo> keyValue = iter.next();
@@ -146,7 +144,7 @@ public void testAddToDBBatch() throws Exception {
assertEquals(1, omMetadataManager
.countRowsInTable(omMetadataManager.getSnapshotInfoTable()));
- try (TableIterator<String, ? extends KeyValue<String, SnapshotInfo>> iter =
+ try (Table.KeyValueIterator<String, SnapshotInfo> iter =
omMetadataManager.getSnapshotInfoTable().iterator()) {
// 2. snapshot status should now be DELETED
Table.KeyValue<String, SnapshotInfo> keyValue = iter.next();
diff --git
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/service/TestKeyDeletingService.java
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/service/TestKeyDeletingService.java
index 674c78d16ae..bbb2938b186 100644
---
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/service/TestKeyDeletingService.java
+++
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/service/TestKeyDeletingService.java
@@ -70,7 +70,6 @@
import org.apache.hadoop.hdds.utils.BackgroundTaskQueue;
import org.apache.hadoop.hdds.utils.db.DBConfigFromFile;
import org.apache.hadoop.hdds.utils.db.Table;
-import org.apache.hadoop.hdds.utils.db.TableIterator;
import org.apache.hadoop.ozone.common.BlockGroup;
import org.apache.hadoop.ozone.om.KeyManager;
import org.apache.hadoop.ozone.om.KeyManagerImpl;
@@ -484,7 +483,7 @@ public void testRenamedKeyReclaimation(boolean
testForSnapshot)
assertTableRowCount(snapshotRenamedTable, initialRenamedCount + 2,
metadataManager);
keyDeletingService.resume();
assertTableRowCount(snapshotRenamedTable, initialRenamedCount + 1,
metadataManager);
- try (TableIterator<String, ? extends Table.KeyValue<String, String>>
itr = snapshotRenamedTable.iterator()) {
+ try (Table.KeyValueIterator<String, String> itr =
snapshotRenamedTable.iterator()) {
itr.forEachRemaining(entry -> {
String[] val = metadataManager.splitRenameKey(entry.getKey());
Assertions.assertEquals(Long.valueOf(val[2]),
keyInfo.getObjectID());
@@ -734,7 +733,7 @@ void testSnapshotExclusiveSize() throws Exception {
100, 100000);
// Check if the exclusive size is set.
om.awaitDoubleBufferFlush();
- try (TableIterator<String, ? extends Table.KeyValue<String,
SnapshotInfo>>
+ try (Table.KeyValueIterator<String, SnapshotInfo>
iterator = snapshotInfoTable.iterator()) {
while (iterator.hasNext()) {
Table.KeyValue<String, SnapshotInfo> snapshotEntry = iterator.next();
@@ -902,7 +901,7 @@ private void createAndDeleteKeys(int keyCount, int
numBlocks) throws IOException
private static void checkSnapDeepCleanStatus(Table<String, SnapshotInfo>
table, String volumeName, boolean deepClean)
throws IOException {
- try (TableIterator<String, ? extends Table.KeyValue<String, SnapshotInfo>>
iterator = table.iterator()) {
+ try (Table.KeyValueIterator<String, SnapshotInfo> iterator =
table.iterator()) {
while (iterator.hasNext()) {
SnapshotInfo snapInfo = iterator.next().getValue();
if (volumeName.equals(snapInfo.getVolumeName())) {
diff --git
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/service/TestOpenKeyCleanupService.java
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/service/TestOpenKeyCleanupService.java
index 4de4197fe09..4adfeb27d00 100644
---
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/service/TestOpenKeyCleanupService.java
+++
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/service/TestOpenKeyCleanupService.java
@@ -48,7 +48,6 @@
import org.apache.hadoop.hdds.server.ServerUtils;
import org.apache.hadoop.hdds.utils.db.DBConfigFromFile;
import org.apache.hadoop.hdds.utils.db.Table;
-import org.apache.hadoop.hdds.utils.db.TableIterator;
import org.apache.hadoop.ozone.OzoneConfigKeys;
import org.apache.hadoop.ozone.OzoneConsts;
import org.apache.hadoop.ozone.om.ExpiredOpenKeys;
@@ -444,7 +443,7 @@ private List<OmKeyInfo> getKeyInfo(BucketLayout
bucketLayout, boolean openKey) {
} else {
fileTable = om.getMetadataManager().getKeyTable(bucketLayout);
}
- try (TableIterator<String, ? extends Table.KeyValue<String, OmKeyInfo>>
+ try (Table.KeyValueIterator<String, OmKeyInfo>
iterator = fileTable.iterator()) {
while (iterator.hasNext()) {
omKeyInfo.add(iterator.next().getValue());
diff --git
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/snapshot/TestFSODirectoryPathResolver.java
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/snapshot/TestFSODirectoryPathResolver.java
index 4fbee30ab02..ec6b9909d35 100644
---
a/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/snapshot/TestFSODirectoryPathResolver.java
+++
b/hadoop-ozone/ozone-manager/src/test/java/org/apache/hadoop/ozone/om/snapshot/TestFSODirectoryPathResolver.java
@@ -37,7 +37,6 @@
import java.util.Optional;
import java.util.Set;
import org.apache.hadoop.hdds.utils.db.Table;
-import org.apache.hadoop.hdds.utils.db.TableIterator;
import org.apache.hadoop.ozone.om.helpers.OmDirectoryInfo;
import org.junit.jupiter.api.Test;
@@ -60,8 +59,7 @@ private Table<String, OmDirectoryInfo>
getMockedDirectoryInfoTable(
.map(children -> Table.newKeyValue(prefix + children +
OM_KEY_PREFIX + "dir" + children,
OmDirectoryInfo.newBuilder().setName("dir" +
children).setObjectID(children).build()))
.iterator();
- return new TableIterator<String,
- Table.KeyValue<String, OmDirectoryInfo>>() {
+ return new Table.KeyValueIterator<String, OmDirectoryInfo>() {
@Override
public boolean hasNext() {
diff --git
a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/spi/ReconContainerMetadataManager.java
b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/spi/ReconContainerMetadataManager.java
index 61631fa7333..286c1596fa4 100644
---
a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/spi/ReconContainerMetadataManager.java
+++
b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/spi/ReconContainerMetadataManager.java
@@ -210,12 +210,6 @@ void batchDeleteContainerMapping(BatchOperation batch,
ContainerKeyPrefix containerKeyPrefix)
throws IOException;
- /**
- * Get iterator to the entire container DB.
- * @return TableIterator
- */
- TableIterator getContainerTableIterator() throws IOException;
-
/**
* Get the total count of containers present in the system.
*
diff --git
a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/spi/impl/ReconContainerMetadataManagerImpl.java
b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/spi/impl/ReconContainerMetadataManagerImpl.java
index 771e4372ad8..ec814bc7e04 100644
---
a/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/spi/impl/ReconContainerMetadataManagerImpl.java
+++
b/hadoop-ozone/recon/src/main/java/org/apache/hadoop/ozone/recon/spi/impl/ReconContainerMetadataManagerImpl.java
@@ -567,9 +567,8 @@ public long getCountForContainers() {
containerCountRecord.getValue();
}
- @Override
- public TableIterator getContainerTableIterator() throws IOException {
- return containerKeyTable.iterator();
+ public Table<ContainerKeyPrefix, Integer> getContainerKeyTableForTesting() {
+ return containerKeyTable;
}
@Override
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]