/** {@inheritDoc} */
  @Override
  public void txEnd(GridCacheTx tx, boolean commit) throws GridException {
    init();

    Session ses = tx.removeMeta(ATTR_SES);

    if (ses != null) {
      Transaction hTx = ses.getTransaction();

      if (hTx != null) {
        try {
          if (commit) {
            ses.flush();

            hTx.commit();
          } else hTx.rollback();

          if (log.isDebugEnabled())
            log.debug("Transaction ended [xid=" + tx.xid() + ", commit=" + commit + ']');
        } catch (HibernateException e) {
          throw new GridException(
              "Failed to end transaction [xid=" + tx.xid() + ", commit=" + commit + ']', e);
        } finally {
          ses.close();
        }
      }
    }
  }
  /**
   * Gets Hibernate session.
   *
   * @param tx Cache transaction.
   * @return Session.
   */
  Session session(@Nullable GridCacheTx tx) {
    Session ses;

    if (tx != null) {
      ses = tx.meta(ATTR_SES);

      if (ses == null) {
        ses = sesFactory.openSession();

        ses.beginTransaction();

        // Store session in transaction metadata, so it can be accessed
        // for other operations on the same transaction.
        tx.addMeta(ATTR_SES, ses);

        if (log.isDebugEnabled())
          log.debug("Hibernate session open [ses=" + ses + ", tx=" + tx.xid() + "]");
      }
    } else {
      ses = sesFactory.openSession();

      ses.beginTransaction();
    }

    return ses;
  }
  /** Roll backs current transaction. */
  private void rollbackCurrentTx() {
    try {
      TxContext ctx = txCtx.get();

      if (ctx != null) {
        txCtx.remove();

        GridCacheTx tx = cache.tx();

        if (tx != null) tx.rollback();
      }
    } catch (GridException e) {
      log.error("Failed to rollback cache transaction.", e);
    }
  }
  /**
   * @param ctx Transaction context.
   * @param key Key.
   * @throws GridException If failed.
   */
  private void unlock(TxContext ctx, Object key) throws GridException {
    if (ctx.unlocked(key)) { // Finish transaction if last key is unlocked.
      txCtx.remove();

      GridCacheTx tx = cache.tx();

      assert tx != null;

      try {
        tx.commit();
      } finally {
        tx.close();
      }

      assert cache.tx() == null;
    }
  }
Ejemplo n.º 5
0
  /** {@inheritDoc} */
  @Override
  public void rollback() throws GridException {
    enter();

    try {
      tx.rollback();
    } finally {
      leave();
    }
  }
Ejemplo n.º 6
0
  /** {@inheritDoc} */
  @Override
  public boolean isRollbackOnly() {
    enter();

    try {
      return tx.isRollbackOnly();
    } finally {
      leave();
    }
  }
Ejemplo n.º 7
0
  /** {@inheritDoc} */
  @Override
  public void end() throws GridException {
    enter();

    try {
      tx.end();
    } finally {
      leave();
    }
  }
Ejemplo n.º 8
0
  /** {@inheritDoc} */
  @Override
  public GridFuture<GridCacheTx> commitAsync() {
    enter();

    try {
      return tx.commitAsync();
    } finally {
      leave();
    }
  }
Ejemplo n.º 9
0
 /** {@inheritDoc} */
 @Override
 public long threadId() {
   return tx.threadId();
 }
Ejemplo n.º 10
0
 /** {@inheritDoc} */
 @Override
 public UUID nodeId() {
   return tx.nodeId();
 }
Ejemplo n.º 11
0
 /** {@inheritDoc} */
 @Override
 public UUID xid() {
   return tx.xid();
 }
Ejemplo n.º 12
0
 /** {@inheritDoc} */
 @Override
 public <V> boolean replaceMeta(String name, V curVal, V newVal) {
   return tx.replaceMeta(name, curVal, newVal);
 }
Ejemplo n.º 13
0
 /** {@inheritDoc} */
 @Override
 public <V> boolean hasMeta(String name, V val) {
   return tx.hasMeta(name, val);
 }
Ejemplo n.º 14
0
 /** {@inheritDoc} */
 @Override
 public <V> V addMeta(String name, V val) {
   return tx.addMeta(name, val);
 }
Ejemplo n.º 15
0
 /** {@inheritDoc} */
 @Override
 public GridCacheTxConcurrency concurrency() {
   return tx.concurrency();
 }
Ejemplo n.º 16
0
 /** {@inheritDoc} */
 @Override
 public void copyMeta(GridMetadataAware from) {
   tx.copyMeta(from);
 }
Ejemplo n.º 17
0
 /** {@inheritDoc} */
 @SuppressWarnings({"RedundantTypeArguments"})
 @Override
 public <V> V removeMeta(String name) {
   return tx.<V>removeMeta(name);
 }
Ejemplo n.º 18
0
 /** {@inheritDoc} */
 @Override
 public <V> V addMetaIfAbsent(String name, @Nullable Callable<V> c) {
   return tx.addMetaIfAbsent(name, c);
 }
Ejemplo n.º 19
0
 /** {@inheritDoc} */
 @Nullable
 @Override
 public <V> V addMetaIfAbsent(String name, V val) {
   return tx.addMeta(name, val);
 }
Ejemplo n.º 20
0
 /** {@inheritDoc} */
 @Override
 public <V> V putMetaIfAbsent(String name, Callable<V> c) {
   return tx.putMetaIfAbsent(name, c);
 }
Ejemplo n.º 21
0
 /** {@inheritDoc} */
 @Override
 public <V> V putMetaIfAbsent(String name, V val) {
   return tx.putMetaIfAbsent(name, val);
 }
Ejemplo n.º 22
0
 /** {@inheritDoc} */
 @Override
 public long startTime() {
   return tx.startTime();
 }
Ejemplo n.º 23
0
 /** {@inheritDoc} */
 @Override
 public GridCacheTxIsolation isolation() {
   return tx.isolation();
 }
Ejemplo n.º 24
0
 /** {@inheritDoc} */
 @Override
 public boolean hasMeta(String name) {
   return tx.hasMeta(name);
 }
Ejemplo n.º 25
0
 /** {@inheritDoc} */
 @Override
 public boolean isInvalidate() {
   return tx.isInvalidate();
 }
Ejemplo n.º 26
0
 /** {@inheritDoc} */
 @Override
 public void copyMeta(Map<String, ?> data) {
   tx.copyMeta(data);
 }
Ejemplo n.º 27
0
 /** {@inheritDoc} */
 @Override
 public <V> boolean removeMeta(String name, V val) {
   return tx.removeMeta(name, val);
 }
Ejemplo n.º 28
0
 /** {@inheritDoc} */
 @Override
 public long timeout(long timeout) {
   return tx.timeout(timeout);
 }
Ejemplo n.º 29
0
 /** {@inheritDoc} */
 @Override
 public <V> Map<String, V> allMeta() {
   return tx.allMeta();
 }
Ejemplo n.º 30
0
 /** {@inheritDoc} */
 @Override
 public GridCacheTxState state() {
   return tx.state();
 }