@Override
  public void run() {
    Exception ex = null;

    synchronized (this) {
      fIsStarted = true;
    }

    System.out.println("ExternalIndexBuildJob: run");

    try {
      fPlan.getPlanner().execIndexChangePlan(fMonitor, fPlan);
    } catch (Exception e) {
      e.printStackTrace();
      ex = e;
    }

    synchronized (fSyncObj) {
      fBuilder.notify_job_complete(this);
      fIsDone = true;
      fSyncObj.notifyAll();
    }
  }
 @Override
 public synchronized boolean canReplace(ISVDBIndexChangePlan plan) {
   return (!fIsStarted && plan.equals(fPlan));
 }