@Override
  public void initialize(MasterServices master, MetricsMaster metricsMaster)
      throws KeeperException, IOException, UnsupportedOperationException {
    this.master = master;

    this.rootDir = master.getMasterFileSystem().getRootDir();
    checkSnapshotSupport(master.getConfiguration(), master.getMasterFileSystem());

    // get the configuration for the coordinator
    Configuration conf = master.getConfiguration();
    long wakeFrequency = conf.getInt(SNAPSHOT_WAKE_MILLIS_KEY, SNAPSHOT_WAKE_MILLIS_DEFAULT);
    long timeoutMillis =
        Math.max(
            conf.getLong(
                SnapshotDescriptionUtils.SNAPSHOT_TIMEOUT_MILLIS_KEY,
                SnapshotDescriptionUtils.SNAPSHOT_TIMEOUT_MILLIS_DEFAULT),
            conf.getLong(
                SnapshotDescriptionUtils.MASTER_SNAPSHOT_TIMEOUT_MILLIS,
                SnapshotDescriptionUtils.DEFAULT_MAX_WAIT_TIME));
    int opThreads = conf.getInt(SNAPSHOT_POOL_THREADS_KEY, SNAPSHOT_POOL_THREADS_DEFAULT);

    // setup the default procedure coordinator
    String name = master.getServerName().toString();
    ThreadPoolExecutor tpool = ProcedureCoordinator.defaultPool(name, opThreads);
    ProcedureCoordinatorRpcs comms =
        new ZKProcedureCoordinatorRpcs(
            master.getZooKeeper(), SnapshotManager.ONLINE_SNAPSHOT_CONTROLLER_DESCRIPTION, name);

    this.coordinator = new ProcedureCoordinator(comms, tpool, timeoutMillis, wakeFrequency);
    this.executorService = master.getExecutorService();
    resetTempDir();
  }
Exemple #2
0
 /**
  * Modify table is async so wait on completion of the table operation in master.
  *
  * @param tableName
  * @param htd
  * @throws IOException
  */
 private void modifyTable(final byte[] tableName, final HTableDescriptor htd) throws IOException {
   MasterServices services = TEST_UTIL.getMiniHBaseCluster().getMaster();
   ExecutorService executor = services.getExecutorService();
   AtomicBoolean done = new AtomicBoolean(false);
   executor.registerListener(EventType.C_M_MODIFY_TABLE, new DoneListener(done));
   this.admin.modifyTable(tableName, htd);
   while (!done.get()) {
     synchronized (done) {
       try {
         done.wait(1000);
       } catch (InterruptedException e) {
         e.printStackTrace();
       }
     }
   }
   executor.unregisterListener(EventType.C_M_MODIFY_TABLE);
 }