Package com.sun.messaging.jmq.jmsserver.data

Examples of com.sun.messaging.jmq.jmsserver.data.TransactionList


        sendRemoteTransactionInfo(tid, from, cii.getXid(), false);
    }

    private void sendRemoteTransactionInfo(TransactionUID tid, BrokerAddress to,
                                           Long xid, boolean ownerWaitingFor) {
        TransactionList translist = Globals.getTransactionList();
        TransactionState ts =  translist.getRemoteTransactionState(tid);
        if (ts == null && !ownerWaitingFor) {
            if (DEBUG_CLUSTER_TXN) {
            logger.log(logger.INFO, "Remote transaction "+ tid+ " not found");
            }
            return;
        }
        if (ts != null && ts.getState() !=  TransactionState.ROLLEDBACK &&
                          ts.getState() != TransactionState.COMMITTED) {
            return;
        }

        int s  = (ts == null ? TransactionState.NULL:ts.getState());
        TransactionBroker txnhome = null;
        if (s ==  TransactionState.ROLLEDBACK || s ==  TransactionState.COMMITTED) {
            txnhome = translist.getRemoteTransactionHomeBroker(tid);
        }
        ClusterTxnInfoInfo ii = ClusterTxnInfoInfo.newInstance(new Long(tid.longValue()),
                 s, null, null, (txnhome == null)? null:txnhome.getBrokerAddress(), false, c, xid);
        if (DEBUG_CLUSTER_TXN) {
            logger.log(logger.INFO,
View Full Code Here


        sendClusterTransactionInfo(new TransactionUID(tid), to, null);
    }

    //Caller must ensure this is the transaction home broker
    private void sendClusterTransactionInfo(TransactionUID tid, BrokerAddress to, Long xid) {
        TransactionList translist = Globals.getTransactionList();
        TransactionState ts =  translist.retrieveState(tid, true);

        BrokerAddress[] parties = null;
        BrokerAddress[] waitfor = null;
        TransactionBroker[] brokers = null;
        if (ts != null) {
        try {
            brokers = translist.getClusterTransactionBrokers(tid);
        } catch (Exception e) {
            logger.log(logger.WARNING, "Can't retrieve cluster transaction brokers:"+ e.getMessage());
        }
        if (brokers == null) {
            logger.log(logger.WARNING, "No cluster transaction brokers information for TID="+ tid);
View Full Code Here

        if (DEBUG_CLUSTER_TXN) {
        logger.log(logger.INFO, Globals.getBrokerResources().getString(
                   BrokerResources.I_RECEIVED_TXN_INFO, from.toString(), ii.toString()));
        }

        TransactionList translist = Globals.getTransactionList();
        Long tid = ii.getTransactionID();
        TransactionUID tuid = new TransactionUID(tid.longValue());
        int s = ii.getTransactionState();

        if (!ii.isOwner() || (ii.isOwner() && from.equals(selfAddress))) {
            TransactionState mystate =  translist.retrieveState(tuid, true);
            if (mystate != null && mystate.getState() == TransactionState.COMMITTED) {
                if (translist.getClusterTransactionBroker(tuid, from) != null) {
                    if (s == TransactionState.COMMITTED ||
                        (!ii.isOwner() && s == TransactionState.NULL)) {
                        if (DEBUG_CLUSTER_TXN) {
                        logger.log(logger.INFO, "Update broker "+from+ " for committed cluster transaction "+tuid);  
                        }
                        try {
                            translist.completeClusterTransactionBrokerState(tuid,
                                          TransactionState.COMMITTED, from, true);
                            if (!ii.isOwner() && s != TransactionState.NULL) {
                                sendClusterTransactionInfo(tuid, from, null);
                            }

                        } catch (Exception e) {
                            logger.logStack(logger.WARNING,
                                   "Unable to update transaction broker state for "+from+", TUID="+tuid, e);
                            if (!ii.isOwner()) {
                                return;
                            }
                        }
                    }
                } else {
                    if (DEBUG_CLUSTER_TXN) {
                    logger.log(logger.INFO, "Broker "+from+" is not a transaction broker for TUID="+tuid);
                    }
                }
                if (!ii.isOwner()) {
                    return;
                }
            }
        }

        if (s == TransactionState.NULL && !ii.isOwner()) return;

        if (translist.getRemoteTransactionState(tuid) == null && !ii.isOwner()) return;

        if (ii.isOwner() &&
            translist.getRemoteTransactionState(tuid) == null) {
            try {
                if (ii.getWaitfor() != null &&
                    ii.isWaitedfor((selfAddress))) {

                    sendRemoteTransactionInfo(tuid, from, null, true);
View Full Code Here

TOP

Related Classes of com.sun.messaging.jmq.jmsserver.data.TransactionList

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.