コード例 #1
0
  /** Modify the column family from the file system */
  private void updateTableDescriptor(final MasterProcedureEnv env) throws IOException {
    // Update table descriptor
    LOG.info("ModifyColumnFamily. Table = " + tableName + " HCD = " + cfDescriptor.toString());

    HTableDescriptor htd = env.getMasterServices().getTableDescriptors().get(tableName);
    htd.modifyFamily(cfDescriptor);
    env.getMasterServices().getTableDescriptors().add(htd);
  }
コード例 #2
0
 /**
  * Add column to a table
  * @param tableName
  * @param hcd
  * @return Modified HTableDescriptor with new column added.
  * @throws IOException
  */
 public HTableDescriptor addColumn(byte[] tableName, HColumnDescriptor hcd)
     throws IOException {
   LOG.info("AddColumn. Table = " + Bytes.toString(tableName) + " HCD = " +
     hcd.toString());
   HTableDescriptor htd = this.services.getTableDescriptors().get(tableName);
   if (htd == null) {
     throw new InvalidFamilyOperationException("Family '" +
       hcd.getNameAsString() + "' cannot be modified as HTD is null");
   }
   htd.addFamily(hcd);
   this.services.getTableDescriptors().add(htd);
   return htd;
 }
コード例 #3
0
  /**
   * Modify Column of a table
   * @param tableName
   * @param hcd HColumnDesciptor
   * @return Modified HTableDescriptor with the column modified.
   * @throws IOException
   */
  public HTableDescriptor modifyColumn(byte[] tableName, HColumnDescriptor hcd)
      throws IOException {
    LOG.info("AddModifyColumn. Table = " + Bytes.toString(tableName)
        + " HCD = " + hcd.toString());

    HTableDescriptor htd = this.services.getTableDescriptors().get(tableName);
    byte [] familyName = hcd.getName();
    if(!htd.hasFamily(familyName)) {
      throw new InvalidFamilyOperationException("Family '" +
        Bytes.toString(familyName) + "' doesn't exists so cannot be modified");
    }
    htd.addFamily(hcd);
    this.services.getTableDescriptors().add(htd);
    return htd;
  }
コード例 #4
0
  /** Add the column family to the file system */
  private void updateTableDescriptor(final MasterProcedureEnv env) throws IOException {
    // Update table descriptor
    LOG.info("AddColumn. Table = " + tableName + " HCD = " + cfDescriptor.toString());

    HTableDescriptor htd = env.getMasterServices().getTableDescriptors().get(tableName);

    if (htd.hasFamily(cfDescriptor.getName())) {
      // It is possible to reach this situation, as we could already add the column family
      // to table descriptor, but the master failover happens before we complete this state.
      // We should be able to handle running this function multiple times without causing problem.
      return;
    }

    htd.addFamily(cfDescriptor);
    env.getMasterServices().getTableDescriptors().add(htd);
  }