private static void atomicCommit(Repository r, boolean rollback) { if (r.isTransactionInProgress()) { if (rollback) { throw new RuntimeException( "Running on devserver or unit tests? To test cross-group, default_high_rep_job_policy_unapplied_job_pct must be > 0"); } r.commit(); } }
@Override public void commit() { init(); get().commit(); }
private void commitIfChanged() { if (sinksToSave.isEmpty()) { r.rollback(); return; } for (IdRef<SinkMarker> id : sinkMarkersToSave) { async.save(getSinkMarkerFromCache(id)); } for (IdRef<?> sinkId : sinksToSave) { logSave(sinkId); // TODO: support pipes at async repository operations r.save(sinkCache.get(sinkId)); } // TODO: destroy empty sinks? r.commit(); }
private void saveInternal(Object object) { boolean newTransaction = beginTransactionForPipesOnSave(object); try { updateExistingPipes(object); rawSave(object); invalidateCache(object); fluxPipes(object); if (newTransaction) { commit(); } } finally { if (newTransaction && isTransactionInProgress()) { rollback(); } } logger.finer("saved"); }
private void flushSource() { try { r.begin(); Pipe pipe = newPipeInstance(); Object source = sourceId.fetch(); r.driver().pipes().flux(pipe, source); r.commit(); } finally { if (r.isTransactionInProgress()) { r.rollback(); } } }
private void destroyInternal(IdRef<?> id) { boolean newTransaction = beginTransactionForPipesOnDestroy(id); try { refluxPipes(id); driver().persistence().destroy(id); invalidateCache(id); // TODO: Pipes - cleanup sinks if (newTransaction) { commit(); } } finally { if (newTransaction && isTransactionInProgress()) { rollback(); } } }
@Test public void testTransactionCommit() { yawp.begin(); yawp.save(new BasicObject("xpto")); yawp.commit(); assertEquals("xpto", yawp(BasicObject.class).only().getStringValue()); }