Search in sources :

Example 1 with Worker

use of io.cdap.cdap.api.worker.Worker in project cdap by caskdata.

the class WorkerDriver method startUp.

@Override
protected void startUp() throws Exception {
    LoggingContextAccessor.setLoggingContext(context.getLoggingContext());
    // Instantiate worker instance
    Class<?> workerClass = program.getClassLoader().loadClass(spec.getClassName());
    @SuppressWarnings("unchecked") TypeToken<Worker> workerType = (TypeToken<Worker>) TypeToken.of(workerClass);
    worker = new InstantiatorFactory(false).get(workerType).create();
    // Fields injection
    Reflections.visit(worker, workerType.getType(), new MetricsFieldSetter(context.getMetrics()), new PropertyFieldSetter(spec.getProperties()));
    LOG.debug("Starting Worker Program {}", program.getId());
    // Initialize worker
    // Worker is always using Explicit transaction
    TransactionControl txControl = Transactions.getTransactionControl(TransactionControl.EXPLICIT, Worker.class, worker, "initialize", WorkerContext.class);
    context.initializeProgram(worker, txControl, false);
}
Also used : InstantiatorFactory(io.cdap.cdap.common.lang.InstantiatorFactory) PropertyFieldSetter(io.cdap.cdap.common.lang.PropertyFieldSetter) MetricsFieldSetter(io.cdap.cdap.internal.app.runtime.MetricsFieldSetter) TypeToken(com.google.common.reflect.TypeToken) TransactionControl(io.cdap.cdap.api.annotation.TransactionControl) Worker(io.cdap.cdap.api.worker.Worker)

Aggregations

TypeToken (com.google.common.reflect.TypeToken)1 TransactionControl (io.cdap.cdap.api.annotation.TransactionControl)1 Worker (io.cdap.cdap.api.worker.Worker)1 InstantiatorFactory (io.cdap.cdap.common.lang.InstantiatorFactory)1 PropertyFieldSetter (io.cdap.cdap.common.lang.PropertyFieldSetter)1 MetricsFieldSetter (io.cdap.cdap.internal.app.runtime.MetricsFieldSetter)1