public synchronized void start() { if (!started) { HornetQJMSLogger.LOGGER.debug("Starting RecoveryDiscovery on " + config); started = true; locator = config.createServerLocator(); locator.disableFinalizeCheck(); locator.addClusterTopologyListener(new InternalListener(config)); try { sessionFactory = (ClientSessionFactoryInternal) locator.createSessionFactory(); // We are using the SessionFactoryInternal here directly as we don't have information to // connect with an user and password // on the session as all we want here is to get the topology // in case of failure we will retry sessionFactory.addFailureListener(this); HornetQJMSLogger.LOGGER.debug("RecoveryDiscovery started fine on " + config); } catch (Exception startupError) { HornetQJMSLogger.LOGGER.warn( "Couldn't start recovery discovery on " + config + ", we will retry this on the next recovery scan"); stop(); HornetQRecoveryRegistry.getInstance().failedDiscovery(this); } } }
/* (non-Javadoc) * @see org.hornetq.core.remoting.FailureListener#connectionFailed(org.hornetq.api.core.HornetQException, boolean) */ public void connectionFailed(HornetQException exception, boolean failedOver) { if (exception.getType() == HornetQExceptionType.DISCONNECTED) { HornetQJMSLogger.LOGGER.warn("being disconnected for server shutdown", exception); } else { HornetQJMSLogger.LOGGER.warn( "Notified of connection failure in xa discovery, we will retry on the next recovery", exception); } internalStop(); HornetQRecoveryRegistry.getInstance().failedDiscovery(this); }
public void nodeUP(TopologyMember topologyMember, boolean last) { // There is a case where the backup announce itself, // we need to ignore a case where getLive is null if (topologyMember.getLive() != null) { Pair<TransportConfiguration, TransportConfiguration> connector = new Pair<TransportConfiguration, TransportConfiguration>( topologyMember.getLive(), topologyMember.getBackup()); HornetQRecoveryRegistry.getInstance() .nodeUp( topologyMember.getNodeId(), connector, config.getUsername(), config.getPassword()); } }