diff --git a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ReplicationPanel.java b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ReplicationPanel.java index 31d1051817a..7dfa27da65d 100755 --- a/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ReplicationPanel.java +++ b/java/com.sap.sailing.gwt.ui/src/main/java/com/sap/sailing/gwt/ui/adminconsole/ReplicationPanel.java @@ -164,6 +164,7 @@ public class ReplicationPanel extends FlowPanel { errorReporter.reportError(stringMessages.errorStartingReplication( masterNameAndExchangeNameAndMessagingPortNumberAndServletPortNumber.getA().getA(), masterNameAndExchangeNameAndMessagingPortNumberAndServletPortNumber.getA().getB(), e.getMessage())); + updateReplicaList(); } @Override diff --git a/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/ReplicationMasterDescriptorImpl.java b/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/ReplicationMasterDescriptorImpl.java index 788d72f15a7..86dba9b2491 100755 --- a/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/ReplicationMasterDescriptorImpl.java +++ b/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/ReplicationMasterDescriptorImpl.java @@ -91,4 +91,8 @@ public class ReplicationMasterDescriptorImpl implements ReplicationMasterDescrip return exchangeName; } + public String toString() { + return getHostname() + ":" + getServletPort() + "/" + getMessagingPort(); + } + } diff --git a/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/ReplicationServiceImpl.java b/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/ReplicationServiceImpl.java index 201c3d34f3e..de02298b380 100644 --- a/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/ReplicationServiceImpl.java +++ b/java/com.sap.sailing.server.replication/src/com/sap/sailing/server/replication/impl/ReplicationServiceImpl.java @@ -198,8 +198,13 @@ public class ReplicationServiceImpl implements ReplicationService, OperationExec @Override public void startToReplicateFrom(ReplicationMasterDescriptor master) throws IOException, ClassNotFoundException, InterruptedException { logger.info("Starting to replicate from "+master); + try { + registerReplicaWithMaster(master); + } catch (Exception ex) { + ex.printStackTrace(); + throw ex; + } replicatingFromMaster = master; - registerReplicaWithMaster(master); logger.info("Registered replica with master"); QueueingConsumer consumer = null; // logging exception here because it will not propagate @@ -208,6 +213,7 @@ public class ReplicationServiceImpl implements ReplicationService, OperationExec consumer = master.getConsumer(); } catch (Exception ex) { ex.printStackTrace(); + replicatingFromMaster = null; throw ex; } logger.info("Connection to exchange successful."); @@ -291,15 +297,18 @@ public class ReplicationServiceImpl implements ReplicationService, OperationExec ReplicationMasterDescriptor descriptor = isReplicatingFromMaster(); if (descriptor != null) { synchronized(replicaUUIDs) { - replicator.stop(); - deregisterReplicaWithMaster(descriptor); - descriptor.getConsumer().getChannel().close(); - replicatingFromMaster = null; - replicaUUIDs.clear(); - - // this is needed because QueuingConsumer.nextDelivery() wont unblock - // if the connection is closed by application. - replicatorThread.interrupt(); + if (replicator != null) { + replicator.stop(); + deregisterReplicaWithMaster(descriptor); + descriptor.getConsumer().getChannel().close(); + replicatingFromMaster = null; + replicaUUIDs.clear(); + + // this is needed because QueuingConsumer.nextDelivery() wont unblock + // if the connection is closed by application. + replicatorThread.interrupt(); + replicator = null; + } } } }