This is an automated email from the ASF dual-hosted git repository.
sammichen pushed a commit to branch HDDS-5713
in repository https://gitbox.apache.org/repos/asf/ozone.git
The following commit(s) were added to refs/heads/HDDS-5713 by this push:
new 64fa9380217 HDDS-14164. Remove DatanodeDiskBalancerInfoType. (#9492)
64fa9380217 is described below
commit 64fa9380217ed9e579f87a58d46a492359dbe9a0
Author: Tsz-Wo Nicholas Sze <[email protected]>
AuthorDate: Sun Dec 14 22:34:10 2025 -0800
HDDS-14164. Remove DatanodeDiskBalancerInfoType. (#9492)
---
.../diskbalancer/DiskBalancerProtocolServer.java | 53 +++++++++-------------
.../TestDiskBalancerProtocolServer.java | 13 ++----
.../hadoop/hdds/protocol/DiskBalancerProtocol.java | 23 +++++-----
...DiskBalancerProtocolClientSideTranslatorPB.java | 17 +------
...DiskBalancerProtocolServerSideTranslatorPB.java | 5 +-
.../src/main/proto/DiskBalancerProtocol.proto | 11 +----
.../cli/datanode/DiskBalancerReportSubcommand.java | 9 +---
.../cli/datanode/DiskBalancerStatusSubcommand.java | 7 +--
.../cli/datanode/TestDiskBalancerSubCommands.java | 30 ++++--------
.../scm/node/TestContainerChoosingPolicy.java | 2 +
.../hadoop/ozone/scm/node/TestDiskBalancer.java | 26 ++++-------
...skBalancerDuringDecommissionAndMaintenance.java | 41 ++++++-----------
12 files changed, 77 insertions(+), 160 deletions(-)
diff --git
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/diskbalancer/DiskBalancerProtocolServer.java
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/diskbalancer/DiskBalancerProtocolServer.java
index 977c2bd2a5b..b92391dc8b9 100644
---
a/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/diskbalancer/DiskBalancerProtocolServer.java
+++
b/hadoop-hdds/container-service/src/main/java/org/apache/hadoop/ozone/container/diskbalancer/DiskBalancerProtocolServer.java
@@ -22,7 +22,7 @@
import java.util.Objects;
import org.apache.hadoop.hdds.protocol.DatanodeDetails;
import org.apache.hadoop.hdds.protocol.DiskBalancerProtocol;
-import
org.apache.hadoop.hdds.protocol.proto.DiskBalancerProtocolProtos.DatanodeDiskBalancerInfoType;
+import
org.apache.hadoop.hdds.protocol.proto.DiskBalancerProtocolProtos.GetDiskBalancerInfoRequestProto;
import
org.apache.hadoop.hdds.protocol.proto.HddsProtos.DatanodeDiskBalancerInfoProto;
import
org.apache.hadoop.hdds.protocol.proto.HddsProtos.DiskBalancerConfigurationProto;
import
org.apache.hadoop.hdds.protocol.proto.HddsProtos.DiskBalancerRunningStatus;
@@ -64,43 +64,32 @@ public DiskBalancerProtocolServer(DatanodeStateMachine
datanodeStateMachine,
}
@Override
- public DatanodeDiskBalancerInfoProto getDiskBalancerInfo(
- DatanodeDiskBalancerInfoType infoType, int clientVersion) throws
IOException {
+ public DatanodeDiskBalancerInfoProto
getDiskBalancerInfo(GetDiskBalancerInfoRequestProto request) throws IOException
{
// No admin check - both report and status are read-only
- DiskBalancerInfo info = getDiskBalancerInfo();
+ final DiskBalancerInfo info = getDiskBalancerInfoImpl();
DatanodeDetails datanodeDetails =
datanodeStateMachine.getDatanodeDetails();
- DatanodeDiskBalancerInfoProto.Builder builder =
- DatanodeDiskBalancerInfoProto.newBuilder()
- .setNode(datanodeDetails.toProto(clientVersion))
- .setCurrentVolumeDensitySum(info.getVolumeDataDensity());
-
- // For STATUS, include additional details
- if (infoType == DatanodeDiskBalancerInfoType.STATUS) {
- // Build configuration proto
- DiskBalancerConfigurationProto.Builder confBuilder =
- DiskBalancerConfigurationProto.newBuilder()
- .setThreshold(info.getThreshold())
- .setDiskBandwidthInMB(info.getBandwidthInMB())
- .setParallelThread(info.getParallelThread())
- .setStopAfterDiskEven(info.isStopAfterDiskEven());
-
- builder.setDiskBalancerConf(confBuilder.build())
- .setSuccessMoveCount(info.getSuccessCount())
- .setFailureMoveCount(info.getFailureCount())
- .setBytesToMove(info.getBytesToMove())
- .setBytesMoved(info.getBalancedBytes())
- .setRunningStatus(info.getOperationalState());
- }
-
- return builder.build();
+ return DatanodeDiskBalancerInfoProto.newBuilder()
+ .setNode(datanodeDetails.toProto(request.getClientVersion()))
+ .setCurrentVolumeDensitySum(info.getVolumeDataDensity())
+ .setDiskBalancerConf(DiskBalancerConfigurationProto.newBuilder()
+ .setThreshold(info.getThreshold())
+ .setDiskBandwidthInMB(info.getBandwidthInMB())
+ .setParallelThread(info.getParallelThread())
+ .setStopAfterDiskEven(info.isStopAfterDiskEven()))
+ .setSuccessMoveCount(info.getSuccessCount())
+ .setFailureMoveCount(info.getFailureCount())
+ .setBytesToMove(info.getBytesToMove())
+ .setBytesMoved(info.getBalancedBytes())
+ .setRunningStatus(info.getOperationalState())
+ .build();
}
@Override
public void startDiskBalancer(DiskBalancerConfigurationProto configProto)
throws IOException {
adminChecker.check("startDiskBalancer");
- DiskBalancerInfo info = getDiskBalancerInfo();
+ final DiskBalancerInfo info = getDiskBalancerInfoImpl();
// Check node operational state before starting DiskBalancer
// Only IN_SERVICE nodes should actively balance disks
@@ -132,7 +121,7 @@ public void
startDiskBalancer(DiskBalancerConfigurationProto configProto)
@Override
public void stopDiskBalancer() throws IOException {
adminChecker.check("stopDiskBalancer");
- DiskBalancerInfo info = getDiskBalancerInfo();
+ final DiskBalancerInfo info = getDiskBalancerInfoImpl();
LOG.info("DiskBalancer opType : STOP");
info.setOperationalState(DiskBalancerRunningStatus.STOPPED);
refreshService(info);
@@ -142,7 +131,7 @@ public void stopDiskBalancer() throws IOException {
public void updateDiskBalancerConfiguration(@Nonnull
DiskBalancerConfigurationProto configProto)
throws IOException {
adminChecker.check("updateDiskBalancerConfiguration");
- DiskBalancerInfo info = getDiskBalancerInfo();
+ final DiskBalancerInfo info = getDiskBalancerInfoImpl();
// only update fields present in configProto
DiskBalancerConfiguration currentConfig = info.toConfiguration();
@@ -152,7 +141,7 @@ public void updateDiskBalancerConfiguration(@Nonnull
DiskBalancerConfigurationPr
refreshService(info);
}
- private DiskBalancerInfo getDiskBalancerInfo() throws IOException {
+ private DiskBalancerInfo getDiskBalancerInfoImpl() throws IOException {
OzoneContainer container = datanodeStateMachine.getContainer();
if (container.getDiskBalancerService() == null) {
throw new IOException("DiskBalancer service is disabled on this
datanode");
diff --git
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/diskbalancer/TestDiskBalancerProtocolServer.java
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/diskbalancer/TestDiskBalancerProtocolServer.java
index 8d2f2c2a28e..361f5cce051 100644
---
a/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/diskbalancer/TestDiskBalancerProtocolServer.java
+++
b/hadoop-hdds/container-service/src/test/java/org/apache/hadoop/ozone/container/diskbalancer/TestDiskBalancerProtocolServer.java
@@ -30,7 +30,7 @@
import java.io.IOException;
import java.util.UUID;
import org.apache.hadoop.hdds.protocol.DatanodeDetails;
-import
org.apache.hadoop.hdds.protocol.proto.DiskBalancerProtocolProtos.DatanodeDiskBalancerInfoType;
+import
org.apache.hadoop.hdds.protocol.proto.DiskBalancerProtocolProtos.GetDiskBalancerInfoRequestProto;
import
org.apache.hadoop.hdds.protocol.proto.HddsProtos.DatanodeDiskBalancerInfoProto;
import
org.apache.hadoop.hdds.protocol.proto.HddsProtos.DiskBalancerConfigurationProto;
import
org.apache.hadoop.hdds.protocol.proto.HddsProtos.DiskBalancerRunningStatus;
@@ -44,8 +44,8 @@
* Unit tests for {@link DiskBalancerProtocolServer}.
*/
class TestDiskBalancerProtocolServer {
-
- private static final int CLIENT_VERSION = 1;
+ private static final GetDiskBalancerInfoRequestProto
REQUEST_WITH_OLD_CLIENT_VERSION
+ =
GetDiskBalancerInfoRequestProto.newBuilder().setClientVersion(1).build();
private static final double TEST_THRESHOLD = 10.0;
private static final long TEST_BANDWIDTH = 20L;
private static final int TEST_THREADS = 5;
@@ -103,8 +103,7 @@ void setup() throws IOException {
@Test
void testGetDiskBalancerInfoReport() throws IOException {
// Test REPORT type - should only return volume density
- DatanodeDiskBalancerInfoProto report = server.getDiskBalancerInfo(
- DatanodeDiskBalancerInfoType.REPORT, CLIENT_VERSION);
+ DatanodeDiskBalancerInfoProto report =
server.getDiskBalancerInfo(REQUEST_WITH_OLD_CLIENT_VERSION);
assertNotNull(report);
assertNotNull(report.getNode());
@@ -121,9 +120,7 @@ void testGetDiskBalancerInfoStatus() throws IOException {
diskBalancerInfo.setBalancedBytes(500000);
// Test STATUS type - should return full status information
- DatanodeDiskBalancerInfoProto status = server.getDiskBalancerInfo(
- DatanodeDiskBalancerInfoType.STATUS, CLIENT_VERSION);
-
+ DatanodeDiskBalancerInfoProto status =
server.getDiskBalancerInfo(REQUEST_WITH_OLD_CLIENT_VERSION);
assertNotNull(status);
assertNotNull(status.getNode());
assertEquals(DiskBalancerRunningStatus.RUNNING, status.getRunningStatus());
diff --git
a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/protocol/DiskBalancerProtocol.java
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/protocol/DiskBalancerProtocol.java
index bd75285f15e..b3efb18a616 100644
---
a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/protocol/DiskBalancerProtocol.java
+++
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/protocol/DiskBalancerProtocol.java
@@ -22,9 +22,11 @@
import java.io.IOException;
import org.apache.hadoop.hdds.annotation.InterfaceAudience;
import org.apache.hadoop.hdds.annotation.InterfaceStability;
-import
org.apache.hadoop.hdds.protocol.proto.DiskBalancerProtocolProtos.DatanodeDiskBalancerInfoType;
+import
org.apache.hadoop.hdds.protocol.proto.DiskBalancerProtocolProtos.GetDiskBalancerInfoRequestProto;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
+import
org.apache.hadoop.hdds.protocol.proto.HddsProtos.DatanodeDiskBalancerInfoProto;
import org.apache.hadoop.io.retry.Idempotent;
+import org.apache.hadoop.ozone.ClientVersion;
/**
* Client-to-datanode RPC protocol for administering DiskBalancer.
@@ -35,23 +37,22 @@ public interface DiskBalancerProtocol extends Closeable {
long VERSIONID = 1L;
+ GetDiskBalancerInfoRequestProto DEFAULT_GET_DISK_BALANCER_INFO_REQUEST
+ =
GetDiskBalancerInfoRequestProto.newBuilder().setClientVersion(ClientVersion.CURRENT_VERSION).build();
+
+ @Idempotent
+ default DatanodeDiskBalancerInfoProto getDiskBalancerInfo() throws
IOException {
+ return getDiskBalancerInfo(DEFAULT_GET_DISK_BALANCER_INFO_REQUEST);
+ }
+
/**
* Get DiskBalancer information for a datanode.
*
- * <p>The type of information returned depends on the infoType parameter:
- * <ul>
- * <li>{@link DatanodeDiskBalancerInfoType#REPORT} - Returns volume
density (lightweight)</li>
- * <li>{@link DatanodeDiskBalancerInfoType#STATUS} - Returns detailed
status with counters</li>
- * </ul>
- *
- * @param infoType type of information to retrieve (REPORT or STATUS)
- * @param clientVersion protocol client version
* @return DiskBalancer information for the datanode
* @throws IOException on RPC or serialization errors
*/
@Idempotent
- HddsProtos.DatanodeDiskBalancerInfoProto getDiskBalancerInfo(
- DatanodeDiskBalancerInfoType infoType, int clientVersion) throws
IOException;
+ DatanodeDiskBalancerInfoProto
getDiskBalancerInfo(GetDiskBalancerInfoRequestProto request) throws IOException;
/**
* Start DiskBalancer on the datanode using the provided configuration. When
diff --git
a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/protocolPB/DiskBalancerProtocolClientSideTranslatorPB.java
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/protocolPB/DiskBalancerProtocolClientSideTranslatorPB.java
index 475cf3b08f9..b7d4c2f7839 100644
---
a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/protocolPB/DiskBalancerProtocolClientSideTranslatorPB.java
+++
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/protocolPB/DiskBalancerProtocolClientSideTranslatorPB.java
@@ -28,7 +28,6 @@
import org.apache.hadoop.hdds.annotation.InterfaceStability;
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
import org.apache.hadoop.hdds.protocol.DiskBalancerProtocol;
-import
org.apache.hadoop.hdds.protocol.proto.DiskBalancerProtocolProtos.DatanodeDiskBalancerInfoType;
import
org.apache.hadoop.hdds.protocol.proto.DiskBalancerProtocolProtos.GetDiskBalancerInfoRequestProto;
import
org.apache.hadoop.hdds.protocol.proto.DiskBalancerProtocolProtos.GetDiskBalancerInfoResponseProto;
import
org.apache.hadoop.hdds.protocol.proto.DiskBalancerProtocolProtos.StartDiskBalancerRequestProto;
@@ -91,22 +90,8 @@ static DiskBalancerProtocolPB
createDiskBalancerProtocolProxy(InetSocketAddress
hadoopConf, NetUtils.getDefaultSocketFactory(hadoopConf)).getProxy();
}
- /**
- * Gets DiskBalancer information from the datanode.
- *
- * @param infoType type of information (REPORT for volume density, STATUS
for detailed info)
- * @param clientVersion the client protocol version for compatibility
- * @return DiskBalancer information based on the requested type
- * @throws IOException if the RPC call fails or is denied
- */
@Override
- public DatanodeDiskBalancerInfoProto getDiskBalancerInfo(
- DatanodeDiskBalancerInfoType infoType, int clientVersion) throws
IOException {
- GetDiskBalancerInfoRequestProto request =
- GetDiskBalancerInfoRequestProto.newBuilder()
- .setInfoType(infoType)
- .setClientVersion(clientVersion)
- .build();
+ public DatanodeDiskBalancerInfoProto
getDiskBalancerInfo(GetDiskBalancerInfoRequestProto request) throws IOException
{
try {
GetDiskBalancerInfoResponseProto response =
rpcProxy.getDiskBalancerInfo(NULL_CONTROLLER, request);
diff --git
a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/protocolPB/DiskBalancerProtocolServerSideTranslatorPB.java
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/protocolPB/DiskBalancerProtocolServerSideTranslatorPB.java
index 0f0e6a99626..b5cb2898066 100644
---
a/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/protocolPB/DiskBalancerProtocolServerSideTranslatorPB.java
+++
b/hadoop-hdds/framework/src/main/java/org/apache/hadoop/hdds/protocolPB/DiskBalancerProtocolServerSideTranslatorPB.java
@@ -29,7 +29,6 @@
import
org.apache.hadoop.hdds.protocol.proto.DiskBalancerProtocolProtos.StopDiskBalancerResponseProto;
import
org.apache.hadoop.hdds.protocol.proto.DiskBalancerProtocolProtos.UpdateDiskBalancerConfigurationRequestProto;
import
org.apache.hadoop.hdds.protocol.proto.DiskBalancerProtocolProtos.UpdateDiskBalancerConfigurationResponseProto;
-import
org.apache.hadoop.hdds.protocol.proto.HddsProtos.DatanodeDiskBalancerInfoProto;
import
org.apache.hadoop.hdds.protocol.proto.HddsProtos.DiskBalancerConfigurationProto;
/**
@@ -48,10 +47,8 @@ public
DiskBalancerProtocolServerSideTranslatorPB(DiskBalancerProtocol impl) {
public GetDiskBalancerInfoResponseProto getDiskBalancerInfo(RpcController
controller,
GetDiskBalancerInfoRequestProto request) throws ServiceException {
try {
- DatanodeDiskBalancerInfoProto info =
- impl.getDiskBalancerInfo(request.getInfoType(),
request.getClientVersion());
return GetDiskBalancerInfoResponseProto.newBuilder()
- .setInfo(info)
+ .setInfo(impl.getDiskBalancerInfo(request))
.build();
} catch (IOException ex) {
throw new ServiceException(ex);
diff --git
a/hadoop-hdds/interface-client/src/main/proto/DiskBalancerProtocol.proto
b/hadoop-hdds/interface-client/src/main/proto/DiskBalancerProtocol.proto
index b43399b30cb..c63ac11cfc2 100644
--- a/hadoop-hdds/interface-client/src/main/proto/DiskBalancerProtocol.proto
+++ b/hadoop-hdds/interface-client/src/main/proto/DiskBalancerProtocol.proto
@@ -30,20 +30,11 @@ package hadoop.hdds;
import "hdds.proto";
-/**
- * Type of DiskBalancer information to retrieve.
- */
-enum DatanodeDiskBalancerInfoType {
- REPORT = 1; // Volume density report (lightweight)
- STATUS = 2; // Detailed status with counters and config
-}
-
/**
* Request for DiskBalancer information (report or status).
*/
message GetDiskBalancerInfoRequestProto {
- required DatanodeDiskBalancerInfoType infoType = 1;
- required uint32 clientVersion = 2;
+ required uint32 clientVersion = 1;
}
/**
diff --git
a/hadoop-ozone/cli-admin/src/main/java/org/apache/hadoop/hdds/scm/cli/datanode/DiskBalancerReportSubcommand.java
b/hadoop-ozone/cli-admin/src/main/java/org/apache/hadoop/hdds/scm/cli/datanode/DiskBalancerReportSubcommand.java
index 9cc2484c4a7..9f1d5347860 100644
---
a/hadoop-ozone/cli-admin/src/main/java/org/apache/hadoop/hdds/scm/cli/datanode/DiskBalancerReportSubcommand.java
+++
b/hadoop-ozone/cli-admin/src/main/java/org/apache/hadoop/hdds/scm/cli/datanode/DiskBalancerReportSubcommand.java
@@ -25,10 +25,8 @@
import java.util.concurrent.ConcurrentHashMap;
import org.apache.hadoop.hdds.cli.HddsVersionProvider;
import org.apache.hadoop.hdds.protocol.DiskBalancerProtocol;
-import
org.apache.hadoop.hdds.protocol.proto.DiskBalancerProtocolProtos.DatanodeDiskBalancerInfoType;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
import
org.apache.hadoop.hdds.protocol.proto.HddsProtos.DatanodeDiskBalancerInfoProto;
-import org.apache.hadoop.ozone.ClientVersion;
import picocli.CommandLine.Command;
/**
@@ -50,11 +48,8 @@ protected Object executeCommand(String hostName) throws
IOException {
DiskBalancerProtocol diskBalancerProxy = DiskBalancerSubCommandUtil
.getSingleNodeDiskBalancerProxy(hostName);
try {
- HddsProtos.DatanodeDiskBalancerInfoProto report =
- diskBalancerProxy.getDiskBalancerInfo(
- DatanodeDiskBalancerInfoType.REPORT,
- ClientVersion.CURRENT_VERSION);
-
+ final DatanodeDiskBalancerInfoProto report =
diskBalancerProxy.getDiskBalancerInfo();
+
// Only create JSON result object if JSON mode is enabled
if (getOptions().isJson()) {
return createReportResult(report);
diff --git
a/hadoop-ozone/cli-admin/src/main/java/org/apache/hadoop/hdds/scm/cli/datanode/DiskBalancerStatusSubcommand.java
b/hadoop-ozone/cli-admin/src/main/java/org/apache/hadoop/hdds/scm/cli/datanode/DiskBalancerStatusSubcommand.java
index 1bcc62e512e..2c097da4d75 100644
---
a/hadoop-ozone/cli-admin/src/main/java/org/apache/hadoop/hdds/scm/cli/datanode/DiskBalancerStatusSubcommand.java
+++
b/hadoop-ozone/cli-admin/src/main/java/org/apache/hadoop/hdds/scm/cli/datanode/DiskBalancerStatusSubcommand.java
@@ -25,10 +25,8 @@
import java.util.concurrent.ConcurrentHashMap;
import org.apache.hadoop.hdds.cli.HddsVersionProvider;
import org.apache.hadoop.hdds.protocol.DiskBalancerProtocol;
-import
org.apache.hadoop.hdds.protocol.proto.DiskBalancerProtocolProtos.DatanodeDiskBalancerInfoType;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
import
org.apache.hadoop.hdds.protocol.proto.HddsProtos.DatanodeDiskBalancerInfoProto;
-import org.apache.hadoop.ozone.ClientVersion;
import picocli.CommandLine.Command;
/**
@@ -50,10 +48,7 @@ protected Object executeCommand(String hostName) throws
IOException {
DiskBalancerProtocol diskBalancerProxy = DiskBalancerSubCommandUtil
.getSingleNodeDiskBalancerProxy(hostName);
try {
- DatanodeDiskBalancerInfoProto status =
- diskBalancerProxy.getDiskBalancerInfo(
- DatanodeDiskBalancerInfoType.STATUS,
- ClientVersion.CURRENT_VERSION);
+ final DatanodeDiskBalancerInfoProto status =
diskBalancerProxy.getDiskBalancerInfo();
// Only create JSON result object if JSON mode is enabled
if (getOptions().isJson()) {
diff --git
a/hadoop-ozone/cli-admin/src/test/java/org/apache/hadoop/hdds/scm/cli/datanode/TestDiskBalancerSubCommands.java
b/hadoop-ozone/cli-admin/src/test/java/org/apache/hadoop/hdds/scm/cli/datanode/TestDiskBalancerSubCommands.java
index b28d33a3a4f..105cb5d8566 100644
---
a/hadoop-ozone/cli-admin/src/test/java/org/apache/hadoop/hdds/scm/cli/datanode/TestDiskBalancerSubCommands.java
+++
b/hadoop-ozone/cli-admin/src/test/java/org/apache/hadoop/hdds/scm/cli/datanode/TestDiskBalancerSubCommands.java
@@ -42,13 +42,11 @@
import org.apache.hadoop.hdds.HddsConfigKeys;
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
import org.apache.hadoop.hdds.protocol.DiskBalancerProtocol;
-import
org.apache.hadoop.hdds.protocol.proto.DiskBalancerProtocolProtos.DatanodeDiskBalancerInfoType;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos.DatanodeDetailsProto;
import
org.apache.hadoop.hdds.protocol.proto.HddsProtos.DatanodeDiskBalancerInfoProto;
import
org.apache.hadoop.hdds.protocol.proto.HddsProtos.DiskBalancerConfigurationProto;
import
org.apache.hadoop.hdds.protocol.proto.HddsProtos.DiskBalancerRunningStatus;
import org.apache.hadoop.hdds.scm.cli.ContainerOperationClient;
-import org.apache.hadoop.ozone.ClientVersion;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -402,8 +400,7 @@ public void testStatusDiskBalancerWithInServiceDatanodes()
throws Exception {
DatanodeDiskBalancerInfoProto statusProto2 =
generateRandomStatusProto("host-2");
DatanodeDiskBalancerInfoProto statusProto3 =
generateRandomStatusProto("host-3");
- when(mockProtocol.getDiskBalancerInfo(
- DatanodeDiskBalancerInfoType.STATUS, ClientVersion.CURRENT_VERSION))
+ when(mockProtocol.getDiskBalancerInfo())
.thenReturn(statusProto1, statusProto2, statusProto3);
try (DiskBalancerMocks mocks = setupAllMocks()) {
@@ -426,8 +423,7 @@ public void testStatusDiskBalancerWithJson() throws
Exception {
DatanodeDiskBalancerInfoProto statusProto =
generateRandomStatusProto("host-1");
- when(mockProtocol.getDiskBalancerInfo(
- DatanodeDiskBalancerInfoType.STATUS, ClientVersion.CURRENT_VERSION))
+ when(mockProtocol.getDiskBalancerInfo())
.thenReturn(statusProto);
try (DiskBalancerMocks mocks = setupAllMocks()) {
@@ -453,8 +449,7 @@ public void testStatusDiskBalancerWithMultipleNodes()
throws Exception {
DatanodeDiskBalancerInfoProto statusProto1 =
generateRandomStatusProto("host-1");
DatanodeDiskBalancerInfoProto statusProto2 =
generateRandomStatusProto("host-2");
- when(mockProtocol.getDiskBalancerInfo(
- DatanodeDiskBalancerInfoType.STATUS, ClientVersion.CURRENT_VERSION))
+ when(mockProtocol.getDiskBalancerInfo())
.thenReturn(statusProto1, statusProto2);
try (DiskBalancerMocks mocks = setupAllMocks()) {
@@ -474,7 +469,7 @@ public void testStatusDiskBalancerFailure() throws
Exception {
DiskBalancerStatusSubcommand cmd = new DiskBalancerStatusSubcommand();
doThrow(new IOException("Status query failed")).when(mockProtocol)
- .getDiskBalancerInfo(DatanodeDiskBalancerInfoType.STATUS,
ClientVersion.CURRENT_VERSION);
+ .getDiskBalancerInfo();
try (DiskBalancerMocks mocks = setupAllMocks()) {
@@ -495,8 +490,7 @@ public void testStatusDiskBalancerWithStdin() throws
Exception {
DatanodeDiskBalancerInfoProto statusProto1 =
generateRandomStatusProto("host-1");
DatanodeDiskBalancerInfoProto statusProto2 =
generateRandomStatusProto("host-2");
- when(mockProtocol.getDiskBalancerInfo(
- DatanodeDiskBalancerInfoType.STATUS, ClientVersion.CURRENT_VERSION))
+ when(mockProtocol.getDiskBalancerInfo())
.thenReturn(statusProto1, statusProto2);
String input = "host-1\nhost-2\n";
@@ -526,8 +520,7 @@ public void testReportDiskBalancerWithInServiceDatanodes()
throws Exception {
DatanodeDiskBalancerInfoProto reportProto2 =
generateRandomReportProto("host-2");
DatanodeDiskBalancerInfoProto reportProto3 =
generateRandomReportProto("host-3");
- when(mockProtocol.getDiskBalancerInfo(
- DatanodeDiskBalancerInfoType.REPORT, ClientVersion.CURRENT_VERSION))
+ when(mockProtocol.getDiskBalancerInfo())
.thenReturn(reportProto1, reportProto2, reportProto3);
try (DiskBalancerMocks mocks = setupAllMocks()) {
@@ -550,8 +543,7 @@ public void testReportDiskBalancerWithJson() throws
Exception {
DatanodeDiskBalancerInfoProto reportProto =
generateRandomReportProto("host-1");
- when(mockProtocol.getDiskBalancerInfo(
- DatanodeDiskBalancerInfoType.REPORT, ClientVersion.CURRENT_VERSION))
+ when(mockProtocol.getDiskBalancerInfo())
.thenReturn(reportProto);
try (DiskBalancerMocks mocks = setupAllMocks()) {
@@ -573,8 +565,7 @@ public void testReportDiskBalancerWithMultipleNodes()
throws Exception {
DatanodeDiskBalancerInfoProto reportProto1 =
generateRandomReportProto("host-1");
DatanodeDiskBalancerInfoProto reportProto2 =
generateRandomReportProto("host-2");
- when(mockProtocol.getDiskBalancerInfo(
- DatanodeDiskBalancerInfoType.REPORT, ClientVersion.CURRENT_VERSION))
+ when(mockProtocol.getDiskBalancerInfo())
.thenReturn(reportProto1, reportProto2);
try (DiskBalancerMocks mocks = setupAllMocks()) {
@@ -596,8 +587,7 @@ public void testReportDiskBalancerWithStdin() throws
Exception {
DatanodeDiskBalancerInfoProto reportProto1 =
generateRandomReportProto("host-1");
DatanodeDiskBalancerInfoProto reportProto2 =
generateRandomReportProto("host-2");
- when(mockProtocol.getDiskBalancerInfo(
- DatanodeDiskBalancerInfoType.REPORT, ClientVersion.CURRENT_VERSION))
+ when(mockProtocol.getDiskBalancerInfo())
.thenReturn(reportProto1, reportProto2);
String input = "host-1\nhost-2\n";
@@ -621,7 +611,7 @@ public void testReportDiskBalancerFailure() throws
Exception {
DiskBalancerReportSubcommand cmd = new DiskBalancerReportSubcommand();
doThrow(new IOException("Report query failed")).when(mockProtocol)
- .getDiskBalancerInfo(DatanodeDiskBalancerInfoType.REPORT,
ClientVersion.CURRENT_VERSION);
+ .getDiskBalancerInfo();
try (DiskBalancerMocks mocks = setupAllMocks()) {
diff --git
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/scm/node/TestContainerChoosingPolicy.java
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/scm/node/TestContainerChoosingPolicy.java
index 8a267a17784..efebf035253 100644
---
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/scm/node/TestContainerChoosingPolicy.java
+++
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/scm/node/TestContainerChoosingPolicy.java
@@ -66,6 +66,7 @@
import org.apache.hadoop.ozone.container.ozoneimpl.ContainerController;
import org.apache.hadoop.ozone.container.ozoneimpl.OzoneContainer;
import org.junit.jupiter.api.AfterEach;
+import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.Timeout;
@@ -277,6 +278,7 @@ public void createContainers() {
try {
containerSet.addContainer(container); // Add container to ContainerSet
} catch (Exception e) {
+ Assertions.fail(e.getMessage());
throw new RuntimeException("Failed to add container to ContainerSet",
e);
}
diff --git
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/scm/node/TestDiskBalancer.java
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/scm/node/TestDiskBalancer.java
index 4845af8a746..6df761e45f5 100644
---
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/scm/node/TestDiskBalancer.java
+++
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/scm/node/TestDiskBalancer.java
@@ -37,7 +37,6 @@
import org.apache.hadoop.hdds.protocol.DatanodeDetails;
import org.apache.hadoop.hdds.protocol.DatanodeDetails.Port;
import org.apache.hadoop.hdds.protocol.DiskBalancerProtocol;
-import
org.apache.hadoop.hdds.protocol.proto.DiskBalancerProtocolProtos.DatanodeDiskBalancerInfoType;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
import
org.apache.hadoop.hdds.protocol.proto.HddsProtos.DatanodeDiskBalancerInfoProto;
import
org.apache.hadoop.hdds.protocol.proto.HddsProtos.DiskBalancerConfigurationProto;
@@ -51,7 +50,6 @@
import
org.apache.hadoop.hdds.scm.container.placement.algorithms.SCMContainerPlacementCapacity;
import org.apache.hadoop.hdds.scm.node.DatanodeInfo;
import org.apache.hadoop.hdds.scm.node.NodeManager;
-import org.apache.hadoop.ozone.ClientVersion;
import org.apache.hadoop.ozone.MiniOzoneCluster;
import org.apache.hadoop.security.UserGroupInformation;
import org.apache.ozone.test.GenericTestUtils;
@@ -114,8 +112,7 @@ public void testDatanodeDiskBalancerReport() throws
IOException {
for (DatanodeDetails dn : datanodes) {
try (DiskBalancerProtocol proxy = getDiskBalancerProxy(dn)) {
- DatanodeDiskBalancerInfoProto report = proxy.getDiskBalancerInfo(
- DatanodeDiskBalancerInfoType.REPORT,
ClientVersion.CURRENT_VERSION);
+ DatanodeDiskBalancerInfoProto report = proxy.getDiskBalancerInfo();
assertNotNull(report);
assertTrue(report.hasCurrentVolumeDensitySum());
reportProtoList.add(report);
@@ -151,8 +148,7 @@ public void testDiskBalancerStopAfterEven() throws
IOException,
proxy.startDiskBalancer(configProto);
// Query status to verify it's RUNNING
- DatanodeDiskBalancerInfoProto status = proxy.getDiskBalancerInfo(
- DatanodeDiskBalancerInfoType.STATUS, ClientVersion.CURRENT_VERSION);
+ DatanodeDiskBalancerInfoProto status = proxy.getDiskBalancerInfo();
assertEquals(DiskBalancerRunningStatus.RUNNING,
status.getRunningStatus());
// Wait for some time and query status to verify the RUNNING status
changes to STOPPED
@@ -160,8 +156,7 @@ public void testDiskBalancerStopAfterEven() throws
IOException,
GenericTestUtils.waitFor(
() -> {
try {
- DatanodeDiskBalancerInfoProto currentStatus =
proxy.getDiskBalancerInfo(
- DatanodeDiskBalancerInfoType.STATUS,
ClientVersion.CURRENT_VERSION);
+ DatanodeDiskBalancerInfoProto currentStatus =
proxy.getDiskBalancerInfo();
return currentStatus.getRunningStatus() ==
DiskBalancerRunningStatus.STOPPED;
} catch (IOException e) {
return false;
@@ -195,8 +190,7 @@ public void testDatanodeDiskBalancerStatus() throws
IOException, InterruptedExce
List<DatanodeDiskBalancerInfoProto> statusProtoList = new ArrayList<>();
for (DatanodeDetails dn : allDatanodes) {
try (DiskBalancerProtocol proxy = getDiskBalancerProxy(dn)) {
- DatanodeDiskBalancerInfoProto status = proxy.getDiskBalancerInfo(
- DatanodeDiskBalancerInfoType.STATUS,
ClientVersion.CURRENT_VERSION);
+ DatanodeDiskBalancerInfoProto status = proxy.getDiskBalancerInfo();
assertEquals(DiskBalancerRunningStatus.RUNNING,
status.getRunningStatus());
statusProtoList.add(status);
}
@@ -213,8 +207,7 @@ public void testDatanodeDiskBalancerStatus() throws
IOException, InterruptedExce
GenericTestUtils.waitFor(
() -> {
try {
- DatanodeDiskBalancerInfoProto status = proxy.getDiskBalancerInfo(
- DatanodeDiskBalancerInfoType.STATUS,
ClientVersion.CURRENT_VERSION);
+ DatanodeDiskBalancerInfoProto status =
proxy.getDiskBalancerInfo();
return status.getRunningStatus() ==
DiskBalancerRunningStatus.PAUSED;
} catch (IOException e) {
return false;
@@ -222,8 +215,7 @@ public void testDatanodeDiskBalancerStatus() throws
IOException, InterruptedExce
},
500, 30000); // Check every 500ms, timeout after 30s
- DatanodeDiskBalancerInfoProto pausedStatus = proxy.getDiskBalancerInfo(
- DatanodeDiskBalancerInfoType.STATUS, ClientVersion.CURRENT_VERSION);
+ DatanodeDiskBalancerInfoProto pausedStatus = proxy.getDiskBalancerInfo();
assertEquals(DiskBalancerRunningStatus.PAUSED,
pausedStatus.getRunningStatus(),
"DiskBalancer status should be PAUSED after decommissioning");
}
@@ -233,8 +225,7 @@ public void testDatanodeDiskBalancerStatus() throws
IOException, InterruptedExce
statusProtoList.clear();
for (DatanodeDetails dn : inServiceDatanodes) {
try (DiskBalancerProtocol proxy = getDiskBalancerProxy(dn)) {
- DatanodeDiskBalancerInfoProto status = proxy.getDiskBalancerInfo(
- DatanodeDiskBalancerInfoType.STATUS,
ClientVersion.CURRENT_VERSION);
+ DatanodeDiskBalancerInfoProto status = proxy.getDiskBalancerInfo();
assertEquals(DiskBalancerRunningStatus.RUNNING,
status.getRunningStatus());
statusProtoList.add(status);
}
@@ -252,8 +243,7 @@ public void testDatanodeDiskBalancerStatus() throws
IOException, InterruptedExce
GenericTestUtils.waitFor(
() -> {
try {
- DatanodeDiskBalancerInfoProto status = proxy.getDiskBalancerInfo(
- DatanodeDiskBalancerInfoType.STATUS,
ClientVersion.CURRENT_VERSION);
+ DatanodeDiskBalancerInfoProto status =
proxy.getDiskBalancerInfo();
return status.getRunningStatus() ==
DiskBalancerRunningStatus.RUNNING;
} catch (IOException e) {
return false;
diff --git
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/scm/node/TestDiskBalancerDuringDecommissionAndMaintenance.java
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/scm/node/TestDiskBalancerDuringDecommissionAndMaintenance.java
index e2ee6419562..04c6273b8ae 100644
---
a/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/scm/node/TestDiskBalancerDuringDecommissionAndMaintenance.java
+++
b/hadoop-ozone/integration-test/src/test/java/org/apache/hadoop/ozone/scm/node/TestDiskBalancerDuringDecommissionAndMaintenance.java
@@ -39,7 +39,6 @@
import org.apache.hadoop.hdds.protocol.DatanodeDetails;
import org.apache.hadoop.hdds.protocol.DatanodeDetails.Port;
import org.apache.hadoop.hdds.protocol.DiskBalancerProtocol;
-import
org.apache.hadoop.hdds.protocol.proto.DiskBalancerProtocolProtos.DatanodeDiskBalancerInfoType;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
import
org.apache.hadoop.hdds.protocol.proto.HddsProtos.DatanodeDiskBalancerInfoProto;
import
org.apache.hadoop.hdds.protocol.proto.HddsProtos.DiskBalancerConfigurationProto;
@@ -53,7 +52,6 @@
import
org.apache.hadoop.hdds.scm.container.placement.algorithms.SCMContainerPlacementCapacity;
import org.apache.hadoop.hdds.scm.node.DatanodeInfo;
import org.apache.hadoop.hdds.scm.node.NodeManager;
-import org.apache.hadoop.ozone.ClientVersion;
import org.apache.hadoop.ozone.MiniOzoneCluster;
import org.apache.hadoop.ozone.container.diskbalancer.DiskBalancerService;
import org.apache.hadoop.security.UserGroupInformation;
@@ -121,8 +119,7 @@ public void stopDiskBalancer() throws IOException,
InterruptedException, Timeout
for (DatanodeDetails dn : allDatanodes) {
GenericTestUtils.waitFor(() -> {
try (DiskBalancerProtocol proxy = getDiskBalancerProxy(dn)) {
- DatanodeDiskBalancerInfoProto status = proxy.getDiskBalancerInfo(
- DatanodeDiskBalancerInfoType.STATUS,
ClientVersion.CURRENT_VERSION);
+ DatanodeDiskBalancerInfoProto status = proxy.getDiskBalancerInfo();
return status.getRunningStatus() ==
DiskBalancerRunningStatus.STOPPED;
} catch (IOException e) {
return false;
@@ -215,13 +212,11 @@ public void
testDiskBalancerWithDecommissionAndMaintenanceNodes()
// Get diskBalancer report from IN_SERVICE nodes only
List<DatanodeDiskBalancerInfoProto> reportProtoList =
queryAllInServiceDatanodes(
- (proxy, dn) -> proxy.getDiskBalancerInfo(
- DatanodeDiskBalancerInfoType.REPORT,
ClientVersion.CURRENT_VERSION));
+ (proxy, dn) -> proxy.getDiskBalancerInfo());
// Get diskBalancer status from IN_SERVICE nodes only
List<DatanodeDiskBalancerInfoProto> statusProtoList =
queryAllInServiceDatanodes(
- (proxy, dn) -> proxy.getDiskBalancerInfo(
- DatanodeDiskBalancerInfoType.STATUS,
ClientVersion.CURRENT_VERSION));
+ (proxy, dn) -> proxy.getDiskBalancerInfo());
// Verify that decommissioning and maintenance DN is not included
// in DiskBalancer report and status (since we only queried IN_SERVICE
nodes)
@@ -261,11 +256,9 @@ public void
testDiskBalancerWithDecommissionAndMaintenanceNodes()
// Verify that recommissioned DN is included in DiskBalancer report and
status
reportProtoList = queryAllInServiceDatanodes(
- (proxy, dn) -> proxy.getDiskBalancerInfo(
- DatanodeDiskBalancerInfoType.REPORT,
ClientVersion.CURRENT_VERSION));
+ (proxy, dn) -> proxy.getDiskBalancerInfo());
statusProtoList = queryAllInServiceDatanodes(
- (proxy, dn) -> proxy.getDiskBalancerInfo(
- DatanodeDiskBalancerInfoType.STATUS,
ClientVersion.CURRENT_VERSION));
+ (proxy, dn) -> proxy.getDiskBalancerInfo());
boolean isRecommissionedDnInReport = reportProtoList.stream()
.anyMatch(proto -> proto.getNode().getUuid().
@@ -310,8 +303,7 @@ public void testStopDiskBalancerOnDecommissioningNode()
throws Exception {
// Verify diskBalancer is running
GenericTestUtils.waitFor(() -> {
try (DiskBalancerProtocol proxy = getDiskBalancerProxy(dn)) {
- DatanodeDiskBalancerInfoProto status = proxy.getDiskBalancerInfo(
- DatanodeDiskBalancerInfoType.STATUS,
ClientVersion.CURRENT_VERSION);
+ DatanodeDiskBalancerInfoProto status = proxy.getDiskBalancerInfo();
return status != null && status.getRunningStatus() ==
DiskBalancerRunningStatus.RUNNING;
} catch (IOException e) {
return false;
@@ -330,8 +322,7 @@ public void testStopDiskBalancerOnDecommissioningNode()
throws Exception {
// Verify status is PAUSED
try (DiskBalancerProtocol proxy = getDiskBalancerProxy(dn)) {
- DatanodeDiskBalancerInfoProto status = proxy.getDiskBalancerInfo(
- DatanodeDiskBalancerInfoType.STATUS, ClientVersion.CURRENT_VERSION);
+ DatanodeDiskBalancerInfoProto status = proxy.getDiskBalancerInfo();
assertEquals(DiskBalancerRunningStatus.PAUSED,
status.getRunningStatus());
}
@@ -348,8 +339,7 @@ public void testStopDiskBalancerOnDecommissioningNode()
throws Exception {
// Verify status is STOPPED
try (DiskBalancerProtocol proxy = getDiskBalancerProxy(dn)) {
- DatanodeDiskBalancerInfoProto status = proxy.getDiskBalancerInfo(
- DatanodeDiskBalancerInfoType.STATUS, ClientVersion.CURRENT_VERSION);
+ DatanodeDiskBalancerInfoProto status = proxy.getDiskBalancerInfo();
assertEquals(DiskBalancerRunningStatus.STOPPED,
status.getRunningStatus());
}
@@ -361,8 +351,7 @@ public void testStopDiskBalancerOnDecommissioningNode()
throws Exception {
try (DiskBalancerProtocol proxy = getDiskBalancerProxy(dn)) {
GenericTestUtils.waitFor(() -> {
try {
- DatanodeDiskBalancerInfoProto status = proxy.getDiskBalancerInfo(
- DatanodeDiskBalancerInfoType.STATUS,
ClientVersion.CURRENT_VERSION);
+ DatanodeDiskBalancerInfoProto status = proxy.getDiskBalancerInfo();
return status.getRunningStatus() ==
DiskBalancerRunningStatus.STOPPED;
} catch (IOException e) {
return false;
@@ -382,8 +371,7 @@ public void testStartDiskBalancerOnDecommissioningNode()
throws Exception {
// Verify diskBalancer is in stopped state initially
GenericTestUtils.waitFor(() -> {
try (DiskBalancerProtocol proxy = getDiskBalancerProxy(dn)) {
- DatanodeDiskBalancerInfoProto status = proxy.getDiskBalancerInfo(
- DatanodeDiskBalancerInfoType.STATUS,
ClientVersion.CURRENT_VERSION);
+ DatanodeDiskBalancerInfoProto status = proxy.getDiskBalancerInfo();
return status != null && status.getRunningStatus() ==
DiskBalancerRunningStatus.STOPPED;
} catch (IOException e) {
return false;
@@ -423,8 +411,7 @@ public void testStartDiskBalancerOnDecommissioningNode()
throws Exception {
}
// Also check if status is PAUSED
try (DiskBalancerProtocol proxy = getDiskBalancerProxy(dn)) {
- DatanodeDiskBalancerInfoProto status = proxy.getDiskBalancerInfo(
- DatanodeDiskBalancerInfoType.STATUS,
ClientVersion.CURRENT_VERSION);
+ DatanodeDiskBalancerInfoProto status = proxy.getDiskBalancerInfo();
return status.getRunningStatus() == DiskBalancerRunningStatus.PAUSED;
} catch (IOException e) {
return false;
@@ -433,8 +420,7 @@ public void testStartDiskBalancerOnDecommissioningNode()
throws Exception {
// Verify status is PAUSED
try (DiskBalancerProtocol proxy = getDiskBalancerProxy(dn)) {
- DatanodeDiskBalancerInfoProto status = proxy.getDiskBalancerInfo(
- DatanodeDiskBalancerInfoType.STATUS, ClientVersion.CURRENT_VERSION);
+ DatanodeDiskBalancerInfoProto status = proxy.getDiskBalancerInfo();
assertEquals(DiskBalancerRunningStatus.PAUSED,
status.getRunningStatus());
}
@@ -445,8 +431,7 @@ public void testStartDiskBalancerOnDecommissioningNode()
throws Exception {
// Verify it automatically restarts (since it was explicitly started)
GenericTestUtils.waitFor(() -> {
try (DiskBalancerProtocol proxy = getDiskBalancerProxy(dn)) {
- DatanodeDiskBalancerInfoProto status = proxy.getDiskBalancerInfo(
- DatanodeDiskBalancerInfoType.STATUS,
ClientVersion.CURRENT_VERSION);
+ DatanodeDiskBalancerInfoProto status = proxy.getDiskBalancerInfo();
return status != null && status.getRunningStatus() ==
DiskBalancerRunningStatus.RUNNING;
} catch (IOException e) {
return false;
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]