Search in sources :

Example 1 with Observer

use of org.apache.hadoop.fs.slive.ObserveableOp.Observer in project hadoop by apache.

the class WeightSelector method configureOperations.

/**
   * Sets up the operation using the given configuration by setting up the
   * number of operations to perform (and how many are left) and setting up the
   * operation objects to be used throughout selection.
   * 
   * @param cfg
   *          ConfigExtractor.
   */
private void configureOperations(ConfigExtractor cfg) {
    operations = new TreeMap<OperationType, OperationInfo>();
    Map<OperationType, OperationData> opinfo = cfg.getOperations();
    int totalAm = cfg.getOpCount();
    int opsLeft = totalAm;
    NumberFormat formatter = Formatter.getPercentFormatter();
    for (final OperationType type : opinfo.keySet()) {
        OperationData opData = opinfo.get(type);
        OperationInfo info = new OperationInfo();
        info.distribution = opData.getDistribution();
        int amLeft = determineHowMany(totalAm, opData, type);
        opsLeft -= amLeft;
        LOG.info(type.name() + " has " + amLeft + " initial operations out of " + totalAm + " for its ratio " + formatter.format(opData.getPercent()));
        info.amountLeft = amLeft;
        Operation op = factory.getOperation(type);
        // its done
        if (op != null) {
            Observer fn = new Observer() {

                public void notifyFinished(Operation op) {
                    OperationInfo opInfo = operations.get(type);
                    if (opInfo != null) {
                        --opInfo.amountLeft;
                    }
                }

                public void notifyStarting(Operation op) {
                }
            };
            info.operation = new ObserveableOp(op, fn);
            operations.put(type, info);
        }
    }
    if (opsLeft > 0) {
        LOG.info(opsLeft + " left over operations found (due to inability to support partial operations)");
    }
}
Also used : Observer(org.apache.hadoop.fs.slive.ObserveableOp.Observer) OperationType(org.apache.hadoop.fs.slive.Constants.OperationType) NumberFormat(java.text.NumberFormat)

Aggregations

NumberFormat (java.text.NumberFormat)1 OperationType (org.apache.hadoop.fs.slive.Constants.OperationType)1 Observer (org.apache.hadoop.fs.slive.ObserveableOp.Observer)1