@Override public Object doOperation(final AddElementsFromSocket op, final Context context, final Store store) throws OperationException { final StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment(); if (null != op.getParallelism()) { env.setParallelism(op.getParallelism()); } final DataStream<Element> builder = env.socketTextStream(op.getHostname(), op.getPort(), op.getDelimiter()) .flatMap(new GafferMapFunction(String.class, op.getElementGenerator())); if (Boolean.parseBoolean(op.getOption(FlinkConstants.SKIP_REBALANCING))) { builder.addSink(new GafferSink(op, store)); } else { builder.rebalance().addSink(new GafferSink(op, store)); } try { env.execute(op.getClass().getSimpleName() + "-" + op.getHostname() + ":" + op.getPort()); } catch (final Exception e) { throw new OperationException("Failed to add elements from port: " + op.getPort(), e); } return null; } }