Return-Path: Delivered-To: apmail-db-derby-commits-archive@www.apache.org Received: (qmail 7904 invoked from network); 27 Feb 2008 10:10:53 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 27 Feb 2008 10:10:53 -0000 Received: (qmail 25312 invoked by uid 500); 27 Feb 2008 10:10:48 -0000 Delivered-To: apmail-db-derby-commits-archive@db.apache.org Received: (qmail 25280 invoked by uid 500); 27 Feb 2008 10:10:48 -0000 Mailing-List: contact derby-commits-help@db.apache.org; run by ezmlm Precedence: bulk list-help: list-unsubscribe: List-Post: Reply-To: "Derby Development" List-Id: Delivered-To: mailing list derby-commits@db.apache.org Received: (qmail 25269 invoked by uid 99); 27 Feb 2008 10:10:48 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 27 Feb 2008 02:10:48 -0800 X-ASF-Spam-Status: No, hits=-1998.8 required=10.0 tests=ALL_TRUSTED,FS_REPLICA X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Wed, 27 Feb 2008 10:10:09 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id 8BF6B1A9832; Wed, 27 Feb 2008 02:10:29 -0800 (PST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r631534 - in /db/derby/code/trunk/java/engine/org/apache/derby/impl/services/replication: master/MasterController.java net/ReplicationMessageTransmit.java Date: Wed, 27 Feb 2008 10:10:27 -0000 To: derby-commits@db.apache.org From: oysteing@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20080227101029.8BF6B1A9832@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: oysteing Date: Wed Feb 27 02:10:21 2008 New Revision: 631534 URL: http://svn.apache.org/viewvc?rev=631534&view=rev Log: DERBY-3364: Replication failover implementation must be modified to fail at the master after slave has been stopped Contributed by V Narayanan Changes: M java/engine/org/apache/derby/impl/services/replication/net/ReplicationMessageTransmit.java * Set a timeout on the socket that is translated as a timeout on the reads on the I/P streams M java/engine/org/apache/derby/impl/services/replication/master/MasterController.java * Stop log shipment and tear down network both with successful and non-successful failover. Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/services/replication/master/MasterController.java db/derby/code/trunk/java/engine/org/apache/derby/impl/services/replication/net/ReplicationMessageTransmit.java Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/services/replication/master/MasterController.java URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/services/replication/master/MasterController.java?rev=631534&r1=631533&r2=631534&view=diff ============================================================================== --- db/derby/code/trunk/java/engine/org/apache/derby/impl/services/replication/master/MasterController.java (original) +++ db/derby/code/trunk/java/engine/org/apache/derby/impl/services/replication/master/MasterController.java Wed Feb 27 02:10:21 2008 @@ -274,9 +274,10 @@ } else if (ack.getType() == ReplicationMessage.TYPE_ACK) { //An exception is thrown to indicate the successful completion //of failover. Also the AsynchronousLogShipper thread is terminated. + //The socket connection that is obtained needs to be torn down. //The exception thrown is of Database Severity, this shuts //down the master database. - logShipper.stopLogShipment(); + teardownNetwork(); throw StandardException.newException (SQLState.REPLICATION_FAILOVER_SUCCESSFUL, dbname); } else { @@ -299,6 +300,7 @@ */ private void handleFailoverFailure(Throwable t) throws StandardException { + teardownNetwork(); rawStoreFactory.unfreeze(); if (t != null) { throw StandardException.newException Modified: db/derby/code/trunk/java/engine/org/apache/derby/impl/services/replication/net/ReplicationMessageTransmit.java URL: http://svn.apache.org/viewvc/db/derby/code/trunk/java/engine/org/apache/derby/impl/services/replication/net/ReplicationMessageTransmit.java?rev=631534&r1=631533&r2=631534&view=diff ============================================================================== --- db/derby/code/trunk/java/engine/org/apache/derby/impl/services/replication/net/ReplicationMessageTransmit.java (original) +++ db/derby/code/trunk/java/engine/org/apache/derby/impl/services/replication/net/ReplicationMessageTransmit.java Wed Feb 27 02:10:21 2008 @@ -119,6 +119,13 @@ } }); + //The reads on the InputStreams obtained from the socket on the + //transmitter should not hang indefinitely. Use the timeout + //used for the connection establishment here to ensure that the + //reads timeout after the timeout period mentioned for the + //connection. + s.setSoTimeout(timeout_); + socketConn = new SocketConnection(s); //send the initiate message and receive acknowledgment