Exemplo n.º 1
0
        @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();
          }
        }