use of org.apache.accumulo.core.spi.common.ServiceEnvironment in project accumulo by apache.
the class DefaultCompactionPlannerTest method testErrorExternalNoQueue.
/**
* Tests external type executor missing queue throws error
*/
@Test
public void testErrorExternalNoQueue() {
DefaultCompactionPlanner planner = new DefaultCompactionPlanner();
Configuration conf = EasyMock.createMock(Configuration.class);
EasyMock.expect(conf.isSet(EasyMock.anyString())).andReturn(false).anyTimes();
ServiceEnvironment senv = EasyMock.createMock(ServiceEnvironment.class);
EasyMock.expect(senv.getConfiguration()).andReturn(conf).anyTimes();
EasyMock.replay(conf, senv);
String executors = getExecutors("'type': 'internal','maxSize':'32M','numThreads':1", "'type': 'internal','maxSize':'128M','numThreads':2", "'type': 'external','maxSize':'512M'");
var e = assertThrows(NullPointerException.class, () -> planner.init(getInitParams(senv, executors)), "Failed to throw error");
assertTrue(e.getMessage().contains("queue"), "Error message didn't contain queue");
}
use of org.apache.accumulo.core.spi.common.ServiceEnvironment in project accumulo by apache.
the class DefaultCompactionPlannerTest method testErrorExternalTypeNumThreads.
/**
* Test external type executor with numThreads set throws error.
*/
@Test
public void testErrorExternalTypeNumThreads() {
DefaultCompactionPlanner planner = new DefaultCompactionPlanner();
Configuration conf = EasyMock.createMock(Configuration.class);
EasyMock.expect(conf.isSet(EasyMock.anyString())).andReturn(false).anyTimes();
ServiceEnvironment senv = EasyMock.createMock(ServiceEnvironment.class);
EasyMock.expect(senv.getConfiguration()).andReturn(conf).anyTimes();
EasyMock.replay(conf, senv);
String executors = getExecutors("'type': 'internal','maxSize':'32M','numThreads':1", "'type': 'internal','maxSize':'128M','numThreads':2", "'type': 'external','maxSize':'512M','numThreads':3");
var e = assertThrows(IllegalArgumentException.class, () -> planner.init(getInitParams(senv, executors)), "Failed to throw error");
assertTrue(e.getMessage().contains("numThreads"), "Error message didn't contain numThreads");
}
use of org.apache.accumulo.core.spi.common.ServiceEnvironment in project accumulo by apache.
the class CheckCompactionConfig method execute.
@Override
public void execute(String[] args) throws Exception {
Opts opts = new Opts();
opts.parseArgs(keyword(), args);
if (opts.filePath == null) {
throw new IllegalArgumentException("No properties file was given");
}
Path path = Path.of(opts.filePath);
if (!path.toFile().exists())
throw new FileNotFoundException("File at given path could not be found");
AccumuloConfiguration config = SiteConfiguration.fromFile(path.toFile()).build();
var servicesConfig = new CompactionServicesConfig(config, log::warn);
ServiceEnvironment senv = createServiceEnvironment(config);
Set<String> defaultServices = Set.of(DEFAULT, META, ROOT);
if (servicesConfig.getPlanners().keySet().equals(defaultServices)) {
log.warn("Only the default compaction services were created - {}", defaultServices);
return;
}
for (var entry : servicesConfig.getPlanners().entrySet()) {
String serviceId = entry.getKey();
String plannerClassName = entry.getValue();
log.info("Service id: {}, planner class:{}", serviceId, plannerClassName);
Class<? extends CompactionPlanner> plannerClass = Class.forName(plannerClassName).asSubclass(CompactionPlanner.class);
CompactionPlanner planner = plannerClass.getDeclaredConstructor().newInstance();
var initParams = new CompactionPlannerInitParams(CompactionServiceId.of(serviceId), servicesConfig.getOptions().get(serviceId), senv);
planner.init(initParams);
initParams.getRequestedExecutors().forEach((execId, numThreads) -> log.info("Compaction service '{}' requested creation of thread pool '{}' with {} threads.", serviceId, execId, numThreads));
initParams.getRequestedExternalExecutors().forEach(execId -> log.info("Compaction service '{}' requested with external execution queue '{}'", serviceId, execId));
}
log.info("Properties file has passed all checks.");
}
use of org.apache.accumulo.core.spi.common.ServiceEnvironment in project accumulo by apache.
the class TableConfiguration method createCompactionDispatcher.
private static CompactionDispatcher createCompactionDispatcher(AccumuloConfiguration conf, ServerContext context, TableId tableId) {
CompactionDispatcher newDispatcher = Property.createTableInstanceFromPropertyName(conf, Property.TABLE_COMPACTION_DISPATCHER, CompactionDispatcher.class, null);
Map<String, String> opts = conf.getAllPropertiesWithPrefixStripped(Property.TABLE_COMPACTION_DISPATCHER_OPTS);
newDispatcher.init(new CompactionDispatcher.InitParameters() {
private final ServiceEnvironment senv = new ServiceEnvironmentImpl(context);
@Override
public TableId getTableId() {
return tableId;
}
@Override
public Map<String, String> getOptions() {
return opts;
}
@Override
public ServiceEnvironment getServiceEnv() {
return senv;
}
});
return newDispatcher;
}
use of org.apache.accumulo.core.spi.common.ServiceEnvironment in project accumulo by apache.
the class TableConfiguration method createScanDispatcher.
private static ScanDispatcher createScanDispatcher(AccumuloConfiguration conf, ServerContext context, TableId tableId) {
ScanDispatcher newDispatcher = Property.createTableInstanceFromPropertyName(conf, Property.TABLE_SCAN_DISPATCHER, ScanDispatcher.class, null);
Map<String, String> opts = conf.getAllPropertiesWithPrefixStripped(Property.TABLE_SCAN_DISPATCHER_OPTS);
newDispatcher.init(new ScanDispatcher.InitParameters() {
private final ServiceEnvironment senv = new ServiceEnvironmentImpl(context);
@Override
public TableId getTableId() {
return tableId;
}
@Override
public Map<String, String> getOptions() {
return opts;
}
@Override
public ServiceEnvironment getServiceEnv() {
return senv;
}
});
return newDispatcher;
}
Aggregations