public static boolean createAndSave(String hostAddress, int port ) { boolean ret_status = true ; if ( _singularItem == null ) { _singularItem = new TransactionStatusManagerItem(hostAddress, port ); ret_status = _singularItem.saveThis(); } return ret_status ; }
public String getDeadTime() { Date d = txStatusMgrItem.getDeadTime(); return (d == null ? "Still live" : StateBean.formatter.format(d)); } }
/** * Destroy the host/port pair for the specified process Uid. */ public static boolean removeThis( Uid pidUid ) { boolean ret_status = false ; try { ret_status = getStore().remove_committed( pidUid, _typeName ) ; } catch ( ObjectStoreException ex ) { tsLogger.i18NLogger.warn_recovery_TransactionStatusManagerItem_1(ex); } return ret_status ; }
/** * Crash Recovery uses this method to recreate a * representation of the Transaction Status Managers * host/port pair contact. */ public static TransactionStatusManagerItem recreate ( Uid uid ) { TransactionStatusManagerItem theItem = new TransactionStatusManagerItem( uid ) ; if ( theItem.restoreThis() ) { return theItem ; } else { return null; } }
Date oldestSurviving = new Date( new Date().getTime() - _expiryTime * 1000 ) ; tsmItem = TransactionStatusManagerItem.recreate( newUid ) ; Date timeOfDeath = tsmItem.getDeadTime() ; if ( timeOfDeath != null && timeOfDeath.before(oldestSurviving) ) tsLogger.i18NLogger.info_recovery_ExpiredTransactionStatusManagerScanner_3(newUid); new TransactionStatusConnector ( process_id, currentUid ) ; tsc.test( tsmItem ) ; if ( tsc.isDead() ) tsLogger.i18NLogger.info_recovery_ExpiredTransactionStatusManagerScanner_3(newUid); tsc.delete() ;
String serverHost = _tsmi.host() ; int serverPort = _tsmi.port() ; if ( Utility.hexStringToInt(server_pid) == Utility.hexStringToInt(_pid) ) _to_server.flush() ; tsLogger.i18NLogger.info_recovery_TransactionStatusConnector_4(_pid, serverHost, Integer.toString(serverPort), _connector_socket.toString()); setDeadTSM() ; tsLogger.i18NLogger.info_recovery_TransactionStatusConnector_5(_pid); tsLogger.i18NLogger.info_recovery_TransactionStatusConnector_6(); setDeadTSM() ;
/** * Create service and Transaction status manager item. */ private void start( String serviceName, String host, int port ) { try { Service service = ClassloadingUtility.loadAndInstantiateClass(Service.class, serviceName, null); if(service == null) { tsLogger.i18NLogger.warn_recovery_TransactionStatusManager_4(serviceName); return; } ServerSocket socketServer = getTsmServerSocket(host, port); addService( service, socketServer ) ; TransactionStatusManagerItem.createAndSave(socketServer.getInetAddress().getHostAddress(), socketServer.getLocalPort() ) ; tsLogger.i18NLogger.info_recovery_TransactionStatusManager_3(Integer.toString(socketServer.getLocalPort()), socketServer.getInetAddress().getHostAddress(), serviceName); } catch ( IOException ex ) { tsLogger.i18NLogger.warn_recovery_TransactionStatusManager_14(getListenerHostName(), Integer.toString(getListenerPort(-1))); throw new FatalError(tsLogger.i18NLogger.get_recovery_TransactionStatusManager_9(), ex); } }
public void shutdown() { if (_listener != null) { _listener.stopListener() ; TransactionStatusManagerItem.removeThis( Utility.getProcessUid() ) ; _listener = null; } } /**
/** * Retrieve host/port item stored in the object store. */ private boolean recreateTransactionStatusManagerItem() { boolean tsmiFound = false ; if ( _tsmi == null ) { try { _tsmi = TransactionStatusManagerItem.recreate( _pidUid ) ; tsmiFound = true ; _attempts_to_recreate_tsmi = 0 ; } catch ( Exception ex ) { if ( ++_attempts_to_recreate_tsmi > _max_attempts_to_recreate_tsmi ) { setDeadTSM() ; } _tsmi = null ; } } return tsmiFound ; }
/** * Write host/port pair to the ObjectStore using * the process Uid as a unique identifier. */ private boolean saveThis() { boolean ret_status = false ; try { OutputObjectState objstate = new OutputObjectState(); if ( save_state(objstate) ) { ret_status = getStore().write_committed ( _pidUid, _typeName, objstate ) ; } } catch ( ObjectStoreException ex ) { tsLogger.i18NLogger.warn_recovery_TransactionStatusManagerItem_2(ex); } return ret_status ; }
/** * Assume the Transaction Status Managers' process has died. */ private void setDeadTSM() { _dead = true ; if (_tsmi != null) _tsmi.markAsDead(); }
/** * If the TransactonStatusManagers' process is deemed dead, * then its TransactonStatusManagerItem is removed from * the object store. */ public void delete () { if ( _dead ) { TransactionStatusManagerItem.removeThis( _pidUid ) ; } else { tsLogger.i18NLogger.warn_recovery_TransactionStatusConnector_1(); } }
public String getHost() { return txStatusMgrItem.host(); }
public int getPort() { return txStatusMgrItem.port(); }
public TransactionStatusManagerItemBean(ObjStoreTypeBean parent, Uid uid) { super(parent, parent.getType(), uid); txStatusMgrItem = com.arjuna.ats.internal.arjuna.recovery.TransactionStatusManagerItem.recreate(uid); }
TransactionStatusManagerItem.createAndSave(socketServer.getInetAddress().getHostAddress(), socketServer.getLocalPort() ) ;
Date oldestSurviving = new Date( new Date().getTime() - _expiryTime * 1000 ) ; tsmItem = TransactionStatusManagerItem.recreate( newUid ) ; Date timeOfDeath = tsmItem.getDeadTime() ; if ( timeOfDeath != null && timeOfDeath.before(oldestSurviving) ) tsLogger.i18NLogger.info_recovery_ExpiredTransactionStatusManagerScanner_3(newUid); new TransactionStatusConnector ( process_id, currentUid ) ; tsc.test( tsmItem ) ; if ( tsc.isDead() ) tsLogger.i18NLogger.info_recovery_ExpiredTransactionStatusManagerScanner_3(newUid); tsc.delete() ;
String serverHost = _tsmi.host() ; int serverPort = _tsmi.port() ; if ( Utility.hexStringToInt(server_pid) == Utility.hexStringToInt(_pid) ) _to_server.flush() ; tsLogger.i18NLogger.info_recovery_TransactionStatusConnector_4(_pid, serverHost, Integer.toString(serverPort), _connector_socket.toString()); setDeadTSM() ; tsLogger.i18NLogger.info_recovery_TransactionStatusConnector_5(_pid); tsLogger.i18NLogger.info_recovery_TransactionStatusConnector_6(); setDeadTSM() ;
/** * Create service and Transaction status manager item. */ private void start( String serviceName, String host, int port ) { try { Service service = ClassloadingUtility.loadAndInstantiateClass(Service.class, serviceName, null); if(service == null) { tsLogger.i18NLogger.warn_recovery_TransactionStatusManager_4(serviceName); return; } ServerSocket socketServer = getTsmServerSocket(host, port); addService( service, socketServer ) ; TransactionStatusManagerItem.createAndSave(socketServer.getInetAddress().getHostAddress(), socketServer.getLocalPort() ) ; tsLogger.i18NLogger.info_recovery_TransactionStatusManager_3(Integer.toString(socketServer.getLocalPort()), socketServer.getInetAddress().getHostAddress(), serviceName); } catch ( IOException ex ) { tsLogger.i18NLogger.warn_recovery_TransactionStatusManager_14(getListenerHostName(), Integer.toString(getListenerPort(-1))); throw new FatalError(tsLogger.i18NLogger.get_recovery_TransactionStatusManager_9(), ex); } }
public void shutdown() { if (_listener != null) { _listener.stopListener() ; TransactionStatusManagerItem.removeThis( Utility.getProcessUid() ) ; _listener = null; } } /**