@Override public TaskReport commit() { if (commitMethod != null) { try { return (TaskReport) commitMethod.invoke(object); } catch (IllegalAccessException ex) { throw new RuntimeException(ex); } catch (IllegalArgumentException ex) { throw ex; } catch (InvocationTargetException ex) { if (ex.getCause() instanceof RuntimeException) { throw (RuntimeException) ex.getCause(); } if (ex.getCause() instanceof Error) { throw (Error) ex.getCause(); } throw new RuntimeException(ex.getCause()); } } else { return object.commit(); } } }
public TaskReport commit() { completeWorkers(); for (int i = 0; i < scatterCount; i++) { if (trans[i] != null) { int outputTaskIndex = taskIndex * scatterCount + i; TaskReport outputTaskReport = trans[i].commit(); trans[i] = null; // don't abort if (outputTaskReport == null) { outputTaskReport = Exec.newTaskReport(); } state.getOutputTaskState(outputTaskIndex).setTaskReport(outputTaskReport); } } return null; }
public List<TaskReport> run(final TaskSource outputTask) { TransactionalPageOutput tran = runner.open(outputTask, schema, 1); boolean committed = false; try { tran.add(null); tran.commit(); committed = true; } finally { if (!committed) { tran.abort(); } tran.close(); } return new ArrayList<TaskReport>(); } });
public static void process(ExecSession exec, int taskIndex, InputPlugin inputPlugin, Schema inputSchema, TaskSource inputTaskSource, List<FilterPlugin> filterPlugins, List<Schema> filterSchemas, List<TaskSource> filterTaskSources, OutputPlugin outputPlugin, Schema outputSchema, TaskSource outputTaskSource, ProcessStateCallback callback) { TransactionalPageOutput tran = PluginWrappers.transactionalPageOutput( outputPlugin.open(outputTaskSource, outputSchema, taskIndex)); callback.started(); // here needs to use try-with-resource to add exception happend at close() or abort() // to suppressed exception. otherwise exception happend at close() or abort() overwrites // essential exception. try (CloseResource closer = new CloseResource(tran)) { try (AbortTransactionResource aborter = new AbortTransactionResource(tran)) { PageOutput filtered = Filters.open(filterPlugins, filterTaskSources, filterSchemas, tran); closer.closeThis(filtered); TaskReport inputTaskReport = inputPlugin.run(inputTaskSource, inputSchema, taskIndex, filtered); if (inputTaskReport == null) { inputTaskReport = exec.newTaskReport(); } callback.inputCommitted(inputTaskReport); TaskReport outputTaskReport = tran.commit(); aborter.dontAbort(); if (outputTaskReport == null) { outputTaskReport = exec.newTaskReport(); } callback.outputCommitted(outputTaskReport); // TODO check output.finish() is called. wrap or abstract } } }
public List<TaskReport> run(final TaskSource outputTask) { TransactionalPageOutput tran = runner.open(outputTask, schema, 1); boolean committed = false; try { ImmutableMapValue jsonValue = newMap( newString("_c1"), newBoolean(true), newString("_c2"), newInteger(10), newString("_c3"), newString("embulk"), newString("_c4"), newMap(newString("k"), newString("v")) ); for (Page page : PageTestUtils.buildPage( runtime.getBufferAllocator(), schema, true, 2L, 3.0D, "45", Timestamp.ofEpochMilli(678L), jsonValue, true, 2L, 3.0D, "45", Timestamp.ofEpochMilli(678L), jsonValue)) { tran.add(page); } tran.commit(); committed = true; } finally { if (!committed) { tran.abort(); } tran.close(); } return new ArrayList<TaskReport>(); } });
output.commit(); Thread.sleep(1500); // Need to wait until index done
output.commit(); Thread.sleep(1500); // Need to wait until index done
output.commit(); Thread.sleep(1500); // Need to wait until index done