public SpillManager(SabotConfig sabotConfig, OptionManager optionManager, String id, Configuration hadoopConf, SpillService spillService, String caller) { final List<String> directories = new ArrayList<>(sabotConfig.getStringList(ExecConstants.SPILL_DIRS)); if (directories.isEmpty()) { throw UserException.dataWriteError().message("No spill locations specified.").build(logger); } this.id = id; this.caller = caller; this.hadoopConf = hadoopConf; this.spillService = spillService; // load options if (optionManager != null) { this.minDiskSpacePercentage = optionManager.getOption(ExecConstants.SPILL_DISK_SPACE_LIMIT_PERCENTAGE); this.minDiskSpace = optionManager.getOption(ExecConstants.SPILL_DISK_SPACE_LIMIT_BYTES); this.healthCheckInterval = optionManager.getOption(ExecConstants.SPILL_DISK_SPACE_CHECK_INTERVAL); } else { this.minDiskSpacePercentage = ExecConstants.SPILL_DISK_SPACE_LIMIT_PERCENTAGE.getDefault().getFloatVal(); this.minDiskSpace = ExecConstants.SPILL_DISK_SPACE_LIMIT_BYTES.getDefault().getNumVal(); this.healthCheckInterval = ExecConstants.SPILL_DISK_SPACE_CHECK_INTERVAL.getDefault().getNumVal(); } try { spillService.makeSpillSubdirs(id); } catch (UserException e) { throw UserException.dataWriteError(e) .addContext("Caller", caller) .build(logger); } }
@Override public void validate(OptionValue v) { super.validate(v); if (v.getFloatVal() > max || v.getFloatVal() < min) { throw UserException.validationError() .message(String.format("Option %s must be between %f and %f.", getOptionName(), min, max)) .build(logger); } } }
public double getRowCountEstimateFactor(){ return options.getOption(JOIN_ROW_COUNT_ESTIMATE_FACTOR.getOptionName()).getFloatVal(); }
public double getNestedLoopJoinFactor(){ return options.getOption(NESTEDLOOPJOIN_FACTOR.getOptionName()).getFloatVal(); }
@Override public double getOption(DoubleValidator validator) { return getOption(validator.getOptionName()).getFloatVal(); }
public AutoCloseable with(final DoubleValidator validator, final double value){ final double oldValue = testContext.getOptions().getOption(validator); testContext.getOptions().setOption(OptionValue.createDouble(OptionType.SYSTEM, validator.getOptionName(), value)); return new AutoCloseable(){ @Override public void close() throws Exception { testContext.getOptions().setOption(OptionValue.createDouble(OptionType.SYSTEM, validator.getOptionName(), oldValue)); }}; }
@Override public void close() throws Exception { testContext.getOptions().setOption(OptionValue.createDouble(OptionType.SYSTEM, validator.getOptionName(), oldValue)); }}; }