Add isDone() method on UnitOfWork.
This commit is contained in:
parent
7b4e46431f
commit
3554b7ecb5
2 changed files with 12 additions and 2 deletions
|
@ -312,7 +312,11 @@ public abstract class AbstractUnitOfWork<E extends Exception>
|
|||
* @return a function from which to chain work that only happens when commit is successful
|
||||
* @throws E when the work overlaps with other concurrent writers.
|
||||
*/
|
||||
public PostCommitFunction<Void, Void> commit() throws E, TimeoutException {
|
||||
public synchronized PostCommitFunction<Void, Void> commit() throws E, TimeoutException {
|
||||
|
||||
if (isDone()) {
|
||||
return new PostCommitFunction(this, null, null, false);
|
||||
}
|
||||
|
||||
// Only the outer-most UOW batches statements for commit time, execute them.
|
||||
if (batch != null) {
|
||||
|
@ -411,7 +415,7 @@ public abstract class AbstractUnitOfWork<E extends Exception>
|
|||
|
||||
/* Explicitly discard the work and mark it as as such in the log. */
|
||||
public synchronized void abort() {
|
||||
if (!aborted) {
|
||||
if (!isDone()) {
|
||||
aborted = true;
|
||||
|
||||
// Spoil any pending futures created within the context of this unit of work.
|
||||
|
@ -458,6 +462,10 @@ public abstract class AbstractUnitOfWork<E extends Exception>
|
|||
});
|
||||
}
|
||||
|
||||
public boolean isDone() {
|
||||
return aborted || committed;
|
||||
}
|
||||
|
||||
public String describeConflicts() {
|
||||
return "it's complex...";
|
||||
}
|
||||
|
|
|
@ -53,6 +53,8 @@ public interface UnitOfWork<X extends Exception> extends AutoCloseable {
|
|||
|
||||
boolean hasCommitted();
|
||||
|
||||
boolean isDone();
|
||||
|
||||
long committedAt();
|
||||
|
||||
void batch(AbstractOperation operation);
|
||||
|
|
Loading…
Reference in a new issue