+sealed class CommitCoordinationTask implements Callable<CommitInfo> {
+ static final class WithTracker extends CommitCoordinationTask {
+ private final DurationStatisticsTracker commitStatTracker;
+
+ WithTracker(final DOMDataTreeWriteTransaction transaction,
+ final Collection<DOMStoreThreePhaseCommitCohort> cohorts,
+ final DurationStatisticsTracker commitStatTracker) {
+ super(transaction, cohorts);
+ this.commitStatTracker = requireNonNull(commitStatTracker);
+ }
+
+ @Override
+ public CommitInfo call() throws TransactionCommitFailedException {
+ final long startTime = System.nanoTime();
+
+ try {
+ return super.call();
+ } finally {
+ commitStatTracker.addDuration(System.nanoTime() - startTime);
+ }
+ }
+ }
+