You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@directory.apache.org by el...@apache.org on 2012/11/30 22:57:41 UTC

svn commit: r1415868 - in /directory/apacheds/trunk: protocol-ldap/src/main/java/org/apache/directory/server/ldap/ protocol-ldap/src/main/java/org/apache/directory/server/ldap/replication/consumer/ server-integ/src/test/java/org/apache/directory/server...

Author: elecharny
Date: Fri Nov 30 21:57:40 2012
New Revision: 1415868

URL: http://svn.apache.org/viewvc?rev=1415868&view=rev
Log:
o Added some more explicit logs for the consumer connection
o Simplified the reconnection code : we now call the start( now ) method instead of having the (almost) same code in two places
o Logged some trace when the baseDN does not exist, instead of throwing an exception

Modified:
    directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/LdapServer.java
    directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/replication/consumer/ReplicationConsumer.java
    directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/replication/consumer/ReplicationConsumerImpl.java
    directory/apacheds/trunk/server-integ/src/test/java/org/apache/directory/server/replication/ClientInitialRefreshIT.java
    directory/apacheds/trunk/server-integ/src/test/java/org/apache/directory/server/replication/MockSyncReplConsumer.java

Modified: directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/LdapServer.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/LdapServer.java?rev=1415868&r1=1415867&r2=1415868&view=diff
==============================================================================
--- directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/LdapServer.java (original)
+++ directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/LdapServer.java Fri Nov 30 21:57:40 2012
@@ -127,6 +127,9 @@ public class LdapServer extends Director
 
     /** logger for this class */
     private static final Logger LOG = LoggerFactory.getLogger( LdapServer.class.getName() );
+    
+    /** Logger for the replication consumer */
+    private static final Logger CONSUMER_LOG = LoggerFactory.getLogger( "CONSUMER_LOG" );
 
     /** Value (0) for configuration where size limit is unlimited. */
     public static final long NO_SIZE_LIMIT = 0;
@@ -690,13 +693,15 @@ public class LdapServer extends Director
                     {
                         try
                         {
-                            LOG.info( "starting the replication consumer with config {}", consumer );
+                            LOG.info( "starting the replication consumer with {}", consumer );
+                            CONSUMER_LOG.info( "starting the replication consumer with {}", consumer );
                             consumer.init( getDirectoryService() );
-                            consumer.start();
+                            consumer.start( true );
                         }
                         catch ( Exception e )
                         {
-                            LOG.error( "Failed to start the consumer with config {}", consumer );
+                            LOG.error( "Failed to start consumer {}", consumer );
+                            CONSUMER_LOG.error( "Failed to start consumer  {}", consumer );
                             throw new RuntimeException( e );
                         }
                     }

Modified: directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/replication/consumer/ReplicationConsumer.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/replication/consumer/ReplicationConsumer.java?rev=1415868&r1=1415867&r2=1415868&view=diff
==============================================================================
--- directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/replication/consumer/ReplicationConsumer.java (original)
+++ directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/replication/consumer/ReplicationConsumer.java Fri Nov 30 21:57:40 2012
@@ -59,8 +59,10 @@ public interface ReplicationConsumer
 
     /**
      * starts the consumer
+     * 
+     * @param now A param that tells the consumer to connect immediately or not
      */
-    void start();
+    void start( boolean now );
 
 
     /**

Modified: directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/replication/consumer/ReplicationConsumerImpl.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/replication/consumer/ReplicationConsumerImpl.java?rev=1415868&r1=1415867&r2=1415868&view=diff
==============================================================================
--- directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/replication/consumer/ReplicationConsumerImpl.java (original)
+++ directory/apacheds/trunk/protocol-ldap/src/main/java/org/apache/directory/server/ldap/replication/consumer/ReplicationConsumerImpl.java Fri Nov 30 21:57:40 2012
@@ -66,6 +66,7 @@ import org.apache.directory.shared.ldap.
 import org.apache.directory.shared.ldap.model.entry.Modification;
 import org.apache.directory.shared.ldap.model.entry.ModificationOperation;
 import org.apache.directory.shared.ldap.model.exception.LdapException;
+import org.apache.directory.shared.ldap.model.exception.LdapNoSuchObjectException;
 import org.apache.directory.shared.ldap.model.filter.AndNode;
 import org.apache.directory.shared.ldap.model.filter.EqualityNode;
 import org.apache.directory.shared.ldap.model.filter.ExprNode;
@@ -102,6 +103,8 @@ public class ReplicationConsumerImpl imp
 {
     /** the logger */
     private static final Logger LOG = LoggerFactory.getLogger( ReplicationConsumerImpl.class );
+    
+    /** A dedicated logger for the consumer */
     private static final Logger CONSUMER_LOG = LoggerFactory.getLogger( "CONSUMER_LOG" );
 
     /** the syncrepl configuration */
@@ -346,8 +349,18 @@ public class ReplicationConsumerImpl imp
             switch ( state )
             {
                 case ADD:
-
-                    if ( !session.exists( remoteDn ) )
+                    boolean remoteDnExist = false;
+                    
+                    try
+                    {
+                        remoteDnExist = session.exists( remoteDn );
+                    }
+                    catch ( LdapNoSuchObjectException lnsoe )
+                    {
+                        CONSUMER_LOG.error( lnsoe.getMessage() );
+                    }
+                    
+                    if ( !remoteDnExist)
                     {
                         LOG.debug( "adding entry with dn {}", remoteDn );
                         LOG.debug( remoteEntry.toString() );
@@ -481,29 +494,15 @@ public class ReplicationConsumerImpl imp
      */
     public void connectionClosed()
     {
+        String producer = config.getRemoteHost() + ":" + config.getRemotePort();
+        CONSUMER_LOG.debug( "Consumer {} session with {} has been closed ", config.getReplicaId(), producer );
+        
         if ( disconnected )
         {
             return;
         }
 
-        boolean connected = false;
-
-        while ( !connected )
-        {
-            try
-            {
-                Thread.sleep( config.getRefreshInterval() );
-            }
-            catch ( InterruptedException e )
-            {
-                LOG.error( "Interrupted while sleeping before trying to reconnect", e );
-            }
-
-            LOG.debug( "Trying to reconnect" );
-            connected = connect();
-        }
-
-        startSync();
+        start( false );
     }
 
 
@@ -551,22 +550,38 @@ public class ReplicationConsumerImpl imp
     /**
      * {@inheritDoc}
      */
-    public void start()
+    public void start( boolean now )
     {
-        while ( !connect() )
+        String producer = config.getRemoteHost() + ":" + config.getRemotePort();
+        
+        boolean connected = false;
+
+        if ( now )
+        {
+            connected = connect();
+        }
+        
+        while ( !connected )
         {
             try
             {
+                CONSUMER_LOG.debug( "Consumer {} cannot connect to {}, wait 5 seconds.", config.getReplicaId(),
+                    producer );
+                
                 // try to establish a connection for every 5 seconds
                 Thread.sleep( 5000 );
             }
             catch ( InterruptedException e )
             {
-                LOG.warn( "Interrupted while trying to reconnect to the provider {} with user DN",
-                    config.getRemoteHost(), config.getReplUserDn() );
+                LOG.warn( "Consumer {} Interrupted while trying to reconnect to the provider {}",
+                    config.getReplicaId(), producer );
             }
+
+            connected = connect();
         }
 
+        CONSUMER_LOG.debug( "Consumer {} connected to {}", config.getReplicaId(), producer );
+
         startSync();
     }
 
@@ -1295,4 +1310,13 @@ public class ReplicationConsumerImpl imp
         }
     }
 
+    
+    public String toString()
+    {
+        StringBuilder sb = new StringBuilder();
+        
+        sb.append( "Consumer " ).append( config );
+
+        return sb.toString();
+    }
 }

Modified: directory/apacheds/trunk/server-integ/src/test/java/org/apache/directory/server/replication/ClientInitialRefreshIT.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/server-integ/src/test/java/org/apache/directory/server/replication/ClientInitialRefreshIT.java?rev=1415868&r1=1415867&r2=1415868&view=diff
==============================================================================
--- directory/apacheds/trunk/server-integ/src/test/java/org/apache/directory/server/replication/ClientInitialRefreshIT.java (original)
+++ directory/apacheds/trunk/server-integ/src/test/java/org/apache/directory/server/replication/ClientInitialRefreshIT.java Fri Nov 30 21:57:40 2012
@@ -304,7 +304,7 @@ public class ClientInitialRefreshIT
                     DirectoryService directoryService = new MockDirectoryService();
                     directoryService.setSchemaManager( schemaManager );
                     ( ( MockSyncReplConsumer ) syncreplClient ).init( directoryService );
-                    syncreplClient.start();
+                    syncreplClient.start( true );
                 }
                 catch ( Exception e )
                 {
@@ -332,7 +332,7 @@ public class ClientInitialRefreshIT
             {
                 try
                 {
-                    consumer.start();
+                    consumer.start( true );
                 }
                 catch ( Exception e )
                 {

Modified: directory/apacheds/trunk/server-integ/src/test/java/org/apache/directory/server/replication/MockSyncReplConsumer.java
URL: http://svn.apache.org/viewvc/directory/apacheds/trunk/server-integ/src/test/java/org/apache/directory/server/replication/MockSyncReplConsumer.java?rev=1415868&r1=1415867&r2=1415868&view=diff
==============================================================================
--- directory/apacheds/trunk/server-integ/src/test/java/org/apache/directory/server/replication/MockSyncReplConsumer.java (original)
+++ directory/apacheds/trunk/server-integ/src/test/java/org/apache/directory/server/replication/MockSyncReplConsumer.java Fri Nov 30 21:57:40 2012
@@ -497,7 +497,7 @@ public class MockSyncReplConsumer implem
     /**
      * {@inheritDoc}
      */
-    public void start()
+    public void start( boolean now )
     {
         connect();
         startSync();