Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,7 @@
import java.util.stream.Collectors;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hdds.protocol.DatanodeDetails;
import org.apache.hadoop.hdds.protocol.DatanodeID;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
import org.apache.hadoop.hdds.protocol.proto.StorageContainerDatanodeProtocolProtos.ContainerReplicaProto;
import org.apache.hadoop.hdds.scm.container.ContainerID;
Expand Down Expand Up @@ -66,7 +67,7 @@ public class ReconContainerManager extends ContainerManagerImpl {
private final PipelineManager pipelineManager;
private final ContainerHealthSchemaManager containerHealthSchemaManager;
private final ReconContainerMetadataManager cdbServiceProvider;
private final Table<UUID, DatanodeDetails> nodeDB;
private final Table<DatanodeID, DatanodeDetails> nodeDB;
// Container ID -> Datanode UUID -> Timestamp
private final Map<Long, Map<UUID, ContainerReplicaHistory>> replicaHistoryMap;
// Pipeline -> # of open containers
Expand Down Expand Up @@ -376,7 +377,7 @@ public List<ContainerHistory> getAllContainerHistory(long containerID) {
// Attempt to retrieve hostname from NODES table
if (nodeDB != null) {
try {
DatanodeDetails dnDetails = nodeDB.get(uuid);
final DatanodeDetails dnDetails = nodeDB.get(DatanodeID.of(uuid));
if (dnDetails != null) {
hostname = dnDetails.getHostName();
}
Expand Down Expand Up @@ -446,7 +447,7 @@ public void upsertContainerHistory(long containerID, UUID uuid, long time,
}
}

public Table<UUID, DatanodeDetails> getNodeDB() {
public Table<DatanodeID, DatanodeDetails> getNodeDB() {
return nodeDB;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
import java.util.concurrent.atomic.AtomicBoolean;
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
import org.apache.hadoop.hdds.protocol.DatanodeDetails;
import org.apache.hadoop.hdds.protocol.DatanodeID;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
import org.apache.hadoop.hdds.protocol.proto.StorageContainerDatanodeProtocolProtos;
import org.apache.hadoop.hdds.protocol.proto.StorageContainerDatanodeProtocolProtos.CommandQueueReportProto;
Expand Down Expand Up @@ -71,7 +72,7 @@ public class ReconNodeManager extends SCMNodeManager {
private static final Logger LOG = LoggerFactory
.getLogger(ReconNodeManager.class);

private Table<UUID, DatanodeDetails> nodeDB;
private Table<DatanodeID, DatanodeDetails> nodeDB;
private ReconContext reconContext;
private static final Set<Type> ALLOWED_COMMANDS =
ImmutableSet.of(reregisterCommand);
Expand All @@ -93,7 +94,7 @@ public ReconNodeManager(OzoneConfiguration conf,
SCMStorageConfig scmStorageConfig,
EventPublisher eventPublisher,
NetworkTopology networkTopology,
Table<UUID, DatanodeDetails> nodeDB,
Table<DatanodeID, DatanodeDetails> nodeDB,
HDDSLayoutVersionManager scmLayoutVersionManager) {
super(conf, scmStorageConfig, eventPublisher, networkTopology,
SCMContext.emptyContext(), scmLayoutVersionManager);
Expand All @@ -103,15 +104,15 @@ public ReconNodeManager(OzoneConfiguration conf,
}

public ReconNodeManager(OzoneConfiguration conf, SCMStorageConfig scmStorageConfig, EventQueue eventQueue,
NetworkTopology clusterMap, Table<UUID, DatanodeDetails> table,
NetworkTopology clusterMap, Table<DatanodeID, DatanodeDetails> table,
HDDSLayoutVersionManager scmLayoutVersionManager, ReconContext reconContext) {
this(conf, scmStorageConfig, eventQueue, clusterMap, table, scmLayoutVersionManager);
this.reconContext = reconContext;
loadExistingNodes();
}

private void loadExistingNodes() {
try (TableIterator<UUID, ? extends Table.KeyValue<UUID, DatanodeDetails>>
try (TableIterator<DatanodeID, ? extends Table.KeyValue<DatanodeID, DatanodeDetails>>
iterator = nodeDB.iterator()) {
int nodeCount = 0;
while (iterator.hasNext()) {
Expand Down Expand Up @@ -143,7 +144,7 @@ public VersionResponse getVersion(SCMVersionRequestProto versionRequest) {
* @param datanodeDetails Datanode details.
*/
public void addNodeToDB(DatanodeDetails datanodeDetails) throws IOException {
nodeDB.put(datanodeDetails.getUuid(), datanodeDetails);
nodeDB.put(datanodeDetails.getID(), datanodeDetails);
LOG.info("Adding new node {} to Node DB.", datanodeDetails.getUuid());
}

Expand Down Expand Up @@ -268,7 +269,7 @@ public RegisteredCommand register(
inMemDatanodeDetails.put(datanodeDetails.getUuid(), datanodeDetails);
if (isNodeRegistered(datanodeDetails)) {
try {
nodeDB.put(datanodeDetails.getUuid(), datanodeDetails);
nodeDB.put(datanodeDetails.getID(), datanodeDetails);
LOG.info("Updating nodeDB for " + datanodeDetails.getHostName());
} catch (IOException e) {
LOG.error("Can not update node {} to Node DB.",
Expand Down Expand Up @@ -318,15 +319,15 @@ private boolean needUpdate(DatanodeDetails datanodeDetails,
reconDatanodeOutdatedTime;
}

public void reinitialize(Table<UUID, DatanodeDetails> nodeTable) {
public void reinitialize(Table<DatanodeID, DatanodeDetails> nodeTable) {
this.nodeDB = nodeTable;
loadExistingNodes();
}

@VisibleForTesting
public long getNodeDBKeyCount() throws IOException {
long nodeCount = 0;
try (TableIterator<UUID, ? extends Table.KeyValue<UUID, DatanodeDetails>>
try (TableIterator<DatanodeID, ? extends Table.KeyValue<DatanodeID, DatanodeDetails>>
iterator = nodeDB.iterator()) {
while (iterator.hasNext()) {
iterator.next();
Expand All @@ -347,7 +348,7 @@ public long getNodeDBKeyCount() throws IOException {
public void removeNode(DatanodeDetails datanodeDetails) throws NodeNotFoundException, IOException {
try {
super.removeNode(datanodeDetails);
nodeDB.delete(datanodeDetails.getUuid());
nodeDB.delete(datanodeDetails.getID());
} catch (IOException ioException) {
LOG.error("Node {} deletion fails from Node DB.", datanodeDetails.getUuid());
throw ioException;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,8 @@
package org.apache.hadoop.ozone.recon.scm;

import java.util.Map;
import java.util.UUID;
import org.apache.hadoop.hdds.protocol.DatanodeDetails;
import org.apache.hadoop.hdds.protocol.DatanodeID;
import org.apache.hadoop.hdds.scm.metadata.SCMDBDefinition;
import org.apache.hadoop.hdds.utils.db.Codec;
import org.apache.hadoop.hdds.utils.db.DBColumnFamilyDefinition;
Expand All @@ -31,14 +31,14 @@
* Recon SCM db file for ozone.
*/
public final class ReconSCMDBDefinition extends SCMDBDefinition {
private static final Codec<UUID> UUID_CODEC = new DelegatedCodec<>(
StringCodec.get(), UUID::fromString, UUID::toString,
UUID.class, DelegatedCodec.CopyType.SHALLOW);
private static final Codec<DatanodeID> DATANODE_ID_CODEC = new DelegatedCodec<>(
StringCodec.get(), DatanodeID::fromUuidString, DatanodeID::toString,
DatanodeID.class, DelegatedCodec.CopyType.SHALLOW);

public static final String RECON_SCM_DB_NAME = "recon-scm.db";

public static final DBColumnFamilyDefinition<UUID, DatanodeDetails> NODES
= new DBColumnFamilyDefinition<>("nodes", UUID_CODEC, DatanodeDetails.getCodec());
public static final DBColumnFamilyDefinition<DatanodeID, DatanodeDetails> NODES
= new DBColumnFamilyDefinition<>("nodes", DATANODE_ID_CODEC, DatanodeDetails.getCodec());

private static final Map<String, DBColumnFamilyDefinition<?, ?>>
COLUMN_FAMILIES = DBColumnFamilyDefinition.newUnmodifiableMap(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,6 @@
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.UUID;
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.Executors;
Expand All @@ -63,6 +62,7 @@
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
import org.apache.hadoop.hdds.conf.ReconfigurationHandler;
import org.apache.hadoop.hdds.protocol.DatanodeDetails;
import org.apache.hadoop.hdds.protocol.DatanodeID;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
import org.apache.hadoop.hdds.scm.PlacementPolicy;
import org.apache.hadoop.hdds.scm.ScmUtils;
Expand Down Expand Up @@ -619,14 +619,11 @@ private void initializeNewRdbStore(File dbFile) throws IOException {
try {
final DBStore newStore = DBStoreBuilder.newBuilder(ozoneConfiguration, ReconSCMDBDefinition.get(), dbFile)
.build();
Table<UUID, DatanodeDetails> nodeTable =
ReconSCMDBDefinition.NODES.getTable(dbStore);
Table<UUID, DatanodeDetails> newNodeTable =
ReconSCMDBDefinition.NODES.getTable(newStore);
try (TableIterator<UUID, ? extends KeyValue<UUID,
DatanodeDetails>> iterator = nodeTable.iterator()) {
final Table<DatanodeID, DatanodeDetails> nodeTable = ReconSCMDBDefinition.NODES.getTable(dbStore);
final Table<DatanodeID, DatanodeDetails> newNodeTable = ReconSCMDBDefinition.NODES.getTable(newStore);
try (TableIterator<DatanodeID, ? extends KeyValue<DatanodeID, DatanodeDetails>> iterator = nodeTable.iterator()) {
while (iterator.hasNext()) {
KeyValue<UUID, DatanodeDetails> keyValue = iterator.next();
final KeyValue<DatanodeID, DatanodeDetails> keyValue = iterator.next();
newNodeTable.put(keyValue.getKey(), keyValue.getValue());
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@
import org.apache.hadoop.hdds.client.StandaloneReplicationConfig;
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
import org.apache.hadoop.hdds.protocol.DatanodeDetails;
import org.apache.hadoop.hdds.protocol.DatanodeID;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos;
import org.apache.hadoop.hdds.protocol.proto.HddsProtos.ReplicationFactor;
import org.apache.hadoop.hdds.scm.container.ContainerID;
Expand Down Expand Up @@ -1053,7 +1054,7 @@ public void testGetReplicaHistoryForContainer() throws IOException {

UUID newDatanode(String hostName, String ipAddress) throws IOException {
final UUID uuid = UUID.randomUUID();
reconContainerManager.getNodeDB().put(uuid,
reconContainerManager.getNodeDB().put(DatanodeID.of(uuid),
DatanodeDetails.newBuilder()
.setUuid(uuid)
.setHostName(hostName)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@
import java.io.IOException;
import java.nio.file.Path;
import java.util.List;
import java.util.UUID;
import org.apache.hadoop.hdds.conf.OzoneConfiguration;
import org.apache.hadoop.hdds.protocol.DatanodeDetails;
import org.apache.hadoop.hdds.protocol.DatanodeID;
Expand Down Expand Up @@ -101,8 +100,7 @@ public void testReconNodeManagerInitWithInvalidNetworkTopology() throws IOExcept
new ReconStorageConfig(conf, reconUtils);
EventQueue eventQueue = new EventQueue();
NetworkTopology clusterMap = new NetworkTopologyImpl(conf);
Table<UUID, DatanodeDetails> nodeTable =
ReconSCMDBDefinition.NODES.getTable(store);
final Table<DatanodeID, DatanodeDetails> nodeTable = ReconSCMDBDefinition.NODES.getTable(store);
ReconNodeManager reconNodeManager = new ReconNodeManager(conf,
scmStorageConfig, eventQueue, clusterMap, nodeTable, versionManager, reconContext);
assertThat(reconNodeManager.getAllNodes()).isEmpty();
Expand Down Expand Up @@ -130,8 +128,7 @@ public void testReconNodeDB() throws IOException, NodeNotFoundException {
new ReconStorageConfig(conf, new ReconUtils());
EventQueue eventQueue = new EventQueue();
NetworkTopology clusterMap = new NetworkTopologyImpl(conf);
Table<UUID, DatanodeDetails> nodeTable =
ReconSCMDBDefinition.NODES.getTable(store);
final Table<DatanodeID, DatanodeDetails> nodeTable = ReconSCMDBDefinition.NODES.getTable(store);
ReconNodeManager reconNodeManager = new ReconNodeManager(conf,
scmStorageConfig, eventQueue, clusterMap, nodeTable, versionManager, reconContext);
ReconNewNodeHandler reconNewNodeHandler =
Expand Down Expand Up @@ -212,8 +209,7 @@ public void testUpdateNodeOperationalStateFromScm() throws Exception {
new ReconStorageConfig(conf, new ReconUtils());
EventQueue eventQueue = new EventQueue();
NetworkTopology clusterMap = new NetworkTopologyImpl(conf);
Table<UUID, DatanodeDetails> nodeTable =
ReconSCMDBDefinition.NODES.getTable(store);
final Table<DatanodeID, DatanodeDetails> nodeTable = ReconSCMDBDefinition.NODES.getTable(store);
ReconNodeManager reconNodeManager = new ReconNodeManager(conf,
scmStorageConfig, eventQueue, clusterMap, nodeTable, versionManager, reconContext);

Expand Down Expand Up @@ -246,8 +242,7 @@ public void testDatanodeUpdate() throws IOException {
new ReconStorageConfig(conf, new ReconUtils());
EventQueue eventQueue = new EventQueue();
NetworkTopology clusterMap = new NetworkTopologyImpl(conf);
Table<UUID, DatanodeDetails> nodeTable =
ReconSCMDBDefinition.NODES.getTable(store);
final Table<DatanodeID, DatanodeDetails> nodeTable = ReconSCMDBDefinition.NODES.getTable(store);
ReconNodeManager reconNodeManager = new ReconNodeManager(conf,
scmStorageConfig, eventQueue, clusterMap, nodeTable, versionManager, reconContext);
ReconNewNodeHandler reconNewNodeHandler =
Expand Down