From c6c3de416bcc406346299a860905c9e71870a4ab Mon Sep 17 00:00:00 2001
From: gbellato <gbellato@localhost>
Date: Mon, 27 Aug 2007 11:58:47 +0000
Subject: [PATCH] complement for issue 2097 : total update fails sending a Message to ReplicationCache
---
opends/src/server/org/opends/server/replication/server/ReplicationCache.java | 28 +++++++++++++++++++++++-----
1 files changed, 23 insertions(+), 5 deletions(-)
diff --git a/opends/src/server/org/opends/server/replication/server/ReplicationCache.java b/opends/src/server/org/opends/server/replication/server/ReplicationCache.java
index ef31ab3..d618cf8 100644
--- a/opends/src/server/org/opends/server/replication/server/ReplicationCache.java
+++ b/opends/src/server/org/opends/server/replication/server/ReplicationCache.java
@@ -583,8 +583,8 @@
{
// TODO Handle error properly (sender timeout in addition)
/*
- * An error happened trying the send back an ack to this server.
- * Log an error and close the connection to this server.
+ * An error happened trying the send back an error to this server.
+ * Log an error and close the connection to the sender server.
*/
MessageBuilder mb2 = new MessageBuilder();
mb2.append(ERR_CHANGELOG_ERROR_SENDING_ERROR.get(this.toString()));
@@ -604,8 +604,9 @@
catch(IOException ioe)
{
/*
- * An error happened trying the send back an ack to this server.
- * Log an error and close the connection to this server.
+ * An error happened trying the send a routabled message
+ * to its destination server.
+ * Send back an error to the originator of the message.
*/
MessageBuilder mb = new MessageBuilder();
mb.append(ERR_CHANGELOG_ERROR_SENDING_MSG.get(this.toString()));
@@ -613,7 +614,24 @@
mb.append(" ");
mb.append(msg.getClass().getCanonicalName());
logError(mb.toMessage());
- senderHandler.shutdown();
+
+ MessageBuilder mb1 = new MessageBuilder();
+ mb1.append(ERR_NO_REACHABLE_PEER_IN_THE_DOMAIN.get());
+ mb1.append("serverID:" + msg.getDestination());
+ ErrorMessage errMsg = new ErrorMessage(
+ msg.getsenderID(), mb1.toMessage());
+ try
+ {
+ senderHandler.send(errMsg);
+ }
+ catch(IOException ioe1)
+ {
+ // an error happened on the sender session trying to recover
+ // from an error on the receiver session.
+ // We don't have much solution left beside closing the sessions.
+ senderHandler.shutdown();
+ targetHandler.shutdown();
+ }
// TODO Handle error properly (sender timeout in addition)
}
}
--
Gitblit v1.10.0