public VertexManager(VertexManagerPluginDescriptor pluginDesc, UserGroupInformation dagUgi,
Vertex managedVertex, AppContext appContext, StateChangeNotifier stateChangeNotifier) throws TezException {
checkNotNull(pluginDesc, "pluginDesc is null");
checkNotNull(managedVertex, "managedVertex is null");
checkNotNull(appContext, "appContext is null");
checkNotNull(stateChangeNotifier, "notifier is null");
this.pluginDesc = pluginDesc;
this.dagUgi = dagUgi;
this.managedVertex = managedVertex;
this.appContext = appContext;
this.stateChangeNotifier = stateChangeNotifier;
this.rootInputInitEventQueue = new LinkedBlockingQueue<TezEvent>();
pluginContext = new VertexManagerPluginContextImpl();
Preconditions.checkArgument(pluginDesc != null);
payload = pluginDesc.getUserPayload();
pluginFailed = new AtomicBoolean(false);
plugin = ReflectionUtils.createClazzInstance(pluginDesc.getClassName(),
new Class[] { VertexManagerPluginContext.class }, new Object[] { pluginContext });
execService = appContext.getExecService();
eventQueue = new LinkedBlockingQueue<VertexManagerEvent>();
eventInFlight = new AtomicBoolean(false);
}