lucene-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From andyetitmo...@apache.org
Subject svn commit: r1664126 - in /lucene/dev/trunk/solr: core/src/java/org/apache/solr/core/ core/src/java/org/apache/solr/handler/ core/src/test-files/ core/src/test/org/apache/solr/core/ core/src/test/org/apache/solr/handler/ test-framework/src/java/org/apa...
Date Wed, 04 Mar 2015 19:45:10 GMT
Author: andyetitmoves
Date: Wed Mar  4 19:45:09 2015
New Revision: 1664126

URL: http://svn.apache.org/r1664126
Log:
SOLR-6804: Untangle SnapPuller and ReplicationHandler

This closes #110

Added:
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java
      - copied, changed from r1663969, lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/SnapPuller.java
Removed:
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/SnapPuller.java
Modified:
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/SolrCore.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java
    lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/SnapShooter.java
    lucene/dev/trunk/solr/core/src/test-files/log4j.properties
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/TestArbitraryIndexDir.java
    lucene/dev/trunk/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java
    lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/core/MockDirectoryFactory.java

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/SolrCore.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/SolrCore.java?rev=1664126&r1=1664125&r2=1664126&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/SolrCore.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/core/SolrCore.java Wed Mar  4 19:45:09 2015
@@ -83,9 +83,9 @@ import org.apache.solr.common.util.IOUti
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.SimpleOrderedMap;
 import org.apache.solr.core.DirectoryFactory.DirContext;
+import org.apache.solr.handler.IndexFetcher;
 import org.apache.solr.handler.ReplicationHandler;
 import org.apache.solr.handler.RequestHandlerBase;
-import org.apache.solr.handler.SnapPuller;
 import org.apache.solr.handler.admin.ShowFileRequestHandler;
 import org.apache.solr.handler.component.DebugComponent;
 import org.apache.solr.handler.component.ExpandComponent;
@@ -291,7 +291,7 @@ public final class SolrCore implements S
       dir = getDirectoryFactory().get(getDataDir(), DirContext.META_DATA, getSolrConfig().indexConfig.lockType);
       IndexInput input;
       try {
-        input = dir.openInput(SnapPuller.INDEX_PROPERTIES, IOContext.DEFAULT);
+        input = dir.openInput(IndexFetcher.INDEX_PROPERTIES, IOContext.DEFAULT);
       } catch (FileNotFoundException | NoSuchFileException e) {
         input = null;
       }
@@ -307,7 +307,7 @@ public final class SolrCore implements S
           }
           
         } catch (Exception e) {
-          log.error("Unable to load " + SnapPuller.INDEX_PROPERTIES, e);
+          log.error("Unable to load " + IndexFetcher.INDEX_PROPERTIES, e);
         } finally {
           IOUtils.closeQuietly(is);
         }

Copied: lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java (from r1663969, lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/SnapPuller.java)
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java?p2=lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java&p1=lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/SnapPuller.java&r1=1663969&r2=1664126&rev=1664126&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/SnapPuller.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/IndexFetcher.java Wed Mar  4 19:45:09 2015
@@ -67,11 +67,7 @@ import java.util.concurrent.ExecutionExc
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.Future;
-import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
-import java.util.concurrent.atomic.AtomicBoolean;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
 import java.util.zip.Adler32;
 import java.util.zip.Checksum;
 import java.util.zip.InflaterInputStream;
@@ -94,7 +90,6 @@ import org.apache.solr.common.SolrExcept
 import org.apache.solr.common.SolrException.ErrorCode;
 import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.params.ModifiableSolrParams;
-import org.apache.solr.common.util.ExecutorUtil;
 import org.apache.solr.common.util.FastInputStream;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.core.DirectoryFactory;
@@ -121,24 +116,16 @@ import org.slf4j.LoggerFactory;
  *
  * @since solr 1.4
  */
-public class SnapPuller {
+public class IndexFetcher {
   private static final int _100K = 100000;
 
   public static final String INDEX_PROPERTIES = "index.properties";
 
-  private static final Logger LOG = LoggerFactory.getLogger(SnapPuller.class.getName());
+  private static final Logger LOG = LoggerFactory.getLogger(IndexFetcher.class.getName());
 
   private final String masterUrl;
 
-  private final ReplicationHandler replicationHandler;
-
-  private final Integer pollInterval;
-
-  private String pollIntervalStr;
-
-  private ScheduledExecutorService executorService;
-
-  private volatile long executorStartTime;
+  final ReplicationHandler replicationHandler;
 
   private volatile long replicationStartTime;
 
@@ -166,11 +153,6 @@ public class SnapPuller {
 
   private boolean useExternal = false;
 
-  /**
-   * Disable the timer task for polling
-   */
-  private AtomicBoolean pollDisabled = new AtomicBoolean(false);
-
   private final HttpClient myHttpClient;
 
   private static HttpClient createHttpClient(SolrCore core, String connTimeout, String readTimeout, String httpBasicAuthUser, String httpBasicAuthPassword, boolean useCompression) {
@@ -184,7 +166,7 @@ public class SnapPuller {
     return HttpClientUtil.createClient(httpClientParams, core.getCoreDescriptor().getCoreContainer().getUpdateShardHandler().getConnectionManager());
   }
 
-  public SnapPuller(final NamedList initArgs, final ReplicationHandler handler, final SolrCore sc) {
+  public IndexFetcher(final NamedList initArgs, final ReplicationHandler handler, final SolrCore sc) {
     solrCore = sc;
     String masterUrl = (String) initArgs.get(MASTER_URL);
     if (masterUrl == null)
@@ -197,8 +179,6 @@ public class SnapPuller {
     this.masterUrl = masterUrl;
     
     this.replicationHandler = handler;
-    pollIntervalStr = (String) initArgs.get(POLL_INTERVAL);
-    pollInterval = readInterval(pollIntervalStr);
     String compress = (String) initArgs.get(COMPRESSION);
     useInternal = INTERNAL.equals(compress);
     useExternal = EXTERNAL.equals(compress);
@@ -207,35 +187,6 @@ public class SnapPuller {
     String httpBasicAuthUser = (String) initArgs.get(HttpClientUtil.PROP_BASIC_AUTH_USER);
     String httpBasicAuthPassword = (String) initArgs.get(HttpClientUtil.PROP_BASIC_AUTH_PASS);
     myHttpClient = createHttpClient(solrCore, connTimeout, readTimeout, httpBasicAuthUser, httpBasicAuthPassword, useExternal);
-    if (pollInterval != null && pollInterval > 0) {
-      startExecutorService();
-    } else {
-      LOG.info(" No value set for 'pollInterval'. Timer Task not started.");
-    }
-  }
-
-  private void startExecutorService() {
-    Runnable task = new Runnable() {
-      @Override
-      public void run() {
-        if (pollDisabled.get()) {
-          LOG.info("Poll disabled");
-          return;
-        }
-        try {
-          LOG.debug("Polling for index modifications");
-          executorStartTime = System.currentTimeMillis();
-          replicationHandler.doFetch(null, false);
-        } catch (Exception e) {
-          LOG.error("Exception in fetching index", e);
-        }
-      }
-    };
-    executorService = Executors.newSingleThreadScheduledExecutor(
-        new DefaultSolrThreadFactory("snapPuller"));
-    long initialDelay = pollInterval - (System.currentTimeMillis() % pollInterval);
-    executorService.scheduleAtFixedRate(task, initialDelay, pollInterval, TimeUnit.MILLISECONDS);
-    LOG.info("Poll Scheduled at an interval of " + pollInterval + "ms");
   }
 
   /**
@@ -427,13 +378,13 @@ public class SnapPuller {
               Thread.sleep(1000);
               c++;
               if (c >= 30)  {
-                LOG.warn("SnapPuller unable to cleanup unused lucene index files so we must do a full copy instead");
+                LOG.warn("IndexFetcher unable to cleanup unused lucene index files so we must do a full copy instead");
                 isFullCopyNeeded = true;
                 break;
               }
             }
             if (c > 0)  {
-              LOG.info("SnapPuller slept for " + (c * 1000) + "ms for unused lucene index files to be delete-able");
+              LOG.info("IndexFetcher slept for " + (c * 1000) + "ms for unused lucene index files to be delete-able");
             }
           } finally {
             writer.decref();
@@ -634,7 +585,7 @@ public class SnapPuller {
         props.setProperty(TIMES_CONFIG_REPLICATED, String.valueOf(confFilesCount));
       }
 
-      props.setProperty(LAST_CYCLE_BYTES_DOWNLOADED, String.valueOf(getTotalBytesDownloaded(this)));
+      props.setProperty(LAST_CYCLE_BYTES_DOWNLOADED, String.valueOf(getTotalBytesDownloaded()));
       if (!successfulInstall) {
         int numFailures = 1;
         if (props.containsKey(TIMES_FAILED)) {
@@ -663,20 +614,20 @@ public class SnapPuller {
     }
   }
 
-  static long getTotalBytesDownloaded(SnapPuller snappuller) {
+  long getTotalBytesDownloaded() {
     long bytesDownloaded = 0;
     //get size from list of files to download
-    for (Map<String, Object> file : snappuller.getFilesDownloaded()) {
+    for (Map<String, Object> file : getFilesDownloaded()) {
       bytesDownloaded += (Long) file.get(SIZE);
     }
 
     //get size from list of conf files to download
-    for (Map<String, Object> file : snappuller.getConfFilesDownloaded()) {
+    for (Map<String, Object> file : getConfFilesDownloaded()) {
       bytesDownloaded += (Long) file.get(SIZE);
     }
 
     //get size from current file being downloaded
-    Map<String, Object> currentFile = snappuller.getCurrentFile();
+    Map<String, Object> currentFile = getCurrentFile();
     if (currentFile != null) {
       if (currentFile.containsKey("bytesDownloaded")) {
         bytesDownloaded += (Long) currentFile.get("bytesDownloaded");
@@ -1053,33 +1004,33 @@ public class SnapPuller {
     Directory dir = null;
     try {
       dir = solrCore.getDirectoryFactory().get(solrCore.getDataDir(), DirContext.META_DATA, solrCore.getSolrConfig().indexConfig.lockType);
-      if (slowFileExists(dir, SnapPuller.INDEX_PROPERTIES)){
-        final IndexInput input = dir.openInput(SnapPuller.INDEX_PROPERTIES, DirectoryFactory.IOCONTEXT_NO_CACHE);
+      if (slowFileExists(dir, IndexFetcher.INDEX_PROPERTIES)){
+        final IndexInput input = dir.openInput(IndexFetcher.INDEX_PROPERTIES, DirectoryFactory.IOCONTEXT_NO_CACHE);
   
         final InputStream is = new PropertiesInputStream(input);
         try {
           p.load(new InputStreamReader(is, StandardCharsets.UTF_8));
         } catch (Exception e) {
-          LOG.error("Unable to load " + SnapPuller.INDEX_PROPERTIES, e);
+          LOG.error("Unable to load " + IndexFetcher.INDEX_PROPERTIES, e);
         } finally {
           IOUtils.closeQuietly(is);
         }
       }
       try {
-        dir.deleteFile(SnapPuller.INDEX_PROPERTIES);
+        dir.deleteFile(IndexFetcher.INDEX_PROPERTIES);
       } catch (IOException e) {
         // no problem
       }
-      final IndexOutput out = dir.createOutput(SnapPuller.INDEX_PROPERTIES, DirectoryFactory.IOCONTEXT_NO_CACHE);
+      final IndexOutput out = dir.createOutput(IndexFetcher.INDEX_PROPERTIES, DirectoryFactory.IOCONTEXT_NO_CACHE);
       p.put("index", tmpIdxDirName);
       Writer os = null;
       try {
         os = new OutputStreamWriter(new PropertiesOutputStream(out), StandardCharsets.UTF_8);
-        p.store(os, SnapPuller.INDEX_PROPERTIES);
+        p.store(os, IndexFetcher.INDEX_PROPERTIES);
         dir.sync(Collections.singleton(INDEX_PROPERTIES));
       } catch (Exception e) {
         throw new SolrException(SolrException.ErrorCode.SERVER_ERROR,
-            "Unable to write " + SnapPuller.INDEX_PROPERTIES, e);
+            "Unable to write " + IndexFetcher.INDEX_PROPERTIES, e);
       } finally {
         IOUtils.closeQuietly(os);
       }
@@ -1161,25 +1112,9 @@ public class SnapPuller {
   }
 
   /**
-   * Disable periodic polling
-   */
-  void disablePoll() {
-    pollDisabled.set(true);
-    LOG.info("inside disable poll, value of pollDisabled = " + pollDisabled);
-  }
-
-  /**
-   * Enable periodic polling
-   */
-  void enablePoll() {
-    pollDisabled.set(false);
-    LOG.info("inside enable poll, value of pollDisabled = " + pollDisabled);
-  }
-
-  /**
-   * Stops the ongoing pull
+   * Stops the ongoing fetch
    */
-  void abortPull() {
+  void abortFetch() {
     stop = true;
   }
 
@@ -1187,6 +1122,13 @@ public class SnapPuller {
     return replicationStartTime;
   }
 
+  long getReplicationTimeElapsed() {
+    long timeElapsed = 0;
+    if (getReplicationStartTime() > 0)
+      timeElapsed = TimeUnit.SECONDS.convert(System.currentTimeMillis() - getReplicationStartTime(), TimeUnit.MILLISECONDS);
+    return timeElapsed;
+  }
+
   List<Map<String, Object>> getConfFilesToDownload() {
     //make a copy first because it can be null later
     List<Map<String, Object>> tmp = confFilesToDownload;
@@ -1224,17 +1166,6 @@ public class SnapPuller {
     return tmp;
   }
 
-  boolean isPollingDisabled() {
-    return pollDisabled.get();
-  }
-
-  Long getNextScheduledExecTime() {
-    Long nextTime = null;
-    if (executorStartTime > 0)
-      nextTime = executorStartTime + pollInterval;
-    return nextTime;
-  }
-
   private static class ReplicationHandlerException extends InterruptedException {
     public ReplicationHandlerException(String message) {
       super(message);
@@ -1586,55 +1517,14 @@ public class SnapPuller {
     }
   }
 
-  static Integer readInterval(String interval) {
-    if (interval == null)
-      return null;
-    int result = 0;
-    Matcher m = INTERVAL_PATTERN.matcher(interval.trim());
-    if (m.find()) {
-      String hr = m.group(1);
-      String min = m.group(2);
-      String sec = m.group(3);
-      result = 0;
-      try {
-        if (sec != null && sec.length() > 0)
-          result += Integer.parseInt(sec);
-        if (min != null && min.length() > 0)
-          result += (60 * Integer.parseInt(min));
-        if (hr != null && hr.length() > 0)
-          result += (60 * 60 * Integer.parseInt(hr));
-        result *= 1000;
-      } catch (NumberFormatException e) {
-        throw new SolrException(ErrorCode.SERVER_ERROR, INTERVAL_ERR_MSG);
-      }
-    } else {
-      throw new SolrException(ErrorCode.SERVER_ERROR, INTERVAL_ERR_MSG);
-    }
-
-    return result;
-  }
-
   public void destroy() {
-    try {
-      if (executorService != null) executorService.shutdown();
-    } finally {
-      try {
-        abortPull();
-      } finally {
-        if (executorService != null) ExecutorUtil
-            .shutdownNowAndAwaitTermination(executorService);
-      }
-    }
+    abortFetch();
   }
 
   String getMasterUrl() {
     return masterUrl;
   }
 
-  String getPollInterval() {
-    return pollIntervalStr;
-  }
-
   private static final int MAX_RETRIES = 5;
 
   private static final int NO_CONTENT = 1;
@@ -1643,12 +1533,6 @@ public class SnapPuller {
 
   public static final String REPLICATION_PROPERTIES = "replication.properties";
 
-  public static final String POLL_INTERVAL = "pollInterval";
-
-  public static final String INTERVAL_ERR_MSG = "The " + POLL_INTERVAL + " must be in this format 'HH:mm:ss'";
-
-  private static final Pattern INTERVAL_PATTERN = Pattern.compile("(\\d*?):(\\d*?):(\\d*)");
-
   static final String INDEX_REPLICATED_AT = "indexReplicatedAt";
 
   static final String TIMES_INDEX_REPLICATED = "timesIndexReplicated";

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java?rev=1664126&r1=1664125&r2=1664126&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/ReplicationHandler.java Wed Mar  4 19:45:09 2015
@@ -36,9 +36,13 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Properties;
+import java.util.concurrent.Executors;
+import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.locks.ReentrantLock;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 import java.util.zip.Adler32;
 import java.util.zip.Checksum;
 import java.util.zip.DeflaterOutputStream;
@@ -60,6 +64,7 @@ import org.apache.solr.common.SolrExcept
 import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.params.SolrParams;
+import org.apache.solr.common.util.ExecutorUtil;
 import org.apache.solr.common.util.FastOutputStream;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.SimpleOrderedMap;
@@ -75,6 +80,7 @@ import org.apache.solr.request.SolrQuery
 import org.apache.solr.response.SolrQueryResponse;
 import org.apache.solr.search.SolrIndexSearcher;
 import org.apache.solr.update.SolrIndexWriter;
+import org.apache.solr.util.DefaultSolrThreadFactory;
 import org.apache.solr.util.NumberUtils;
 import org.apache.solr.util.PropertiesInputStream;
 import org.apache.solr.util.RefCounted;
@@ -90,8 +96,8 @@ import org.slf4j.LoggerFactory;
  * file (command=filecontent&amp;file=&lt;FILE_NAME&gt;) You can optionally specify an offset and length to get that
  * chunk of the file. You can request a configuration file by using "cf" parameter instead of the "file" parameter.</li>
  * <li>Get status/statistics (command=details)</li> </ol> <p>When running on the slave, it provides the following
- * commands <ol> <li>Perform a snap pull now (command=snappull)</li> <li>Get status/statistics (command=details)</li>
- * <li>Abort a snap pull (command=abort)</li> <li>Enable/Disable polling the master for new versions (command=enablepoll
+ * commands <ol> <li>Perform an index fetch now (command=snappull)</li> <li>Get status/statistics (command=details)</li>
+ * <li>Abort an index fetch (command=abort)</li> <li>Enable/Disable polling the master for new versions (command=enablepoll
  * or command=disablepoll)</li> </ol>
  *
  *
@@ -134,9 +140,9 @@ public class ReplicationHandler extends
     }
   }
 
-  private SnapPuller snapPuller;
+  private IndexFetcher pollingIndexFetcher;
 
-  private ReentrantLock snapPullLock = new ReentrantLock();
+  private ReentrantLock indexFetchLock = new ReentrantLock();
 
   private String includeConfFiles;
 
@@ -151,14 +157,18 @@ public class ReplicationHandler extends
   private boolean replicateOnCommit = false;
 
   private boolean replicateOnStart = false;
-  
+
+  private ScheduledExecutorService executorService;
+
+  private volatile long executorStartTime;
+
   private int numberBackupsToKeep = 0; //zero: do not delete old backups
 
   private int numTimesReplicated = 0;
 
   private final Map<String, FileInfo> confFileInfoCache = new HashMap<>();
 
-  private Integer reserveCommitDuration = SnapPuller.readInterval("00:00:10");
+  private Integer reserveCommitDuration = readInterval("00:00:10");
 
   volatile IndexCommit indexCommitPoint;
 
@@ -166,6 +176,19 @@ public class ReplicationHandler extends
 
   private AtomicBoolean replicationEnabled = new AtomicBoolean(true);
 
+  private Integer pollInterval;
+
+  private String pollIntervalStr;
+
+  /**
+   * Disable the timer task for polling
+   */
+  private AtomicBoolean pollDisabled = new AtomicBoolean(false);
+
+  String getPollInterval() {
+    return pollIntervalStr;
+  }
+
   @Override
   public void handleRequestBody(SolrQueryRequest req, SolrQueryResponse rsp) throws Exception {
     rsp.setHttpCaching(false);
@@ -221,38 +244,38 @@ public class ReplicationHandler extends
         return;
       }
       final SolrParams paramsCopy = new ModifiableSolrParams(solrParams);
-      Thread puller = new Thread("explicit-fetchindex-cmd") {
+      Thread fetchThread = new Thread("explicit-fetchindex-cmd") {
         @Override
         public void run() {
           doFetch(paramsCopy, false);
         }
       };
-      puller.setDaemon(false);
-      puller.start();
+      fetchThread.setDaemon(false);
+      fetchThread.start();
       if (solrParams.getBool(WAIT, false)) {
-        puller.join();
+        fetchThread.join();
       }
       rsp.add(STATUS, OK_STATUS);
     } else if (command.equalsIgnoreCase(CMD_DISABLE_POLL)) {
-      if (snapPuller != null){
-        snapPuller.disablePoll();
+      if (pollingIndexFetcher != null){
+        disablePoll();
         rsp.add(STATUS, OK_STATUS);
       } else {
         rsp.add(STATUS, ERR_STATUS);
         rsp.add("message","No slave configured");
       }
     } else if (command.equalsIgnoreCase(CMD_ENABLE_POLL)) {
-      if (snapPuller != null){
-        snapPuller.enablePoll();
+      if (pollingIndexFetcher != null){
+        enablePoll();
         rsp.add(STATUS, OK_STATUS);
       }else {
         rsp.add(STATUS,ERR_STATUS);
         rsp.add("message","No slave configured");
       }
     } else if (command.equalsIgnoreCase(CMD_ABORT_FETCH)) {
-      SnapPuller temp = tempSnapPuller;
-      if (temp != null){
-        temp.abortPull();
+      IndexFetcher fetcher = currentIndexFetcher;
+      if (fetcher != null){
+        fetcher.abortFetch();
         rsp.add(STATUS, OK_STATUS);
       } else {
         rsp.add(STATUS,ERR_STATUS);
@@ -321,38 +344,35 @@ public class ReplicationHandler extends
     return null;
   }
 
-  private volatile SnapPuller tempSnapPuller;
+  private volatile IndexFetcher currentIndexFetcher;
 
   public boolean doFetch(SolrParams solrParams, boolean forceReplication) {
     String masterUrl = solrParams == null ? null : solrParams.get(MASTER_URL);
-    if (!snapPullLock.tryLock())
+    if (!indexFetchLock.tryLock())
       return false;
     try {
       if (masterUrl != null) {
-        if (tempSnapPuller != null && tempSnapPuller != snapPuller) {
-          tempSnapPuller.destroy();
+        if (currentIndexFetcher != null && currentIndexFetcher != pollingIndexFetcher) {
+          currentIndexFetcher.destroy();
         }
-        
-        NamedList<Object> nl = solrParams.toNamedList();
-        nl.remove(SnapPuller.POLL_INTERVAL);
-        tempSnapPuller = new SnapPuller(nl, this, core);
+        currentIndexFetcher = new IndexFetcher(solrParams.toNamedList(), this, core);
       } else {
-        tempSnapPuller = snapPuller;
+        currentIndexFetcher = pollingIndexFetcher;
       }
-      return tempSnapPuller.fetchLatestIndex(core, forceReplication);
+      return currentIndexFetcher.fetchLatestIndex(core, forceReplication);
     } catch (Exception e) {
-      SolrException.log(LOG, "SnapPull failed ", e);
+      SolrException.log(LOG, "Index fetch failed ", e);
     } finally {
-      if (snapPuller != null) {
-        tempSnapPuller = snapPuller;
+      if (pollingIndexFetcher != null) {
+        currentIndexFetcher = pollingIndexFetcher;
       }
-      snapPullLock.unlock();
+      indexFetchLock.unlock();
     }
     return false;
   }
 
   boolean isReplicating() {
-    return snapPullLock.isLocked();
+    return indexFetchLock.isLocked();
   }
 
   private void doSnapShoot(SolrParams params, SolrQueryResponse rsp,
@@ -390,10 +410,10 @@ public class ReplicationHandler extends
 
   /**
    * This method adds an Object of FileStream to the response . The FileStream implements a custom protocol which is
-   * understood by SnapPuller.FileFetcher
+   * understood by IndexFetcher.FileFetcher
    *
-   * @see org.apache.solr.handler.SnapPuller.LocalFsFileFetcher
-   * @see org.apache.solr.handler.SnapPuller.DirectoryFileFetcher
+   * @see IndexFetcher.LocalFsFileFetcher
+   * @see IndexFetcher.DirectoryFileFetcher
    */
   private void getFileStream(SolrParams solrParams, SolrQueryResponse rsp) {
     ModifiableSolrParams rawParams = new ModifiableSolrParams(solrParams);
@@ -538,18 +558,28 @@ public class ReplicationHandler extends
   }
 
   void disablePoll() {
-    if (isSlave)
-      snapPuller.disablePoll();
+    if (isSlave) {
+      pollDisabled.set(true);
+      LOG.info("inside disable poll, value of pollDisabled = " + pollDisabled);
+    }
   }
 
   void enablePoll() {
-    if (isSlave)
-      snapPuller.enablePoll();
+    if (isSlave) {
+      pollDisabled.set(false);
+      LOG.info("inside enable poll, value of pollDisabled = " + pollDisabled);
+    }
   }
 
   boolean isPollingDisabled() {
-    if (snapPuller == null) return true;
-    return snapPuller.isPollingDisabled();
+    return pollDisabled.get();
+  }
+
+  Long getNextScheduledExecTime() {
+    Long nextTime = null;
+    if (executorStartTime > 0)
+      nextTime = executorStartTime + pollInterval;
+    return nextTime;
   }
 
   int getTimesReplicatedSinceStartup() {
@@ -611,31 +641,31 @@ public class ReplicationHandler extends
       list.add("isMaster", String.valueOf(isMaster));
       list.add("isSlave", String.valueOf(isSlave));
 
-      SnapPuller snapPuller = tempSnapPuller;
-      if (snapPuller != null) {
-        list.add(MASTER_URL, snapPuller.getMasterUrl());
-        if (snapPuller.getPollInterval() != null) {
-          list.add(SnapPuller.POLL_INTERVAL, snapPuller.getPollInterval());
+      IndexFetcher fetcher = currentIndexFetcher;
+      if (fetcher != null) {
+        list.add(MASTER_URL, fetcher.getMasterUrl());
+        if (getPollInterval() != null) {
+          list.add(POLL_INTERVAL, getPollInterval());
         }
         list.add("isPollingDisabled", String.valueOf(isPollingDisabled()));
         list.add("isReplicating", String.valueOf(isReplicating()));
-        long elapsed = getTimeElapsed(snapPuller);
-        long val = SnapPuller.getTotalBytesDownloaded(snapPuller);
+        long elapsed = fetcher.getReplicationTimeElapsed();
+        long val = fetcher.getTotalBytesDownloaded();
         if (elapsed > 0) {
           list.add("timeElapsed", elapsed);
           list.add("bytesDownloaded", val);
           list.add("downloadSpeed", val / elapsed);
         }
         Properties props = loadReplicationProperties();
-        addVal(list, SnapPuller.PREVIOUS_CYCLE_TIME_TAKEN, props, Long.class);
-        addVal(list, SnapPuller.INDEX_REPLICATED_AT, props, Date.class);
-        addVal(list, SnapPuller.CONF_FILES_REPLICATED_AT, props, Date.class);
-        addVal(list, SnapPuller.REPLICATION_FAILED_AT, props, Date.class);
-        addVal(list, SnapPuller.TIMES_FAILED, props, Integer.class);
-        addVal(list, SnapPuller.TIMES_INDEX_REPLICATED, props, Integer.class);
-        addVal(list, SnapPuller.LAST_CYCLE_BYTES_DOWNLOADED, props, Long.class);
-        addVal(list, SnapPuller.TIMES_CONFIG_REPLICATED, props, Integer.class);
-        addVal(list, SnapPuller.CONF_FILES_REPLICATED, props, String.class);
+        addVal(list, IndexFetcher.PREVIOUS_CYCLE_TIME_TAKEN, props, Long.class);
+        addVal(list, IndexFetcher.INDEX_REPLICATED_AT, props, Date.class);
+        addVal(list, IndexFetcher.CONF_FILES_REPLICATED_AT, props, Date.class);
+        addVal(list, IndexFetcher.REPLICATION_FAILED_AT, props, Date.class);
+        addVal(list, IndexFetcher.TIMES_FAILED, props, Integer.class);
+        addVal(list, IndexFetcher.TIMES_INDEX_REPLICATED, props, Integer.class);
+        addVal(list, IndexFetcher.LAST_CYCLE_BYTES_DOWNLOADED, props, Long.class);
+        addVal(list, IndexFetcher.TIMES_CONFIG_REPLICATED, props, Integer.class);
+        addVal(list, IndexFetcher.CONF_FILES_REPLICATED, props, String.class);
       }
       if (isMaster) {
         if (includeConfFiles != null) list.add("confFilesToReplicate", includeConfFiles);
@@ -677,12 +707,12 @@ public class ReplicationHandler extends
       master.add("replicableGeneration", repCommitInfo.generation);
     }
 
-    SnapPuller snapPuller = tempSnapPuller;
-    if (snapPuller != null) {
+    IndexFetcher fetcher = currentIndexFetcher;
+    if (fetcher != null) {
       Properties props = loadReplicationProperties();
       if (showSlaveDetails) {
         try {
-          NamedList nl = snapPuller.getDetails();
+          NamedList nl = fetcher.getDetails();
           slave.add("masterDetails", nl.get(CMD_DETAILS));
         } catch (Exception e) {
           LOG.warn(
@@ -691,26 +721,26 @@ public class ReplicationHandler extends
           slave.add(ERR_STATUS, "invalid_master");
         }
       }
-      slave.add(MASTER_URL, snapPuller.getMasterUrl());
-      if (snapPuller.getPollInterval() != null) {
-        slave.add(SnapPuller.POLL_INTERVAL, snapPuller.getPollInterval());
+      slave.add(MASTER_URL, fetcher.getMasterUrl());
+      if (getPollInterval() != null) {
+        slave.add(POLL_INTERVAL, getPollInterval());
       }
-      if (snapPuller.getNextScheduledExecTime() != null && !isPollingDisabled()) {
-        slave.add(NEXT_EXECUTION_AT, new Date(snapPuller.getNextScheduledExecTime()).toString());
+      if (getNextScheduledExecTime() != null && !isPollingDisabled()) {
+        slave.add(NEXT_EXECUTION_AT, new Date(getNextScheduledExecTime()).toString());
       } else if (isPollingDisabled()) {
         slave.add(NEXT_EXECUTION_AT, "Polling disabled");
       }
-      addVal(slave, SnapPuller.INDEX_REPLICATED_AT, props, Date.class);
-      addVal(slave, SnapPuller.INDEX_REPLICATED_AT_LIST, props, List.class);
-      addVal(slave, SnapPuller.REPLICATION_FAILED_AT_LIST, props, List.class);
-      addVal(slave, SnapPuller.TIMES_INDEX_REPLICATED, props, Integer.class);
-      addVal(slave, SnapPuller.CONF_FILES_REPLICATED, props, Integer.class);
-      addVal(slave, SnapPuller.TIMES_CONFIG_REPLICATED, props, Integer.class);
-      addVal(slave, SnapPuller.CONF_FILES_REPLICATED_AT, props, Integer.class);
-      addVal(slave, SnapPuller.LAST_CYCLE_BYTES_DOWNLOADED, props, Long.class);
-      addVal(slave, SnapPuller.TIMES_FAILED, props, Integer.class);
-      addVal(slave, SnapPuller.REPLICATION_FAILED_AT, props, Date.class);
-      addVal(slave, SnapPuller.PREVIOUS_CYCLE_TIME_TAKEN, props, Long.class);
+      addVal(slave, IndexFetcher.INDEX_REPLICATED_AT, props, Date.class);
+      addVal(slave, IndexFetcher.INDEX_REPLICATED_AT_LIST, props, List.class);
+      addVal(slave, IndexFetcher.REPLICATION_FAILED_AT_LIST, props, List.class);
+      addVal(slave, IndexFetcher.TIMES_INDEX_REPLICATED, props, Integer.class);
+      addVal(slave, IndexFetcher.CONF_FILES_REPLICATED, props, Integer.class);
+      addVal(slave, IndexFetcher.TIMES_CONFIG_REPLICATED, props, Integer.class);
+      addVal(slave, IndexFetcher.CONF_FILES_REPLICATED_AT, props, Integer.class);
+      addVal(slave, IndexFetcher.LAST_CYCLE_BYTES_DOWNLOADED, props, Long.class);
+      addVal(slave, IndexFetcher.TIMES_FAILED, props, Integer.class);
+      addVal(slave, IndexFetcher.REPLICATION_FAILED_AT, props, Date.class);
+      addVal(slave, IndexFetcher.PREVIOUS_CYCLE_TIME_TAKEN, props, Long.class);
 
       slave.add("currentDate", new Date().toString());
       slave.add("isPollingDisabled", String.valueOf(isPollingDisabled()));
@@ -720,13 +750,13 @@ public class ReplicationHandler extends
         try {
           long bytesToDownload = 0;
           List<String> filesToDownload = new ArrayList<>();
-          for (Map<String, Object> file : snapPuller.getFilesToDownload()) {
+          for (Map<String, Object> file : fetcher.getFilesToDownload()) {
             filesToDownload.add((String) file.get(NAME));
             bytesToDownload += (Long) file.get(SIZE);
           }
 
           //get list of conf files to download
-          for (Map<String, Object> file : snapPuller.getConfFilesToDownload()) {
+          for (Map<String, Object> file : fetcher.getConfFilesToDownload()) {
             filesToDownload.add((String) file.get(NAME));
             bytesToDownload += (Long) file.get(SIZE);
           }
@@ -737,18 +767,18 @@ public class ReplicationHandler extends
 
           long bytesDownloaded = 0;
           List<String> filesDownloaded = new ArrayList<>();
-          for (Map<String, Object> file : snapPuller.getFilesDownloaded()) {
+          for (Map<String, Object> file : fetcher.getFilesDownloaded()) {
             filesDownloaded.add((String) file.get(NAME));
             bytesDownloaded += (Long) file.get(SIZE);
           }
 
           //get list of conf files downloaded
-          for (Map<String, Object> file : snapPuller.getConfFilesDownloaded()) {
+          for (Map<String, Object> file : fetcher.getConfFilesDownloaded()) {
             filesDownloaded.add((String) file.get(NAME));
             bytesDownloaded += (Long) file.get(SIZE);
           }
 
-          Map<String, Object> currentFile = snapPuller.getCurrentFile();
+          Map<String, Object> currentFile = fetcher.getCurrentFile();
           String currFile = null;
           long currFileSize = 0, currFileSizeDownloaded = 0;
           float percentDownloaded = 0;
@@ -767,10 +797,10 @@ public class ReplicationHandler extends
 
           long estimatedTimeRemaining = 0;
 
-          if (snapPuller.getReplicationStartTime() > 0) {
-            slave.add("replicationStartTime", new Date(snapPuller.getReplicationStartTime()).toString());
+          if (fetcher.getReplicationStartTime() > 0) {
+            slave.add("replicationStartTime", new Date(fetcher.getReplicationStartTime()).toString());
           }
-          long elapsed = getTimeElapsed(snapPuller);
+          long elapsed = fetcher.getReplicationTimeElapsed();
           slave.add("timeElapsed", String.valueOf(elapsed) + "s");
 
           if (bytesDownloaded > 0)
@@ -840,13 +870,6 @@ public class ReplicationHandler extends
     return replicateAfter;
   }
 
-  private long getTimeElapsed(SnapPuller snapPuller) {
-    long timeElapsed = 0;
-    if (snapPuller.getReplicationStartTime() > 0)
-      timeElapsed = TimeUnit.SECONDS.convert(System.currentTimeMillis() - snapPuller.getReplicationStartTime(), TimeUnit.MILLISECONDS);
-    return timeElapsed;
-  }
-
   Properties loadReplicationProperties() {
     Directory dir = null;
     try {
@@ -856,7 +879,7 @@ public class ReplicationHandler extends
         IndexInput input;
         try {
           input = dir.openInput(
-            SnapPuller.REPLICATION_PROPERTIES, IOContext.DEFAULT);
+            IndexFetcher.REPLICATION_PROPERTIES, IOContext.DEFAULT);
         } catch (FileNotFoundException | NoSuchFileException e) {
           return new Properties();
         }
@@ -887,6 +910,37 @@ public class ReplicationHandler extends
 //    }
 //  }
 
+  private void setupPolling(String intervalStr) {
+    pollIntervalStr = intervalStr;
+    pollInterval = readInterval(pollIntervalStr);
+    if (pollInterval == null || pollInterval <= 0) {
+      LOG.info(" No value set for 'pollInterval'. Timer Task not started.");
+      return;
+    }
+
+    Runnable task = new Runnable() {
+      @Override
+      public void run() {
+        if (pollDisabled.get()) {
+          LOG.info("Poll disabled");
+          return;
+        }
+        try {
+          LOG.debug("Polling for index modifications");
+          executorStartTime = System.currentTimeMillis();
+          doFetch(null, false);
+        } catch (Exception e) {
+          LOG.error("Exception in fetching index", e);
+        }
+      }
+    };
+    executorService = Executors.newSingleThreadScheduledExecutor(
+        new DefaultSolrThreadFactory("indexFetcher"));
+    long initialDelay = pollInterval - (System.currentTimeMillis() % pollInterval);
+    executorService.scheduleAtFixedRate(task, initialDelay, pollInterval, TimeUnit.MILLISECONDS);
+    LOG.info("Poll Scheduled at an interval of " + pollInterval + "ms");
+  }
+
   @Override
   @SuppressWarnings("unchecked")
   public void inform(SolrCore core) {
@@ -901,7 +955,8 @@ public class ReplicationHandler extends
     NamedList slave = (NamedList) initArgs.get("slave");
     boolean enableSlave = isEnabled( slave );
     if (enableSlave) {
-      tempSnapPuller = snapPuller = new SnapPuller(slave, this, core);
+      currentIndexFetcher = pollingIndexFetcher = new IndexFetcher(slave, this, core);
+      setupPolling((String) slave.get(POLL_INTERVAL));
       isSlave = true;
     }
     NamedList master = (NamedList) initArgs.get("master");
@@ -1005,7 +1060,7 @@ public class ReplicationHandler extends
       }
       String reserve = (String) master.get(RESERVE);
       if (reserve != null && !reserve.trim().equals("")) {
-        reserveCommitDuration = SnapPuller.readInterval(reserve);
+        reserveCommitDuration = readInterval(reserve);
       }
       LOG.info("Commits will be reserved for  " + reserveCommitDuration);
       isMaster = true;
@@ -1029,11 +1084,20 @@ public class ReplicationHandler extends
     core.addCloseHook(new CloseHook() {
       @Override
       public void preClose(SolrCore core) {
-        if (snapPuller != null) {
-          snapPuller.destroy();
+        try {
+          if (executorService != null) executorService.shutdown();
+        } finally {
+          try {
+            if (pollingIndexFetcher != null) {
+              pollingIndexFetcher.destroy();
+            }
+          } finally {
+            if (executorService != null) ExecutorUtil
+                .shutdownNowAndAwaitTermination(executorService);
+          }
         }
-        if (tempSnapPuller != null && tempSnapPuller != snapPuller) {
-          tempSnapPuller.destroy();
+        if (currentIndexFetcher != null && currentIndexFetcher != pollingIndexFetcher) {
+          currentIndexFetcher.destroy();
         }
       }
 
@@ -1307,8 +1371,40 @@ public class ReplicationHandler extends
         releaseCommitPointAndExtendReserve();
       }
     }
-  } 
-  
+  }
+
+  static Integer readInterval(String interval) {
+    if (interval == null)
+      return null;
+    int result = 0;
+    if (interval != null) {
+      Matcher m = INTERVAL_PATTERN.matcher(interval.trim());
+      if (m.find()) {
+        String hr = m.group(1);
+        String min = m.group(2);
+        String sec = m.group(3);
+        result = 0;
+        try {
+          if (sec != null && sec.length() > 0)
+            result += Integer.parseInt(sec);
+          if (min != null && min.length() > 0)
+            result += (60 * Integer.parseInt(min));
+          if (hr != null && hr.length() > 0)
+            result += (60 * 60 * Integer.parseInt(hr));
+          result *= 1000;
+        } catch (NumberFormatException e) {
+          throw new SolrException(SolrException.ErrorCode.SERVER_ERROR,
+              INTERVAL_ERR_MSG);
+        }
+      } else {
+        throw new SolrException(SolrException.ErrorCode.SERVER_ERROR,
+            INTERVAL_ERR_MSG);
+      }
+
+    }
+    return result;
+  }
+
   public static final String MASTER_URL = "masterUrl";
 
   public static final String STATUS = "status";
@@ -1369,6 +1465,12 @@ public class ReplicationHandler extends
 
   public static final String FILE_STREAM = "filestream";
 
+  public static final String POLL_INTERVAL = "pollInterval";
+
+  public static final String INTERVAL_ERR_MSG = "The " + POLL_INTERVAL + " must be in this format 'HH:mm:ss'";
+
+  private static final Pattern INTERVAL_PATTERN = Pattern.compile("(\\d*?):(\\d*?):(\\d*)");
+
   public static final int PACKET_SZ = 1024 * 1024; // 1MB
 
   public static final String RESERVE = "commitReserveDuration";

Modified: lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/SnapShooter.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/SnapShooter.java?rev=1664126&r1=1664125&r2=1664126&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/SnapShooter.java (original)
+++ lucene/dev/trunk/solr/core/src/java/org/apache/solr/handler/SnapShooter.java Wed Mar  4 19:45:09 2015
@@ -144,7 +144,7 @@ public class SnapShooter {
       details.add("snapshotName", snapshotName);
       LOG.info("Done creating backup snapshot: " + (snapshotName == null ? "<not named>" : snapshotName));
     } catch (Exception e) {
-      SnapPuller.delTree(snapShotDir);
+      IndexFetcher.delTree(snapShotDir);
       LOG.error("Exception while creating snapshot", e);
       details.add("snapShootException", e.getMessage());
     } finally {
@@ -170,7 +170,7 @@ public class SnapShooter {
     int i=1;
     for (OldBackupDirectory dir : dirs) {
       if (i++ > numberToKeep) {
-        SnapPuller.delTree(dir.dir);
+        IndexFetcher.delTree(dir.dir);
       }
     }
   }
@@ -181,7 +181,7 @@ public class SnapShooter {
     NamedList<Object> details = new NamedList<>();
     boolean isSuccess;
     File f = new File(snapDir, "snapshot." + snapshotName);
-    isSuccess = SnapPuller.delTree(f);
+    isSuccess = IndexFetcher.delTree(f);
 
     if(isSuccess) {
       details.add("status", "success");

Modified: lucene/dev/trunk/solr/core/src/test-files/log4j.properties
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test-files/log4j.properties?rev=1664126&r1=1664125&r2=1664126&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test-files/log4j.properties (original)
+++ lucene/dev/trunk/solr/core/src/test-files/log4j.properties Wed Mar  4 19:45:09 2015
@@ -25,7 +25,7 @@ log4j.logger.org.apache.solr.hadoop=INFO
 #log4j.logger.org.apache.solr.cloud.ChaosMonkey=DEBUG
 #log4j.logger.org.apache.solr.update.TransactionLog=DEBUG
 #log4j.logger.org.apache.solr.handler.ReplicationHandler=DEBUG
-#log4j.logger.org.apache.solr.handler.SnapPuller=DEBUG
+#log4j.logger.org.apache.solr.handler.IndexFetcher=DEBUG
 
 #log4j.logger.org.apache.solr.common.cloud.ClusterStateUtil=DEBUG
 #log4j.logger.org.apache.solr.cloud.OverseerAutoReplicaFailoverThread=DEBUG
\ No newline at end of file

Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/TestArbitraryIndexDir.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/TestArbitraryIndexDir.java?rev=1664126&r1=1664125&r2=1664126&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/TestArbitraryIndexDir.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/core/TestArbitraryIndexDir.java Wed Mar  4 19:45:09 2015
@@ -36,7 +36,7 @@ import org.apache.lucene.store.Directory
 import org.apache.lucene.util.IOUtils;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.params.CommonParams;
-import org.apache.solr.handler.SnapPuller;
+import org.apache.solr.handler.IndexFetcher;
 import org.apache.solr.util.AbstractSolrTestCase;
 import org.apache.solr.util.TestHarness;
 import org.junit.AfterClass;
@@ -93,7 +93,7 @@ public class TestArbitraryIndexDir exten
     assertU(adoc("id", String.valueOf(1),
         "name", "name"+String.valueOf(1)));
     //create a new index dir and index.properties file
-    File idxprops = new File(h.getCore().getDataDir() + SnapPuller.INDEX_PROPERTIES);
+    File idxprops = new File(h.getCore().getDataDir() + IndexFetcher.INDEX_PROPERTIES);
     Properties p = new Properties();
     File newDir = new File(h.getCore().getDataDir() + "index_temp");
     newDir.mkdirs();
@@ -104,7 +104,7 @@ public class TestArbitraryIndexDir exten
       p.store(os, "index properties");
     } catch (Exception e) {
       throw new SolrException(SolrException.ErrorCode.SERVER_ERROR,
-          "Unable to write " + SnapPuller.INDEX_PROPERTIES, e);
+          "Unable to write " + IndexFetcher.INDEX_PROPERTIES, e);
     } finally {
       IOUtils.closeWhileHandlingException(os);
     }

Modified: lucene/dev/trunk/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java?rev=1664126&r1=1664125&r2=1664126&view=diff
==============================================================================
--- lucene/dev/trunk/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java (original)
+++ lucene/dev/trunk/solr/core/src/test/org/apache/solr/handler/TestReplicationHandler.java Wed Mar  4 19:45:09 2015
@@ -172,17 +172,13 @@ public class TestReplicationHandler exte
   }
 
   NamedList query(String query, SolrClient s) throws SolrServerException, IOException {
-    NamedList res = new SimpleOrderedMap();
     ModifiableSolrParams params = new ModifiableSolrParams();
 
     params.add("q", query);
     params.add("sort","id desc");
 
     QueryResponse qres = s.query(params);
-
-    res = qres.getResponse();
-
-    return res;
+    return qres.getResponse();
   }
 
   /** will sleep up to 30 seconds, looking for expectedDocCount */
@@ -304,7 +300,7 @@ public class TestReplicationHandler exte
       assertNotNull("slave has slave section", 
                     details.get("slave"));
       // SOLR-2677: assert not false negatives
-      Object timesFailed = ((NamedList)details.get("slave")).get(SnapPuller.TIMES_FAILED);
+      Object timesFailed = ((NamedList)details.get("slave")).get(IndexFetcher.TIMES_FAILED);
       assertEquals("slave has fetch error count",
                    null, timesFailed);
 
@@ -513,7 +509,7 @@ public class TestReplicationHandler exte
     slaveClient.close();
     slaveClient = createNewSolrClient(slaveJetty.getLocalPort());
 
-    //add a doc with new field and commit on master to trigger snappull from slave.
+    //add a doc with new field and commit on master to trigger index fetch from slave.
     index(masterClient, "id", "2000", "name", "name = " + 2000, "newname", "newname = " + 2000);
     masterClient.commit();
 
@@ -581,7 +577,7 @@ public class TestReplicationHandler exte
   }
 
   @Test
-  public void doTestSnapPullWithMasterUrl() throws Exception {
+  public void doTestIndexFetchWithMasterUrl() throws Exception {
     //change solrconfig on slave
     //this has no entry for pollinginterval
     slave.copyConfigFile(CONF_DIR + "solrconfig-slave1.xml", "solrconfig.xml");
@@ -608,7 +604,7 @@ public class TestReplicationHandler exte
     SolrDocumentList masterQueryResult = (SolrDocumentList) masterQueryRsp.get("response");
     assertEquals(nDocs, masterQueryResult.getNumFound());
 
-    // snappull
+    // index fetch
     String masterUrl = buildUrl(slaveJetty.getLocalPort()) + "/" + DEFAULT_TEST_CORENAME + "/replication?command=fetchindex&masterUrl=";
     masterUrl += buildUrl(masterJetty.getLocalPort()) + "/" + DEFAULT_TEST_CORENAME + "/replication";
     URL url = new URL(masterUrl);
@@ -623,7 +619,7 @@ public class TestReplicationHandler exte
     String cmp = BaseDistributedSearchTestCase.compare(masterQueryResult, slaveQueryResult, 0, null);
     assertEquals(null, cmp);
 
-    // snappull from the slave to the master
+    // index fetch from the slave to the master
     
     for (int i = nDocs; i < nDocs + 3; i++)
       index(slaveClient, "id", i, "name", "name = " + i);
@@ -765,7 +761,7 @@ public class TestReplicationHandler exte
             .get("response");
         assertEquals(totalDocs, masterQueryResult.getNumFound());
         
-        // snappull
+        // index fetch
         Date slaveCoreStart = watchCoreStartAt(slaveClient, 30*1000, null);
         pullFromMasterToSlave();
         if (confCoreReload) {
@@ -1219,7 +1215,7 @@ public class TestReplicationHandler exte
     // record collection1's start time on slave
     final Date slaveStartTime = watchCoreStartAt(slaveClient, 30*1000, null);
 
-    //add a doc with new field and commit on master to trigger snappull from slave.
+    //add a doc with new field and commit on master to trigger index fetch from slave.
     index(masterClient, "id", "2000", "name", "name = " + 2000, "newname", "n2000");
     masterClient.commit();
     rQuery(1, "newname:n2000", masterClient);  // sanity check

Modified: lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/core/MockDirectoryFactory.java
URL: http://svn.apache.org/viewvc/lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/core/MockDirectoryFactory.java?rev=1664126&r1=1664125&r2=1664126&view=diff
==============================================================================
--- lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/core/MockDirectoryFactory.java (original)
+++ lucene/dev/trunk/solr/test-framework/src/java/org/apache/solr/core/MockDirectoryFactory.java Wed Mar  4 19:45:09 2015
@@ -69,7 +69,7 @@ public class MockDirectoryFactory extend
       // already been created.
       mockDirWrapper.setPreventDoubleWrite(false);
       
-      // snappuller & co don't seem ready for this:
+      // IndexFetcher & co don't seem ready for this:
       mockDirWrapper.setEnableVirusScanner(false);
       
       if (allowReadingFilesStillOpenForWrite) {



Mime
View raw message