Upgradeable.java
上传用户:quxuerui
上传日期:2018-01-08
资源大小:41811k
文件大小:3k
源码类别:

网格计算

开发平台:

Java

  1. /**
  2.  * Licensed to the Apache Software Foundation (ASF) under one
  3.  * or more contributor license agreements.  See the NOTICE file
  4.  * distributed with this work for additional information
  5.  * regarding copyright ownership.  The ASF licenses this file
  6.  * to you under the Apache License, Version 2.0 (the
  7.  * "License"); you may not use this file except in compliance
  8.  * with the License.  You may obtain a copy of the License at
  9.  *
  10.  *     http://www.apache.org/licenses/LICENSE-2.0
  11.  *
  12.  * Unless required by applicable law or agreed to in writing, software
  13.  * distributed under the License is distributed on an "AS IS" BASIS,
  14.  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15.  * See the License for the specific language governing permissions and
  16.  * limitations under the License.
  17.  */
  18. package org.apache.hadoop.hdfs.server.common;
  19. import java.io.IOException;
  20. import org.apache.hadoop.hdfs.server.protocol.UpgradeCommand;
  21. /**
  22.  * Common interface for distributed upgrade objects.
  23.  * 
  24.  * Each upgrade object corresponds to a layout version,
  25.  * which is the latest version that should be upgraded using this object.
  26.  * That is all components whose layout version is greater or equal to the
  27.  * one returned by {@link #getVersion()} must be upgraded with this object.
  28.  */
  29. public interface Upgradeable extends Comparable<Upgradeable> {
  30.   /**
  31.    * Get the layout version of the upgrade object.
  32.    * @return layout version
  33.    */
  34.   int getVersion();
  35.   /**
  36.    * Get the type of the software component, which this object is upgrading.
  37.    * @return type
  38.    */
  39.   HdfsConstants.NodeType getType();
  40.   /**
  41.    * Description of the upgrade object for displaying.
  42.    * @return description
  43.    */
  44.   String getDescription();
  45.   /**
  46.    * Upgrade status determines a percentage of the work done out of the total 
  47.    * amount required by the upgrade.
  48.    * 
  49.    * 100% means that the upgrade is completed.
  50.    * Any value < 100 means it is not complete.
  51.    * 
  52.    * The return value should provide at least 2 values, e.g. 0 and 100.
  53.    * @return integer value in the range [0, 100].
  54.    */
  55.   short getUpgradeStatus();
  56.   /**
  57.    * Prepare for the upgrade.
  58.    * E.g. initialize upgrade data structures and set status to 0.
  59.    * 
  60.    * Returns an upgrade command that is used for broadcasting to other cluster
  61.    * components. 
  62.    * E.g. name-node informs data-nodes that they must perform a distributed upgrade.
  63.    * 
  64.    * @return an UpgradeCommand for broadcasting.
  65.    * @throws IOException
  66.    */
  67.   UpgradeCommand startUpgrade() throws IOException;
  68.   /**
  69.    * Complete upgrade.
  70.    * E.g. cleanup upgrade data structures or write metadata to disk.
  71.    * 
  72.    * Returns an upgrade command that is used for broadcasting to other cluster
  73.    * components. 
  74.    * E.g. data-nodes inform the name-node that they completed the upgrade
  75.    * while other data-nodes are still upgrading.
  76.    * 
  77.    * @throws IOException
  78.    */
  79.   UpgradeCommand completeUpgrade() throws IOException;
  80.   /**
  81.    * Get status report for the upgrade.
  82.    * 
  83.    * @param details true if upgradeStatus details need to be included, 
  84.    *                false otherwise
  85.    * @return {@link UpgradeStatusReport}
  86.    * @throws IOException
  87.    */
  88.   UpgradeStatusReport getUpgradeStatusReport(boolean details) throws IOException;
  89. }