http://git-wip-us.apache.org/repos/asf/hadoop/blob/ce23d9ad/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/impl/KeyManagerImpl.java
----------------------------------------------------------------------
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/impl/KeyManagerImpl.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/impl/KeyManagerImpl.java
deleted file mode 100644
index eb18486..0000000
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/impl/KeyManagerImpl.java
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-
-package org.apache.hadoop.ozone.container.common.impl;
-
-import com.google.common.base.Preconditions;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hdfs.DFSUtil;
-import org.apache.hadoop.hdfs.ozone.protocol.proto.ContainerProtos;
-import org.apache.hadoop.ozone.container.common.helpers.ContainerData;
-import org.apache.hadoop.ozone.container.common.helpers.KeyData;
-import org.apache.hadoop.ozone.container.common.helpers.KeyUtils;
-import org.apache.hadoop.ozone.container.common.interfaces.ContainerManager;
-import org.apache.hadoop.ozone.container.common.interfaces.KeyManager;
-import org.apache.hadoop.ozone.container.common.utils.ContainerCache;
-import org.apache.hadoop.scm.container.common.helpers.Pipeline;
-import 
org.apache.hadoop.scm.container.common.helpers.StorageContainerException;
-import org.apache.hadoop.utils.MetadataKeyFilters.KeyPrefixFilter;
-import org.apache.hadoop.utils.MetadataKeyFilters.MetadataKeyFilter;
-import org.apache.hadoop.utils.MetadataStore;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import static org.apache.hadoop.hdfs.ozone.protocol.proto.ContainerProtos
-    .Result.NO_SUCH_KEY;
-
-/**
- * Key Manager impl.
- */
-public class KeyManagerImpl implements KeyManager {
-  static final Logger LOG =
-      LoggerFactory.getLogger(KeyManagerImpl.class);
-
-  private static final float LOAD_FACTOR = 0.75f;
-  private final ContainerManager containerManager;
-  private final Configuration conf;
-
-  /**
-   * Constructs a key Manager.
-   *
-   * @param containerManager - Container Manager.
-   */
-  public KeyManagerImpl(ContainerManager containerManager, Configuration conf) 
{
-    Preconditions.checkNotNull(containerManager, "Container manager cannot be" 
+
-        " null");
-    Preconditions.checkNotNull(conf, "Config cannot be null");
-    this.containerManager = containerManager;
-    this.conf = conf;
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  public void putKey(Pipeline pipeline, KeyData data) throws IOException {
-    containerManager.readLock();
-    try {
-      // We are not locking the key manager since LevelDb serializes all 
actions
-      // against a single DB. We rely on DB level locking to avoid conflicts.
-      Preconditions.checkNotNull(pipeline, "Pipeline cannot be null");
-      String containerName = pipeline.getContainerName();
-      Preconditions.checkNotNull(containerName,
-          "Container name cannot be null");
-      ContainerData cData = containerManager.readContainer(containerName);
-      MetadataStore db = KeyUtils.getDB(cData, conf);
-
-      // This is a post condition that acts as a hint to the user.
-      // Should never fail.
-      Preconditions.checkNotNull(db, "DB cannot be null here");
-      db.put(data.getKeyName().getBytes(KeyUtils.ENCODING), data
-          .getProtoBufMessage().toByteArray());
-    } finally {
-      containerManager.readUnlock();
-    }
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  public KeyData getKey(KeyData data) throws IOException {
-    containerManager.readLock();
-    try {
-      Preconditions.checkNotNull(data, "Key data cannot be null");
-      Preconditions.checkNotNull(data.getContainerName(),
-          "Container name cannot be null");
-      ContainerData cData = containerManager.readContainer(data
-          .getContainerName());
-      MetadataStore db = KeyUtils.getDB(cData, conf);
-
-      // This is a post condition that acts as a hint to the user.
-      // Should never fail.
-      Preconditions.checkNotNull(db, "DB cannot be null here");
-
-      byte[] kData = db.get(data.getKeyName().getBytes(KeyUtils.ENCODING));
-      if (kData == null) {
-        throw new StorageContainerException("Unable to find the key.",
-            NO_SUCH_KEY);
-      }
-      ContainerProtos.KeyData keyData =
-          ContainerProtos.KeyData.parseFrom(kData);
-      return KeyData.getFromProtoBuf(keyData);
-    } finally {
-      containerManager.readUnlock();
-    }
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  public void deleteKey(Pipeline pipeline, String keyName)
-      throws IOException {
-    containerManager.readLock();
-    try {
-      Preconditions.checkNotNull(pipeline, "Pipeline cannot be null");
-      String containerName = pipeline.getContainerName();
-      Preconditions.checkNotNull(containerName,
-          "Container name cannot be null");
-      ContainerData cData = containerManager.readContainer(containerName);
-      MetadataStore db = KeyUtils.getDB(cData, conf);
-
-      // This is a post condition that acts as a hint to the user.
-      // Should never fail.
-      Preconditions.checkNotNull(db, "DB cannot be null here");
-      // Note : There is a race condition here, since get and delete
-      // are not atomic. Leaving it here since the impact is refusing
-      // to delete a key which might have just gotten inserted after
-      // the get check.
-
-      byte[] kData = db.get(keyName.getBytes(KeyUtils.ENCODING));
-      if (kData == null) {
-        throw new StorageContainerException("Unable to find the key.",
-            NO_SUCH_KEY);
-      }
-      db.delete(keyName.getBytes(KeyUtils.ENCODING));
-    } finally {
-      containerManager.readUnlock();
-    }
-  }
-
-  /**
-   * {@inheritDoc}
-   */
-  @Override
-  public List<KeyData> listKey(
-      Pipeline pipeline, String prefix, String startKey, int count)
-      throws IOException {
-    Preconditions.checkNotNull(pipeline,
-        "Pipeline cannot be null.");
-    Preconditions.checkArgument(count > 0,
-        "Count must be a positive number.");
-    ContainerData cData = containerManager.readContainer(pipeline
-        .getContainerName());
-    MetadataStore db = KeyUtils.getDB(cData, conf);
-
-    List<KeyData> result = new ArrayList<KeyData>();
-    byte[] startKeyInBytes = startKey == null ? null :
-        DFSUtil.string2Bytes(startKey);
-    MetadataKeyFilter prefixFilter = new KeyPrefixFilter(prefix);
-    List<Map.Entry<byte[], byte[]>> range =
-        db.getSequentialRangeKVs(startKeyInBytes, count, prefixFilter);
-    for (Map.Entry<byte[], byte[]> entry : range) {
-      String keyName = KeyUtils.getKeyName(entry.getKey());
-      KeyData value = KeyUtils.getKeyData(entry.getValue());
-      KeyData data = new KeyData(value.getContainerName(), keyName);
-      result.add(data);
-    }
-    return result;
-  }
-
-  /**
-   * Shutdown keyManager.
-   */
-  @Override
-  public void shutdown() {
-    Preconditions.checkState(this.containerManager.hasWriteLock(), "asserts " +
-        "that we are holding the container manager lock when shutting down.");
-    KeyUtils.shutdownCache(ContainerCache.getInstance(conf));
-  }
-}

http://git-wip-us.apache.org/repos/asf/hadoop/blob/ce23d9ad/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/impl/RandomContainerDeletionChoosingPolicy.java
----------------------------------------------------------------------
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/impl/RandomContainerDeletionChoosingPolicy.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/impl/RandomContainerDeletionChoosingPolicy.java
deleted file mode 100644
index 0123ab1..0000000
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/impl/RandomContainerDeletionChoosingPolicy.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.hadoop.ozone.container.common.impl;
-
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.hadoop.hdfs.DFSUtil;
-import org.apache.hadoop.ozone.container.common.helpers.ContainerData;
-import 
org.apache.hadoop.ozone.container.common.interfaces.ContainerDeletionChoosingPolicy;
-import 
org.apache.hadoop.scm.container.common.helpers.StorageContainerException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.Preconditions;
-
-/**
- * Randomly choosing containers for block deletion.
- */
-public class RandomContainerDeletionChoosingPolicy
-    implements ContainerDeletionChoosingPolicy {
-  private static final Logger LOG =
-      LoggerFactory.getLogger(RandomContainerDeletionChoosingPolicy.class);
-
-  @Override
-  public List<ContainerData> chooseContainerForBlockDeletion(int count,
-      Map<String, ContainerStatus> candidateContainers)
-      throws StorageContainerException {
-    Preconditions.checkNotNull(candidateContainers,
-        "Internal assertion: candidate containers cannot be null");
-
-    int currentCount = 0;
-    List<ContainerData> result = new LinkedList<>();
-    ContainerStatus[] values = new ContainerStatus[candidateContainers.size()];
-    // to get a shuffle list
-    for (ContainerStatus entry : DFSUtil.shuffle(
-        candidateContainers.values().toArray(values))) {
-      if (currentCount < count) {
-        result.add(entry.getContainer());
-        currentCount++;
-
-        LOG.debug("Select container {} for block deletion, "
-            + "pending deletion blocks num: {}.",
-            entry.getContainer().getContainerName(),
-            entry.getNumPendingDeletionBlocks());
-      } else {
-        break;
-      }
-    }
-
-    return result;
-  }
-}

http://git-wip-us.apache.org/repos/asf/hadoop/blob/ce23d9ad/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/impl/StorageLocationReport.java
----------------------------------------------------------------------
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/impl/StorageLocationReport.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/impl/StorageLocationReport.java
deleted file mode 100644
index 7ef91a9..0000000
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/impl/StorageLocationReport.java
+++ /dev/null
@@ -1,63 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.hadoop.ozone.container.common.impl;
-
-/**
- * Storage location stats of datanodes that provide back store for containers.
- *
- */
-public class StorageLocationReport {
-  public static final StorageLocationReport[] EMPTY_ARRAY = {};
-
-  private final String id;
-  private final boolean failed;
-  private final long capacity;
-  private final long scmUsed;
-  private final long remaining;
-
-  public StorageLocationReport(String id, boolean failed,
-      long capacity, long scmUsed, long remaining) {
-    this.id = id;
-    this.failed = failed;
-    this.capacity = capacity;
-    this.scmUsed = scmUsed;
-    this.remaining = remaining;
-  }
-
-  public String getId() {
-    return id;
-  }
-
-  public boolean isFailed() {
-    return failed;
-  }
-
-  public long getCapacity() {
-    return capacity;
-  }
-
-  public long getScmUsed() {
-    return scmUsed;
-  }
-
-  public long getRemaining() {
-    return remaining;
-  }
-
-}

http://git-wip-us.apache.org/repos/asf/hadoop/blob/ce23d9ad/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/impl/TopNOrderedContainerDeletionChoosingPolicy.java
----------------------------------------------------------------------
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/impl/TopNOrderedContainerDeletionChoosingPolicy.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/impl/TopNOrderedContainerDeletionChoosingPolicy.java
deleted file mode 100644
index 3f4cdaa..0000000
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/impl/TopNOrderedContainerDeletionChoosingPolicy.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.hadoop.ozone.container.common.impl;
-
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.hadoop.ozone.container.common.helpers.ContainerData;
-import 
org.apache.hadoop.ozone.container.common.interfaces.ContainerDeletionChoosingPolicy;
-import 
org.apache.hadoop.scm.container.common.helpers.StorageContainerException;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import com.google.common.base.Preconditions;
-
-/**
- * TopN Ordered choosing policy that choosing containers based on pending
- * deletion blocks' number.
- */
-public class TopNOrderedContainerDeletionChoosingPolicy
-    implements ContainerDeletionChoosingPolicy {
-  private static final Logger LOG =
-      
LoggerFactory.getLogger(TopNOrderedContainerDeletionChoosingPolicy.class);
-
-  /** customized comparator used to compare differentiate container status. **/
-  private static final Comparator<ContainerStatus> CONTAINER_STATUS_COMPARATOR
-      = new Comparator<ContainerStatus>() {
-        @Override
-        public int compare(ContainerStatus c1, ContainerStatus c2) {
-          return Integer.compare(c2.getNumPendingDeletionBlocks(),
-              c1.getNumPendingDeletionBlocks());
-        }
-      };
-
-  @Override
-  public List<ContainerData> chooseContainerForBlockDeletion(int count,
-      Map<String, ContainerStatus> candidateContainers)
-      throws StorageContainerException {
-    Preconditions.checkNotNull(candidateContainers,
-        "Internal assertion: candidate containers cannot be null");
-
-    List<ContainerData> result = new LinkedList<>();
-    List<ContainerStatus> orderedList = new LinkedList<>();
-    orderedList.addAll(candidateContainers.values());
-    Collections.sort(orderedList, CONTAINER_STATUS_COMPARATOR);
-
-    // get top N list ordered by pending deletion blocks' number
-    int currentCount = 0;
-    for (ContainerStatus entry : orderedList) {
-      if (currentCount < count) {
-        if (entry.getNumPendingDeletionBlocks() > 0) {
-          result.add(entry.getContainer());
-          currentCount++;
-
-          LOG.debug(
-              "Select container {} for block deletion, "
-                  + "pending deletion blocks num: {}.",
-              entry.getContainer().getContainerName(),
-              entry.getNumPendingDeletionBlocks());
-        } else {
-          LOG.debug("Stop looking for next container, there is no"
-              + " pending deletion block contained in remaining containers.");
-          break;
-        }
-      } else {
-        break;
-      }
-    }
-
-    return result;
-  }
-}

http://git-wip-us.apache.org/repos/asf/hadoop/blob/ce23d9ad/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/impl/package-info.java
----------------------------------------------------------------------
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/impl/package-info.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/impl/package-info.java
deleted file mode 100644
index 16da5d9..0000000
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/impl/package-info.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.hadoop.ozone.container.common.impl;
-
-/**
- This package is contains Ozone container implementation.
-**/
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/hadoop/blob/ce23d9ad/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/interfaces/ChunkManager.java
----------------------------------------------------------------------
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/interfaces/ChunkManager.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/interfaces/ChunkManager.java
deleted file mode 100644
index c933924..0000000
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/interfaces/ChunkManager.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-
-package org.apache.hadoop.ozone.container.common.interfaces;
-
-import org.apache.hadoop.hdfs.ozone.protocol.proto.ContainerProtos;
-import 
org.apache.hadoop.scm.container.common.helpers.StorageContainerException;
-import org.apache.hadoop.ozone.container.common.helpers.ChunkInfo;
-import org.apache.hadoop.scm.container.common.helpers.Pipeline;
-
-/**
- * Chunk Manager allows read, write, delete and listing of chunks in
- * a container.
- */
-public interface ChunkManager {
-
-  /**
-   * writes a given chunk.
-   * @param pipeline - Name and the set of machines that make this container.
-   * @param keyName - Name of the Key.
-   * @param info - ChunkInfo.
-   * @param stage - Chunk Stage write.
-   * @throws StorageContainerException
-   */
-  void writeChunk(Pipeline pipeline, String keyName,
-                  ChunkInfo info, byte[] data, ContainerProtos.Stage stage)
-      throws StorageContainerException;
-
-  /**
-   * reads the data defined by a chunk.
-   * @param pipeline - container pipeline.
-   * @param keyName - Name of the Key
-   * @param info - ChunkInfo.
-   * @return  byte array
-   * @throws StorageContainerException
-   *
-   * TODO: Right now we do not support partial reads and writes of chunks.
-   * TODO: Explore if we need to do that for ozone.
-   */
-  byte[] readChunk(Pipeline pipeline, String keyName, ChunkInfo info) throws
-      StorageContainerException;
-
-  /**
-   * Deletes a given chunk.
-   * @param pipeline  - Pipeline.
-   * @param keyName   - Key Name
-   * @param info  - Chunk Info
-   * @throws StorageContainerException
-   */
-  void deleteChunk(Pipeline pipeline, String keyName, ChunkInfo info) throws
-      StorageContainerException;
-
-  // TODO : Support list operations.
-
-  /**
-   * Shutdown the chunkManager.
-   */
-  void shutdown();
-
-}

http://git-wip-us.apache.org/repos/asf/hadoop/blob/ce23d9ad/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/interfaces/ContainerDeletionChoosingPolicy.java
----------------------------------------------------------------------
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/interfaces/ContainerDeletionChoosingPolicy.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/interfaces/ContainerDeletionChoosingPolicy.java
deleted file mode 100644
index 3e0a283..0000000
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/interfaces/ContainerDeletionChoosingPolicy.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.hadoop.ozone.container.common.interfaces;
-
-import java.util.List;
-import java.util.Map;
-
-import org.apache.hadoop.ozone.container.common.helpers.ContainerData;
-import org.apache.hadoop.ozone.container.common.impl.ContainerStatus;
-import 
org.apache.hadoop.scm.container.common.helpers.StorageContainerException;
-
-/**
- * This interface is used for choosing desired containers for
- * block deletion.
- */
-public interface ContainerDeletionChoosingPolicy {
-
-  /**
-   * Chooses desired containers for block deletion.
-   * @param count
-   *          how many to return
-   * @param candidateContainers
-   *          candidate containers collection
-   * @return container data list
-   * @throws StorageContainerException
-   */
-  List<ContainerData> chooseContainerForBlockDeletion(int count,
-      Map<String, ContainerStatus> candidateContainers)
-      throws StorageContainerException;
-}

http://git-wip-us.apache.org/repos/asf/hadoop/blob/ce23d9ad/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/interfaces/ContainerDispatcher.java
----------------------------------------------------------------------
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/interfaces/ContainerDispatcher.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/interfaces/ContainerDispatcher.java
deleted file mode 100644
index 8aae004..0000000
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/interfaces/ContainerDispatcher.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-
-package org.apache.hadoop.ozone.container.common.interfaces;
-
-import 
org.apache.hadoop.hdfs.ozone.protocol.proto.ContainerProtos.ContainerCommandResponseProto;
-import 
org.apache.hadoop.hdfs.ozone.protocol.proto.ContainerProtos.ContainerCommandRequestProto;
-
-/**
- * Dispatcher acts as the bridge between the transport layer and
- * the actual container layer. This layer is capable of transforming
- * protobuf objects into corresponding class and issue the function call
- * into the lower layers.
- *
- * The reply from the request is dispatched to the client.
- */
-public interface ContainerDispatcher {
-  /**
-   * Dispatches commands to container layer.
-   * @param msg - Command Request
-   * @return Command Response
-   */
-  ContainerCommandResponseProto dispatch(ContainerCommandRequestProto msg);
-
-  /**
-   * Initialize the Dispatcher.
-   */
-  void init();
-
-  /**
-   * Shutdown Dispatcher services.
-   */
-  void shutdown();
-}

http://git-wip-us.apache.org/repos/asf/hadoop/blob/ce23d9ad/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/interfaces/ContainerLocationManager.java
----------------------------------------------------------------------
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/interfaces/ContainerLocationManager.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/interfaces/ContainerLocationManager.java
deleted file mode 100644
index 9c5fcea..0000000
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/interfaces/ContainerLocationManager.java
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.hadoop.ozone.container.common.interfaces;
-
-import org.apache.hadoop.ozone.container.common.impl.StorageLocationReport;
-
-import java.io.IOException;
-import java.nio.file.Path;
-
-/**
- * Returns physical path locations, where the containers will be created.
- */
-public interface ContainerLocationManager {
-  /**
-   * Returns the path where the container should be placed from a set of
-   * locations.
-   *
-   * @return A path where we should place this container and metadata.
-   * @throws IOException
-   */
-  Path getContainerPath() throws IOException;
-
-  /**
-   * Returns the path where the container Data file are stored.
-   *
-   * @return a path where we place the LevelDB and data files of a container.
-   * @throws IOException
-   */
-  Path getDataPath(String containerName) throws IOException;
-
-  /**
-   * Returns an array of storage location usage report.
-   * @return storage location usage report.
-   */
-  StorageLocationReport[] getLocationReport() throws IOException;
-
-  /**
-   * Supports clean shutdown of container.
-   *
-   * @throws IOException
-   */
-  void shutdown() throws IOException;
-}

http://git-wip-us.apache.org/repos/asf/hadoop/blob/ce23d9ad/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/interfaces/ContainerLocationManagerMXBean.java
----------------------------------------------------------------------
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/interfaces/ContainerLocationManagerMXBean.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/interfaces/ContainerLocationManagerMXBean.java
deleted file mode 100644
index 88e6148..0000000
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/interfaces/ContainerLocationManagerMXBean.java
+++ /dev/null
@@ -1,36 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.hadoop.ozone.container.common.interfaces;
-
-import org.apache.hadoop.ozone.container.common.impl.StorageLocationReport;
-
-import java.io.IOException;
-
-/**
- * Returns physical path locations, where the containers will be created.
- */
-public interface ContainerLocationManagerMXBean {
-
-  /**
-   * Returns an array of storage location usage report.
-   *
-   * @return storage location usage report.
-   */
-  StorageLocationReport[] getLocationReport() throws IOException;
-
-}

http://git-wip-us.apache.org/repos/asf/hadoop/blob/ce23d9ad/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/interfaces/ContainerManager.java
----------------------------------------------------------------------
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/interfaces/ContainerManager.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/interfaces/ContainerManager.java
deleted file mode 100644
index 04afc3c..0000000
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/interfaces/ContainerManager.java
+++ /dev/null
@@ -1,276 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-
-package org.apache.hadoop.ozone.container.common.interfaces;
-
-import org.apache.hadoop.classification.InterfaceAudience;
-import org.apache.hadoop.classification.InterfaceStability;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hdfs.protocol.DatanodeID;
-import org.apache.hadoop.hdfs.server.datanode.StorageLocation;
-import org.apache.hadoop.hdfs.util.RwLock;
-import 
org.apache.hadoop.ozone.protocol.proto.StorageContainerDatanodeProtocolProtos.ReportState;
-import 
org.apache.hadoop.ozone.protocol.proto.StorageContainerDatanodeProtocolProtos.ContainerReportsRequestProto;
-import 
org.apache.hadoop.scm.container.common.helpers.StorageContainerException;
-import org.apache.hadoop.ozone.container.common.helpers.ContainerData;
-import 
org.apache.hadoop.ozone.protocol.proto.StorageContainerDatanodeProtocolProtos.SCMNodeReport;
-import org.apache.hadoop.scm.container.common.helpers.Pipeline;
-
-import java.io.IOException;
-import java.security.NoSuchAlgorithmException;
-import java.util.List;
-
-/**
- * Interface for container operations.
- */
-@InterfaceAudience.Private
-@InterfaceStability.Unstable
-public interface ContainerManager extends RwLock {
-
-  /**
-   * Init call that sets up a container Manager.
-   *
-   * @param config        - Configuration.
-   * @param containerDirs - List of Metadata Container locations.
-   * @param datanodeID - Datanode ID
-   * @throws StorageContainerException
-   */
-  void init(Configuration config, List<StorageLocation> containerDirs,
-      DatanodeID datanodeID) throws IOException;
-
-  /**
-   * Creates a container with the given name.
-   *
-   * @param pipeline      -- Nodes which make up this container.
-   * @param containerData - Container Name and metadata.
-   * @throws StorageContainerException
-   */
-  void createContainer(Pipeline pipeline, ContainerData containerData)
-      throws StorageContainerException;
-
-  /**
-   * Deletes an existing container.
-   *
-   * @param pipeline      - nodes that make this container.
-   * @param containerName - name of the container.
-   * @param forceDelete   - whether this container should be deleted forcibly.
-   * @throws StorageContainerException
-   */
-  void deleteContainer(Pipeline pipeline, String containerName,
-      boolean forceDelete) throws StorageContainerException;
-
-  /**
-   * Update an existing container.
-   *
-   * @param pipeline container nodes
-   * @param containerName name of the container
-   * @param data container data
-   * @param forceUpdate if true, update container forcibly.
-   * @throws StorageContainerException
-   */
-  void updateContainer(Pipeline pipeline, String containerName,
-      ContainerData data, boolean forceUpdate) throws 
StorageContainerException;
-
-  /**
-   * As simple interface for container Iterations.
-   *
-   * @param prefix - Return only values matching this prefix
-   * @param count   - how many to return
-   * @param prevKey - Previous key - Server returns results from this point.
-   * @param data    - Actual containerData
-   * @throws StorageContainerException
-   */
-  void listContainer(String prefix, long count, String prevKey,
-                     List<ContainerData> data)
-      throws StorageContainerException;
-
-  /**
-   * Choose containers for block deletion.
-   *
-   * @param count   - how many to return
-   * @throws StorageContainerException
-   */
-  List<ContainerData> chooseContainerForBlockDeletion(int count)
-      throws StorageContainerException;
-
-  /**
-   * Get metadata about a specific container.
-   *
-   * @param containerName - Name of the container
-   * @return ContainerData - Container Data.
-   * @throws StorageContainerException
-   */
-  ContainerData readContainer(String containerName)
-      throws StorageContainerException;
-
-  /**
-   * Closes a open container, if it is already closed or does not exist a
-   * StorageContainerException is thrown.
-   * @param containerName - Name of the container.
-   * @throws StorageContainerException
-   */
-  void closeContainer(String containerName)
-      throws StorageContainerException, NoSuchAlgorithmException;
-
-  /**
-   * Checks if a container exists.
-   * @param containerName - Name of the container.
-   * @return true if the container is open false otherwise.
-   * @throws StorageContainerException  - Throws Exception if we are not
-   * able to find the container.
-   */
-  boolean isOpen(String containerName) throws StorageContainerException;
-
-  /**
-   * Supports clean shutdown of container.
-   *
-   * @throws StorageContainerException
-   */
-  void shutdown() throws IOException;
-
-  /**
-   * Sets the Chunk Manager.
-   *
-   * @param chunkManager - ChunkManager.
-   */
-  void setChunkManager(ChunkManager chunkManager);
-
-  /**
-   * Gets the Chunk Manager.
-   *
-   * @return ChunkManager.
-   */
-  ChunkManager getChunkManager();
-
-  /**
-   * Sets the Key Manager.
-   *
-   * @param keyManager - Key Manager.
-   */
-  void setKeyManager(KeyManager keyManager);
-
-  /**
-   * Gets the Key Manager.
-   *
-   * @return KeyManager.
-   */
-  KeyManager getKeyManager();
-
-  /**
-   * Get the Node Report of container storage usage.
-   * @return node report.
-   */
-  SCMNodeReport getNodeReport() throws IOException;
-
-  /**
-   * Gets container report.
-   * @return container report.
-   * @throws IOException
-   */
-  ContainerReportsRequestProto getContainerReport() throws IOException;
-
-  /**
-   * Gets container reports.
-   * @return List of all closed containers.
-   * @throws IOException
-   */
-  List<ContainerData> getContainerReports() throws IOException;
-
-  /**
-   * Increase pending deletion blocks count number of specified container.
-   *
-   * @param numBlocks
-   *          increment  count number
-   * @param containerId
-   *          container id
-   */
-  void incrPendingDeletionBlocks(int numBlocks, String containerId);
-
-  /**
-   * Decrease pending deletion blocks count number of specified container.
-   *
-   * @param numBlocks
-   *          decrement count number
-   * @param containerId
-   *          container id
-   */
-  void decrPendingDeletionBlocks(int numBlocks, String containerId);
-
-  /**
-   * Increase the read count of the container.
-   * @param containerName - Name of the container.
-   */
-  void incrReadCount(String containerName);
-
-  /**
-   * Increse the read counter for bytes read from the container.
-   * @param containerName - Name of the container.
-   * @param readBytes - bytes read from the container.
-   */
-  void incrReadBytes(String containerName, long readBytes);
-
-
-  /**
-   * Increase the write count of the container.
-   * @param containerName - Name of the container.
-   */
-  void incrWriteCount(String containerName);
-
-  /**
-   * Increase the write counter for bytes write into the container.
-   * @param containerName - Name of the container.
-   * @param writeBytes - bytes write into the container.
-   */
-  void incrWriteBytes(String containerName, long writeBytes);
-
-  /**
-   * Increase the bytes used by the container.
-   * @param containerName - Name of the container.
-   * @param used - additional bytes used by the container.
-   * @return the current bytes used.
-   */
-  long incrBytesUsed(String containerName, long used);
-
-  /**
-   * Decrease the bytes used by the container.
-   * @param containerName - Name of the container.
-   * @param used - additional bytes reclaimed by the container.
-   * @return the current bytes used.
-   */
-  long decrBytesUsed(String containerName, long used);
-
-  /**
-   * Get the bytes used by the container.
-   * @param containerName - Name of the container.
-   * @return the current bytes used by the container.
-   */
-  long getBytesUsed(String containerName);
-
-  /**
-   * Get the number of keys in the container.
-   * @param containerName - Name of the container.
-   * @return the current key count.
-   */
-  long getNumKeys(String containerName);
-
-  /**
-   * Get the container report state to send via HB to SCM.
-   * @return container report state.
-   */
-  ReportState getContainerReportState();
-}

http://git-wip-us.apache.org/repos/asf/hadoop/blob/ce23d9ad/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/interfaces/ContainerReportManager.java
----------------------------------------------------------------------
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/interfaces/ContainerReportManager.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/interfaces/ContainerReportManager.java
deleted file mode 100644
index 7d2ba0a..0000000
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/interfaces/ContainerReportManager.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.hadoop.ozone.container.common.interfaces;
-
-import 
org.apache.hadoop.ozone.protocol.proto.StorageContainerDatanodeProtocolProtos.ReportState;
-
-/**
- * Interface for container report manager operations.
- */
-public interface ContainerReportManager {
-
-  /**
-   * Get the container report state.
-   * @return the container report state.
-   */
-  ReportState getContainerReportState();
-}

http://git-wip-us.apache.org/repos/asf/hadoop/blob/ce23d9ad/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/interfaces/KeyManager.java
----------------------------------------------------------------------
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/interfaces/KeyManager.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/interfaces/KeyManager.java
deleted file mode 100644
index a613d2a..0000000
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/interfaces/KeyManager.java
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- */
-package org.apache.hadoop.ozone.container.common.interfaces;
-
-import 
org.apache.hadoop.scm.container.common.helpers.StorageContainerException;
-import org.apache.hadoop.ozone.container.common.helpers.KeyData;
-import org.apache.hadoop.scm.container.common.helpers.Pipeline;
-
-import java.io.IOException;
-import java.util.List;
-
-/**
- * KeyManager deals with Key Operations in the container Level.
- */
-public interface KeyManager {
-  /**
-   * Puts or overwrites a key.
-   *
-   * @param pipeline - Pipeline.
-   * @param data     - Key Data.
-   * @throws IOException
-   */
-  void putKey(Pipeline pipeline, KeyData data) throws IOException;
-
-  /**
-   * Gets an existing key.
-   *
-   * @param data - Key Data.
-   * @return Key Data.
-   * @throws IOException
-   */
-  KeyData getKey(KeyData data) throws IOException;
-
-  /**
-   * Deletes an existing Key.
-   *
-   * @param pipeline - Pipeline.
-   * @param keyName  Key Data.
-   * @throws StorageContainerException
-   */
-  void deleteKey(Pipeline pipeline, String keyName)
-      throws IOException;
-
-  /**
-   * List keys in a container.
-   *
-   * @param pipeline - pipeline.
-   * @param prefix   - Prefix in needed.
-   * @param startKey  - Key to start from, EMPTY_STRING to begin.
-   * @param count    - Number of keys to return.
-   * @return List of Keys that match the criteria.
-   */
-  List<KeyData> listKey(Pipeline pipeline, String prefix, String startKey,
-      int count) throws IOException;
-
-  /**
-   * Shutdown keyManager.
-   */
-  void shutdown();
-}

http://git-wip-us.apache.org/repos/asf/hadoop/blob/ce23d9ad/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/interfaces/package-info.java
----------------------------------------------------------------------
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/interfaces/package-info.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/interfaces/package-info.java
deleted file mode 100644
index d83bf95..0000000
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/interfaces/package-info.java
+++ /dev/null
@@ -1,20 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with this
- * work for additional information regarding copyright ownership.  The ASF
- * licenses this file to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations 
under
- * the License.
- */
-package org.apache.hadoop.ozone.container.common.interfaces;
-/**
- This package contains common ozone container interfaces.
- */
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/hadoop/blob/ce23d9ad/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/package-info.java
----------------------------------------------------------------------
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/package-info.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/package-info.java
deleted file mode 100644
index 1638a36..0000000
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/package-info.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.hadoop.ozone.container.common;
-/**
-  Common Container Layer. At this layer the abstractions are:
-
- 1. Containers - Both data and metadata containers.
- 2. Keys - Key/Value pairs that live inside a container.
- 3. Chunks - Keys can be composed of many chunks.
-
- Ozone uses these abstractions to build Volumes, Buckets and Keys.
-
- **/
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/hadoop/blob/ce23d9ad/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/DatanodeStateMachine.java
----------------------------------------------------------------------
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/DatanodeStateMachine.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/DatanodeStateMachine.java
deleted file mode 100644
index de55d96..0000000
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/DatanodeStateMachine.java
+++ /dev/null
@@ -1,385 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with this
- * work for additional information regarding copyright ownership.  The ASF
- * licenses this file to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations 
under
- * the License.
- */
-package org.apache.hadoop.ozone.container.common.statemachine;
-
-import com.google.common.annotations.VisibleForTesting;
-import com.google.common.util.concurrent.ThreadFactoryBuilder;
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hdfs.protocol.DatanodeID;
-import org.apache.hadoop.conf.OzoneConfiguration;
-import org.apache.hadoop.ozone.client.OzoneClientUtils;
-import org.apache.hadoop.ozone.container.common.statemachine.commandhandler
-    .CloseContainerHandler;
-import 
org.apache.hadoop.ozone.container.common.statemachine.commandhandler.CommandDispatcher;
-import 
org.apache.hadoop.ozone.container.common.statemachine.commandhandler.ContainerReportHandler;
-import 
org.apache.hadoop.ozone.container.common.statemachine.commandhandler.DeleteBlocksCommandHandler;
-import org.apache.hadoop.ozone.container.ozoneimpl.OzoneContainer;
-import org.apache.hadoop.ozone.protocol.commands.SCMCommand;
-import org.apache.hadoop.util.Time;
-import org.apache.hadoop.util.concurrent.HadoopExecutors;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.Closeable;
-import java.io.IOException;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicLong;
-
-/**
- * State Machine Class.
- */
-public class DatanodeStateMachine implements Closeable {
-  @VisibleForTesting
-  static final Logger LOG =
-      LoggerFactory.getLogger(DatanodeStateMachine.class);
-  private final ExecutorService executorService;
-  private final Configuration conf;
-  private final SCMConnectionManager connectionManager;
-  private final long heartbeatFrequency;
-  private StateContext context;
-  private final OzoneContainer container;
-  private DatanodeID datanodeID = null;
-  private final CommandDispatcher commandDispatcher;
-  private long commandsHandled;
-  private AtomicLong nextHB;
-  private Thread stateMachineThread = null;
-  private Thread cmdProcessThread = null;
-
-  /**
-   * Constructs a a datanode state machine.
-   *
-   * @param datanodeID - DatanodeID used to identify a datanode
-   * @param conf - Configuration.
-   */
-  public DatanodeStateMachine(DatanodeID datanodeID,
-      Configuration conf) throws IOException {
-    this.conf = conf;
-    executorService = HadoopExecutors.newCachedThreadPool(
-                new ThreadFactoryBuilder().setDaemon(true)
-            .setNameFormat("Datanode State Machine Thread - %d").build());
-    connectionManager = new SCMConnectionManager(conf);
-    context = new StateContext(this.conf, DatanodeStates.getInitState(), this);
-    heartbeatFrequency = TimeUnit.SECONDS.toMillis(
-        OzoneClientUtils.getScmHeartbeatInterval(conf));
-    container = new OzoneContainer(datanodeID, new OzoneConfiguration(conf));
-    this.datanodeID = datanodeID;
-    nextHB = new AtomicLong(Time.monotonicNow());
-
-     // When we add new handlers just adding a new handler here should do the
-     // trick.
-    commandDispatcher = CommandDispatcher.newBuilder()
-        .addHandler(new ContainerReportHandler())
-        .addHandler(new CloseContainerHandler())
-        .addHandler(new DeleteBlocksCommandHandler(
-            container.getContainerManager(), conf))
-        .setConnectionManager(connectionManager)
-        .setContainer(container)
-        .setContext(context)
-        .build();
-  }
-
-  public void setDatanodeID(DatanodeID datanodeID) {
-    this.datanodeID = datanodeID;
-  }
-
-  /**
-   *
-   * Return DatanodeID if set, return null otherwise.
-   *
-   * @return datanodeID
-   */
-  public DatanodeID getDatanodeID() {
-    return this.datanodeID;
-  }
-
-  /**
-   * Returns the Connection manager for this state machine.
-   *
-   * @return - SCMConnectionManager.
-   */
-  public SCMConnectionManager getConnectionManager() {
-    return connectionManager;
-  }
-
-  public OzoneContainer getContainer() {
-    return this.container;
-  }
-
-  /**
-   * Runs the state machine at a fixed frequency.
-   */
-  private void start() throws IOException {
-    long now = 0;
-
-    container.start();
-    initCommandHandlerThread(conf);
-    while (context.getState() != DatanodeStates.SHUTDOWN) {
-      try {
-        LOG.debug("Executing cycle Number : {}", context.getExecutionCount());
-        nextHB.set(Time.monotonicNow() + heartbeatFrequency);
-        context.setReportState(container.getNodeReport());
-        context.setContainerReportState(container.getContainerReportState());
-        context.execute(executorService, heartbeatFrequency,
-            TimeUnit.MILLISECONDS);
-        now = Time.monotonicNow();
-        if (now < nextHB.get()) {
-          Thread.sleep(nextHB.get() - now);
-        }
-      } catch (InterruptedException e) {
-        // Ignore this exception.
-      } catch (Exception e) {
-        LOG.error("Unable to finish the execution.", e);
-      }
-    }
-  }
-
-  /**
-   * Gets the current context.
-   *
-   * @return StateContext
-   */
-  public StateContext getContext() {
-    return context;
-  }
-
-  /**
-   * Sets the current context.
-   *
-   * @param context - Context
-   */
-  public void setContext(StateContext context) {
-    this.context = context;
-  }
-
-  /**
-   * Closes this stream and releases any system resources associated with it. 
If
-   * the stream is already closed then invoking this method has no effect.
-   * <p>
-   * <p> As noted in {@link AutoCloseable#close()}, cases where the close may
-   * fail require careful attention. It is strongly advised to relinquish the
-   * underlying resources and to internally <em>mark</em> the {@code Closeable}
-   * as closed, prior to throwing the {@code IOException}.
-   *
-   * @throws IOException if an I/O error occurs
-   */
-  @Override
-  public void close() throws IOException {
-    if (stateMachineThread != null) {
-      stateMachineThread.interrupt();
-    }
-    if (cmdProcessThread != null) {
-      cmdProcessThread.interrupt();
-    }
-    context.setState(DatanodeStates.getLastState());
-    executorService.shutdown();
-    try {
-      if (!executorService.awaitTermination(5, TimeUnit.SECONDS)) {
-        executorService.shutdownNow();
-      }
-
-      if (!executorService.awaitTermination(5, TimeUnit.SECONDS)) {
-        LOG.error("Unable to shutdown state machine properly.");
-      }
-    } catch (InterruptedException e) {
-      LOG.error("Error attempting to shutdown.", e);
-      executorService.shutdownNow();
-      Thread.currentThread().interrupt();
-    }
-
-    if (connectionManager != null) {
-      connectionManager.close();
-    }
-
-    if(container != null) {
-      container.stop();
-    }
-  }
-
-  /**
-   * States that a datanode  can be in. GetNextState will move this enum from
-   * getInitState to getLastState.
-   */
-  public enum DatanodeStates {
-    INIT(1),
-    RUNNING(2),
-    SHUTDOWN(3);
-    private final int value;
-
-    /**
-     * Constructs ContainerStates.
-     *
-     * @param value  Enum Value
-     */
-    DatanodeStates(int value) {
-      this.value = value;
-    }
-
-    /**
-     * Returns the first State.
-     *
-     * @return First State.
-     */
-    public static DatanodeStates getInitState() {
-      return INIT;
-    }
-
-    /**
-     * The last state of endpoint states.
-     *
-     * @return last state.
-     */
-    public static DatanodeStates getLastState() {
-      return SHUTDOWN;
-    }
-
-    /**
-     * returns the numeric value associated with the endPoint.
-     *
-     * @return int.
-     */
-    public int getValue() {
-      return value;
-    }
-
-    /**
-     * Returns the next logical state that endPoint should move to. This
-     * function assumes the States are sequentially numbered.
-     *
-     * @return NextState.
-     */
-    public DatanodeStates getNextState() {
-      if (this.value < getLastState().getValue()) {
-        int stateValue = this.getValue() + 1;
-        for (DatanodeStates iter : values()) {
-          if (stateValue == iter.getValue()) {
-            return iter;
-          }
-        }
-      }
-      return getLastState();
-    }
-  }
-
-  /**
-   * Start datanode state machine as a single thread daemon.
-   */
-  public void startDaemon() {
-    Runnable startStateMachineTask = () -> {
-      try {
-        start();
-        LOG.info("Ozone container server started.");
-      } catch (Exception ex) {
-        LOG.error("Unable to start the DatanodeState Machine", ex);
-      }
-    };
-    stateMachineThread =  new ThreadFactoryBuilder()
-        .setDaemon(true)
-        .setNameFormat("Datanode State Machine Thread - %d")
-        .build().newThread(startStateMachineTask);
-    stateMachineThread.start();
-  }
-
-  /**
-   * Stop the daemon thread of the datanode state machine.
-   */
-  public synchronized void stopDaemon() {
-    try {
-      context.setState(DatanodeStates.SHUTDOWN);
-      this.close();
-      LOG.info("Ozone container server stopped.");
-    } catch (IOException e) {
-      LOG.error("Stop ozone container server failed.", e);
-    }
-  }
-
-  /**
-   *
-   * Check if the datanode state machine daemon is stopped.
-   *
-   * @return True if datanode state machine daemon is stopped
-   * and false otherwise.
-   */
-  @VisibleForTesting
-  public boolean isDaemonStopped() {
-    return this.executorService.isShutdown()
-        && this.getContext().getExecutionCount() == 0
-        && this.getContext().getState() == DatanodeStates.SHUTDOWN;
-  }
-
-  /**
-   * Create a command handler thread.
-   *
-   * @param config
-   */
-  private void initCommandHandlerThread(Configuration config) {
-
-    /**
-     * Task that periodically checks if we have any outstanding commands.
-     * It is assumed that commands can be processed slowly and in order.
-     * This assumption might change in future. Right now due to this assumption
-     * we have single command  queue process thread.
-     */
-    Runnable processCommandQueue = () -> {
-      long now;
-      while (getContext().getState() != DatanodeStates.SHUTDOWN) {
-        SCMCommand command = getContext().getNextCommand();
-        if (command != null) {
-          commandDispatcher.handle(command);
-          commandsHandled++;
-        } else {
-          try {
-            // Sleep till the next HB + 1 second.
-            now = Time.monotonicNow();
-            if (nextHB.get() > now) {
-              Thread.sleep((nextHB.get() - now) + 1000L);
-            }
-          } catch (InterruptedException e) {
-            // Ignore this exception.
-          }
-        }
-      }
-    };
-
-    // We will have only one thread for command processing in a datanode.
-    cmdProcessThread = getCommandHandlerThread(processCommandQueue);
-    cmdProcessThread.start();
-  }
-
-  private Thread getCommandHandlerThread(Runnable processCommandQueue) {
-    Thread handlerThread = new Thread(processCommandQueue);
-    handlerThread.setDaemon(true);
-    handlerThread.setName("Command processor thread");
-    handlerThread.setUncaughtExceptionHandler((Thread t, Throwable e) -> {
-      // Let us just restart this thread after logging a critical error.
-      // if this thread is not running we cannot handle commands from SCM.
-      LOG.error("Critical Error : Command processor thread encountered an " +
-          "error. Thread: {}", t.toString(), e);
-      getCommandHandlerThread(processCommandQueue).start();
-    });
-    return handlerThread;
-  }
-
-  /**
-   * Returns the number of commands handled  by the datanode.
-   * @return  count
-   */
-  @VisibleForTesting
-  public long getCommandHandled() {
-    return commandsHandled;
-  }
-}

http://git-wip-us.apache.org/repos/asf/hadoop/blob/ce23d9ad/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/EndpointStateMachine.java
----------------------------------------------------------------------
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/EndpointStateMachine.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/EndpointStateMachine.java
deleted file mode 100644
index 4f1f47f..0000000
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/EndpointStateMachine.java
+++ /dev/null
@@ -1,293 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with this
- * work for additional information regarding copyright ownership.  The ASF
- * licenses this file to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations 
under
- * the License.
- */
-package org.apache.hadoop.ozone.container.common.statemachine;
-
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.ozone.client.OzoneClientUtils;
-import org.apache.hadoop.ozone.protocol.VersionResponse;
-import org.apache.hadoop.ozone.protocolPB
-    .StorageContainerDatanodeProtocolClientSideTranslatorPB;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.Closeable;
-import java.io.IOException;
-import java.net.InetSocketAddress;
-import java.time.ZonedDateTime;
-import java.util.concurrent.atomic.AtomicLong;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantLock;
-
-/**
- * Endpoint is used as holder class that keeps state around the RPC endpoint.
- */
-public class EndpointStateMachine
-    implements Closeable, EndpointStateMachineMBean {
-  static final Logger
-      LOG = LoggerFactory.getLogger(EndpointStateMachine.class);
-  private final StorageContainerDatanodeProtocolClientSideTranslatorPB 
endPoint;
-  private final AtomicLong missedCount;
-  private final InetSocketAddress address;
-  private final Lock lock;
-  private final Configuration conf;
-  private EndPointStates state;
-  private VersionResponse version;
-  private ZonedDateTime lastSuccessfulHeartbeat;
-
-  /**
-   * Constructs RPC Endpoints.
-   *
-   * @param endPoint - RPC endPoint.
-   */
-  public EndpointStateMachine(InetSocketAddress address,
-      StorageContainerDatanodeProtocolClientSideTranslatorPB endPoint,
-      Configuration conf) {
-    this.endPoint = endPoint;
-    this.missedCount = new AtomicLong(0);
-    this.address = address;
-    state = EndPointStates.getInitState();
-    lock = new ReentrantLock();
-    this.conf = conf;
-  }
-
-  /**
-   * Takes a lock on this EndPoint so that other threads don't use this while 
we
-   * are trying to communicate via this endpoint.
-   */
-  public void lock() {
-    lock.lock();
-  }
-
-  /**
-   * Unlocks this endpoint.
-   */
-  public void unlock() {
-    lock.unlock();
-  }
-
-  /**
-   * Returns the version that we read from the server if anyone asks .
-   *
-   * @return - Version Response.
-   */
-  public VersionResponse getVersion() {
-    return version;
-  }
-
-  /**
-   * Sets the Version reponse we recieved from the SCM.
-   *
-   * @param version VersionResponse
-   */
-  public void setVersion(VersionResponse version) {
-    this.version = version;
-  }
-
-  /**
-   * Returns the current State this end point is in.
-   *
-   * @return - getState.
-   */
-  public EndPointStates getState() {
-    return state;
-  }
-
-  @Override
-  public int getVersionNumber() {
-    if (version != null) {
-      return version.getProtobufMessage().getSoftwareVersion();
-    } else {
-      return -1;
-    }
-  }
-
-  /**
-   * Sets the endpoint state.
-   *
-   * @param epState - end point state.
-   */
-  public EndPointStates setState(EndPointStates epState) {
-    this.state = epState;
-    return this.state;
-  }
-
-  /**
-   * Closes the connection.
-   *
-   * @throws IOException
-   */
-  @Override
-  public void close() throws IOException {
-    if (endPoint != null) {
-      endPoint.close();
-    }
-  }
-
-  /**
-   * We maintain a count of how many times we missed communicating with a
-   * specific SCM. This is not made atomic since the access to this is always
-   * guarded by the read or write lock. That is, it is serialized.
-   */
-  public void incMissed() {
-    this.missedCount.incrementAndGet();
-  }
-
-  /**
-   * Returns the value of the missed count.
-   *
-   * @return int
-   */
-  public long getMissedCount() {
-    return this.missedCount.get();
-  }
-
-  @Override
-  public String getAddressString() {
-    return getAddress().toString();
-  }
-
-  public void zeroMissedCount() {
-    this.missedCount.set(0);
-  }
-
-  /**
-   * Returns the InetAddress of the endPoint.
-   *
-   * @return - EndPoint.
-   */
-  public InetSocketAddress getAddress() {
-    return this.address;
-  }
-
-  /**
-   * Returns real RPC endPoint.
-   *
-   * @return rpc client.
-   */
-  public StorageContainerDatanodeProtocolClientSideTranslatorPB
-      getEndPoint() {
-    return endPoint;
-  }
-
-  /**
-   * Returns the string that represents this endpoint.
-   *
-   * @return - String
-   */
-  public String toString() {
-    return address.toString();
-  }
-
-  /**
-   * Logs exception if needed.
-   *  @param ex         - Exception
-   */
-  public void logIfNeeded(Exception ex) {
-    LOG.trace("Incrementing the Missed count. Ex : {}", ex);
-    this.incMissed();
-    if (this.getMissedCount() % OzoneClientUtils.getLogWarnInterval(conf) ==
-        0) {
-      LOG.warn("Unable to communicate to SCM server at {}. We have not been " +
-              "able to communicate to this SCM server for past {} seconds.",
-          this.getAddress().getHostString() + ":" + 
this.getAddress().getPort(),
-          this.getMissedCount() * OzoneClientUtils.getScmHeartbeatInterval(
-              this.conf));
-    }
-  }
-
-
-  /**
-   * States that an Endpoint can be in.
-   * <p>
-   * This is a sorted list of states that EndPoint will traverse.
-   * <p>
-   * GetNextState will move this enum from getInitState to getLastState.
-   */
-  public enum EndPointStates {
-    GETVERSION(1),
-    REGISTER(2),
-    HEARTBEAT(3),
-    SHUTDOWN(4); // if you add value after this please edit getLastState too.
-    private final int value;
-
-    /**
-     * Constructs endPointStates.
-     *
-     * @param value  state.
-     */
-    EndPointStates(int value) {
-      this.value = value;
-    }
-
-    /**
-     * Returns the first State.
-     *
-     * @return First State.
-     */
-    public static EndPointStates getInitState() {
-      return GETVERSION;
-    }
-
-    /**
-     * The last state of endpoint states.
-     *
-     * @return last state.
-     */
-    public static EndPointStates getLastState() {
-      return SHUTDOWN;
-    }
-
-    /**
-     * returns the numeric value associated with the endPoint.
-     *
-     * @return int.
-     */
-    public int getValue() {
-      return value;
-    }
-
-    /**
-     * Returns the next logical state that endPoint should move to.
-     * The next state is computed by adding 1 to the current state.
-     *
-     * @return NextState.
-     */
-    public EndPointStates getNextState() {
-      if (this.getValue() < getLastState().getValue()) {
-        int stateValue = this.getValue() + 1;
-        for (EndPointStates iter : values()) {
-          if (stateValue == iter.getValue()) {
-            return iter;
-          }
-        }
-      }
-      return getLastState();
-    }
-  }
-
-  public long getLastSuccessfulHeartbeat() {
-    return lastSuccessfulHeartbeat == null ?
-        0 :
-        lastSuccessfulHeartbeat.toEpochSecond();
-  }
-
-  public void setLastSuccessfulHeartbeat(
-      ZonedDateTime lastSuccessfulHeartbeat) {
-    this.lastSuccessfulHeartbeat = lastSuccessfulHeartbeat;
-  }
-}

http://git-wip-us.apache.org/repos/asf/hadoop/blob/ce23d9ad/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/EndpointStateMachineMBean.java
----------------------------------------------------------------------
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/EndpointStateMachineMBean.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/EndpointStateMachineMBean.java
deleted file mode 100644
index 4f64bde..0000000
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/EndpointStateMachineMBean.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with this
- * work for additional information regarding copyright ownership.  The ASF
- * licenses this file to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations 
under
- * the License.
- */
-package org.apache.hadoop.ozone.container.common.statemachine;
-
-
-/**
- * JMX representation of an EndpointStateMachine.
- */
-public interface EndpointStateMachineMBean {
-
-  long getMissedCount();
-
-  String getAddressString();
-
-  EndpointStateMachine.EndPointStates getState();
-
-  int getVersionNumber();
-
-  long getLastSuccessfulHeartbeat();
-}

http://git-wip-us.apache.org/repos/asf/hadoop/blob/ce23d9ad/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/SCMConnectionManager.java
----------------------------------------------------------------------
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/SCMConnectionManager.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/SCMConnectionManager.java
deleted file mode 100644
index a6767c2..0000000
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/SCMConnectionManager.java
+++ /dev/null
@@ -1,201 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with this
- * work for additional information regarding copyright ownership.  The ASF
- * licenses this file to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations 
under
- * the License.
- */
-package org.apache.hadoop.ozone.container.common.statemachine;
-
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.io.IOUtils;
-import org.apache.hadoop.ipc.ProtobufRpcEngine;
-import org.apache.hadoop.ipc.RPC;
-import org.apache.hadoop.metrics2.util.MBeans;
-import org.apache.hadoop.net.NetUtils;
-import org.apache.hadoop.ozone.client.OzoneClientUtils;
-import org.apache.hadoop.ozone.protocolPB
-    .StorageContainerDatanodeProtocolClientSideTranslatorPB;
-import org.apache.hadoop.ozone.protocolPB.StorageContainerDatanodeProtocolPB;
-import org.apache.hadoop.security.UserGroupInformation;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.management.ObjectName;
-import java.io.Closeable;
-import java.io.IOException;
-import java.net.InetSocketAddress;
-import java.util.*;
-import java.util.concurrent.locks.ReadWriteLock;
-import java.util.concurrent.locks.ReentrantReadWriteLock;
-
-/**
- * SCMConnectionManager - Acts as a class that manages the membership
- * information of the SCMs that we are working with.
- */
-public class SCMConnectionManager
-    implements Closeable, SCMConnectionManagerMXBean {
-  private static final Logger LOG =
-      LoggerFactory.getLogger(SCMConnectionManager.class);
-
-  private final ReadWriteLock mapLock;
-  private final Map<InetSocketAddress, EndpointStateMachine> scmMachines;
-
-  private final int rpcTimeout;
-  private final Configuration conf;
-  private final ObjectName jmxBean;
-
-  public SCMConnectionManager(Configuration conf) {
-    this.mapLock = new ReentrantReadWriteLock();
-    Long timeOut = OzoneClientUtils.getScmRpcTimeOutInMilliseconds(conf);
-    this.rpcTimeout = timeOut.intValue();
-    this.scmMachines = new HashMap<>();
-    this.conf = conf;
-    jmxBean = MBeans.register("OzoneDataNode",
-        "SCMConnectionManager",
-        this);
-  }
-
-
-  /**
-   * Returns Config.
-   *
-   * @return ozoneConfig.
-   */
-  public Configuration getConf() {
-    return conf;
-  }
-
-  /**
-   * Get RpcTimeout.
-   *
-   * @return - Return RPC timeout.
-   */
-  public int getRpcTimeout() {
-    return rpcTimeout;
-  }
-
-
-  /**
-   * Takes a read lock.
-   */
-  public void readLock() {
-    this.mapLock.readLock().lock();
-  }
-
-  /**
-   * Releases the read lock.
-   */
-  public void readUnlock() {
-    this.mapLock.readLock().unlock();
-  }
-
-  /**
-   * Takes the write lock.
-   */
-  public void writeLock() {
-    this.mapLock.writeLock().lock();
-  }
-
-  /**
-   * Releases the write lock.
-   */
-  public void writeUnlock() {
-    this.mapLock.writeLock().unlock();
-  }
-
-  /**
-   * adds a new SCM machine to the target set.
-   *
-   * @param address - Address of the SCM machine to send heatbeat to.
-   * @throws IOException
-   */
-  public void addSCMServer(InetSocketAddress address) throws IOException {
-    writeLock();
-    try {
-      if (scmMachines.containsKey(address)) {
-        LOG.warn("Trying to add an existing SCM Machine to Machines group. " +
-            "Ignoring the request.");
-        return;
-      }
-      RPC.setProtocolEngine(conf, StorageContainerDatanodeProtocolPB.class,
-          ProtobufRpcEngine.class);
-      long version =
-          RPC.getProtocolVersion(StorageContainerDatanodeProtocolPB.class);
-
-      StorageContainerDatanodeProtocolPB rpcProxy = RPC.getProxy(
-          StorageContainerDatanodeProtocolPB.class, version,
-          address, UserGroupInformation.getCurrentUser(), conf,
-          NetUtils.getDefaultSocketFactory(conf), getRpcTimeout());
-
-      StorageContainerDatanodeProtocolClientSideTranslatorPB rpcClient =
-          new StorageContainerDatanodeProtocolClientSideTranslatorPB(rpcProxy);
-
-      EndpointStateMachine endPoint =
-          new EndpointStateMachine(address, rpcClient, conf);
-      scmMachines.put(address, endPoint);
-    } finally {
-      writeUnlock();
-    }
-  }
-
-  /**
-   * Removes a  SCM machine for the target set.
-   *
-   * @param address - Address of the SCM machine to send heatbeat to.
-   * @throws IOException
-   */
-  public void removeSCMServer(InetSocketAddress address) throws IOException {
-    writeLock();
-    try {
-      if (!scmMachines.containsKey(address)) {
-        LOG.warn("Trying to remove a non-existent SCM machine. " +
-            "Ignoring the request.");
-        return;
-      }
-
-      EndpointStateMachine endPoint = scmMachines.get(address);
-      endPoint.close();
-      scmMachines.remove(address);
-    } finally {
-      writeUnlock();
-    }
-  }
-
-  /**
-   * Returns all known RPCEndpoints.
-   *
-   * @return - List of RPC Endpoints.
-   */
-  public Collection<EndpointStateMachine> getValues() {
-    return scmMachines.values();
-  }
-
-  @Override
-  public void close() throws IOException {
-    getValues().forEach(endpointStateMachine
-        -> IOUtils.cleanupWithLogger(LOG, endpointStateMachine));
-    MBeans.unregister(jmxBean);
-  }
-
-  @Override
-  public List<EndpointStateMachineMBean> getSCMServers() {
-    readLock();
-    try {
-      return Collections
-          .unmodifiableList(new ArrayList<>(scmMachines.values()));
-
-    } finally {
-      readUnlock();
-    }
-  }
-}

http://git-wip-us.apache.org/repos/asf/hadoop/blob/ce23d9ad/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/SCMConnectionManagerMXBean.java
----------------------------------------------------------------------
diff --git 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/SCMConnectionManagerMXBean.java
 
b/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/SCMConnectionManagerMXBean.java
deleted file mode 100644
index 25ef163..0000000
--- 
a/hadoop-hdfs-project/hadoop-hdfs/src/main/java/org/apache/hadoop/ozone/container/common/statemachine/SCMConnectionManagerMXBean.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/**
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with this
- * work for additional information regarding copyright ownership.  The ASF
- * licenses this file to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * <p>
- * http://www.apache.org/licenses/LICENSE-2.0
- * <p>
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations 
under
- * the License.
- */
-package org.apache.hadoop.ozone.container.common.statemachine;
-
-import java.util.List;
-
-/**
- * JMX information about the connected SCM servers.
- */
-public interface SCMConnectionManagerMXBean {
-
-  List<EndpointStateMachineMBean> getSCMServers();
-}


---------------------------------------------------------------------
To unsubscribe, e-mail: common-commits-unsubscr...@hadoop.apache.org
For additional commands, e-mail: common-commits-h...@hadoop.apache.org

Reply via email to