final protected void startOp(final IStartOpMessage msg){
  if (!controller)   throw new UnsupportedOperationException(ERR_NOT_CONTROLLER);
  if (msg == null)   throw new IllegalArgumentException();
  if (!queryId.equals(msg.getQueryId()))   throw new IllegalArgumentException();
  lock.lock();
  try {
    if (log.isTraceEnabled())     log.trace(msg.toString());
    if (future.isDone())     throw new RuntimeException("Query is done");
    runState.startOp(msg);
  }
 catch (  TimeoutException ex) {
    halt(ex);
  }
 finally {
    lock.unlock();
  }
}

final protected void startOp ( final IStartOpMessage msg ) { if ( ! controller ) throw new UnsupportedOperationException ( ERR_NOT_CONTROLLER ) ; if ( msg == null ) throw new IllegalArgumentException ( ) ; if ( ! queryId . equals ( msg . getQueryId ( ) ) ) throw new IllegalArgumentException ( ) ; lock . lock ( ) ; try { if ( log . isTraceEnabled ( ) ) log . trace ( msg . toString ( ) ) ; if ( future . isDone ( ) ) throw new RuntimeException ( "Query is done" ) ; runState . startOp ( msg ) ; } catch ( TimeoutException ex ) { halt ( ex ) ; } finally { lock . unlock ( ) ; } }
message provides notice that the operator has started execution and will consume some specific number of binding set chunks .
