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);
}
}
}
}
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;
}
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;
}
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);
}
}
}
}
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;
}
Aggregations