[ 
https://issues.apache.org/jira/browse/DIRSERVER-2014?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Kiran Ayyagari resolved DIRSERVER-2014.
---------------------------------------
    Resolution: Fixed

> Synchronization is stopped if remote server was not restored during refresh 
> interval
> ------------------------------------------------------------------------------------
>
>                 Key: DIRSERVER-2014
>                 URL: https://issues.apache.org/jira/browse/DIRSERVER-2014
>             Project: Directory ApacheDS
>          Issue Type: Bug
>          Components: ldap
>    Affects Versions: 2.0.0-M16
>            Reporter: Alexander Kozlov
>            Assignee: Kiran Ayyagari
>             Fix For: 2.0.0-M18
>
>
> *Steps to reproduce:*
> 1. Set up synchronization between two servers S1 and S2
> 2. Stop server S2
> 3. Wait more than refresh interval
> 4. Start server S2
> *Observed result:*
> S1 never read/update data from S2
> *Reason:*
> When connection lost and we tried to reconnect at least one time, 
> _ReplicationConsumerImpl.disconnected_ field become equals to _true_.
> ReplicationConsumerImpl: {code}
>     private ReplicationStatusEnum doRefreshOnly()
>     {
>         while ( !disconnected )
>         {
>             CONSUMER_LOG.debug( "==================== Refresh Only 
> ==========" );
>             try
>             {
>                 doSyncSearch( SynchronizationModeEnum.REFRESH_ONLY, reload );
>                 CONSUMER_LOG.debug( "--------------------- Sleep for {} 
> seconds ------------------", ( config.getRefreshInterval() / 1000 ) );
>                 Thread.sleep( config.getRefreshInterval() );
>                 CONSUMER_LOG.debug( "--------------------- syncing again 
> ------------------" );
>             }
>             catch ( InterruptedException ie )
>             {
>                 CONSUMER_LOG.warn( "refresher thread interrupted" );
>                 return ReplicationStatusEnum.DISCONNECTED;
>             }
>             catch ( Exception e )
>             {
>                 CONSUMER_LOG.error( "Failed to sync with refresh only mode", 
> e );
>                 return ReplicationStatusEnum.DISCONNECTED;
>             }
>         }
>         return ReplicationStatusEnum.STOPPED;
>     }
> {code}
> After _Thread.sleep( config.getRefreshInterval() );_ we exit _while_ loop, 
> and method return _ReplicationStatusEnum.STOPPED_ instead of _DISCONNECTED_.
> LdapServer:{code}
>     public void startReplicationConsumers() throws Exception
>     {
> ...............
>                                     do
>                                     {
>                                         status = consumer.startSync();
>                                     }
>                                     while ( status == 
> ReplicationStatusEnum.REFRESH_REQUIRED );
>                                     if ( status == 
> ReplicationStatusEnum.STOPPED )
>                                     {
>                                         // Exit the loop
>                                         break;
>                                     }
> ...............
> {code}
> In that we exit from thread, and our server never try to get updated data 
> from S2..



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to