Search in sources :

Example 1 with Cache

use of org.jboss.cache.Cache in project jain-sip.ha by RestComm.

the class ClientTransactionCacheData method putClientTransaction.

public void putClientTransaction(SIPClientTransaction clientTransaction) throws SipCacheException {
    if (logger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
        logger.logStackTrace();
    }
    final MobicentsHASIPClientTransaction haClientTransaction = (MobicentsHASIPClientTransaction) clientTransaction;
    final String transactionId = haClientTransaction.getTransactionId();
    if (logger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
        logger.logDebug("put HA SIP Client Transaction " + clientTransaction + " with id " + transactionId);
    }
    final Cache jbossCache = getMobicentsCache().getJBossCache();
    TransactionManager transactionManager = jbossCache.getConfiguration().getRuntimeConfig().getTransactionManager();
    boolean doTx = false;
    try {
        if (logger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
            logger.logDebug("transaction manager :" + transactionManager);
        }
        if (transactionManager != null && transactionManager.getTransaction() == null) {
            if (logger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
                logger.logDebug("transaction manager begin transaction");
            }
            transactionManager.begin();
            doTx = true;
        }
        final Node childNode = getNode().addChild(Fqn.fromElements(transactionId));
        for (Entry<String, Object> metaData : haClientTransaction.getMetaDataToReplicate().entrySet()) {
            childNode.put(metaData.getKey(), metaData.getValue());
        }
        final Object transactionAppData = haClientTransaction.getApplicationDataToReplicate();
        if (transactionAppData != null) {
            if (logger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
                logger.logDebug("replicating application data " + transactionAppData);
            }
            childNode.put(APPDATA, transactionAppData);
        }
    } catch (Exception ex) {
        try {
            if (transactionManager != null) {
                // Let's set it no matter what.
                transactionManager.setRollbackOnly();
            }
        } catch (Exception exn) {
            logger.logError("Problem rolling back session mgmt transaction", exn);
        }
    } finally {
        if (doTx) {
            try {
                if (transactionManager.getTransaction().getStatus() != Status.STATUS_MARKED_ROLLBACK) {
                    if (logger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
                        logger.logDebug("transaction manager committing transaction");
                    }
                    transactionManager.commit();
                } else {
                    if (logger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
                        logger.logDebug("endBatch(): rolling back batch");
                    }
                    transactionManager.rollback();
                }
            } catch (RollbackException re) {
                // Do nothing here since cache may rollback automatically.
                logger.logWarning("endBatch(): rolling back transaction with exception: " + re);
            } catch (RuntimeException re) {
                throw re;
            } catch (Exception e) {
                throw new RuntimeException("endTransaction(): Caught Exception ending batch: ", e);
            }
        }
    }
}
Also used : MobicentsHASIPClientTransaction(gov.nist.javax.sip.stack.MobicentsHASIPClientTransaction) TransactionManager(javax.transaction.TransactionManager) Node(org.jboss.cache.Node) RollbackException(javax.transaction.RollbackException) IOException(java.io.IOException) CacheException(org.jboss.cache.CacheException) RollbackException(javax.transaction.RollbackException) ParseException(java.text.ParseException) PeerUnavailableException(javax.sip.PeerUnavailableException) MobicentsCache(org.mobicents.cache.MobicentsCache) Cache(org.jboss.cache.Cache)

Example 2 with Cache

use of org.jboss.cache.Cache in project jain-sip.ha by RestComm.

the class ClientTransactionCacheData method removeClientTransaction.

public boolean removeClientTransaction(String transactionId) {
    if (logger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
        logger.logDebug("remove HA SIP Client Transaction " + transactionId);
    }
    boolean succeeded = false;
    final Cache jbossCache = getMobicentsCache().getJBossCache();
    TransactionManager transactionManager = jbossCache.getConfiguration().getRuntimeConfig().getTransactionManager();
    boolean doTx = false;
    try {
        if (logger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
            logger.logDebug("transaction manager :" + transactionManager);
        }
        if (transactionManager != null && transactionManager.getTransaction() == null) {
            if (logger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
                logger.logDebug("transaction manager begin transaction");
            }
            transactionManager.begin();
            doTx = true;
        }
        succeeded = getNode().removeChild(transactionId);
        if (logger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
            logger.logDebug("removed HA SIP Client Transaction ? " + succeeded);
        }
    } catch (Exception ex) {
        try {
            if (transactionManager != null) {
                // Let's set it no matter what.
                transactionManager.setRollbackOnly();
            }
        } catch (Exception exn) {
            logger.logError("Problem rolling back session mgmt transaction", exn);
        }
    } finally {
        if (doTx) {
            try {
                if (transactionManager.getTransaction().getStatus() != Status.STATUS_MARKED_ROLLBACK) {
                    if (logger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
                        logger.logDebug("transaction manager committing transaction");
                    }
                    transactionManager.commit();
                } else {
                    if (logger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
                        logger.logDebug("endBatch(): rolling back batch");
                    }
                    transactionManager.rollback();
                }
            } catch (RollbackException re) {
                // Do nothing here since cache may rollback automatically.
                logger.logWarning("endBatch(): rolling back transaction with exception: " + re);
            } catch (RuntimeException re) {
                throw re;
            } catch (Exception e) {
                throw new RuntimeException("endTransaction(): Caught Exception ending batch: ", e);
            }
        }
    }
    return succeeded;
}
Also used : TransactionManager(javax.transaction.TransactionManager) RollbackException(javax.transaction.RollbackException) IOException(java.io.IOException) CacheException(org.jboss.cache.CacheException) RollbackException(javax.transaction.RollbackException) ParseException(java.text.ParseException) PeerUnavailableException(javax.sip.PeerUnavailableException) MobicentsCache(org.mobicents.cache.MobicentsCache) Cache(org.jboss.cache.Cache)

Example 3 with Cache

use of org.jboss.cache.Cache in project jain-sip.ha by RestComm.

the class SIPDialogCacheData method removeSIPDialog.

public boolean removeSIPDialog(String dialogId) {
    if (logger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
        logger.logDebug("remove HA SIP Dialog " + dialogId);
    }
    boolean succeeded = false;
    final Cache jbossCache = getMobicentsCache().getJBossCache();
    TransactionManager transactionManager = jbossCache.getConfiguration().getRuntimeConfig().getTransactionManager();
    boolean doTx = false;
    try {
        if (logger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
            logger.logDebug("transaction manager :" + transactionManager);
        }
        if (transactionManager != null && transactionManager.getTransaction() == null) {
            if (logger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
                logger.logDebug("transaction manager begin transaction");
            }
            transactionManager.begin();
            doTx = true;
        }
        succeeded = getNode().removeChild(dialogId);
    } catch (Exception ex) {
        try {
            if (transactionManager != null) {
                // Let's set it no matter what.
                transactionManager.setRollbackOnly();
            }
        } catch (Exception exn) {
            logger.logError("Problem rolling back session mgmt transaction", exn);
        }
    } finally {
        if (doTx) {
            try {
                if (transactionManager.getTransaction().getStatus() != Status.STATUS_MARKED_ROLLBACK) {
                    if (logger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
                        logger.logDebug("transaction manager committing transaction");
                    }
                    transactionManager.commit();
                } else {
                    if (logger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
                        logger.logDebug("endBatch(): rolling back batch");
                    }
                    transactionManager.rollback();
                }
            } catch (RollbackException re) {
                // Do nothing here since cache may rollback automatically.
                logger.logWarning("endBatch(): rolling back transaction with exception: " + re);
            } catch (RuntimeException re) {
                throw re;
            } catch (Exception e) {
                throw new RuntimeException("endTransaction(): Caught Exception ending batch: ", e);
            }
        }
    }
    return succeeded;
}
Also used : TransactionManager(javax.transaction.TransactionManager) RollbackException(javax.transaction.RollbackException) CacheException(org.jboss.cache.CacheException) RollbackException(javax.transaction.RollbackException) ParseException(java.text.ParseException) PeerUnavailableException(javax.sip.PeerUnavailableException) Cache(org.jboss.cache.Cache) MobicentsCache(org.mobicents.cache.MobicentsCache)

Example 4 with Cache

use of org.jboss.cache.Cache in project jain-sip.ha by RestComm.

the class ServerTransactionCacheData method putServerTransaction.

public void putServerTransaction(SIPServerTransaction serverTransaction) throws SipCacheException {
    if (clusteredlogger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
        clusteredlogger.logStackTrace();
    }
    final MobicentsHASIPServerTransaction haServerTransaction = (MobicentsHASIPServerTransaction) serverTransaction;
    final String transactionId = haServerTransaction.getTransactionId();
    if (clusteredlogger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
        clusteredlogger.logDebug("put HA SIP Server Transaction " + serverTransaction + " with id " + transactionId);
    }
    final Cache jbossCache = getMobicentsCache().getJBossCache();
    TransactionManager transactionManager = jbossCache.getConfiguration().getRuntimeConfig().getTransactionManager();
    boolean doTx = false;
    try {
        if (clusteredlogger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
            clusteredlogger.logDebug("transaction manager :" + transactionManager);
        }
        if (transactionManager != null && transactionManager.getTransaction() == null) {
            if (clusteredlogger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
                clusteredlogger.logDebug("transaction manager begin transaction");
            }
            transactionManager.begin();
            doTx = true;
        }
        final Node childNode = getNode().addChild(Fqn.fromElements(transactionId));
        for (Entry<String, Object> metaData : haServerTransaction.getMetaDataToReplicate().entrySet()) {
            childNode.put(metaData.getKey(), metaData.getValue());
        }
        final Object transactionAppData = haServerTransaction.getApplicationDataToReplicate();
        if (transactionAppData != null) {
            childNode.put(APPDATA, transactionAppData);
        }
    } catch (Exception ex) {
        try {
            if (transactionManager != null) {
                // Let's set it no matter what.
                transactionManager.setRollbackOnly();
            }
        } catch (Exception exn) {
            clusteredlogger.logError("Problem rolling back session mgmt transaction", exn);
        }
    } finally {
        if (doTx) {
            try {
                if (transactionManager.getTransaction().getStatus() != Status.STATUS_MARKED_ROLLBACK) {
                    if (clusteredlogger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
                        clusteredlogger.logDebug("transaction manager committing transaction");
                    }
                    transactionManager.commit();
                } else {
                    if (clusteredlogger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
                        clusteredlogger.logDebug("endBatch(): rolling back batch");
                    }
                    transactionManager.rollback();
                }
            } catch (RollbackException re) {
                // Do nothing here since cache may rollback automatically.
                clusteredlogger.logWarning("endBatch(): rolling back transaction with exception: " + re);
            } catch (RuntimeException re) {
                throw re;
            } catch (Exception e) {
                throw new RuntimeException("endTransaction(): Caught Exception ending batch: ", e);
            }
        }
    }
}
Also used : MobicentsHASIPServerTransaction(gov.nist.javax.sip.stack.MobicentsHASIPServerTransaction) TransactionManager(javax.transaction.TransactionManager) Node(org.jboss.cache.Node) RollbackException(javax.transaction.RollbackException) IOException(java.io.IOException) CacheException(org.jboss.cache.CacheException) RollbackException(javax.transaction.RollbackException) ParseException(java.text.ParseException) PeerUnavailableException(javax.sip.PeerUnavailableException) MobicentsCache(org.mobicents.cache.MobicentsCache) Cache(org.jboss.cache.Cache)

Example 5 with Cache

use of org.jboss.cache.Cache in project jain-sip.ha by RestComm.

the class ClientTransactionCacheData method getClientTransaction.

public SIPClientTransaction getClientTransaction(String txId) throws SipCacheException {
    SIPClientTransaction haSipClientTransaction = null;
    final Cache jbossCache = getMobicentsCache().getJBossCache();
    Configuration config = jbossCache.getConfiguration();
    final boolean isBuddyReplicationEnabled = config.getBuddyReplicationConfig() != null && config.getBuddyReplicationConfig().isEnabled();
    TransactionManager transactionManager = config.getRuntimeConfig().getTransactionManager();
    boolean doTx = false;
    try {
        if (logger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
            logger.logDebug("transaction manager :" + transactionManager);
        }
        if (transactionManager != null && transactionManager.getTransaction() == null) {
            if (logger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
                logger.logDebug("transaction manager begin transaction");
            }
            transactionManager.begin();
            doTx = true;
        }
        // Adding code to handle Buddy replication to force data gravitation
        if (isBuddyReplicationEnabled) {
            if (logger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
                logger.logDebug("forcing data gravitation since buddy replication is enabled");
            }
            jbossCache.getInvocationContext().getOptionOverrides().setForceDataGravitation(true);
        }
        final Node<String, Object> childNode = getNode().getChild(txId);
        if (childNode != null) {
            try {
                final Map<String, Object> transactionMetaData = childNode.getData();
                final Object dialogAppData = childNode.get(APPDATA);
                haSipClientTransaction = createClientTransaction(txId, transactionMetaData, dialogAppData);
            } catch (CacheException e) {
                throw new SipCacheException("A problem occured while retrieving the following client transaction " + txId + " from the Cache", e);
            }
        } else {
            if (logger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
                logger.logDebug("no child node found for transactionId " + txId);
            }
        }
    } catch (Exception ex) {
        try {
            if (transactionManager != null) {
                // Let's set it no matter what.
                transactionManager.setRollbackOnly();
            }
        } catch (Exception exn) {
            logger.logError("Problem rolling back session mgmt transaction", exn);
        }
    } finally {
        if (doTx) {
            try {
                if (transactionManager.getTransaction().getStatus() != Status.STATUS_MARKED_ROLLBACK) {
                    if (logger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
                        logger.logDebug("transaction manager committing transaction");
                    }
                    transactionManager.commit();
                } else {
                    if (logger.isLoggingEnabled(StackLogger.TRACE_DEBUG)) {
                        logger.logDebug("endBatch(): rolling back batch");
                    }
                    transactionManager.rollback();
                }
            } catch (RollbackException re) {
                // Do nothing here since cache may rollback automatically.
                logger.logWarning("endBatch(): rolling back transaction with exception: " + re);
            } catch (RuntimeException re) {
                throw re;
            } catch (Exception e) {
                throw new RuntimeException("endTransaction(): Caught Exception ending batch: ", e);
            }
        }
    }
    return haSipClientTransaction;
}
Also used : SIPClientTransaction(gov.nist.javax.sip.stack.SIPClientTransaction) MobicentsHASIPClientTransaction(gov.nist.javax.sip.stack.MobicentsHASIPClientTransaction) Configuration(org.jboss.cache.config.Configuration) CacheException(org.jboss.cache.CacheException) RollbackException(javax.transaction.RollbackException) IOException(java.io.IOException) CacheException(org.jboss.cache.CacheException) RollbackException(javax.transaction.RollbackException) ParseException(java.text.ParseException) PeerUnavailableException(javax.sip.PeerUnavailableException) TransactionManager(javax.transaction.TransactionManager) MobicentsCache(org.mobicents.cache.MobicentsCache) Cache(org.jboss.cache.Cache)

Aggregations

ParseException (java.text.ParseException)10 PeerUnavailableException (javax.sip.PeerUnavailableException)10 RollbackException (javax.transaction.RollbackException)10 TransactionManager (javax.transaction.TransactionManager)10 Cache (org.jboss.cache.Cache)10 CacheException (org.jboss.cache.CacheException)10 MobicentsCache (org.mobicents.cache.MobicentsCache)10 IOException (java.io.IOException)6 Configuration (org.jboss.cache.config.Configuration)4 AbstractHASipDialog (gov.nist.javax.sip.stack.AbstractHASipDialog)3 Node (org.jboss.cache.Node)3 HASipDialog (org.mobicents.ha.javax.sip.HASipDialog)3 MobicentsHASIPClientTransaction (gov.nist.javax.sip.stack.MobicentsHASIPClientTransaction)2 MobicentsHASIPServerTransaction (gov.nist.javax.sip.stack.MobicentsHASIPServerTransaction)2 SIPClientTransaction (gov.nist.javax.sip.stack.SIPClientTransaction)1 SIPDialog (gov.nist.javax.sip.stack.SIPDialog)1 SIPServerTransaction (gov.nist.javax.sip.stack.SIPServerTransaction)1