@Override public void run() { try { LOGGER.info("inside run of onCommit"); WriteSet writeSet = WriteSet.getLocal(); ReadSet readSet = ReadSet.getLocal(); VersionClock.setWriteStamp(); long writeVersion = VersionClock.getWriteStamp(); for (Map.Entry<LockObject<?>, Object> entry : writeSet.getList()) { LockObject<?> key = entry.getKey(); Copyable<?> destination = null; try { destination = key.openRead(); } catch (AbortedException | PanicException e) { e.printStackTrace(); } Copyable<Copyable<?>> source = (Copyable<Copyable<?>>) entry.getValue(); source.copyTo(destination); key.stamp = writeVersion; } writeSet.unlock(); writeSet.clear(); readSet.clear(); Transaction.getLocal().clearKarma(); } catch (Exception e) { e.printStackTrace(); } }